Semester Offering: January

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. Software Architecture I focuses on software architecture "in the small," at the level of object-oriented analysis and design. In Software Architecture II, the focus shifts to software architecture "in the large" at the level of the enterprise. We study the design and implementation of large-scale enterprise information system infrastructures, enterprise application integration, and the modern middleware technologies necessary to support enterprise application development. Students will learn industry best practices through study of architectural design patterns and put the principles to practice by designing and constructing an architectural prototype for a significant real-world software project.


Software engineering, software architecture, enterprise application architecture, enterprise application integration, software frameworks.


AT70.xx (Software Architecture I), knowledge of object-oriented analysis and design, or permission of the instructor.


I.            Enterprise Application Architecture Patterns
1.      Presentation layer
2.      Domain logic
3.      Data source

II.        Concurrency

III.     Distributed Systems
1.      Enterprise application integration patterns
2.      Synchronous and asynchronous messaging
3.      Service oriented analysis and design

IV.      Middleware Platforms and Model-driven Development Tools
1.      Java EE
2.      Business process modeling and BPEL
3.      Enterprise service buses
4.      Messaging systems
5.      Service component architecture


Fowler et al. (2002), Patterns of Enterprise Application Architecture. Addison-Wesley.


1.      Bass, L., Clements, P., and Kazman, R. (2003). Software Architecture in Practice. Addison-Wesley, 2nd edition.
2.      Booch (2006), Handbook of Software Architecture,
3.      Brooks (1995), The Mythical Man-Month: Essays on Software Engineering, 2nd Edition, Addison-Wesley, ISBN 0-201-83595-9.
4.      Burke, B. and Monson-Haefel, R. (2006). Enterprise JavaBeans 3.0. O'Reilly, 5th edition.
5.      Erl, T. (2005), Service-Oriented Architecture: Concepts, Technology, and Design, Prentice Hall.
6.      Gamma, Helm, Johnson, and Vlissides (1995), Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley.
7.      Garland and Anthony (2002), Large-Scale Software Architecture: A practical guide using UML, Wiley.
8.      Keen, M., Bishop, S., Hopkins, A., Milinski, S., Nott, C., Robinson, R., Adams, J., Verschueren, P., and Acharya, A. (2004). Patterns: Implementing an SOA using an Enterprise Service Bus, IBM Redbooks.
9.      Larman (2004), Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development (3 rd dition), Prentice Hall.
10. Maier and Rechtin (2000), The Art of Systems Architecting, 2 nd Edition, ISBN 0-8493-0440-7.
11. Margolis, B. (2007), SOA for the Business Developer: Concepts, BPEL, and SCA, MC Press.
12. Sommerville (2005), Software Engineering, 7th Edition, Addison-Wesley, ISBN 0-321-21026-3.


1.      Bach, J., What Software Reality is Really About. Computer (December 1999): 148-149.
2.      Brooks, F.P., No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer, April 1987.
3.      Davis, A., Fifteen principles of software engineering. IEEE Software, 11(6): 94-96, 101 (1994)
4.      Davis, A., Software Lemmingineering. IEEE Magazine (September 1993): 79-82.
5.      Ewusi-Mensah, K., Critical Issues in Abandoned Information Systems Development Projects. Communications of the ACM 50, no. 9 (September 1997).
6.      Garland and Shaw (1993). An Introduction to Software Architecture, In V. Ambriola and G. Tortora (ed.), Advances in Software Engineering and Knowledge Engineering, Series on Software Engineering and Knowledge Engineering, Vol 2, pp. 1-39.
7.      Kruchten, The 4+1 View Model of Architecture, IEEE Software 12(6), November 1995.
8.      Ledgard, H.F., The Emperor with No Clothes, Communications of the ACM 44(10), 2001.
9.      Leveson, N., Software Engineering: A Look Back and A Path to the Future, December 14, 1996
10.  Meyer, B., A Really Good Idea. Computer (December 1999): 144-147. Miller, S.K., Aspect-oriented programming takes aim at software complexity. IEEE Computer, 34(4), pp. 18-21, 2001.
11.   Wirth, N., A Plea for Lean Software. Computer (February 1995): 64-68.


    Homework (20%)
    Architectural Prototype Project (30%)
    Midterm Exam (20%)
    Final Exam (30%)