Semester Offering: January

Software architects building complex systems must create the illusion of simplicity through decomposition, abstraction, and encapsulation of functionality. Understanding software architecture is especially important at the level of the enterprise, in which multiple applications must work together to support or automate business processes through concurrent access to large amounts of complex persistent data. Designing, implementing, and maintaining such large-scale system infrastructures requires extensive knowledge of best practices in the form of architectural patterns as well as an understanding of modern component-based software development frameworks and asynchronous distributed systems middleware. Students will learn industry best practices and apply the principles they learn by designing and constructing an architectural prototype for a significant real-world software project.


Introduction. Enterprise software architectural design patterns: domain logic, mapping to relational databases, concurrency, session state, distrubuted objects, implementation case studies. Enterprise application integration patterns: messages and message channels, routing, transformation, endpoints, message brokers and process brokers, system management, case studies. Service oriented architecture patterns: business process patterns, business service analysis and design, technical patterns, implementation case studies.


Knowledge of object-oriented analysis and design; programming experience with an object-oriented programming language such as C++, Java, Ruby, Python, or C#.


I.          Introduction

II.    Enterprise software architectural design patterns
1.     Domain logic
2.     Mapping to relational databases
3.     Concurrency
4.     Session state
5.     Distributed objects
6.     Implementation case studies

III.       Enterprise application integration patterns
1.     Messages and message channels
2.     Routing
3.     Transformation
4.     Endpoints
5.     Message brokers and process brokers
6.     System management
7.     Implementation case studies

IV.       Service oriented architecture patterns
1.     Business process patterns
2.     Business service analysis and design
3.     Technical patterns
4.     Implementation case studies


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

Hohpe and Woolf (2004), Enterprise Integration Patterns, Addison-Wesley.

Erl, T. (2009), SOA Design Patterns, Prentice Hall.


Bass, Clements, and Kazman (2003), Software Architecture in Practice, 2nd edition, Addison-Wesley.

Burke and Monson-Haefel (2006). Enterprise JavaBeans 3.0, O'Reilly, 5th edition.

Buschmann, Henney, and Schmidt (2007), Pattern-Oriented Software Architecture vol. 4: A Pattern Language for Distributed Computing, Wiley.

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

Margolis, B. (2007), SOA for the Business Developer: Concepts, BPEL, and SCA, MC Press.

Rademakers, T., and Dirksen, J. (2009), Open Source ESBs in Action, Manning.


None. [Online resources such as experts' blogs are more important.]


Homework           - 20%
Midterm               - 25%
Project                 - 25%
Final exam           - 30%

Any resources including Internet access are allowed during the exams.