Software Architecture – Effective Software Architecture Modelling

designmodelingrestsoauml

I am a little confused at how best to visually model a space-based architecture (SBA) for presenting the system/software architecture design to a client.

The goal of this modelling is to show:

  • The major components of the system (e.g.: databases, server exposed API, client, server workers, client exposed API)
  • Interactions between these major components
  • Primary end-to-end workflows

Currently I am thinking to use BPMN2 notation with swimlanes; and sequence & use-case diagrams in UML2 notation.

Not sure if this approach is best, would be great to get some feedback 🙂

Best Answer

Agree with the previous answer. As mentioned there, the model types mentioned in the question will not help you alone.

In case of a non-trivial data model or business domain, I recommend to start with an entity relationship diagram. It is easy to understand, the few symbols are quickly explained. Include proper definitions of the entities. This will make sure everyone has the same understanding of the domain. The relations with the cardinalities will also sort out many misunderstandings in advance.

A block diagram is usually the main diagram to show the runtime composition of the architecture. Indicate protocol and system boundaries. Choose an abstraction level which fits the purpose, and then be as specific as you can with the elements you show. E.g. in a communication channel, indicate who initiates the request, the data flow direction, and the protocol used. Describe the purpose of each component and connection in additional text below the model in case it is not trivial or obvious.

SAP uses a slimmed down UML version for architecture (as described here).

Conceptual Level Component/Block diagram

Design Level Component/Block diagram

You might use the other diagram types if required.

Don't forget that there might be a design time view of an architecture which is different from the runtime view. E.g. you might have layers in the design time which are collapsed by a compiler for the runtime.

Related Topic