The next step in SAF (after “quality Attributes”) is Modeling. Webster’s dictionary defines “Model” as (among other things) : “3 : structural design; 7 : Archetype ; 10b : a type or design of product (as a car);11 : a description or analogy used to help visualize something (as an atom) that cannot be directly observed” – as I mentioned in my what’s software architecture post there’s no single structure that IS the architecture – this means that we’ll have to look at the architecture from different angles (viewpoints) – for example a block diagram such as the diagram below (accompanied with some documentation that explains it) may tell us something about the layers that will be used to solve a problem it tells us nothing about the business that we are trying to solve.
We need to augment with more views on the system (such as the next diagram) so that we can better visualize and convey the architecture of the system.
IEEE 1471-2000 “Recommended Practice for Architectural Description of Software Intensive Systems” defines the relationship between the Stakeholders, their concerns, viewpoints, views and models:
(IEEE 1471 model adapted from a presentation by Rich Hilliard )
By the way, the fact that we need to look at the architecture from different viewpoints doesn’t necessarily mean that the documentation isn’t just POW(“plain old whiteboard”) – The formality of the documentation is driven by the project style (agile/formal) and other stakeholder constraints (company standards, customer requirements etc.)
Since models participate in views (which in turn conforms to viewpoints – which address the stakeholder’s need/interested in) I consider choosing the views a prerequisite for modeling. Thus, on the next post on modeling I am going to talk a little about choosing views (suggested minimal set, viewpoint library etc.). Once I’ll get that off the table I’ll try to talk a little on architectural styles and patterns and follow that with some strategies for dealing with quality attributes before moving to the next SAF phase (Mapping).