-
Notifications
You must be signed in to change notification settings - Fork 0
/
c4-model.txt
41 lines (31 loc) · 2.07 KB
/
c4-model.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
The C4 Model of Software Architecture.
Software Architecture is the meeting point between Enterprise Architecture (how a software application is structured and all its properties),
Infrastructure, (The hardware systems), and the Users.
Software Architecture should aim to provide the clear picture of the software system to be developed.
Best way to communicate the Architecture of a software system just like other Architectural concepts is through diagrams.
UML is a bit complex, you need to invest a good amount of time to use it well. the C4 model is kind of a simplified, laissez-faire approach,
but it leaves no one behind, as it doesn't use esoteric diagrams.
The diagrams are mainly boxes each with a name, and Responsibilities and we specify Technologies and for Container and Component
Its main components (the 4 Cs) include
- Context Diagram
- this is the diagram that provides the big picture of the software system to be developed.
- it may indicate users and their roles (authenticated/unauthenticated)
- it also includes other (possible) external systems that the new system will interact with
- Container Diagram
- this is a decomposition of the context diagram.
- it has specific containers like webapp, webservers, DBMSs, etc.
- Component diagrams
- these are further decompositions of each the containers.
- these can be sub-systems, services, workflows, etc.
- these start getting more concrete in terms of Responsibilities and technologies.
- Code diagrams:
- these are diagrams that in most cases will influence how the code will be written.
- while the previous three diagrams are somewhat free-style diagrams, these diagrams
tend to lean more towards UML diagrams. they include: class diagrams, sequence diagrams, state machine diagrams, activitity diagrams, etc.
- as noted earlier, only draw a diagram that is needed.
- the diagram should aim at providing clarity to the team
EXAMPLES:
- think of systems like
- public transport live feed system
- peer-to-peer road traffic streaming
- cross-career mobile money system.