Skip to content

Kruchten’s “4+1” View Model (for Dummies)

Kruchten's "4+1" model uses multiple views to describe a software-intensive system's architecture, in line with the IEEE 1471-2000 standard. Learn how it works.

Ricardo Moya

Kruchten’s “4+1” model is a view model [1] designed by professor Philippe Kruchten that fits the “IEEE 1471-2000” standard (Recommended Practice for Architecture Description of Software-Intensive Systems [5]), which is used to describe the architecture of a software-intensive system based on multiple viewpoints.

Portrait of Professor Philippe Kruchten, author of the 4+1 views model

Photo of Philippe Kruchten

Okay, if you haven’t understood anything so far and you’re not in your 3rd or 4th year of a Software Engineering degree (or similar), don’t worry, that’s normal. And if you are in your 3rd or 4th year and still haven’t understood anything, get your act together NOW! Because these things should (at least) ring a bell.

Well, let’s go step by step. Before explaining Kruchten’s model in more detail, let’s explain and try to make a few concepts clear, such as what a software system is, what a view is and what a viewpoint is.

First, let’s find out what “a software system” is, which we define with the following “equation” (made in jarroba.com).

 

Software system = Hardware + Software

Indeed, broadly speaking, a software system is software (more or less complex) that “runs” on a given piece of hardware (more or less complex). For example, the whole deal with “ATMs” is a software system, since on a “hardware” that we call an “ATM”, some kind of program (software) runs that lets us carry out certain transactions.

Another thing this Kruchten model talks about is the concepts of view and viewpoint. Well, a view is nothing more than a representation of the whole software system from a given perspective, and a viewpoint is defined as a set of rules (or conventions) for creating and understanding views.

Okay, if it’s still not very clear what views and viewpoints are, let’s explain it with a simple analogy from the world of architecture (the architecture of houses, buildings and so on):

If an architect shows us a floor plan of a house (like the one in the following image), they are showing us a view of the house. Since we have no idea about architecture, when they explain to us, or give us a document explaining, that a certain symbol in the plan represents a door or another symbol represents a table, they are giving us a viewpoint so that we can understand the floor plan. If later they showed us another plan (or a scale model) of the house, they would be giving us another view of the house and would have to explain the new viewpoint, that is, they would have to explain what each symbol or object in that new view means.

House floor plan with living room, bathroom, bedrooms and kitchen, with dimensions, as an example of an architecture view

Well then, now that we’ve seen what views and viewpoints are, and having explained what a software system is, you can already get an idea of what Kruchten’s “4+1” view model for describing software system architectures is about, right?

Well, yes. What Kruchten proposes is that a software system should be documented and presented (as proposed in the IEEE 1471-2000 standard) with 4 clearly distinct views, and these 4 views must be tied together by one more view, the so-called “+1” view. Kruchten named these 4 views: logical view, process view, deployment view and physical view, and the “+1” view, whose job is to relate the 4 views mentioned, he named the scenario view.

Each of these views must show the whole architecture of the software system being documented, but each one must be documented differently and must show different aspects of the software system. Next, we explain what information the documentation of each of these views should contain.

Diagram of Kruchten's 4+1 model: logical, deployment, process and physical views, with the scenarios view at the center

Logical View: This view represents the functionality the system will provide to end users. That is, it must represent what the system should do, and the functions and services it offers. To complete the documentation of this view you can include UML class, communication or sequence diagrams.

4+1 diagram with the Logical View highlighted: end user, functionality, and class, communication and sequence diagrams

Deployment View: This view shows the system from the perspective of a developer and deals with software management; in other words, it shows how the software system is divided into components and the dependencies between those components. To complete the documentation of this view you can include UML component and package diagrams.

4+1 diagram with the Deployment View highlighted: programmers, software management, component and package diagrams

Process View: This view shows the processes in the system and the way these processes communicate; that is, it represents, from the perspective of a systems integrator, the step-by-step business and operational workflow of the components that make up the system. To complete the documentation of this view you can include the UML activity diagram.

4+1 diagram with the Process View highlighted: integrators, performance and scalability, activity diagram

Physical View: This view shows, from the perspective of a systems engineer, all the physical components of the system as well as the physical connections between the components that make up the solution (including services). To complete the documentation of this view you can include the UML deployment diagram.

4+1 diagram with the Physical View highlighted: systems engineers, system topology, deployment diagram

“+1” Scenario View: This view is represented by the software  use cases and its job is to join and relate the other 4 views. This means that from a use case we can see how the other 4 views are linked together, giving us traceability of components, classes, machines, packages, etc. needed to carry out each use case. To complete the documentation of this view you can include UML use case diagrams.

4+1 diagram with the central Scenarios (+1) view highlighted, linked to the use case diagram

Note

 

VERY IMPORTANT NOTE: Let’s be clear: Kruchten does not say how each view must be documented; he says what has to be documented in each view. That is, when we say the logical view can be documented graphically with a UML class diagram, it doesn’t mean the view has to be documented with that diagram, but that this diagram (because of its characteristics) can document that view.

Kruchten doesn’t define “viewpoints” anywhere for creating views; he only defines the information each view must contain. The thing is that nowadays a lot of software is built under the object-oriented programming paradigm. And as it happens, there is something called UML (Unified Modeling Language) that, how about that, represents views with diagrams made up of “symbols” belonging to a LANGUAGE called UML (UML is a language, not a methodology) that every software engineer knows (or should know). And what does that mean? That a diagram is a view, with a viewpoint that is already very well defined in UML. See, now things are starting to add up!! So there you go: with UML we save ourselves from having to document the viewpoints, since they’re already documented.

And another very important thing is that everyone can represent the views “however they want” as long as they are reflected in the viewpoint, as will happen in many cases with the physical view.

Once we’ve explained the views Kruchten proposes and how to document them, you can see that it’s a pretty good model for documenting the architecture of a “complex” software system, since all the “stakeholders” (people interested in the project, from the system’s user to the company’s big boss) can understand the software system being developed from different perspectives.

To finish, I just recommend using this Kruchten “4+1” view model to document software system architectures following the “IEEE 1471-2000” standard.

Bibliography

[1] Article by Philippe Kruchten “Architectual Blueprints – the “4+1” View Model of Software Architecture“: Architectural Blueprints—The "4+1" View Model of Software Architecture

[2] Wikipedia: http://en.wikipedia.org/wiki/4%2B1_Architectural_View_Model

[3] “Software Engineering: Principles and Practice“, 3rd Edition by Hans van Vliet. May 2008.

[4] http://www.notei.com.mx/index.php?id=81

[5] IEEE 1471-2000 — IEEE Recommended Practice for Architectural Description for Software-Intensive Systems (IEEE SA)

“Kruchten’s “4+1” View Model (for Dummies)” by Ricardo Moya at jarroba.com, licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0. Registered at Safe Creative.

Ricardo Moya

I work in Machine Learning and Big Data. I like learning new technologies and explaining them as clearly as I can on this site.

You may also like

Comments

Leave a comment


This site uses Akismet to reduce spam. Learn how your comment data is processed.