1st half of the 1st class of the week
- Technology Capsule
- Lecture on a software architecture topic.
- Description of the Homework.
2nd half of the 1st class
- Each study group splits the homework.
- Workshop or Case Study or Exercises: all will have a deliverable.
1st half of the 2nd class
- Each student sends a small report (from 1 to 3 pages) by email before the class.
- Technology Capsule.
- Discussion between topic experts.
- Discussion within study group.
2nd half of the 2nd class
- Wrap-up: class discussion plus small summary by instructor.
- First week
- Exam week
- Presentation weeks
There is no official textbook for this course, but the following textbook has been put on reserve at the library:
Taylor, Medvidovic, Dashofy. Software Architecture: Foundations, Theory, and Practice. Wiley, 2009.
The following resources may help you complete your weekly homework (some of these resources are only freely available within the McGill domain):
- Software Architecture Course Resources: slides from the book in reserve.
- Garlan and Shaw. An Introduction to Software Architecture. TR CMU-CS-94-166, 1994.
- Buschmann et al. Pattern-Oriented Software Architecture, vol. 4: A Pattern Language for Distributed Computing, 2007.
- P. Clements et al. Documenting Software Architectures: Views and Beyond. Addison Wesley Professional, 2003.
- L. Bass, P. Clements, R. Kazman. Software Architecture in Practice, Second Edition. Addison Wesley Professional, 2003.
- IEEE Recommended Practice for Architectural Description of Software-Intensive Systems, IEEE Std 1471-2000.
- S.T. Albin. The Art of Software Architecture. Wiley, 2003.
- The Architecture Journal (Microsoft)
- The Software Engineering Institute’s Software Architecture Website.
- The Software Engineering Radio Podcast.
- Coding The Architecture (architecture for software developers)
- High Scalability: case studies of large infrastructures
Week 1 - Introduction to Software Architecture¶
Date: January 4th - 6th
- Course Overview: study groups, projects, evaluation, topics.
- Definition of Software Architecture
- Components vs. Modules
- Quality of a Software Architecture
- Define Software Architecture
- How to distinguish “good” software architecture from “bad” software architecture?
Week 2 - Connectors¶
Date: January 11th - 13th
Milestone 0: January 14th @ 11:30 AM
- Uncle’s Bob Backup System: Create the architecture of a distributed backup system.
Week 3 - Documentation, Views, and Viewtypes¶
Date: January 18th - 20th
Milestone 1: January 21st @ 11:30 AM
- Software Architecture Documentation
- Views, Viewtypes
- Components and Connectors Granularity: are these examples at the right level of abstraction?
Week 4 - Architectural Styles¶
Date: January 25th - 27th
- Architectural Styles
- Uncle’s Bob Backup System: Present two views from two viewtypes of the backup system.
Week 5 - Reference Architecture and Product Lines¶
Date: February 1st - 3rd
- Reference Architecture
- Product Lines
- Software Architecture Challenge: Solve a circular dependency problem.
Week 6 - Performance¶
Date: February 8th - 10th
Milestone 2: February 11th @ 11:30 AM
- Performance patterns
- Cloud Computing and NoSQL
- Uncle’s Bob Backup System: Create three different architectures using three architectural styles.
Week 7 - Exam¶
Date: February 15th - 17th
- Class 1: Revision
- Class 2: Exam
Week 8 - Study Week¶
Date: February 22nd - 24th
Week 9 - Evolution¶
Date: March 1st - 3rd
- Review of the Exam and Milestone 3
- Architectural Evolution
Week 10 - Extensibility¶
Date: March 8th - 10th
- Extensibility Patterns: Facade, Pub/Sub, Plug-ins, etc.
Week 11 - NoSQL and Eclipse¶
Date: March 15th - 17th
Milestone 3: March 14th @ 11:30 AM
- Impact of NoSQL on Software Architecture
- Eclipse Platform
Week 12 - Cloud Computing and J2EE¶
Date: March 22nd - 24th
- Cloud Computing
Week 13 - Project Presentation¶
Date: March 29th - 31st
Week 14 - Project Presentation¶
Date: April 5th - 7th