General - Writing a System Architecture Definition

System Architecture Definition
Documentation
Agile

As a Tech Lead or Solution Architect, you are often tasked to compile a document that defines the architecture of your project. In some cases, such as partnerships with third parties or tenders with government projects, the scope may have to cover the architecture of your company’s entire solution.

Compiling long and complex documents is often a daunting task. To give you a head start, I’m providing you with a basic overview of what such a document should look like and what it should contain.

Feel free to use the structure as-is, or add and remove extra sections as you see fit.

  • Cover Page
  • Table of Contents
  • Versions and Approvals
  • Overview
    • Purpose
    • In Scope
    • Out of Scope
  • Glossary
  • Roles and Responsibilities
  • References
  • Design Considerations
    • Assumptions
    • Constraints
    • Risks and Contingencies
  • Technical Architecture
    • System Overview
    • Technical Requirements
    • Data Access
    • Data Management
    • Testing
    • Privacy

Cover Page

Your cover page should include the title of your project and/or company, as well as your corporate branding (headers and footers) and the title "System Architecture Definition", or something similar.

Table of Contents

I don’t believe I need to go into too much detail here. Simply make use of the built-in auto-generation tools from Google Docs or MS Word.

Version and Approvals

Include a page with the following two tables: “Version Control” and “Approvals”.

The Version Control table contains the version number, the changes made in that version, the author of the changes, as well as the date the changes were made.

The Approvals table contains the names of the approvers, their roles, their signatures, and the date it was approved.

1. Overview

1.1 Purpose

This section should provide a high-level description of the purpose of this document. This may include how the new system will meet the intended goals and objectives of the organisation and/or project. Touch on the following points in this section of your document:

  • A description of the system
  • The logical architecture of software (top-level components and interactions)
  • The physical architecture of the hardware
  • The justification of technical choices made

1.2 In Scope

Describe all areas of the project that are in-scope of this document.

1.3 Out of Scope

Similarly, list all areas that are considered out-of-scope of this document.

2. Glossary

Create a table with terms and abbreviations and include their meaning. See below for an example.

Glossary

3. Roles and Responsibilities

A “roles and responsibilities” section may be necessary to clarify who performs each task within the system.

4. References

List the references (internal and external) that guided the system design e.g. organisational standards, industry standards, meeting minutes, etc. Do not include too much detail since the items on the list can be referred to individually if more detail is needed.

5. Design Considerations

5.1 Assumptions

List all major assumptions made prior to or during business requirements gathering and documentation, e.g. end-user characteristics, system requirements and possible and/or probable changes in functionality.

5.2 Constraints

Define the constraints associated with the system design. These may include hardware, software, business constraints, organizational/industry standards, etc. Also include how the constraints affect or limit the system design.

5.3 Risks and Contingencies

Identify any risks that may impact delivery. For each risk, propose mitigation strategies, as well as backup mechanisms in place in case of extended downtime.

6. Technical Architecture

6.1 System Overview

Provide a high-level diagram of the architecture of the system. Describe the components as well as how their interactions will achieve the required results. Include a typical workflow of the system if desired. Additionally, include users on the diagram if this will aid the description of the system.

System overview

Source: https://www.devteam.space/blog/microservice-architecture-examples-and-diagram/

6.2 Technical Requirements

List all the hardware, software and external dependencies required by the system.

6.3 Data Access

Describe the data access layer design including the ORM, security considerations (e.g. authentication), auditing and encryption.

6.4. Data Management

Cover elements such as data migration, backups and archiving.

6.5 Testing

Define which tests will be developed and/or performed to ensure the solution is stable, e.g. unit tests, automated UI tests, load tests, penetration tests, etc.

6.6. Privacy

Describe the information that will be stored in the system, and whether any information is PII (personally identifiable information).

Also, identify data that needs to be redacted/scrambled in order to legally send backups to external vendors for further processing and system enhancements.

And that’s it! I hope this guide proves to be thorough, yet concise and simple to follow. Let me know in the comments section if you have any suggestions.


Author photo
Cornel Rautenbach
February 21st, 2019