It it generally possible to write scripts and toy programs without much forethought or organization. With luck and decent comments, this can be stretched to software that consists of a few dozen classes. For anything beyond that, a principled approach is required to structure and document software systems to manage their fantastic complexity. For example Eclipse boasts 46,000,000 lines of code [1]. This course is about the intellectual tools developed by researchers and practitioners to manage the complexity of very large systems.

Learning Outcomes

After this course, you should be able to...

Course Work and Evaluation

The course will consist of a combination of traditional lectures, invited lectures on selected topics, student presentations, and discussions. The course will involve a major project: the reverse-engineering and documentation of a large open-source system.

The final grade will take into account the project (45%), three assignments (5% each), a midterm exam (35%), and class participation (5%). The project will be split up into multiple deliverables. The project will be done in groups of three (graduate students can work in smaller groups with permission of the instructor).

Official Academic Integrity Statement 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 www.mcgill.ca/students/srr for more information).

Language Policy 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.


All required material for the course is freely available on-line from the McGill domain.


In-class use of mobile computing devices: Laptops, mobile phones, and other gadgets can be used in class as long as this is done in a respectful and non-disruptive manner. Please note that loud typing, continual texting, gaming, and voice communication are disruptive activities and disallowed for that reason. No audio or video recording of any kind is allowed in class without the explicit permission of the instructor. If you are inconvenienced by the in-class use of computing devices (by others than yourself), please talk to the instructor. This policy is subject to revision at any point during the term. Additional background on the in-class use of computing devices at McGill.

The content of the traditional lectures is provided below. For details, including the require reading, please see the mycourses website.

107 JanIntroduction to Software Architecture; Architecture of the Eclipse Platform
209 JanBasic Concepts
314 JanModule Views and Decomposition; The Architecture of Jitsi
416 JanDependencies and the Layered Style
521 JanComposition Approaches; Dynamic Language Runtimes
623 Jan"A Model-based Approach to Reengineering Legacy Systems" by Stéphane Vaucher, Chief Researcher, Benchmark Consulting
728 JanComposition Approaches: Aspect-Oriented Programming
830 JanComponents and Connectors
904 FebComponent and Connector Styles I
1006 FebMiddleware and Component Platforms
1111 FebComponents and Connectors Styles II; Web Architectures
1213 FebThe Architecture of Web Servers
1318 Feb"Social Pulse : A Distributed Real-time Architecture" by Tristan Ratchford, Staff Software Engineer, IBM Research
1420 FebArchitecture Conformance Checking
1525 FebArchitecture Description Languages
1627 FebInterface and Behavior Modeling
1711 MarNo Lecture
1813 Mar"Designing and Keeping a Clean and Efficient Architecture in a Sea of Legacy Systems" by Barthélémy Dagenais, Team Leader, auto123.com.
1918 MarSecurity Architectures
2020 MarBuild Management
2125 MarSocio-Technical Congruence
2227 MarSoftware Licensing
2303 AprMidterm Exam
2408 AprStudent Presentations
2510 AprStudent Presentations
2615 AprStudent Presentations