Semester Offering: August
 
Designing, developing, and evolving complex software systems requires a mastery of analytical and technical skills, as well as a knowledge of appropriate processes, architectures and design patterns. Software architects building complex systems must create the illusion of simplicity through decomposition, abstraction, and encapsulation of functionality.

Software Architecture I and II teach the fundamentals of software architecture, drawn from research and best practice on large software projects. Students will learn techniques and tools for modeling, analyzing, evaluating, and controlling the development of complex software systems.

In Software Architecture Design I, students will develop the basic object-oriented analysis and modeling skills necessary for understanding, designing, and maintaining a software architecture.

Software Architecture I should be taken concurrently with AT70.90C, Selected Topics: Software Development Methodologies.

 

Software engineering, Software architecture, Object-oriented analysis.

 

Experience programming in a high-level programming language, e.g. C or Java, or by permission of the instructor.

 

I.           Introduction
1.      The importance of software architecture
2.      Iterative software development
3.      The Unified Modeling Language (UML)
4.      Architectural views
5.      Object-oriented analysis and design

II.         Use Cases
1.      Actors
2.      Scenarios
3.      Use case diagrams

III.      Problem Domain Modeling
1.      UML classes
2.      UML relationships
3.      Package analysis

IV.       Use Case Realization
1.      Objects and messages
2.      UML interaction diagrams

V.          UML Modeling Tools

 

Larman (2005): Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, 3rd edition, Prentice Hall.

 

Arlow and Neustadt (2004): UML 2 and the Unified Process, 2nd edition, Addison-Wesley.
Booch (2006): Handbook of Software Architecture, http://www.booch.com/architecture/index.jsp
Booch, Rumbaugh, and Jacobson (2005): The Unified Modeling Language User Guide, 2nd Edition, Addison-Wesley.
Fowler (2003): UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition. Addison-Wesley.
Pilone and Pitman (2005): UML 2.0 in a Nutshell, O'Reilly.

 

The final grade will be computed from the following constituent parts:

      Homework and in-class assignments (30%)
      Final exam (70%)