You are on page 1of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

Architecture Guidelines
Version 0.1
Initial Draft

Public Domain

2000 by Donald Firesmith

Page 1 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

Revision History
Date
10/30/1999

Version
0.1

Public Domain

Description
Initial draft

Author

Donald Firesmith

2000 by Donald Firesmith

Page 2 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

Table of Contents
1

INTRODUCTION.......................................................................................................................................5
1.1

DOCUMENT OBJECTIVES..........................................................................................................................5

1.2

INTENDED AUDIENCES.............................................................................................................................5

1.3

REFERENCES.............................................................................................................................................5

1.4

DOCUMENT OVERVIEW............................................................................................................................5
GENERAL GUIDELINES.........................................................................................................................6

2.1.1

Architecture Work Products.............................................................................................................6

2.1.2

Architects and Architecture Teams...................................................................................................6

2.1.2.1

Architects...............................................................................................................................................6

2.1.2.2

Architecture Teams.................................................................................................................................6

2.1.3

Architecture Tasks and Activities.....................................................................................................6

2.1.4

Architecture in the Development Cycle............................................................................................6

SYSTEM ARCHITECTURE GUIDELINES..........................................................................................7


3.1.1
3.1.1.1

Architecture Patterns..............................................................................................................................7

3.1.1.2

System Components...............................................................................................................................7

3.1.2

Component Architecture Guidelines................................................................................................7

Infrastructure Architecture Guidelines............................................................................................7

3.1.2.1

Ensuring Configurability........................................................................................................................7

3.1.2.2

Ensuring Efficiency................................................................................................................................7

3.1.2.3

Ensuring Extensibility............................................................................................................................7

3.1.2.4

Ensuring Interoperability........................................................................................................................7

3.1.2.5

Ensuring Operational Availability...........................................................................................................8

3.1.2.6

Ensuring Performance............................................................................................................................8

3.1.2.7

Ensuring Reliability................................................................................................................................8

3.1.2.8

Ensuring Reusability...............................................................................................................................8

3.1.2.9

Ensuring Robustness...............................................................................................................................8

3.1.2.10

Ensuring Safety......................................................................................................................................8

3.1.2.11

Ensuring Scalability................................................................................................................................8

3.1.2.12

Ensuring Security...................................................................................................................................8

3.1.2.13

Ensuring Usability..................................................................................................................................9

SOFTWARE ARCHITECTURE GUIDELINES..................................................................................10


4.1.1

Domain Architecture Guidelines....................................................................................................10

4.1.1.1

Architecture Patterns............................................................................................................................10

4.1.1.2

Software Components...........................................................................................................................10

4.1.1.3

Cohesion...............................................................................................................................................10

4.1.1.4

Coupling...............................................................................................................................................10

4.1.2

Infrastructure Architecture Guidelines...........................................................................................11

4.1.2.1

Public Domain

Concurrency Architecture.....................................................................................................................11

2000 by Donald Firesmith

Page 3 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

4.1.2.2

Distribution Architecture......................................................................................................................11

4.1.2.3

Ensuring Configurability......................................................................................................................11

4.1.2.4

Ensuring Efficiency..............................................................................................................................11

4.1.2.5

Exception Architecture..........................................................................................................................11

4.1.2.6

Ensuring Extensibility...........................................................................................................................11

4.1.2.7

Ensuring Interoperability......................................................................................................................11

4.1.2.8

Ensuring Operational Availability.........................................................................................................12

4.1.2.9

Ensuring Performance..........................................................................................................................12

4.1.2.10

Ensuring Portability..............................................................................................................................12

4.1.2.11

Ensuring Reliability..............................................................................................................................12

4.1.2.12

Ensuring Robustness.............................................................................................................................12

4.1.2.13

Ensuring Safety....................................................................................................................................12

4.1.2.14

Ensuring Scalability..............................................................................................................................12

4.1.2.15

Ensuring Security.................................................................................................................................12

4.1.2.16

Ensuring Usability................................................................................................................................13

4.1.2.17

Persistence Architecture........................................................................................................................13

4.1.2.18

Reusability............................................................................................................................................13

4.1.2.19

Startup, Maintenance, and Shutdown....................................................................................................13

4.1.3

Architecture Verification Guidelines..............................................................................................14

4.1.3.1

Public Domain

Executable Architecture Prototypes......................................................................................................14

2000 by Donald Firesmith

Page 4 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

1 Introduction
This section introduces the Architecture Guidelines (AG) to the reader.

1.1 Document Objectives


These architecture guidelines have the following objectives:

To formally document guidelines for architecting systems and software applications.

To improve the quality of the resulting architectures.

1.2 Intended Audiences


These AG has the following the intended audiences:

System Architects, who must develop and document system architectures


Software Architects, who produce and document software architectures
Designers, who produce designs that conform to these architectures
Integration Testers, who integrate and test the components of these architectures
Inspectors of system and software architectures, who inspect these architectures

1.3 References
These AG were derived from the following sources:

TBD

1.4 Document Overview


