View this PageEdit this PageUploads to this PageHistory of this PageHomeRecent ChangesSearchHelp Guide

Nugget: Design I


The Design I course teaches the principles of designing software. The goal is to teach these principles through actively doing and critiquing design activities. Additionally, the course will cover techniques specific to high-level software design. Design I includes the following topics:

  • General design principles including
    • Abstraction
    • Refinement
    • Modularity, coupling and cohesion
    • Modeling

  • Fundamentals of software architecture, including the basic architectural components and styles, architectural descriptions, and architectural analysis.
  • Modeling of control structures
  • Modeling of data structures
  • Techniques for producing a high-level design specification
  • Design rationale
  • Techniques for tracing the design back to the requirements

Recommended Texts:
  • Software Architecture in Practice. Bass et al. Addison-Wesley, 1998.
  • General Software Engineering textbook

The class begins with presenting design as an activity in and of itself. The complexities of software design are introduced starting in week 3. The general design lessons should be taught with activities. The software-specific techniques can be taught with more traditional lectures. However, projects for practicing all techniques will be necessary throughout the course. General design principles should still be used to tie the software design techniques back to the first few weeks. Below is an example syllabus of this 8 week course. The class is 3 credit-hour course with small projects and examples both in class and as assignments. Project presentations and evaluations should be ongoing. The time is built into the syllabus in the 8th week. Assessment of the projects should try and focus on the process of design and not just the product.

Week 1: General design
  • Insight into representation and specification.
  • Complexity in design.
  • Importance of roles in design.
  • Introduction to SBF paradigm.

Week 2: General design
  • Introduction to evaluation, role of evaluation criteria.
  • Use of constraints within design.
  • Multiple views.

Week 3: General design and Softare Architecture.
  • Design fallacies
  • Modularity, coupling, and cohesion
  • Introduction to architectural components and styles. Architectural representation.
  • Refinement and abstraction - both in general and in architecture.

Week 4: Quality in Software Architecture
  • Decisions at the architectural level.
  • Architectural evaluation: SAAM or similar technique
  • Architectural document.

Week 5: Modeling control
  • Introduction to control structures
  • Methods for modeling control

Week 6: Modeling data
  • Introduction to high-level data structures
  • Modeling data statically - e.g. ER diagrams
  • Modeling data flow - e.g. DFDs

Week 7: Refinement and design rationale
  • Going from requirements to design.
  • Mapping design back to requirements.
  • Introduction to design rationale
  • How to record rationale - simplified IBIS or QOC method.

Week 8: Project presentations and evaluations.

Instructor Preparation:
  • Handouts on general design and design rationale
  • Small projects for practice
  • Lots of examples of specified models
  • Examples of completed specifications

Recommended Student Resources:
  • Rationale or other general modeling tool
  • Word processing program for every student

Link to this Page