Introduction to modeling

The main reason for modeling is to organize and visualize the structure and components of software intensive systems. With models, you capture requirements, identify and specify subsystems, and visualize and document logical and physical elements, and structural and behavioral patterns.

In the UML User Guide, Booch et al cite a number of activities involved in modeling a system's architecture. These activities may be summarized as:

In addition, the authors outline a number of activities that apply to both the overall system and each of the subsystems:

The authors go on to point out that creating of a system architecture isn't a single event; rather it is a process of successive refinement, in a manner that is "use case-driven, architecture centric, and iterative and incremental."*

Choosing the right set of models is important. There are no hard and fast rules, but the wrong models give you an inaccurate view of the system and jeopardize the overall success of a project. A few points to remember about good models are: