DEPARTMENT OF INFORMATION & SOFTWARE ENGINEERING
SCHOOL OF INFORMATION TECHNOLOGY & ENGINEERING
GEORGE MASON UNIVERSITY
SWE 621 - Software Modeling and Architectural Design
Prerequisite: SWE 619 with SWE 620 also recommended.
(MSCS Students may substitute CS 540 and CS 571 for SWE 619)
Fall 2008 Thursday 4:30-7:10 PM ST1 126
Dr. Hassan Gomaa
Science & Tech II Room 330 Phone: 993-1652 Fax: 993-1710
email: hgomaaATgmu.edu www: http://www.cs.gmu.edu/
This course is delivered to the Internet section online by Network EducationWare (NEW). Students in all sections have accounts on NEW and can play back the lectures and download the PDF slide files at http://disted.ite.gmu.edu.
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.
Required Course Text (Available from Johnson Center bookstore):
H. Gomaa, Designing Concurrent, Distributed, and Real-Time Applications with UML, Addison-Wesley Object Technology Series, 2000.
Optional Course Texts (Available from Johnson Center bookstore):
Fowler, M. UML Distilled: Applying the Standard Object Modeling Language, 3rd edition, Addison-Wesley, 2004.
Course Material (Download from course Web site):
Term Project 56%
Small assignments 8%
Final Exam 36%
COURSE CONTENT AND READINGS
Introduction to Software Design
Overview of Software Design - Lecture Notes
Software Design Process - Lecture Notes:
Software Design Concepts - Lecture Notes
Introduction to Software Design Methods - Lecture Notes
Readings: Gomaa text, Chapter 5.
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).
Readings: Gomaa text, Chapter 5.
Object Oriented Software Engineering with UML
Overview: Background. Unified Modeling Language (UML) notation, Object-Oriented Software Life Cycle.
Readings: Gomaa text, Chapters 2, 6.
Object Oriented Analysis and Modeling
Use case modeling. Use cases, actors, use case associations. Case study.
Readings: Gomaa text, Chapter 7.
Static modeling. Classes and relationships. Associations and links. Composition/aggregation hierarchy, Generalization/specialization hierarchy – inheritance. Case study.
Readings: Gomaa text, Chapter 8.
Object and class structuring. Objects and classes, object structuring criteria – interface objects, entity objects, control objects, application logic objects. Case study.
Readings: Gomaa text, Chapter 9.
Finite state machines. State transition diagrams, statecharts. Events and conditions. Actions and activities. Hierarchical statecharts. Case study.
Readings: Gomaa text, Chapter 10.
Dynamic modeling. Object interaction, message sequencing. Dynamic analysis – from use case model to object interaction model. Case study.
Readings: Gomaa text, Chapter 11.
Concurrent Object-Oriented Design
Overview of Concurrent Object-Oriented Design Method.
Readings: Gomaa text, Chapter 6.
Software Architecture Design. Subsystem Structuring Criteria.
Readings: Gomaa text, Chapter 12.
Distributed application design. Client / server applications.
Readings: Gomaa text, Chapter 13.
Concurrent Task Structuring; Task Interfaces - message communication, event synchronization, information hiding classes.
Readings: Gomaa text, Chapter 14.
Information hiding class design; designing class operations, inheritance in software design, class interface specs.
Readings: Gomaa text, Chapter 15.
Detailed Software Design; Integrating tasks and information hiding object. Access synchronization. Design of connector classes.
Readings: Gomaa text, Chapter 16.
Introduction to Architecture and Design Patterns.
Readings: Gomaa text, Chapters 3,12,13.
Relational Database Design. Mapping static model to relational database.