Modeling Software Systems
Applying tools and techniques for increasing the reliability of a software system usually requires first modeling it. That is, representing the system in terms of mathematical objects that reflect its observed properties. In physics, it is helpful to use a model of a system (e.g., an atom, a planet) in order to analyze some of its aspects. Modeling usually involves the process of abstraction, i.e., simplifying the description of the system, while preserving only a limited number of the original details. This allows one to focus only on the main properties and better manage the complexity of the system. In software, as in physics, it is often much more convenient and manageable to deal with an abstract model, which is simplified and idealized, than to reason about the whole system. Issues such as high complexity can often prohibit analyzing software code directly, while a model can often be made small and simple enough for applying formal methods. From a different perspective, modeling is required since mathematical methods cannot handle physical entities (e.g., computer memory), but rather mathematical abstractions of them.
KeywordsPartial Order Critical Section Program Variable Program Counter Process Fairness
Unable to display preview. Download preview PDF.