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
Course Description:
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):
https://gmu.blackboard.com/webct/
Grading:
Term Project
56%
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 (
Lecture Notes:
Object Oriented
Software Engineering with UML
Overview: Background. Unified Modeling Language (UML)
notation, Object-Oriented Software Life Cycle.
Lecture Notes:
Object Oriented
Analysis and Modeling
Use case modeling. Use cases, actors, use case associations.
Case study.
Lecture Notes:
Static modeling. Classes and relationships. Associations and links. Composition/aggregation hierarchy,
Generalization/specialization hierarchy – inheritance. Case study.
Lecture Notes
Object and class structuring. Objects and classes, object
structuring criteria – interface objects, entity objects, control objects,
application logic objects. Case study.
Lecture Notes
Finite state machines.
State transition diagrams, statecharts. Events and conditions. Actions and activities. Hierarchical statecharts. Case study.
Lecture Notes
Dynamic modeling. Object interaction, message sequencing.
Dynamic analysis – from use case model to object interaction model. Case study.
Lecture Notes
Concurrent
Object-Oriented Design
Overview of Concurrent Object-Oriented Design Method.
Lecture Notes
Software Architecture Design. Subsystem Structuring Criteria.
Lecture Notes
Distributed application design. Client / server
applications.
Lecture Notes
Concurrent Task Structuring; Task Interfaces - message
communication, event synchronization, information hiding classes.
Lecture Notes
Information hiding class design; designing class operations,
inheritance in software design, class interface specs.
Lecture Notes
Detailed Software Design; Integrating tasks and information hiding object. Access synchronization. Design of connector classes.
Lecture Notes
Introduction to Architecture and
Design Patterns.
Lecture Notes
Relational
Database Design. Mapping static model to relational database.
Lecture Notes.