Chat with us, powered by LiveChat

The C4 Model for Software Architecture

0 69

Key Takeaways
The introduction of software diagrams has been scaled returned as a result of the shift to agile methodologies. When diagrams are created, they’re often puzzling and doubtful. The C4 version consists of a hierarchical set of software structure diagrams for context, boxes, components, and code. The hierarchy of the C4 diagrams gives specific levels of abstraction, every of that’s applicable to a one of a kind target audience. Avoid ambiguity on your diagrams by means of such as a sufficient amount of text in addition to a key/legend for the notation you operate.

Software architecture diagrams are a notable manner to talk how you are making plans to construct a software machine (up-the front layout) or how an existing software program machine works (retrospective documentation, expertise sharing, and getting to know).

However, it’s very in all likelihood that most people of the software architecture diagrams you’ve visible are a harassed mess of boxes and lines. An unlucky and unintended aspect effect of the Manifesto for Agile Software Development is that many teams have stopped or scaled back their diagramming and documentation efforts, together with the usage of UML.

These identical groups now generally tend to rely on advert hoc diagrams that they draw on a whiteboard or prepare using preferred-motive diagramming gear along with Microsoft Visio. Ionut Basin remaining year wrote “The Art of Crafting Architectural Diagrams”, which describes a number of not unusual issues with doing this, related to incomprehensible notations and doubtful semantics.

(Click on the photo to amplify it)

Ambiguous software architecture diagrams result in misunderstanding, which can gradual a good group down. In our enterprise, we clearly should be striving to create higher software structure diagrams. After years of building software program myself and working with teams around the world, I’ve created something I call the “C4 model”. C4 stands for context, containers, additives, and code — a set of hierarchical diagrams that you may use to explain your software structure at exceptional zoom stages, each useful for extraordinary audiences. Think of it as Google Maps for your code.

(Click on the photograph to amplify it)

To create those maps of your code, you first need a common set of abstractions to create a ubiquitous language to apply to describe the static structure of a software machine. The C4 model considers the static systems of a software program machine in phrases of containers (programs, facts shops, microservices, etc.), components, and code. It also considers the folks who use the software systems that we construct.Image result for The C4 Model for Software Architecture

Personal clients of the financial institution use the Internet banking system to view facts about their financial institution bills and to make payments. The Internet banking machine makes use of the bank’s present mainframe banking system to do this and uses the bank’s present e-mail gadget to send email to clients. Colour coding inside the diagram indicates which software program structures already exist (the gray boxes) and people to be built (blue).

Level 2: Container diagram
Level 2, a container diagram, zooms into the software program gadget and suggests the bins (programs, data shops, microservices, etc.) that make up that software device. Technology choices also are a key a part of this diagram. Below is a sample field diagram for the Internet banking gadget. It suggests that the Internet banking system (the dashed box) is made up of five boxes: a server-facet net software, a purchaser-facet single-page software, a cellular app, a server-aspect API application, and a database.

(Click on the photo to increase it)

The web application is a Java/Spring MVC net utility that surely serves static content material (HTML, CSS, and JavaScript), which include the content that makes up the unmarried-page application. The single-page utility is an Angular utility that runs within the client’s internet browser, imparting all the Internet banking capabilities. Alternatively, customers can use the move-platform Xamarin cellular app to access a subset of the Internet banking capability. Both the single-web page software and cellular app use a JSON/HTTPS API, which another Java/Spring MVC utility walking on the server facet provides. The API software receives user records from the database (a relational database schema). The API utility additionally communicates with the present mainframe banking device, the use of a proprietary XML/HTTPS interface, to get facts approximately bank debts or make transactions. The API software also uses the existing email device if it needs to ship e-mail to customers.

Level three: Component diagram
Level three, a thing diagram, zooms into an individual field to reveal the additives interior it. These components have to map to actual abstractions (e.G., a grouping of code) on your codebase. Here is a pattern component diagram for the fictional Internet banking device that shows some (in preference to all) of the components within the API software.

(Click on the photo to make bigger it)

Two Spring MVC Rest Controllers offer to get entry to points for the JSON/HTTPS API, with each controller, in the end, using different additives to get entry to statistics from the database and mainframe banking machine.

Level 4: Code
Finally, in case you really need or want to, you can zoom into a man or woman factor to reveal how that element is carried out. This is a sample (and partial) UML elegance diagram for the fictitious Internet banking machine that, showing the code factors (interfaces and instructions) that make up the MainframeBankingSystemFacade element.

(Click on the picture to increase it)

It shows that the thing is made from a number of classes, with the implementation information immediately reflecting the code. I wouldn’t always recommend developing diagrams at this stage of detail, especially whilst you may obtain them on demand from maximum IDEs.

NotationImage result for The C4 Model for Software Architecture
The C4 version would not prescribe any unique notation, and what you see in those pattern diagrams is a simple notation that works well on whiteboards, paper, sticky notes, index playing cards, and a diffusion of diagramming gear. You can use UML as your notation, too, with the perfect use of packages, components, and stereotypes. Regardless of the notation that you use, I could endorse that every detail consists of a name, the detail type (i.E., “Person”, “Software System”, “Container”, or “Component”), a technology choice (if appropriate), and a few descriptive textual contents. It may seem uncommon to consist of a lot of text in a diagram, however, this additional text eliminates an awful lot of ambiguity usually visible on software program structure diagrams.


Finally, do not forget approximately the diagram name, which has to seem on each diagram to unambiguously describe each diagram’s type and scope (e.G., “System context diagram for Internet banking system”).

More statistics
The C4 version is an easy way to communicate software architecture with extraordinary degrees of abstraction so that you can inform unique memories to distinct audiences. It’s additionally a way to introduce (frequently, reintroduce) some rigor and lightweight modeling to software program development groups. See c4model.Com for greater statistics approximately the C4 model, in addition to supplementary diagrams (runtime and deployment), examples, a notation tick list, FAQs, videos from conference talks, and tooling options.

About the Author
Simon Brown is an impartial representative specializing in software structure, and the author of “Software Architecture for Developers” (a developer-friendly guide to software program structure, technical management and the balance with agility). He is likewise the author of the C4 software structure model, that’s a simple technique for developing maps of your code. Simon is a normal speaker at international software program improvement meetings and travels the arena to help organizations visualize and file their software structure.

Geneva A. Crawford

View all contributions by Geneva A. Crawford

Similar articles

Leave a reply

Your email address will not be published. Required fields are marked *

About Us

Latest tech world updates and news form all around the world at

Subscribe Us