CAS 703: Software Design
Winter 2004
Instructors:
- Dr. Alan Wassyng
- Room: ITB-166,    Ext. 26072
- Email: wassyng@mcmaster.ca
- Office hours: TBA
TA:
TBA
Course Web Page: http://www.cas.mcmaster.ca/~sartipi/course/cas703/
Lectures:
  Tuesday 1:30-3:00pm,     Thursday 10:00-11:30am
   Room: ITB-222
Recommended Text books:
- Software Engineering: A Practitioner's Approach, Fifth Edition; by: Roger S. Pressman, publisher: McGraw-Hill.
- Fundamentals of Software Engineering, Second Edition; by: Ghezzi, Jazayeri, and Mandrioli, publisher: Printice Hall.
- Reference books:
- The Unified Modeling Language Reference Manual; by Rumbaugh, Jacobson, and Booch.
- Design Patterns: Elements of Reusable Object-Oriented Software; by: Erich Gamma, R. Helm, R. Johnson, J.M. Vlissides.
- Software Fundamentals: Collected Papers by David L. Parnas. Edited by: Daniel M. Hoffman & David M. Weiss. Addison-Wesley 2001. ISBN 0-201-70369-6
Course Outline:
- Introduction:
Overview, objectives, the need for a disciplined approach
- Software Process:
- Overview: Life cycle, estimation, planning, management.
- Life cycle models: Waterfall, Spiral, Unified process, Agile programming.
- Types of software applications: information, real-time, embedded, scientific/engineering, and distributed systems.
- Software Architecture:
- Architectural styles: layered, pipe and filter, client and server.
- Software views: 4+1 views, Zachman framework of views and perspectives
- Software Design Qualities:
- Correctness, performance, maintainability, reliability, understandability, etc.
- Software Design Principles:
- Abstraction, decomposition, seperation of concerns, information hiding, patterns, modularity.
- Software Design Methodology:
- Structured design (Data / control flow analysis).
- Component-based programming.
- Web-based programming.
- Software Design Documentation:
- Specification, module documentation, UML.
- Implementation Guidelines:
- Language dependency, CASE tools.
Marking Scheme:
Group Project 40%, Midterm Exam 20%, and Final Exam 40%.
Course Information:
(Postscript )
   (PDF)
