COMP 529 - Software Architecture - Winter 2010

[News] [Basic Information] [Description] [Reference Material] [Evaluation] [Activities] [Projects] [Schedule]


[6 January 2010] Added case studies and instructions for in-class activities. Linked to project page.
[5 January 2010] Added project ideas.
[30 November 2009] Tentative schedule posted.
[24 September 2009] Course times have changed to 13:00-14:30.

Basic Information

Instructor:Martin Robillard
Time and place:Tuesdays and Thursdays 13:05-14:25 in TR 0070.
Office hours:TBD or by appointment.
Prerequisite:COMP 303 or equivalent.
TA:Barthélémy Dagenais
TA availability:Wednesdays 10:30-11:30 TR 3060 (tentative), or by appointment.


A software architecture is the set of principal decisions made during the development of a system and its subsequent evolution. Understanding software architecture is critical to reason about the complex ecology of components and connectors that large software systems are made of. This course introduces students to the discipline of software architecture through a study of fundamental concepts and numerous case studies of large software system. A special focus is put on architectural patterns and component integration mechanisms.

At the end of the course students should be able to:

Classes will consists of a 30-45min lecture followed by in-class activities that involve student participation (discussions or presentations).

Reference Material

Course Textbook

Taylor, Medvidovic, Dashofy. Software Architecture: Foundations, Theory, and Practice. Wiley, 2009.
Copies will be available at the
Paragraphe Bookstore. A copy is also in reserve at the Schulich Library. Companion website

Additional Resources

Note that some of the free on-line resources may only be available from within the McGill domain.

[GS1994]Garlan and Shaw. An Introduction to Software Architecture. TR CMU-CS-94-166, 1994.
[BHS2007]Buschmann et al. Pattern-Oriented Software Architecture, vol. 4: A Pattern Language for Distributed Computing, 2007.
[CBB2003]P. Clements et al. Documenting Software Architectures: Views and Beyond. Addison Wesley Professional, 2003.
[BCK2003]L. Bass, P. Clements, R. Kazman. Software Architecture in Practice, Second Edition. Addison Wesley Professional, 2003.
[IEEE1471]IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE Std 1471-2000.
[ALB2003]S.T. Albin. The Art of Software Architecture. Wiley, 2003.
[SAJ2009]The Architecture Journal (Microsoft)
[SEI2007]The Software Engineering Institute's Software Architecture Website.
[SERadio]The Software Engineering Radio Podcast.
[ArchStudio]ArchStudio4 (and how to make hierarchical diagrams)



In-class Exam35%
Class activities and participation20%

A mark of 50% or more for the project is required to pass the course, irrespective of the total final mark.

Participation marks can be collected by presenting one or more technical capsules, signing up for discussion points for the case studies, asking and answering questions during the discussions, and evaluating project presentations. Regular class attendance is strongly recommended.

In accord with McGill University's Charter of Students' Rights, students in this course have the right to submit in English or in French any written work that is to be graded.

Academic Integrity: McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism, and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see for more information).

Class Activities

Technical Capsules

Technical capsules are 5-minute introductory oral presentations about a technology relevant to software architecture. The goal of technical capsules is to raise awareness of different technological opportunities that can be considered when architecting a system.

Each student is required to perform at least one technical capsule. If time permits, additional capsules can be performed for bonus marks.

To perform your technical capsule:

  1. Find a topic of interest (a useful component, integration framework, programming language, connector type, architectural pattern, API, etc.).
  2. Schedule your capsule by emailing the TA (see instruction and availabilities on WebCT).
  3. Research and prepare your capsule. Be sure to include the following elements: context (why is this useful, background); how it works; how it can impact architectural decisions, etc.
  4. Carefully script and rehearse your presentation. Time will be strictly monitored and unless you are an expert on the topic, attempts at off-the-cuff presentations can easily end up in disaster.

The capsule will be evaluated along the following criteria:

Case Study Discussions

Each class will involve the discussion of the architecture of an actual sytem. The discussion will be moderated by 2-3 students. Sign up for case study discussion by emaililng the TA (see instructions on WebCT). Details on how to lead discussions will be presented in class.


In accordance with its credit weight, this course requires students to complete a significant project. The project will involve the developement of a new, architecturally-significant software system following an architecture-centric development process. The system will be created from existing components, with the focus being on integration, as opposed to coding. An important part of the project will be the analysis of the reused components.

The project deliverables are to be completed in three milestones releases.

Project instructions.

Projects are to be completed in groups of one to three (two is recommended, and only experienced systems developers should elect to work alone). The number of team members will be taken into account for when evaluating the significance of projects.

Project Examples

The following are examples of projects succesfully completed in past sections of COMP 529 (or slight variations):


Milestones are to be submitted through WebCT. Additional instructions for completing the project milestones will be posted here.
  1. Milestone 1 instructions (deadline: Monday 18 January 11:30am
  2. Milestone 2 instructions (deadline: Monday 1 February 11:30am).
  3. Milestone 3 instructions (deadline: Monday 1 March 11:30am).
  4. Milestone 4 instructions (deadlines: Monday 5 April 11:30am (everything except demo)).


This schedule is subject to change. It is necessary to do the readings before class to be able to participate in the in-class activities.

NOTE: Some of the links will only work from within the McGill domain.

DateLecture TopicsReadingCase Study
Tuesday 5 Jan Introduction to software architectureChapter 1-2,17
Thursday 7 Jan Basic conceptsChapter 3Aesop
Tuesday 12 Jan Architectural stylesChapter 4MySQL
Thursday 14 Jan Architectural stylesChapter 4Apache Web Server
Tuesday 19 Jan ConnectorsChapter 5Web Browsers
Thursday 21 Jan ConnectorsChapter 5Wikimedia
Tuesday 26 Jan ModelingChapter 6Air Traffic Control
Thursday 28 Jan ModelingChapter 6Linux
Tuesday 2 Feb VisualizationChapter 7Eclipse Plug-Ins
Thursday 4 Feb Extensibility mechanismsChapter 9Firefox Plug-Ins
Tuesday 9 Feb Architectural AnalysisChapter 8J2EE
Thursday 11 Feb Enterprise ArchitecturesChapter 9Salesforce
Tuesday 16 Feb Deployment and mobilityChapter 10Android
Thursday 18 Feb Non-functional propertiesChapter 12Amazon
Tuesday 23 Feb No class (study week)
Thursday 25 Feb No class (study week)
Tuesday 2 Mar Security and trustChapter 13Google Chrome
Thursday 4 Mar Security and trustChapter 13SELinux
Tuesday 9 Mar Evolution and adaptationChapter 14, [MSN2001], [BR2006]Web Services
Thursday 11 Mar Evolution and adaptationChapter 14, [SJS2005]Gnutella
Tuesday 16 Mar Computer Game Architectures
Thursday 18 Mar Domain-specific architecturesChapter 15
Tuesday 23 Mar No classChapter 8
Thursday 25 Mar Exam 
Tuesday 30 Mar Aspect-Orientation[KHH2001]CelsiusTech
Thursday 1 Apr Exam review and presentation preparationInternet Information Systems
Tuesday 6 Apr Project presentations
Thursday 8 Apr Project presentations
Tuesday 13 Apr Project presentations