In my opinion, unless you're working with a waterfall methodology with a long period dedicated to creating the models, and tools that can auto-generate code from UML, the payoff is jut not worth the trouble. While its extensive specification might sound good in theory, in practice it is quite heavy to use. While it serves a similar purpose, the C4 model is simpler and way more flexible, which it makes its adoption by a team more likely. You might notice some similarities with the Unified Modeling Language. Instead, this is where the expertise of the engineering team and the best practices in place should kick in. However it would be really tedious to maintain. What a "logical unit" is depends on the use case, and what you're trying to show in this diagram.Ĭode Diagram: This would show the exact implementation of each component. For example a database is a container.Ĭomponents Diagram: Displays the logical units that make up a container and their relationships. It shows how a system interacts with its users and other systemsĬontainers Diagram: Shows the runtimes that power the system. Here's a brief description of each of them:Ĭontext Diagram: This is the most abstract level. Each lower level diagram "zoom in" on a concept from the previous higher level one. The C4 model is an "abstraction-first" approach to diagramming software architecture, based upon abstractions that reflect how software architects and developers think about and build software.Ī C4 model for a given system is composed of 4 diagrams, representing 4 different levels of abstraction. The official documentation (which I encourage you to read □) describes it as : The C4 model is a set of software architecture viewpoints designed by Simon Brown. With that in mind, let's see how the C4 + Archi combination fits the bill ! □ The Tools The C4 Model Without the right tools, it's hard for a team to go beyond the initial drawing created during the conception phase, and actually maintain a model representative of the current codebase. ![]() I feel the last point is most difficult to attain. Easy to adopt for both senior and junior developers.Flexible enough to be used in an agile environment. ![]() ![]() We're looking for a software architecture method with the following characterisitcs : The models for the poll app are also available in this repository □ The Specificiationsįirst let's go over our needs. Then we'll apply them to a pratical example: Modeling the Poll App from my on going FastAPI tutorial! I am quite satisfied with it, so I figured I'd share it! First we'll go over what thoses tools are, and how to use them. As our numbers grow, we had an urgent need for tools and processes that allowed us to keep our agility, while offering strong guarantees on the quality of our codebase.Īfter some research, I settled on a process based on the C4 model and Archi. Recently, I decided the time had come for an overhaul of the way we handle software architecture in my team.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |