Putting the "Engineering" into Software Engineering with Models

Models are frequently used for illustrations in software design documents. Commonly they are used to show static structure and less often, external dynamic behavior. However, in software engineering, the lack of conceptual models often inhibits creativity and understanding, which may in turn lead to incomplete or poor design. This paper describes our experience using models for the architectural, conceptual and detailed design for software systems, identifies perceived weaknesses in traditional approaches and makes recommendations for future modeling tools and techniques.