Design, in the context of software development, is an important aspect to the process of creating reliable and valid computer software in the most efficient manner possible. Whether documented formally in a specification or informally on a white board, a clear and concise design aids software developers in creating a high-quality product. Design focuses on how the problem will be solved, whereas requirements engineering focus on the problem itself. The design of the system is the plan of implementation.

There are several tools that help with the design stage of the software process. One important tool is the Unified Modeling Language or UML, created by the Three Amigos: Grady Booch, Jim Rumbaugh, and Ivar Jacobson. UML is a standardized way to define the relationships and interactions between objects in a system. The design of the system can be modeled using class diagrams, sequence diagrams, and state charts. A class diagram is a static model that describes the different classes or objects, the attributes and operations of the objects, and the relationships between all of the objects in the program. Sequence diagrams are dynamic models used to describe the sequence of messages sent between objects over different scenarios in the system. State charts are a dynamic model that describes the decision points and paths through the application.

Design patterns are also important to the design of software applications, but are discussed in another module.

Author: Laurie Williams and Sarah Heckman
Maintained By: Sarah Heckman
Last Updated: 2008-08-14