Software Architecture Document Guidelines v0.1
Software Architecture Document Guidelines v0.1
1. Functional View
The functional view allows you to summarise what the key, and architecturally
significant, functions of the system are. It allows you to make an explicit link
between the functional aspects of the system (use cases, stories, etc) and explain
why they are significant to your architecture.
Checklist
2. Non-functional View
The non-functional view allows you to re-iterate or summarise the key nonfunctional requirements and, again, explicitly highlight those that are deemed as
architecturally significant. Each non-functional requirement should be precise,
leaving no interpretation to the reader. Examples where this isnt the case
include :
www.codingthearchitecture.com
Checklist
3. Architectural Principles
The architectural principles section allows you to highlight those principles that
have been used in defining the architecture. These could have explicitly asked for
or they can be principles that *you* want to follow. Examples might include the
following :
Checklist
Are there any other principles (e.g. other non-functional requirements that
have not been explicitly requested) that have helped influence the
architecture?
4. Architectural Constraints
Software lives within the context of the real-world, and the real-world has
constraints. This section allows you to state these constraints so that it is clear
that you are working within them and clear how they affect your architecture
decisions. Example constraints include :
Project deadlines.
Nature of the project (e.g. tactical or strategic).
Checklist
5. Process View
The process view allows you to show what the system is doing at a high level, and
it also provides you with an opportunity to show how the smaller steps within the
process fit together. This doesnt have to be a long section, but its important that
aspects such as parallelism are represented here, where processes fork or join,
etc.
Checklist
6. Logical View
The logical view allows you to present the structure of the system through its
components and their interactions. Typically this will show high level technology
choices.
Checklist
7. Interface View
Closely related to the logical view is the interface view. Interfaces are one of the
riskiest parts of any software system, so its very useful to show what the internal/
external interfaces are and how they work.
Checklist
Are the key internal (e.g. databases, messaging systems, etc) and external
interfaces (e.g. other systems) well specified at a high level?
If messaging is being used, which queues and topics are components using
to communicate?
What format are the messages (e.g. plain text or XML defined by a DTD/
Schema)?
Are they synchronous or asynchronous?
Are asynchronous messaging links guaranteed?
Are subscribers durable where necessary?
Can messages be received out of order and is this a problem?
Who has ownership of the interfaces?
8. Technology Selection
Including a technology selection section in your software architecture document
gives you somewhere to document the decisions that went into choosing or not
www.codingthearchitecture.com
Checklist
9. Design View
The design view is where the lower level implementation details start to make an
appearance. For example, this could include information such as how your
architectural layering will be implemented through to documenting blueprints/
common usage patterns for the technologies/frameworks you have chosen for the
implementation.
Checklist
Checklist
www.codingthearchitecture.com
Checklist
Checklist
Is there a clear understanding of how security is handled within the architecture
and how any security requirements have been satisfied? This includes the
following :
Authentication.
Authorisation.
Confidentiality of data between components (e.g. during user login, during
requests between components, using technologies such as web services or
messaging, across public networks).
Non-repudiation.
Different types of users and their roles.
The use of a security realm or integration with in-house single sign-on
mechanisms.
Network separation using firewalls and DMZs (red, amber, green model).
Restricted access to resources.
Permissioning of data of a per user/role/etc basis and the ability to modify
those permissions.
Storage of credentials (e.g. database logons).
Distribution of certificates and keys.
Checklist
www.codingthearchitecture.com
How is this achieved across all tiers of the architecture (e.g. from client tier
to database)?
Checklist
Checklist
www.codingthearchitecture.com