OMSE 533 – Software Design Techniques
Fall 2003
Syllabus
(Updated October 27, 2003)
Synopsis
While design methods and notations evolve and change relatively rapidly, the fundamental principles of software engineering and software design do not. The focus of this course is on understanding and learning to apply fundamental design principles. The student will learn to apply that understanding to evaluate design methods and notations or to apply a given method or notation to achieve his or her design goals. The course will treat object-oriented design and the UML notation in some depth to give hands on experience in the application of fundamental principles in a particular design style and notation.
Prerequisites
OMSE 500 or permission of instructor
Resources
For this course (and all OMSE courses, for that matter) it is assumed that you have access to email, the Internet, and a computer running Microsoft Word ®.
Objectives
On completion this course, students shall have the skills to:
· Describe the role of analysis and design in software engineering.
· Understand and be able to apply basic design principles including abstraction, information hiding, and separation of concerns.
· Apply design principles and heuristics to evaluate a software design.
· Evaluate the “fit for purpose” of a design method relative to a given set of design objectives.
· Develop an OO design in UML that is consistent with design goals.
· Understand the nature of design patterns and be able to apply some basic patterns.
Required Texts
[Douglass]. Doing Hard Time: Developing Real-Time Systems with UML, Bruce Douglass, Addison-Wesley, 1999; ISBN 0-201-49837-5
[Parnas]. Software Fundamentals: Collected Papers by David L. Parnas, David M. Weiss and Daniel M. Hoffman (Editors), Addison-Wesley Pub Co., 1st edition (April 9, 2001); ISBN: 0201703696
Readings and Assignments
Readings from the textbooks and handouts (typically hardcopy but possibly softcopy by email or download) will be assigned each week as indicated in the course schedule below. Weekly assignments will be distributed in class each week and will be either reflections on the readings or analysis/design problems. Assignments are to be submitted in hardcopy at the beginning of the next week’s class. The final assignment (or take-home exam) will be submitted electronically.
Readings are listed in the week they are due – this means they should be read before the class period. Unfortunately, this means that some students will need to double up the reading between weeks 1 and 2 but the once-a-week schedule makes this unavoidable. However, these readings are not technically dense and can be gone through fairly quickly.
In addition to readings from the texts, you may be required to read other articles from the literature. Copies of these articles will always be provided in class (and possibly for download as well), usually the week before they are due.
Note also that a few information resource hyperlinks have been provided to supplement the course.
Handouts
[Brooks]. F.P. Brooks, “No Silver Bullet: Essence and Accidents of Software Engineering,” IEEE Computer, April 1987, pp. 10-19.
[van Vliet]. Hans van Vliet, Software Engineering: Principles and Practice, 2nd Ed., John Wiley and Sons, 2000.
[Ghezzi]. Carlo Ghezzi, Mehdi Jazayeri and Dino Mandrioli, Fundamentals of Software Engineering, 2nd Ed., Prentice-Hall, 2002.
[Rogers]. Wm. Paul Rogers, “Encapsulation is not information hiding”, JavaWorld, May 2001.
[McConnell]. Steve McConnell, “Missing in Action: Information Hiding”, IEEE Software, March 1996,
pp. 127-128.
[DeMarco]. Tom DeMarco, “Structured Analysis”, Software Pioneers: Contributions to Software Engineering, Manfred Broy and Ernst Denert (Editors), sd&m Conference 2001, Springer 2002, pp. 240-247.
[Stevens]. W.P. Stevens, G.J. Myers and L.L. Constantine, “Structured Design”, IBM Systems Journal, Vol 13,
No. 2, 1974, pp. 200-224.
[Harel], “Statecharts: A Visual Formalism for Complex Systems”, Science of Computer Programming 8 (1987), North-Holland
[Coplein]. James O. Coplien, “Software Design Patterns: Common Questions and Answers”, Software Production Research Department, AT&T Bell Laboratories.
Schedule
|
Wk |
Topics |
Readings |
|
1 |
Course Overview Introduction To Software Design |
[Brooks] “No Silver Bullet …” [Parnas] Ch. 18, “A Rational Design Process: How and Why to Fake It” [van Vliet] Ch. 11, “Software Design”, pp. 291-304 |
|
2. |
SW Design Principles - Modularity and Modularization - Separation of Concerns - Information Hiding - Abstraction; Transparency |
[Ghezzi] Ch. 3, “Software Engineering Principles” [Parnas] Ch. 13, “Some Software Engineering Principles” [Parnas] Ch. 9, “Use of the Concept Of Transparency in the Design of Hierarchically Structured Systems” |
|
3. |
Modularization Modular Design Example |
[Parnas] Ch. 7, “On the Criteria to be Used in Decomposing Systems into Modules” [Parnas] Ch. 16, “The Modular Structure of Complex Systems” |
|
4. |
Program Families Interface Design and Specification |
[Parnas] Ch. 10, “On the Design and Development of Program Families” [Parnas] Ch 14, ”Designing Software for Ease of Extension & Contraction” [Parnas] Ch 15, “A Procedure for Designing Abstract Interfaces … ” |
|
5. |
Design Methods Overview - Functional Decomposition - Structured Analysis & Design - Finite State Machines - Statecharts - Object-Oriented Design |
[DeMarco] “Structured Analysis” [Stevens] “Structured Design” [van Vliet] Ch.11, “Software Design”, pp. 315-337 [Harel], “Statecharts: A Visual Formalism for Complex Systems” [Douglass] Ch.1, “Intro to Objects and UML” [Parnas] Ch. 11, “Abstract Types Defined as Classes of Variables” |
|
6. |
Object-Oriented Design I Unified Modeling Language (UML) Use Case and Class Diagrams Generalization and Associations |
[Douglass] Ch. 1, “Intro” and Ch. 4, “… Object-Oriented Process …” [Rogers] “Encapsulation is not information hiding” [McConnell] “Missing in Action: Information Hiding” http://www.sparxsystems.com.au/UML_Tutorial.htm http://www.smartdraw.com/resources/examples/software/uml.htm |
|
7. |
Object-Oriented Design II More on UML and OOD |
http://www.sparxsystems.com.au/use_case_model.htm [Douglass] Ch. 5, “… Real-Time Systems” |
|
8. |
Designing Concurrent Systems Modeling Behavior Using UML |
[Douglass] Ch. 8, “Architectural Design” [Douglass] Ch. 7, “Object Behavioral Analysis” |
|
9. |
Architectural Design Design Patterns and Frameworks |
[Douglass] Ch. 9.2 & 9.3, 11.4 (various design patterns) and Ch. 13, “Real-Time Frameworks”, 13.3 (more patterns) [Coplien] “Software Design Patterns: Common Q & A’s |
|
10. |
In-Class Design Review Exercise Course Review |
[Parnas] Ch. 28, “Professional Responsibilities” |
|
11 |
Final Exam or Assignment |
|