SWSE 621 Software Design (Spring 2000)



Objective: This is a course in concepts and methods for the architectural design of software systems of sufficient size and complexity to require the effort of several people for many months. Fundamental design concepts and design notations are introduced. Several design methods are presented and compared, with examples of their use. Students will undertake a term project working in small groups addressing the design of a relatively complex software system.

Prerequisite: SWSE 619 with SWSE 620 also recommended.

Course Text:

(Available from Johnson Center Course Material Sales, Room 117):

  1. SWSE 621 Course Notes on Software Design, Hassan Gomaa, 2000.
  2. SWSE 621 Lecture Notes on Software Design, Hassan Gomaa, 2000.
OPTIONAL COURSE TEXTS (Available from Johnson Center bookstore):
  1. Hassan Gomaa, "Software Design Methods for Concurrent and Real-Time Systems", Addison Wesley, 1993.
  2. A text on the Unified Modeling Language (UML), select from:
    • H.E. Eriksson and M. Penker, "UML Toolkit", Wiley Computer Publishing, 1998.
    • Fowler M and K. Scott, "UML Distilled", Addison Wesley, 1999.
    • T. Quatrani, "Visual Modeling with Rational Rose and UML, Addison Wesley,1998.
    • G. Booch, J. Rumbaugh, I. Jacobson, "The Unified Modeling Language User Guide", Addison Wesley, Reading MA, 1999
    • J. Rumbaugh, G. Booch, I. Jacobson, "The Unified Modeling Language Reference Manual", Addison Wesley, Reading MA, 1999
Software Lab:
The Rational Rose CASE tool has been installed in the CAD Lab in Room 17, S&TII and is available for the SWSE 621 term project.
Exceptions: Any exceptions or make-up arrangements require prior permission of the instructor.



Grading policy:
  • Small assignments 8%
  • Term Project 56%
  • Final Exam 36%
Late Homework, Projects, Takehome Exams etc: Discouraged, but allowed only under exceptional circumstances with prior approval of the instructor.


Lectures: KH 210, Wednesdays 4.30 to 7.10 pm
Instructor: Duminda Wijesekera
Office Hours: Monday 5.00 to 6.00 pm, Wednesday 3.30 to 4.20 pm
Email: duminda@ise.gmu.edu
Location: Science and Technology II, Room 351


Teaching Assistant: Muhammad Abdulla
Office Hours: Thuresady 4.30 to 6.30 pm and by appointment
Location: Science and Technology II, Room 368
Email: amhmd@ise.gmu.edu


Announcements: Description of the Term Project


Approximate Course Schedule

Lecture #

Date

Topic Assignments
1 February 02 Intro to Software Design  
2 February 09 Survay of Software Analysis and Modeling Assignment 1
3 February 16 Object Oriented Analysis and Modeling
Intro to UML Notation, Use Cases
Term Project begins
Groups Formed
4 February 23 Class Structuring and Object Modeling Small Assignment Due
5 March 01 Finite State Machines and State Charts  
6 March 08 Dynamic Modelling Project Phase Draft
Discussion with Instructor
No Class March 15 Mid-Semester Break
7 March 22 Concurrent Object Oriented Design
Subsystem Design
Project Phase 1 Due
Phase 2 Begins
8 March 28 Survey of Software Design Methods  
9 April 05 Concurrent Task Structuring  
10 April 12 Information Hiding Classes  
11 April 19 Survey of Software Analysis and Modeling
Time Permitting-Families and Reuse
Phase 2 Draft
Discussion with Instructor
12 April 26 Guest lecture 1: HLA
Guest Lecture 2: Testing UML Designs
Project Phase 2 Due
Take Home Exam Given Out
13 May 03 Research Issues View Unification
Modelling In the Large: Software Architectures
Take Home Exam Due

