Models -
A model is a representation in a certain medium of something in the same or another medium. The model captures the important aspects of the thing being modeled from a certain point of view and simplifies or omits the rest. A model of a software system is made in a modeling language, such as UML. The model has both semantics and notation and can take various forms that include both pictures and text.
Purpose of Models -
- To capture and precisely state requirements and domain knowledge so that all stakeholders may understand and agree on them. Requirements include application domain of the software system, user interface, breakdown of modules and other things.
- To think about the design of the system. A model of a software system helps developer explore several architectures and design solutions easily before writing actual code.
- To capture design decisions in a mutable form separate from the requirements. One model of a software system can capture the external behavior of a system and the real world domain information represented by the system. Another model shows the internal classes and operations that implement the external behavior.
- To generate usable work products. A model of a software system can be used to generate class declarations, procedure bodies, user interfaces, databases, scenarios of legal use, configuration of scripts, and list of race conditions.
- To organize, find, filter, retrieve, examine, and edit information about large systems. A model of a software system organizes information into several views: static structure, state machines, interactions, requirements and so on. Each view is a projection of the information in the complete model as selected for a purpose.
- To explore multiple solutions economically. It permits several designs to be considered, at a small cost of implementing any one design.
- To master complex systems. A model can abstract to a level that is comprehensible to humans, without getting lost in details.
Levels of Models -
Models take on different forms for various purposes and appear at different levels of abstraction. The amount of detail in the model must be adapted to one of the following purposes.
- Guides to the thought process. High level models built early in a project serve to focus the thought process of the stakeholders and highlight options. As design progresses, the early models are replaced by more accurate models.
- Abstract specifications of the essential structure of a system.
- Full specifications of a final system. An implementation model includes logical semantics of the system, algorithms, data structures, mechanisms that ensures proper performance and also organizational decisions about the system artifacts that are necessary for cooperative work by humans and processing by tools.
- Exemplars of typical or possible systems. An example model includes instances rather than general descriptors. It usually use only a subset of the UML constructs, those that deal with instances.
- Complete or partial descriptions of systems .
Contents of Models -
Semantics and presentation -
The Semantic aspect captures the meaning of an application as a network of logical constructs, such as classes, associations, states, use cases and messages. A semantic model has a syntactic structure, well-formed rules and execution dynamics. The Visual presentation shows semantic information in a form that can be seen, browsed and edited by humans. The arrangement of presentation elements may convey connotations about semantic relationships that are too weak or ambiguous to formalize in the semantic model but are nevertheless suggestive to humans.
Context -
Models are themselves artifacts in a computer system, and they are used within a larger context that gives them their full meaning. This context includes the internal organization of the model, annotations about the use of each model in the overall development process, a set of defaults and assumptions for element creation and manipulation and a relationship to the environment in which they are used.
Meaning of Model -
A model is a generator of potential configurations of systems; the possible systems are its extent or values. It is a description of the generic structure and meaning of a system. A model is always an abstraction at some level. It captures the essential aspects of a system and ignores some of the details. Aspects to be considered for models are as follows -
- Abstraction versus details - Models at different levels of precision can be used across the life of a project. A modeling language may be less precise on purpose because additional details is irrelevant for the purpose at hand. The final models have considerable detail and precision.
- Specification versus Implementation - A model can tell what something does (specifications), as well as how the function is accomplished (implementation). It is important to get the what correct before investing much time in the how.
- Description versus instances - The things the model describe are instances, which usually appear in models only as examples. Most instances exist only as part of the run time execution.
- Variations in interpretation - There are many possible interpretations of models in a modeling language. One can define certain semantic variation points - places at which different interpretations are possible - and assign each interpretation a name as a semantic variation so that one can state which variation is being used.
