A course on understanding, describing, and reasoning about large software systems.
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 . This course is about the intellectual tools developed by researchers and practitioners to manage the complexity of very large systems.
After this course, you should be able to...
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.
|1||07 Jan||Introduction to Software Architecture; Architecture of the Eclipse Platform|
|2||09 Jan||Basic Concepts|
|3||14 Jan||Module Views and Decomposition; The Architecture of Jitsi|
|4||16 Jan||Dependencies and the Layered Style|
|5||21 Jan||Composition Approaches; Dynamic Language Runtimes|
|6||23 Jan||"A Model-based Approach to Reengineering Legacy Systems" by Stéphane Vaucher, Chief Researcher, Benchmark Consulting|
|7||28 Jan||Composition Approaches: Aspect-Oriented Programming|
|8||30 Jan||Components and Connectors|
|9||04 Feb||Component and Connector Styles I|
|10||06 Feb||Middleware and Component Platforms|
|11||11 Feb||Components and Connectors Styles II; Web Architectures|
|12||13 Feb||The Architecture of Web Servers|
|13||18 Feb||"Social Pulse : A Distributed Real-time Architecture" by Tristan Ratchford, Staff Software Engineer, IBM Research|
|14||20 Feb||Architecture Conformance Checking|
|15||25 Feb||Architecture Description Languages|
|16||27 Feb||Interface and Behavior Modeling|
|17||11 Mar||No Lecture|
|18||13 Mar||"Designing and Keeping a Clean and Efficient Architecture in a Sea of Legacy Systems" by Barthélémy Dagenais, Team Leader, auto123.com.|
|19||18 Mar||Security Architectures|
|20||20 Mar||Build Management|
|21||25 Mar||Socio-Technical Congruence|
|22||27 Mar||Software Licensing|
|23||03 Apr||Midterm Exam|
|24||08 Apr||Student Presentations|
|25||10 Apr||Student Presentations|
|26||15 Apr||Student Presentations|