The C4 model is a lean graphical notation technique for modelling the architecture of software systems.
It is based on a structural decomposition of a system into containers and components and relies on existing modelling techniques such as the
Unified Modelling Language (UML) or
Entity Relation Diagrams (ERD) for the more detailed decomposition of the architectural building blocks.
History
The C4 model was created by the
software architect Simon Brown between 2006 and 2011 on the roots of
Unified Modelling Language (UML) and the
4+1 architectural view model
4+1 is a view model used for "describing the architecture of software-intensive systems, based on the use of multiple, concurrent views".Kruchten, Philippe (1995, November)Architectural Blueprints — The “4+1” View Model of Software Architect ...
. The launch of an official website under a
Creative Commons license
A Creative Commons (CC) license is one of several public copyright licenses that enable the free distribution of an otherwise copyrighted "work".A "work" is any creative material made by a person. A painting, a graphic, a book, a song/lyrics ...
and an article published in 2018 popularised the emerging technique.
Overview
The C4 model documents the architecture of a
software system
A software system is a system of intercommunicating components based on software forming part of a computer system (a combination of hardware and software). It "consists of a number of separate programs, configuration files, which are used to se ...
, by showing multiple points of view that explain the decomposition of a system into containers and
components
Circuit Component may refer to:
•Are devices that perform functions when they are connected in a circuit.
In engineering, science, and technology Generic systems
* System components, an entity with discrete structure, such as an assem ...
, the relationship between these elements, and, where appropriate, the relation with its users.
The viewpoints are organized according to their hierarchical level:
* Context diagrams (level 1): show the system in scope and its relationship with users and other systems;
* Container diagrams (level 2): decompose a system into interrelated containers. A container represents an application or a data store;
* Component diagrams (level 3): decompose containers into interrelated components, and relate the components to other containers or other systems;
* Code diagrams (level 4): provide additional details about the design of the architectural elements that can be mapped to code. The C4 model relies at this level on existing notations such as
Unified Modelling Language (UML),
Entity Relation Diagrams (ERD) or diagrams generated by
Integrated Development Environments (IDE).
For level 1 to 3, the C4 model uses 5 basic diagramming elements: persons, software systems, containers, components and relationships. The technique is not prescriptive for the layout, shape, colour and style of these elements. Instead, the C4 model recommends using simple diagrams based on nested boxes in order to facilitate interactive collaborative drawing. The technique also promotes good modelling practices such as providing a title and legend on every diagram, and clear unambiguous labelling in order to facilitate the understanding by the intended audience.
The C4 model facilitates collaborative visual architecting and evolutionary architecture in the context of agile teams where more formal documentation methods and up-front architectural design are not desired.
See also
*
Software architecture
Software architecture is the fundamental structure of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.
...
References
External links
Official site
{{Software engineering
Architecture description language
Software architecture
Diagrams
Notation
Knowledge representation
Software modeling language
Modeling languages