Group Project:
The students in groups of four or five members design
and implement a non-trivial software system in one of the domains:
Information systems, Telephony system, or Web applications. The
design of the system is based on the notion of software architecture
views and perspectives. A text-based requirement document will be provided to the groups as a replacement of the requirements analysis activity.
Project Definition:
Group Members:
- (Group 1) Issam Al-Azzoni; Kevin Dagenais; Pulak Kumar Chowdhury; Vera Pantelic.
- (Group 2) Raoguang Song; Cen Song; Yu Wei; Wanhe Zhang.
- (Group 3) Yu-Tong He; Jingda Li; Xinjun Wu; Xiaotao Deng.
- (Group 4) Fang Cao; Saeed Samet; Yuwen Yang.
Deliverables: Each deliverable worth 10% of the total mark.
- Phase 0 (January 29): group assignment.
- List of group members.
- Initial task assignment among members.
- Received from: G1, G2, G3, G4
- Phase 1 (February 3): project management.    (%5)
- Cost estimation using COCOMO model.
- Planning and scheduling using "Gantt charts" and "PERT charts".
- Received from: G1, G2, G3, G4
- Phase 2 (February 23): high-level design.    (%10)
- High-level design of the system using UML component diagram and documented using descriptive text.
- Owner's perspective for data view using UML class diagram, and network view using format-free diagram.
- Received from: G1, G2, G3, G4
- Phase 3 (March 9): low-level design.    (%10)
Three options:
- Object-oriented design using UML class diagram, statechart diagram, and use-case diagram. Sample table to specify class attributes/methods:
.ps.
- Structured design using functional diagram and behavior diagram (data/control-flow diagrams).
- Parnas Rational Design technique using MIS and MID.
- Received from: G1, G2, G3, G4
- Phase 4 (March 29): implementation and demo.   (%15)
- Three units "order taker", "assembly", and "food preparation" of the restaurant system will be implemented; the other two units, i.e., "manager" and "inventory" will be implemented as look-up tables. You are free to choose the implementation technique of your choice, i.e., CASE environments, or programming languages C, C++, Java, etc.
Sample screen panels for the course project: .ppt
- User Manual received from: G1, G2, G3, G4
- Project presentation, Friday April 2, 2004 in Project Room
- Groups G1 and G2, 10:00am
- Groups G3 and G4, 2:00pm
- We would like to thank all groups for their efforts that produced impressive project implementations and presentations. (course instructors)
Course Materials and Slides:
- Week 1 (Jan 5): course overview; overview of Software Engineering.   (slides .ppt)
Readings: chapter 1 Sommerville.
- Week 2 (Jan 12): software architecture; architectural views and styles; discussion on course project.   (slides .ppt)
Readings: Software architecture; architectural styles; Zachman views; 4+1 views.
- Week 3 (Jan 19): project management, planning, estimation.   (slides .ppt)
Readings: chapter 8 Ghezzi.
- Week 4 (Jan 26): software design qualities; software design principles.   (slides .ppt)
Readings: chapters 2 and 3 Ghezzi.
- Week 5 (Feb 2): UML model.   (slides: 1 .ppt;  2 .pdf)
Readings: chapter 3 of UML reference manual, Booch, et al.
Class diagram, use case diagram, state machine diagram, and component diagrm, of the UML manual will be used for the project. The corresponding parts of the UML manual are recommended to be studied.
- Week 6 (Feb 9): Structural design using Statemate Tool (report: .ps;   slides .ppt)
- Week 7 (Feb 16): Reading week, NO CLASS
- Week 8 (Feb 23): Modular design principles (slides: .ppt)
- Week 9 (Mar 1): Modular design principles continued (black-box example: .pdf, notes on black-box stack .pdf).
A system design paper: .pdf
- Week 10 (Mar 8): Design decomposition (.pdf). See Week 11 for complete slides.
- Week 11 (Mar 15): Function tables; system specification. Complete set of slides for specification and design: .pdf
- Week 12 (Mar 22) Design patterns (slides: .ppt)
- Week 13 (Mar 29) Design of Web Services (slides: .ppt)
Midterm Exam: Thursday March 11 in class
- The midterm exam is open book. The questions cover the design aspects of software systems using both modular design and UML modeling. In the UML modeling, the requirement of a system is given and the design of UML diagrams are asked (similar to the course project).
- Solution for question 1II of the Midterm Exam: .pdf.
- Midterm Exam Marks: .pdf
Final Exam: Friday April 16, 10am
Announcements:
- (Jan 12) the lectures on Fridays have been moved to Thursdays at 9:45am
- (Jan 22) next week I will update the project's deliverables and will post more clarifications about the project.
- (Jan 26) project deliverables updated. Link to the on line COCOMO model provided.
- (Jan 31) i) group members updates; ii) a link to the "clarifications on the project" added; iii) readings for Ghezzi and Sommerville books, and Zachman's paper, ready to pickup for photocopy.
- (Feb 6) i) description of phases 2, 3, and 4 of the project updated; ii) excerpts from UML reference manual ready to pickup for photocopy.
- (Feb 11) Rational Rose (UML based) design tool is available in Sun machines "birkhoff" and "penguin". Use "ssh" to login to one of these machines and run "rose".
- (Feb 16) Phases 2 & 3 of the project have been updated. A report for structural design using the Statemate tool has been added. The due time for phase 2 is extended to Feb 23rd.
- (March 4) please note to the change of the midterm exam from Tuesday March 9 to Thursday March 11.
- (March 6) a sample table to specify class attributes/methods added to Phase 3 project. Check here for a general comment on the delivered papers for Phase 2 .txt
- (March 10) a note on black box example is added to materials for lecture Week 9. Also, updated slides for Week 10 are added.
- (March 22) slides of the sample screen panels for the course project are posted on the course material for week 11
- (March 23) dates for projecrt presentation and final exam are posted.
- (April 9) A complete set of slides for specification and design has been added to Week 11.
- (April 9) Contact C. Song (Email: songc3@univmail.cis.mcmaster.ca) to get the reading materials for "specification" to copy. Readings for "specification" include sections 5, 5.1, 5.2, 5.3, 5.5 (not 5.5.4), and 5.6.2. Please check the course web page to know when the reading materials for "modular design" will be available.
- (April 10) Reading materials for "modular design" are available. Sections 4, 4.1, 4.2, (not 4.2.5.3, 4.2.6), 4.3, (not 4.4, 4.5), 4.6, (not 4.7). Please contact C. Song.
- (April 12) Information regarding to Final Exam:
- Final Exam is "open book" and will take "2 hours".
- The exam would cover all the reading materials that were given to you during the term including:
- Introduction to software engineering (FAQ about software engineering) pages 3-19.
- Management of Software Engineering: chapter 8 Ghezzi upto Organization (pages 457-483)
- Software design qualities and software design principles: see Week 4.
- Software Production Process: as covered in the class notes.
Additional reading can be found in Chapter 7 of Ghezzi, but it is not
mandatory reading
- Function tables: class slides and the paper from FM03: .pdf
- Software Views: Zachman's paper
- Modular design: chapter 4 of Ghezzi (see April 10)
- Structural design (report in Week 6).
- Specification: chapter 5 of Ghezzi (see April 9)
- UML: see Week 5.
- Design Pattern: Gamma book (pages 1-11, 87-90, 137-143).
Chapter 6 (not Gamma book): Introduction to Design Patterns (pages 123-131, 221, 226).
- Design of Web Services (pages 1 to 31)
- More information may be posted regarding to the Final Exam in a couple of days.
- Solution for question 1ii of the Midterm Exam posted above.
- (April 14) Marks for midterm exam have been posted.
- (April 19) Solution for combining Abstract-Factory and Adapter Design Patterns: .gif