How to describe software architecture in a way that can be easily understood by all stakeholders, be they technical or non-technical?
How to describe the same thing from diferent perspectives without repeating yourself?
The answer: 𝘁𝗵𝗲 𝟰+𝟭 𝘃𝗶𝗲𝘄 𝗺𝗼𝗱𝗲𝗹.
The 4+1 view model describes a system from five diferent perspectives:
𝗟𝗼𝗴𝗶𝗰𝗮𝗹 𝘃𝗶𝗲𝘄 – describes the functionality that the system provides to end-users.
𝗣𝗿𝗼𝗰𝗲𝘀𝘀 𝘃𝗶𝗲𝘄 – describes processes and how they communicate.
𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝘃𝗶𝗲𝘄 – describes the system from software development perspective.
𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁 𝘃𝗶𝗲𝘄 – describes how the system looks like when deployed.
𝗨𝘀𝗲 𝗰𝗮𝘀𝗲 𝘃𝗶𝗲𝘄 – describe sequences of interactions between objects and between processes.
Some consider it rigid, but for me this is a simple and sufficient structure to describe most of the systems I’m working on.