Software architecture documentation

Warning

🚧 This section is still in active development and is subject to changes 🚧

Purpose

The core purpose of writing this architecture documentation is to be able to describe to ourselves and others what the Seedcase framework is aiming to accomplish and how it will do that.

We structured the software architecture documentation to follow the arc42 template and the C4 Model as much as is relevant for our situation, since these both are fairly popular and common templates to use. This documentation is also continuously evolving as we learn, test, develop, and grow as a team.

Reader

The assumed readers are similar to the ones we listed in the Design of Seedcase landing page. The complete list of expected readers is found in the Stakeholders section of the Introduction.

Section overview

  1. Introduction and goals: Targeted at any reader. Introduction to the architecture documentation, goals, core functionality requirements, and stakeholders (readers of the documentation).
  2. Values and principles: Targeted at any reader. Covers the core values and guiding principles that direct and shape many aspects of the architecture of Seedcase software as well as the exact implementation of the architecture.
  3. Constraints: Targeted at any reader. Covers barriers or constraints we have self-imposed (for instance, due to ideological or philosophical reasons) as well as those we have no control over (such as technological server environments that Seedcase software may be installed on).
  4. Context and scope: Targeted at any reader. Defines the boundaries of the Seedcase framework by listing its human and computer communication partners, and describing, in general terms, the messages exchanged between them.
  5. Solution strategy: Targeted at any reader. Describes our proposed solution for the problem we are trying to address, as well as which core technologies and architecture designs we will use for the solution.
  6. Building block view: This is the most detailed section. The first part (Level 1) is targeted at readers who are more interested in some more technical details while later sections are much more highly detailed and written for those with much more technical knowledge. We describe the core architecture of the Seedcase framework with increasing detail throughout the section, including the different parts and connections between parts.
  7. Runtime view: Targeted at readers who are interested in very technical details. Covers how the different parts will actually interact with each other when a user uses the Seedcase framework.
  8. Deployment view: Targeted at readers who are interested in very technical details.
  9. Cross-cutting concepts: Targeted at both technical and non-technical users. Includes concepts such as security, privacy, legal considerations, storage, and dissemination.
  10. Architecture decisions: Targeted at technical readers. Covers the reasons for decisions we make about specific technologies or patterns used.
  11. Quality requirements: Targeted at any reader. This section goes into more detail on the quality goals listed in the introduction section.
  12. Risks and technical debt: Targeted at more technical readers, but includes content for non-technical readers. Describes potential risks with our solution, such as security risks.