Weekly Notes/Thoughts: Static Modeling vs Dynamic Modeling
Static modeling, just like what Sommerville (2015) pointed out, “show(s) the organization of the system design”; dynamic modeling, on the other hand, “shows the organization of the system when it is executing”.
In another word, static modeling models the “fixed” part, which means the different component, their attributes or relationships between different components in the system that is unlikely to change. They are the part that is the fundamental part of a system.
And the dynamic modeling models after the “changing” part, which means how the instances of those components can interact and produce some actions to implement something.
From my understanding, a human body is a perfect example of illustrating the difference between these approaches: the whole body is a system, if we draw the structure of body such as eyes, ears, liver, that would be the static model while if we write down the behaviors (how all of these parts interact) such as eating, reading, singing, etc, that is a dynamic model.
Think about this, moving or not, the body of a normal person still exists, eyes, ears, skins…all of these parts still exist; the relationship that a stomach belongs to the digestive system still exists. Since it is unlikely to change, it is actually something the static modeling needs to catch and model.
On the other hand, just like what Lahman(2011) said, the dynamic model is “All about Behavior”. So when we describe how you run away from seeing a lion: your eyes see the lions and tell your brain, your brain deals with the information and tells your feet to run. So this event executes as a result of interactions among all different parts of the body. Therefore, you get the idea, if you want to describe a system(a body), you need a description of the structure(static model) and the behaviors(dynamic model).
I really like what Lahman (2011) said:
“the static and dynamic views of a subject matter are tightly linked together, and the subject matter development is not complete until both have been described. Therefore, in practice, the static and dynamic models are developed in an iterative fashion so that the static model may be modified to deal with issues uncovered during dynamic modeling.”
A software system essentially is a tool to look for a solution, or sometimes a solution itself for a problem. To perform static and dynamic modeling will help us better understand a software system(from both the structure and behaviors) and thus gives us a way to reflect on this “solution” to see if we have missed anything or if we need to correct the solution.
Gomaa, H. (2011). Software Modeling and Design: UML, Use Cases, Patterns, and Software Architectures. New York, NY: Cambridge University Press.
Lahman, H.S. (2011). Model-Based Development: Applications. Boston, MA: Pearson Education.
Sommerville, I. (2015). Software Engineering. Tenth Edition. England: Pearson Education.