Systematic Composition
- identify Actors
- identify Use-Cases
- identify FR
- Which are the most difficult non-functional requirements
- Which are the dominant use-cases
Functional Requirements
Use-Cases / User Stories
- User Stories besser für kleinere Projekte
- Use-Cases oder Epics für grössere
Alle use-cases erfassen, besonders wichtig für die Frage "Was ist in Scope und was nicht?".
Umsysteme identifizieren.
Non-Functional Requirements
The Big 4
- Performance
- Availability
- Operability
- Maintainability
Make the number graspable / concrete (important: maximum). Important Quality Attribute
- How many? 1000?
- How many per time frame? 280 events / seconds?
Dominant Use-Cases (UC)
- Usually have the hardest performance or availability requirements.
- The things I'm afraid of or I don't know or understand
-
Pain points of the previous systems
-
Which are the complex use-cases?
- Which are the use-cases with high throughput?
Define the architecture
Follow the dominant UC
- Build sequence diagram and flow based on the UC (step by step) to build the architecture.
Inter-process communication needs a good reason to be introduced! They are expensive and responsible for performance issues.
How to split processes
- Bounded Context
- Types of load (interactive, batch)
- Availability
- Need for different integration technologies
- Performances
- Capacity
Evaluate Architecture
Anchor the design to reality
- PoC
- Spike
- Baseline
- Properties of a Product (fact, limits, numbers)
Compare
Define factors I want to evaluate (e.g. throughput where we require at least x request per seconds) and place architectures (variants) on that graph.
throughput
low | --A--R-----B---| high
A: Architecture A
B: Architecture B
R: Required
In this case we can get rid of Architecture A because it does not fulfill the requirement. In other cases we might need to do PoCs or prototyping to figure out where one architectures lie on the scale.
Select a draft architecture
- Architecture Tipping point
- One architecture doesn't fulfil the requirements => not viable
- Decision Tipping Points
- Usually we take the "better" architecture unless it produces immense drawbacks
Notes
Wir müssen die kritischen (dominant) Use-Cases betrachten
-
Risiko basierte Architektur
- Höchstes Risiko zuerst beseitigen
Ich muss die Domäne gut genug verstehen um den Kunden (e.g. BE, BA) zu challenges