CS302 Study Guide

Unit 6: Software Design

6a. Explain the software design principles used to create well-designed software that is easy to understand, test, modify, and develop

  • What are the software design principles?
  • What is the purpose of the software design principles?

Design principles include information hiding, modularization, cohesion, and coupling. These principles apply to the "divide and conquer" problem-solving strategy often used in system design. "Divide and conquer" decomposes a large problem or task into smaller ones that we can solve. We may repeat the decomposition several times until reaching a level of solvable problems or tasks. You can see the decomposition of the problem or task in the Requirements Model produced by Requirements Analysis. We use this model to specify the objects and classes. Software Design continues the decomposition to extend the model to a design model that specifies how the problem or task will be solved or performed. The solution will be in terms of solutions to small subproblems and how the subsolutions are composed to solve or perform the requirements.

Design principles guide the decomposition by describing desirable properties of the modules that result from the decomposition: namely, modules that abstract or hide their internal data (information hiding), have minimal connections (low coupling), and have internal elements that are closely related or highly unified (high cohesion).

Software design activities and the decisions made are challenging because they bring about the transition from the problem domain to the solution domain. Design methods that promote design principles guide software design activities, which include data collection at a detailed level. We use that data to extend the requirements model to a design model. Software design principles guide to make the best decisions in carrying out the design activities.

To review, see Software Design.


6b. Apply the main activities of software design, such as creating class diagrams, sequence diagrams, and activity diagrams

  • What are the main activities of object-oriented design?

The main activities of object-oriented design are the creation of the software architecture or high-level design and the detailed design. These consist of the organization of the software or static structure and the dynamic structure or behavior of the software components. Class diagrams, sequence diagrams, and activity diagrams represent these. Recall that the names of these diagrams may vary; for example, activity diagrams may be called collaboration or communication diagrams.

To review, see Software Design and UML and Other Modeling Diagrams for Design.


6c. Interpret architectural design in terms of decisions, system organization, modular decomposition, and flow-and-control

  • What are the components of software architecture?

Software architecture has two aspects: static and dynamic. The static structure is the set of components, modules, classes, objects, and association relationships: generalization or composition, depending on the methodology. In general, "component" and "module" are terms independent of methodology. The static structure is a description of the decomposition and organization of the components or modules of the design. Dynamic structure is the subset of the fixed structure that corresponds to the flow of control, timing, and concurrency of the execution of the modules.

We often perform software design at two levels: the software architecture level, or high-level design, and a detailed design level. The description of a software architecture should include the decisions made in defining the architecture to address a problem or requirement, having the required degree of quality.

To review, see:


6d. Use design diagrams to determine the way data is represented and processes are executed in process-oriented, data-oriented, and object-oriented methodologies

  • What are the activities of the Design Phase?
  • How are the work products of the design activities represented?

Trace information is captured and recorded to document the transition from the requirements to the design model. This traceability information, for example, links a requirement to the design element(s) that support and satisfy that requirement. Design activities identify the solution domain objects corresponding to the problem domain objects in the requirements model, including human-computer interaction, physical hardware, software services, and object instances.

Using OO design, work products are the design diagrams (like the one shown below) and associated documents.

Using OO design, work products are the design diagrams

To review, see:


Unit 6 Vocabulary

This vocabulary list includes terms you must know to complete the final exam successfully.

  • design model
  • design principles