This PG has the following the organization:
Introduction, which introduces these AG to its readers.
System Architecture Guidelines, which formally documents guidelines for architecting
systems.
Software Architecture Guidelines, which formally documents guidelines for architecting
pure software applications.

Public Domain

2000 by Donald Firesmith

Page 5 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

2 General Guidelines
2.1.1 Architecture Work Products

System vs. Software Architectures.

2.1.2 Architects and Architecture Teams


2.1.2.1 Architects

Training. Provide initial classroom training for all relevant personnel (architects and
inspectors of architectures) who will either produce, inspect, or read an architecture
document. Provide ongoing on-the-job training for all members of the architecture team.
Rationale: TBD
2.1.2.2 Architecture Teams

Architecture teams. Provide initial classroom training for all relevant personnel
(architects and inspectors of architectures) who will either produce, inspect, or read an
architecture document. Provide ongoing on-the-job training for all members of the
architecture team.
Rationale: TBD

2.1.3 Architecture Tasks and Activities

Identify major drivers of the architecture. Examine the major operational


requirements, quality requirements, and design constraints to determine if they have
architecturally significant ramifications.
Rationale: Architectures must fulfill their associated requirements. Quality requirements can
greatly impact the resulting architectures.

2.1.4 Architecture in the Development Cycle

Public Domain

2000 by Donald Firesmith

Page 6 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

3 System Architecture Guidelines


The following guidelines for performing software architecting have been proven by experience to be
cost-effective. They fall into the following categories:

Component Architecture Guidelines


Infrastructure Architecture Guidelines

3.1.1 Component Architecture Guidelines


3.1.1.1 Architecture Patterns

Architecture Patterns. TBD.


Rationale: TBD
3.1.1.2 System Components

Identify major system components. Identify the major software, hardware,


wetware (personnel), and paperware (documentation) components of the system, their
responsibilities, how they relate, and how they interface.
Rationale: Domain architecture consists largely of the decomposition of the system into a set
of collaborating components.

3.1.2 Infrastructure Architecture Guidelines


3.1.2.1 Ensuring Configurability
This subsection documents guidelines for producing system architectures that can be easily
configured into multiple variants:

None

3.1.2.2 Ensuring Efficiency


This subsection documents guidelines for producing system architectures that effectively uses their
resources:

None

3.1.2.3 Ensuring Extensibility


This subsection documents guidelines for producing system architectures that can be modified to
meet changing requirements or goals.

None

3.1.2.4 Ensuring Interoperability


This subsection documents guidelines for producing system architectures that can be integrated with
other systems (e.g., browsers, legacy applications, and required databases).

Public Domain

None

2000 by Donald Firesmith

Page 7 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

3.1.2.5 Ensuring Operational Availability


This subsection documents guidelines for producing system architectures that increase the percent of
time that the system can function correctly.

Redundant hardware.

Fail over.

3.1.2.6 Ensuring Performance


This subsection documents guidelines for producing system architectures that increase the speed with
which the software executes.

None

3.1.2.7 Ensuring Reliability


This subsection documents guidelines for producing system architectures that improve the reliability
(e.g., mean time between failures, number of failures per unit time) of the resulting software.

None

3.1.2.8 Ensuring Reusability


This subsection documents guidelines for producing system architectures that can be used for
purposes other than originally intended (e.g., as part of other applications).

None

3.1.2.9 Ensuring Robustness


This subsection documents guidelines for producing system architectures that continue to properly
execute under abnormal circumstances.

None

3.1.2.10 Ensuring Safety


This subsection documents guidelines for producing system architectures that do not directly or
indirectly (e.g., via inactivity) cause accidental harm to life or property (e.g., loss of money or data).

None

3.1.2.11 Ensuring Scalability


This subsection documents guidelines for producing system architectures that can scale (e.g., can
handle more simultaneous users or clients, can store more information in its databases).

Load balancing.

Standardized hardware.

3.1.2.12 Ensuring Security


This subsection documents guidelines for producing system architectures that protect themselves
from unauthorized access or modification.
Public Domain

2000 by Donald Firesmith

Page 8 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

Physical security. Determine and document how the system architecture will
provide any required physical security.

Firewalls. Determine how many firewalls are needed and where they will occur
within the system architecture.
3.1.2.13 Ensuring Usability
This subsection documents guidelines for producing system architectures that can be easily installed
and used.

Public Domain

None

2000 by Donald Firesmith

Page 9 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

4 Software Architecture Guidelines


The following guidelines for performing software architecting have been proven by experience to be
cost-effective. They fall into the following categories:

Domain Architecture Guidelines


Infrastructure Architecture Guidelines
Architecture Verification Guidelines

4.1.1 Domain Architecture Guidelines


4.1.1.1 Architecture Patterns

Use Architecture Patterns. TBD.


Rationale: TBD

Layered Architecture. TBD.


Rationale: TBD

Avoid use case driven design. Do not drive the architecture from the structure of
the use cases. Instead, use domain experts and object modeling to identify the key business
abstractions. Use externals and the information passed with the interactions of the use cases
to identify additional classes of objects.
Rationale: Use cases are functional abstractions that are often functionally decomposed.
Thus, use case driven design often results in a functional decomposition design based on godlike controller objects violating the encapsulation of dumb data objects.
4.1.1.2 Software Components

