SWE 621 - Software Modeling and Architectural Design
Prerequisite: SWE 619
(MSCS Students may substitute CS 540 and CS 571 for SWE 619)
Spring 2010 Wednesday 4:30-7:10 PM Engineering 4705
Dr. Hassan Gomaa
Engineering 4300 Phone: 993-1652 Fax: 993-1710
email: hgomaaATgmuDOTedu www: http://www.cs.gmu.edu/
Office Hours: Wednesdays 3:00-4:00 PM
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
H. Gomaa, Designing Concurrent, Distributed, and Real-Time Applications with UML, Addison-Wesley Object Technology Series, 2000.
Optional Course Texts (Available from
Fowler, M. UML Distilled: Applying the Standard Object Modeling Language, 3rd edition, Addison-Wesley, 2004.
Course Material (Download from course Web site):
Small assignments 8%
Final Exam 36%
Software Laboratory: The Rational Software Architect CASE tool is available for the SWE 621 term project in the Volgenau School of IT&E labs. Visual Paradigm and Visio are also available.
COURSE CONTENT AND
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
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 (
Object Oriented Software Engineering with UML
Overview: Background. Unified Modeling Language (UML)
notation, Object-Oriented Software Life Cycle.
Object Oriented Analysis and Modeling
Use case modeling. Use cases, actors, use case associations.
Static modeling. Classes and relationships. Associations and links. Composition/aggregation hierarchy,
Generalization/specialization hierarchy – inheritance. Case study.
Object and class structuring. Objects and classes, object
structuring criteria – interface objects, entity objects, control objects,
application logic objects. Case study.
Finite state machines.
State transition diagrams, statecharts. Events and conditions. Actions and activities. Hierarchical statecharts. Case study.
Dynamic modeling. Object interaction, message sequencing.
Dynamic analysis – from use case model to object interaction model. Case study.
Concurrent Object-Oriented Design
Overview of Concurrent Object-Oriented Design Method.
Software Architecture Design. Subsystem Structuring Criteria.
Distributed application design. Client / server
Concurrent Task Structuring; Task Interfaces - message
communication, event synchronization, information hiding classes.
Information hiding class design; designing class operations,
inheritance in software design, class interface specs.
Detailed Software Design; Integrating tasks and information hiding object. Access synchronization. Design of connector classes.
Introduction to Architecture and Design Patterns.
Relational Database Design. Mapping static model to relational database.