Sunday, December 11, 2011

Chapter 9

Chapter 9
Design Engineering

CHAPTER OVERVIEW AND COMMENTS

This intent of this chapter is to provide an introduction to the design process and to describe fundamental design concepts that are essential to an understanding of any software design method. Basic concepts are introduced and a fundamental design model is discussed. The design model consists of the data design, architectural design, interface design, and component-level design.
Although many of the design concepts discussed in this chapter may have been presented in earlier courses, it is important to re-emphasize each concept so that all students have a consistent understanding of them. Students should be encouraged to use the design document template form the SEPA web site as a basis for the design documents they write for their own software projects.

9.1    Design within the Context of Software Engineering
It is important for students to understand the mapping from analysis model to the design model. Spend some time discussing Figure 9.1 to establish the relationships.
Students should be reminded that all design work products must be traceable to software requirements and that all design work products must be reviewed for quality.

9.2    The Design Process
Be sure your students understand that software quality begins with solid design. The first part of this section addresses the elements of software quality. Be certain to emphasize these.
Make the point that software design is an iterative process that is traceable to the software requirements analysis process. Students need to be reminded that many software projects iterate through the analysis and design phases several times. Pure separation of analysis and design may not always be possible or desirable. Having your students discuss the generic design guidelines as a class may be a worthwhile activity.
It may be a bit early to discuss the task set presented in Section 9.2.3. Use it as a TOC for topics to be present in this and the following chapters.

9.3    Design Concepts
This section discusses many significant design concepts (abstraction, refinement, modularity, architecture, patterns, refactoring, functional independence, information hiding, and OO design concepts). For some of these concepts a simple definition will be sufficient. For others (e.g. functional independence) presenting additional examples may be helpful.

9.4    The Design Model
Students should be told that the details required to develop a complete design model appear in Chapters 10 - 12).  Students should be reminded that design changes are inevitable and that delaying component level design can reduce the impact of these changes.
Cover each of the design “elements” presented in this section to foreshadow content to be discussed in detail in later chapters.
The use of UML notation in design models is described and several examples are given. Students should be encouraged to create some of these diagrams as part of the process of building a design model for a familiar software application. A document template appears on the SEPA web site. It is important to get students in the habit of using diagrams to represent design information whenever it is feasible. Students should be reminded that design changes are inevitable and that delaying component level design can reduce the impact of these changes.
9.5    Pattern-Based Software Design
The use of design patterns is a topic worthy of serious classroom coverage. However, it’s almost more important that your student understand the intent of patterns and their benefits as opposed to the details of a specific design pattern. Have your students use the pattern template in the sidebar (Section 9.5.1) to describe a design pattern for some product other than software, say a car or a consumer electronic device. This will help them get a feel for just what a pattern is.
Be sure to explain the difference between a design pattern and a framework, indicated where each is used.


No comments:

Post a Comment