Identifying Software Components. The major influences on identifying software


components are distribution (software executing on different processors typically belong to
different components; software components should be distribution units), concurrency
(software executing on different processes typically belong to different components), layering
(software in different layers often belong to different components), cohesion, and coupling.
Rationale: TBD
4.1.1.3 Cohesion

Cohesion. Components should be highly cohesive, performing a small set of highly


related responsibilities.
Rationale: TBD
4.1.1.4 Coupling

Coupling. Components should be loosely coupled with well defined inbound and
outbound interfaces
Rationale: TBD

Public Domain

2000 by Donald Firesmith

Page 10 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

4.1.2 Infrastructure Architecture Guidelines


4.1.2.1 Concurrency Architecture
This subsection documents guidelines for producing quality concurrency architectures:

Processor architecture.

Processor to processor communication.

Thread-safe classes.

4.1.2.2 Distribution Architecture


This subsection documents guidelines for distributing components across multiple processors and
processes:

Middleware tools.

Choosing a communication technology.

4.1.2.3 Ensuring Configurability


This subsection documents guidelines for producing software architectures that can be easily
configured into multiple variants:

None

4.1.2.4 Ensuring Efficiency


This subsection documents guidelines for producing software architectures that effectively uses their
resources:

None

4.1.2.5 Exception Architecture


This subsection documents guidelines for producing software architectures that effectively handle
exceptions and error conditions.

Exception hierarchy.

Error message tables.

4.1.2.6 Ensuring Extensibility


This subsection documents guidelines for producing software architectures that can be modified to
meet changing requirements or goals.

None

4.1.2.7 Ensuring Interoperability


This subsection documents guidelines for producing software architectures that can be integrated with
other system (e.g., browsers, legacy applications, and required databases).

Public Domain

None

2000 by Donald Firesmith

Page 11 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

4.1.2.8 Ensuring Operational Availability


This subsection documents guidelines for producing software architectures that increase the percent
of time that the system can function correctly.

None

4.1.2.9 Ensuring Performance


This subsection documents guidelines for producing software architectures that increase the speed
with which the software executes.

None

4.1.2.10 Ensuring Portability


This subsection documents guidelines for producing software architectures that can be moved from
one environment (e.g., hardware, operating system) to another.

None

4.1.2.11 Ensuring Reliability


This subsection documents guidelines for producing software architectures that improve the
reliability (e.g., mean time between failures, number of failures per unit time) of the resulting
software.

Exception handling.

Defensive programming.

4.1.2.12 Ensuring Robustness


This subsection documents guidelines for producing software architectures that continue to properly
execute under abnormal circumstances.

None

4.1.2.13 Ensuring Safety


This subsection documents guidelines for producing software architectures that do not directly or
indirectly (e.g., via inactivity) cause accidental harm to life or property (e.g., loss of money or data).

None

4.1.2.14 Ensuring Scalability


This subsection documents guidelines for producing software architectures that can scale (e.g., can
handle more simultaneous users or clients, can store more information in its databases).

Database size.

Transaction rates.

Public Domain

2000 by Donald Firesmith

Page 12 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

4.1.2.15 Ensuring Security


This subsection documents guidelines for producing software architectures that protect themselves
from unauthorized access or modification.

User access. Determine is different actors required different user access and how it
will be provided (e.g., via passwords)

Data access. Determine which users and which components may access which data.
Determine a consistent way to implement data access.

Communications integrity. Determine how to ensure communication integrity.


Determine a standard mechanism to ensure that man-in-the-middle attacks are prevented. For
example, this may involve using hashes to identify modification of information sent or using
timestamps to ensure that communications are fresh and not repeated copies.

Encryption/decryption. Determine a consistent mechanism to encryption and


decryption that provides the appropriate level of security based on the information being
communicated.

Identification. Determine a consistent mechanism to identify the senders of between


processor communications, especially over external networks such as the Internet.

Authentication. Determine a consistent mechanism to ensure that senders of


between processor communications are authorized to do so.
4.1.2.16 Ensuring Usability
This subsection documents guidelines for producing software architectures that can be easily installed
and used.

None

4.1.2.17 Persistence Architecture


This subsection documents guidelines for producing software architectures that effectively handle
persistence.

Object databases.

Extended relational databases.

Relational databases.

Files.

4.1.2.18 Reusability
This subsection documents guidelines for producing software architectures that can be used for
purposes other than originally intended (e.g., as part of other applications).

Public Domain

None

2000 by Donald Firesmith

Page 13 of 14

Donald Firesmith

Document ID: AG

Architecture Guidelines

Version:

0.1

Version Date: 12/28/1999

4.1.2.19 Startup, Maintenance, and Shutdown


This subsection documents guidelines for producing software architectures that can be easily installed
and used.

None

4.1.3 Architecture Verification Guidelines


4.1.3.1 Executable Architecture Prototypes
This subsection documents guidelines for producing executable architecture prototypes for verifying
the quality of software architectures.

Public Domain

None

2000 by Donald Firesmith

Page 14 of 14