We model software for a variety of reasons: to assess the viability of or plan software systems to be built, to optimize use of (minimize, or ideally, avoid waste of) resources in response to inevitable changes in business, social, or technological environments, or simply to understand existing software systems. Indeed, as indicated by the model-driven approach to software development (Beydeda, Book, & Gruhn, 2005), models are becoming first-class members of organizations and software process environments that embrace them. The examples of collaboration in implementation of software are well-known (Nosek, 1998; Williams & Kessler, 2003). As models get large and complex, the need for creating them collaboratively in a systematic manner arises, and we propose pair modeling as an approach.
Key Terms in this Chapter
Formal Specification: A software representation with well-defined syntax and semantics that is usually used to express software requirements or detailed software design.
Use Case Model: A behavioral model that captures typical interactions between actors and the software system under development.
Software Engineering: A discipline that advocates a systematic approach of developing high-quality software on a large-scale while taking into account the factors of sustainability and longevity, as well as, organizational constraints of time and resources.
Semiotics: The field of study of signs and their representations.
Agile Development: A philosophy that embraces uncertainty, encourages team communication, values customer satisfaction, vies for early delivery, and promotes sustainable development.
Quality Model: A set of characteristics and the relationships between them that provide the basis for specifying quality requirements and evaluating quality of an entity.
Quality: The totality of features and characteristics of a product or a service that bear on its ability to satisfy stated or implied needs.
Domain Model: A simplified abstraction of a universe of discourse from a certain viewpoint.