Last updated: January 27, 2026

Solution Architecture

A solution architect's function is to derive architectural direction and vision to the organisation, translating areas of development or domains into well-organised self-directed teams, providing guidance on how to develop cross-functionally.

Organisation

If the organisation has many departments or teams that develop software, or is part of the process in developing it, it is important that these organize themselves and the processes they follow in an efficient manner.

  • Stakeholders
  • Systems Design
  • Requirement Management
  • Project Management

Common Workflow & Conventions

Identifying commonalities across departments and teams, and streamlining the workflow and conventions employed allow for efficient cross-domain work and alleviate double-work. If are different conventions or indeed none or few, establishing common conventions and ways of working is paramount to ensure a smooth and fast development flow.

Note from Author

This section may need to be moved to a more appropriate place of introduction

Guidelines

  • Style guide — use an existing one, don't invent your own. Make amendments to the existing one if absolutely necessary.

Code Management

Note from Author

Describe this in more detail

In order to illustrate how to manage your code we will have to use a specific language for the examples, but the concepts will carry over to any project. The core of the concept is that of modularity. For the examples I will be using C++.

File Structure
doc
ARCHITECTURE.md High-level description of the architecture
modules/
module_0 Self-contained unit of the system
doc Documentation of the module (UML diagrams, markdown, etc.)
inc Public API for the module
src Implementation of the module
mock Mocks of the module, for use in dependent module's tests
test Contain tests of this module's functionality
unit Unit-tests that mock any of this module's dependencies
target Target tests that tests the behaviour of the module deployed onto a target
README.md A high-level description of the module and how to use it
module_1
module_2
lib :
sdk vX.Y.Z External libraries like an SDK
pytest vX.Y.Z Frameworks for target-testing (PyTest is just an example)
googletest vX.Y.Z Frameworks for unit-testing (Google Test is just an example)
scripts A collection of scripts useful to the developer
cmake CMake-specific scripts
module.cmake
tools Contains tools used in the project
CHANGELOG.md Used to track changes across releases and generate release notes.
README.md Used to give guidance on how to build, deploy and release.

Pipeline Management

Note from Author

Describe this

Release Management

Note from Author

Describe this

Identify Business Needs

Note from Author

Describe identifying business needs

Identify Domains

The business needs map into domains which the organisation will distribute work between.

A domain is to provide the functionality of the domain and only that. As such, for software-related domains, we will consider the product of the domain to deliver a platform. More specifically, a software platform.

What is an integration?

An integration is in this context refers to the act of integrating a domain into a particular target. A target is also a rather abstract term, but appropriately so as it may be anything that makes the domain functionality available on the target which runs it. This could be a specific OS, like Windows or MacOS, or mobile targets like Android and iOS. Or, more exotically, it could be specific hardware integrations for embedded systems.

Put in another way, an integration is merely adapting the domain to a specific system we want to use it on. And there's a keyword ‐ use. We therefore have the relationship shown below. More specifically, since we want these development areas to be able to work independently of each other the integration shall use a specific version of the domain.

Loading diagram...
Domain Repository
/my_domain
/modules
/butterworth_filter
/fast_fourier_transform

The domain supplies domain-level features. That is, features that solely are defined and implemented by the domain itself ‐ not project-level features. Consider for instance the domain of signal processing, which might provide features like filters or algorithms.

Integration Repository
my_integration
/modules
/my_domainv1.2.3 git submodule pointing to the released version tag v1.2.3
/modules

What is a variant?

A variant is a concrete project or product.

Example

Our fictional organisation is in the business of making ...

Loading diagram...

Summary

  • Streamline your workflow and processes across departments and teams.
  • Map business needs to development domains and organise architecture around these domains.
  • Provides input to management for organisational structure.