COMP 529 Software Architecture and Analysis - Fall 2006

[News] [Basic Information] [Overview] [Reference Material] [Evaluation] [Project] [Schedule]


[6 October 2006]The final exam is December 8, 2PM, in SH 688 (688 Sherbrooke St.) Room 295.
[7 September 2006]I added a message board in the course's WebCT page. You can use it to form your project teams.
[4 June 2006]The class time has been updated.
[12 June 2006]Major update of the schedule, with reading list. Basic description of the project and homework.
[4 May 2006]I posted a tentative schedule. The details will likely change, but the main topics will remain.
[2 May 2006]Registration: The fall course section is now open for registration.

Basic Information

Instructor:Martin Robillard
Time and place:Tuesdays and Thursdays 8:35-9:55 in MAAS 328.
Office hours:Thursday 10:00-10:30
TA:Xiaopeng (Sean) Qu (xqu at cs mcgill ca)
TA availability:Wednesdays 16:00-17:00 in the Trottier Lab


Very little software is actually written from scratch. Instead, software projects usually rely on existing libraries, frameworks, and components. Such building blocks must be carefully verified and integrated to ensure that the resulting applications are robust and maintainable. The necessity to integrate, reuse, and maintain large collections of software components has led to important challenges for computer scientists and engineers which, in turn, resulted in the elaboration of various component models and integration mechanisms.

In this course, you will acquire the concepts and techniques that will enable you to understand, analyze, maintain, and improve the architecture of large software systems. The course will also touch on some key issues of software engineering research related to the question of software modularity.

The course format will include traditional lectures, a software development project, and a series of self-directed tutorials. The practical aspects of the course will involve mostly Java-based component technology (e.g., Eclipse plug-ins, J2EE components).

NOTE: This course is an informal prerequisite for graduate students who would like to take my seminar course on software evolution in the winter term.

Reference Material

Required Material

A course pack containing the mandatory reading material will be available at the McGill Bookstore

Complete References

In reserve at the library.

[BCK1998]L. Bass, P. Clements, R. Kazman. Software Architecture in Practice. Addison-Wesley, 1998.
[BCK2003]L. Bass, P. Clements, R. Kazman. Software Architecture in Practice, Second Edition. Addison-Wesley, 2003. Ebook.
[CL2002]I. Crnkovic and M. Larsson (Eds). Building Reliable Component-based Software Systems. Artech House, 2002.
[MMY2002]H. Mili, A. Mili, S. Yacoub, E. Addy. Reuse-Based Software Engineering: Techniques, Organization, and Controls. Wiley Inter-Science, 2002.
[RJB2005]J. Rumbaugh, I. Jacobson, and G. Booch. The Unified Modeling Language Reference Manual, 2nd edition. Addison-Wesley, 2005.
[SZY2002]Clemens Szyperski. Component Software: Beyond Object-Oriented Programming, 2nd Edition. Addison-Wesley, 2002.


Midterm exam25%
Final exam40%

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

The following material is subject to evaluation: Anything I said in class, material found in the mandatory reading, lessons learned from the tutorials, and any general knowledge related to the project objectives. The midterm will cover all the material covered until and including 19 October. The final will cover everything.

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

Project and Homework

The practical aspects of the course will include two different types of activities: a project, and a series of tutorials.

The project will give you the opportunity to experiment first hand with the issues and trade-offs associated with component-based software development. For the project you will be required to design, implement, and test a software application that uses third-party components and that integrates into the Eclipse Rich Client Platform. The project will be broken down into three deliverables.

The tutorials series will cover the key aspects of different component technologies that will not necessarily be used for the project (e.g., Java Beans, J2EE, CORBA, AOP). The tutorials are self-directed and can be done at the discretion of the students. There are no deliverables associated with the tutorials. However, they are a mandatory part of the course and the material they contain will be evaluated as part of the exams. The tutorials will be available on-line through WebCT.

Project Description


This schedule is subject to change. It is strongly recommended to do the readings before class. The keys in the reading list refer to the list of references. References in italics are optional.

DateLecture TopicsReadingProject & Homework
Tuesday 5 SepIntroduction to Software Architecture[BCK1998] Chapter 2
Thursday 7 SepBasic Concepts of Component-Based Software Engineering (CBSE)[CL2002] Chapter 1; [SZY2002] Section 4.1; [MMY2002] Chapter 21
Tuesday 12 SepArchitectural Mismatch[BCK2003] Chapter 18; [GAO1995]
Thursday 14 SepComponent Models: Java Beans[CL2002] Chapter 2; [SZY2002] Section 14.3; [CL2002] Chapter 4, 66-70Email your group information to the TA; Complete Tutorial 1: Java Beans
Tuesday 19 SepDocumenting Architectures[RJB2005] Section "Components"; [BCK2003] Chapter 9; [ICG2004]
Thursday 21 SepDesign Workshop
Tuesday 26 SepNo lecture (replaced by demos)Email your project proposal to the TA (23:59)
Thursday 28 SepApplication Frameworks[MMY2002] Chapter 13
Tuesday 3 OctThe Eclipse PlatformEclipse Platform Technical OverviewComplete Tutorial 2: Eclipse Plug-Ins
Thursday 5 OctThe Eclipse Plug-In ArchitectureNotes on the Eclipse Plug-In ArchitectureComplete Tutorial 3: Eclipse Extensions
Tuesday 10 OctNo class (Monday classes scheduled today)
Thursday 12 OctCase study: the Model View Controller[RW2005]Project 1 Due (23:59)
Tuesday 17 OctComponent Models: OSGI[CL2002] Chapter 4, 79-83; OSGi Framework
Thursday 19 OctComponent Models: Enterprise Java BeansJ2EE Tutorial, Section 1; [SZY2002] Chapter 14Complete Tutorial 4: J2EE
Tuesday 24 OctMidterm
Thursday 26 OctComponent Models: CORBA[SZY2002] Chapter 13Complete Tutorial 5: CORBA
Tuesday 31 OctMining Aspects from Version History (guest Lecture by S. Breu). The course will start at 9:00am[BZ2006a]
Thursday 2 NovComponent Models: COM and .NET[CL2002] Chapter 4, 71-72; [SZY2002], Chapter 15
Tuesday 7 NovManaging Concern Interfaces (guest lecture by J.S. Boulanger)[BR2006]
Thursday 9 NovGuest lecture by E. Dyke, Ericsson CanadaProject 2 Due (23:59)
Tuesday 14 NovAspect-Oriented Programming Part 1[LAD2002], [EFB2001]
Thursday 16 NovAspect-Oriented Programming Part 2[SCH2004], [AspectJ]Complete Tutorial 6: AOP
Tuesday 21 NovAdvanced Topics on Frameworks[FGS2006]
Thursday 23 NovArchitectural Conformance[MNS2001] sections 1-3, 7-8Schedule project demo
Tuesday 28 NovArchitecture Description Languages in Practice[ACN2001]Complete Tutorial 7: ArchJava
Thursday 30 NovTechnical Capsules
Tuesday 5 DecSoftware Product Lines and Generative Programming[MMY2002] Chapter 22Project 3 due (23:59)