Child pages
  • Software Architecture Documentation


Communicate the quality targets, context, and design drivers of your software architecture.

Categories

Developing software demands high levels communication between possibly quite large number of stakeholders. While direct communication typically is preferred, but not always practicable. Benjamin Kovitz lists the following principal benefits of documentation in Practical Software Requirements.

Documentation

  1. extends what the mind can grasp and remember
  2. gives the same story to each member of the team
  3. introduces new team members to the project
  4. protects intellectual equity
  5. helps the writer to better understand the problem

While the information about a software systems is unique, the basic structure of documents, especially to describe a software architecture, is not necessarily so. Teams communicating the structure and design principles may select a predefined structure, such as the arc42 Template, and smaller, much more confined templates for quality targets, views, and decisions. By selecting an existing structure authors and readers may save resources and are able to create value faster in a well-known environment.

For successfully communicating a software architecture it is important to drive the process of generating useful information from development artifacts automatically. This includes such classic living documentation artifacts as acceptance tests, but also static derived information as dependencies and system codes.

Types of Documentation

 

Besides communicating the system architecture, a software development project may need to document other aspects, too. Documentation is roughly organized in four types of documentation:

  1. Process documentation
    - how do we want to work and what do we need to work?
  2. Project documentation
    - what have we actually decided, done, and must keep in mind?
  3. System documentation
    - the technical documentation for the team creating the product.
  4. Product documentation
    - relevant information for users of the product (including support teams).

Keep in mind that answering the "why" questions is essential for all kinds of documentation.

The projectdoc Toolbox provides tools for the four quadrants of documentation.

Resources

Information Material

The following list of resources provides background information on creating and working with software architecture documentation based on the projectdoc Toolbox for Confluence.

Resource Short Description
How to start your software project documentation? Here are the steps to get started with Confluence and the projectdoc Toolbox.
There is no one-size-fits-all for documenting software projects. What we do is giving you an introduction on how to get started with the projectdoc Toolbox and the Software Development Add-on to define your documentation requirements with Confluence.
Get started with the projectdoc Toolbox: learning by doing
A gentle introduction to page blueprints provided by doctype add-ons. The page blueprints are grouped semantically to make it easier for users to build a conceptual mind map for them.
Concepts central to projectdoc. Things users have to understand to get the most out of using projectdoc.

Related doctype add-ons are

Resource Short Description Type
Provides doctypes to create documentation in software development projects. The focus is on documenting the architecture of the product, but it includes templates for other software development documentation requirements as well.
topic
Provides doctypes to document a system or software architecture based on the arc42 Template.
topic
A collection of blueprints for Confluence to create and work with documentation for Java projects.
topic

A collection of blueprints for Confluence to create and work with documentation for Maven projects.

topic
Provides doctypes to collborate with your team. Run iterations and record discoveries that may be of interest at the end of the iteration or for even later reference. Quick notes are more easily added as records to the team's space than to the official documentation tree. Defer the talk to the documentation architect to the end of the iteration (if the discovery is still of interest).
topic
Communicate the necessary information on maintaining and using a service of your portfolio.
business-use-case
Make all decisions, issues, and project relevant resources easily accessible for your team. This includes meeting minutes, stakeholder contact information, open issues, and identified risks with their mitigation strategy.
business-use-case
Use products (templates) from the V-Modell®XT in your Confluence wiki as blueprints!
topic
Provides doctypes for documenting decisions, risks, open issues, and meeting minutes.
topic

Doctypes

The following doctypes (blueprints based on the projectdoc Toolbox) provided page blueprints to create a software architecture documentation.

Resource Short Description Suite Categories
The blueprint of the arc42 Template creates a tree of pages in the Confluence space.
Document an aspect of your architecture. Something orthogonal or cross-functional like logging, exception handling or configurability.
Document a architecture decision for an option. This is useful to state the reasons and the options that have been evaluated. Later other team members will have it easier to understand the decision.
Project Constraints limit the options of a project.
Documents a quality target for a product.
Different views on the product help to document the system and its architecture. Typical views are building block, runtime, or deployment.

Macros

The following macros of the projectdoc Toolbox support creating or working with a software architecture documentation.

Resource Short Description Categories
Renders a template with property references.
Lists references to projectdoc documents in a table. Allows to select document properties for columns. Also non-list representations are provided.
Renders a predefined list of documents in a table.
Transclude text content from a remote server.
Transclude content from a resource from a remote system.
Renders an image transcluded from a remote server.
Renders an image transcluded from a remote server.