Course Details

  1. Introduction to Software Design
    Readings: Course notes, Sections 1, 10.
    • Overview of Software Design - Lecture Notes: Page A-4
    • Software Design Process - Lecture Notes: Page A-9
    • Software Design Concepts - Lecture Notes: Page A-28
    • Overview of Software Design Methods - Lecture Notes: Page A-56
    • Boundary between Requirements and Design - Lecture Notes: Page A-61
  2. Survey of Software Analysis and Modeling Methods
    Readings: Gomaa, Chapters 5-9, Lecture Notes: Page A-63
    • Structured Analysis: Functional modeling, Data flow diagrams, Entity Relationship Modeling.
    • Analysis and Modeling for Concurrent and Real-Time Systems:
    • Real-Time Structured Analysis.
    • Concurrent Object-Based Real-Time Analysis. Jackson System Development.
    • Object Oriented Analysis.
  3. Object Oriented Analysis and Modeling
    • Overview: Background. Unified Modeling Language (UML) notation, Object-Oriented Software Life Cycle.
      Lecture Notes: Page B-1
      Readings: Course notes, Sections 2, 6.
    • Use case modeling. Use cases, actors, use case associations. Case study.
      Lecture Notes: Page B-14
      Readings: Course notes, Section 7.
  4. Static (Object) modeling.
    • Classes and relationships. Associations and links. Composition/aggregation hierarchy, Generalization/specialization hierarchy – inheritance. Case study.
      Lecture Notes: Page B-25
      Readings: Course notes, Section 8.
    • Object and class structuring. Objects and classes, object structuring criteria – interface objects, entity objects, control objects, application logic objects. Case study.
      Lecture Notes: Page B-42
      Readings: Course notes, Section 9.
    • Finite state machines. State transition diagrams, statecharts. Events and conditions. Actions and activities. Hierarchical statecharts. Case study.
      Lecture Notes: Page B-48
      Readings: Course notes, Section 10.
  5. Dynamic modeling.
    • Object interaction, message sequencing.
    • Dynamic analysis – from use case model to object interaction model.
    • Case study.
      Lecture Notes: Page B-59
      Readings: Course notes, Section 11.
  6. Concurrent Object-Oriented Design
    • Overview of Concurrent Object-Oriented Design Method.
      Lecture Notes: Page C-2
      Readings: Course notes, Section 6.
  7. Subsystem Design.
    • Subsystem Structuring Criteria.
    • Distributed application design.
    • Client / server applications.
      Lecture Notes: Page C-14
      Readings: Course notes, Section 12.
  8. Concurrent Task Structuring
    • Task Interfaces
    • message communication,
    • event synchronization,
    • information hiding classes.
      Lecture Notes: Page C-20
    • Readings: Course notes, Section 14.
  9. Information hiding class structuring criteria
    • Developing the software architecture
    • integrating tasks and information hiding classes.
      Lecture Notes: Page C-40, C-56
      Readings: Course notes, Sections 15, 16.
  10. Survey of Software Design Methods
    • Functional Design Methods
    • Structured Design
    • module coupling and cohesion criteria;
    • Design strategies: Transform Analysis, Transaction Analysis.
    • Concurrent Design Methods.
    • DARTS - Design Approach for Real Time Systems; concurrent task design, task interface design.
    • Jackson System Development.
    • Overview of Object-based and Object-Oriented Methods.
    • Naval Research Laboratory Software Cost Reduction Method.
    • Object-Oriented Design.
    • Overview of ADARTS (Ada based Design Approach for Real Time Systems) and CODARTS (Concurrent Design Approach for Real Time Systems).
      Lecture Notes: Page S-2
      Readings: Gomaa text, Chapters 5-9, 12.
  11. Course Review. Comparison of Software Design Methods.
    Lecture Notes Page S-52
    Readings: Gomaa text, Chapter 10.
  12. Afvanced Topics
    • Testing UML Designs
    • Software Architectures
    • View Unification
    • Object Oriented Simulation
    • HLA: Higher Level Architectures