Copyright 2017 - CSIM - Asian Institute of Technology

Software Architecture Design

Course code: AT70.18
Credits: 3(3–0)
This course is elective

Course objectives

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.

Learning outcome

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#.

Course outline

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

Learning resources


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.


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

Reference books

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.


Homework            - 20%
Midterm               - 25%
Project                 - 25%
Final exam           - 30%
Any resources including Internet access are allowed during the exams.

Back to the list


Login Form


School of Engineering and technologies     Asian Institute of Technology