Using models to manage complexity: You’re doing it right now!
In my job, I routinely find myself talking with clients about using modeling to support their systems engineering activities. The discussion usually focuses on the challenges a team is having, and most of their difficulty can often be traced back to a lack of understanding of what modeling is. This is the same issue I saw many students struggling with when I taught introductory modeling classes. In this blog post, I will try to present modeling as simply a formalization of what we, as humans, do all the time: abstract. We do this without even being aware of it. My hope is that with this perspective in mind, you will have a clearer understanding of how a model should develop when being applied to a system design.
Every model is an abstraction and we humans use abstraction constantly. I will use an example to illustrate. If you glance at the sketch here, what is the first thing that comes to mind? If you are like most of my students, you might answer “It’s a house!” My response would be “Is it actually a house?” Then the usual response to this would be “It’s a drawing of a house.” True, but have you ever seen a real house that looks like this? My point is that this is a representation of a house—a model of a house. While it is missing many details that a real house would have, it does convey specific information. For instance, this house has a door and a window and they are located next to each other. It has a pitched roof and a chimney on top. This is a specific kind of abstraction of a house. As the modeler, I chose to eliminate most of the details and emphasize the remaining ones.
Modeling a system with a notation like the Systems Modeling Language (SysML) is essentially doing the same thing. There is, of course, a small difference. Using a language like SysML allows us to be consistent and precise about what we are describing. This is essential if we are going to use these models for engineering work. In addition to defining a set of graphical elements and element relations to use, SysML defines the meaning (semantic) behind the graphics. If we “redraw” our house from the first example in a SysML block definition diagram, it might look something like the following:
Notice the SysML model is, in some ways, actually more abstract than the sketch. For instance, the spatial relationship between the window and the door is not clear. Without carefully reading the diagram, it is not at all clear that it even represents a house! On the other hand, the SysML view explicitly indicates that the house has two windows, something that cannot be seen in the sketch.
While most of us tend to think of diagrams as being the same as a model, the real power of this type of modeling is that the diagrams are really just views of an underlying (more complete) model. SysML allows us to describe the behavior of individual components, how they interact and the types of relationships between them. We can also use as many or as few of these views as needed to fulfill the model’s purpose.
Now, SysML is meant to develop and describe complex systems, and because of this it has a very large vocabulary. Fortunately, relatively few diagrams and element types are needed to develop useful models. However, developing and using models in this way requires specialized tool support to be effective, and that is why drawing tools like Microsoft Visio or PowerPoint are not appropriate.
Using and managing abstraction is a powerful human skill that each of us possesses and uses. Formally applying it in an engineering context can be a powerful way to manage complexity in modern systems development. Of course, adopting a model-based approach to systems engineering is not a simple task; like any useful skill, it takes practice and persistence. The reward is an ability to effectively develop and describe arbitrarily complex systems from a very abstract point (“black box” viewpoint) to the fundamental components (“white box” viewpoint). It is well worth the effort.
IBM Rational provides capabilities for model-based systems engineering, including SysML modeling, project management and model-based development techniques. Conn