See the schedule on Brightspace for quizzes and project milestones. All submissions occur on Brightspace. Videos are posted on Brightspace in the Echo360 section.
Module | Topics | Other Resources | Readings |
---|---|---|---|
1 | What is Software Architecture? • Reading Code | 500L Web Server and src | text chapter 1 |
2 | Software arch overview | cost of change • arch role • Boehm cost curve | text chapter 2 • Architect Roles Map • node module problems; |
3 | Architecture Stakeholders and Quality Attributes | text chapter 3, 22.8, 19 | |
4 | Abstractions | Fairbanks chapter 10.1-10.5 inclusive, 11 all | |
5 | Architecture Views & Styles • Views on Architecture - C&C | SEI view example | text chapter 22.1-4 |
6 | Architecture and Design • OO Principles | What is Architectural Design | HomeAssistant sections 0-5 • text chapter 20 |
7 | Design Patterns | Head-first design patterns | DesignPatterns paper • source code |
A4 | Architecture Tactics - Performance | Text chapter 9 | |
8 | Programming Styles | Lopes "Exercises in Programming Style" (Uvic access required) | |
A1 | Architecture Tactics-Availability | text chapter 4, quality attribute chapters 5 |
For the Programming Styles lectures, readings are
- Prologue
- Chapter 3, Monolithic
- Chapter 4, Cookbook
- Chapter 7, Infinite Mirror
- Chapter 16, Introspective
- Chapter 17, Reflective
- Chapter 18, Aspects
- Chapter 25, Persistent Tables
- Chapter 26, Spreadsheet
- Chapter 27, Lazy Rivers
- Chapter 28, Actors
We will also cover these specific architecture tactics if time permits.
Module | Topics | Other Resources | Readings |
---|---|---|---|
A5 | Architecture Tactics - Safety | Text ch. 10 | |
A2 | Architecture Tactics - Modifiability | Ambler CRC | text chapter 8 |
A3 | Architecture Tactics - Privacy | Privacy Patterns | none |
8 | Architecture analysis | text chapter 21 |
Calendar Entry: An introduction to analysis and design of software architectures with architecture description languages and their subsequent synthesis at the program level. Topics include requirements analysis, analysis and design of static and dynamic view points of architectures and model driven engineering. Architectural styles and tactics are introduced and applied as solutions to recurring design problems. Students are familiarized with component reuse, event-driven programming and computer-aided software engineering tools. The course includes a major design project.
(the official course syllabus is distributed via HEAT)
- See repo history tag "Fall2019"
- Neil Ernst, instructor. Office hours on Zoom Tuesday 12:20-2:30 or by appt.
- TBD
Please use Brightspace to message the TAs first.
Software is a long-lived and complex thing. This course is about understanding software in the large. We use the SEI text as a framework for understanding large-scale software systems. Topics include:
- what is architecture? Who are architects?
- what structures are important to understand?
- views on software systems
- software quality attributes
- architecture analysis and recovery
- architecture-driven design
- agile architecture
- design, architecture, and technical debt
After the course, students are able to:
- Apply software patterns and architectural styles to solve design problems
- Understand the value of quality attributes and scenarios in testing potential designs
- Analyse architectural approaches using rigorous techniques
- Understand what decisions are the architecturally significant decisions, and which should be left to developers.
- Languages and notations, including the UML, for abstracting design models.
This course is divided into ten main modules, each addressing a major topic in software architecture. Modules are spread over two lectures and involve mandatory reading and practice exercises. To be able to follow the pace of the course, the reading must be done before the module lectures and the exercises must be completed within one week of the end of the second lecture of the module.
It's very hard to get good at anything without practice, and software design is no exception. Practice exercises are organized in terms of the module structure and are available on their individual pages. The exercises are designed to help you learn as effectively as possible: you can do them at your own pace, individually or in a group, repeat what's necessary, seek advice from anyone, and make mistakes and learn from them. For these and other reasons, they would be a poor choice for testing your knowledge of the material, so they are not graded. Instead, your practical skills will be evaluated through assignments.
Software design is a naturally abstract topic that needs to be applied to make any sense. The recipe for success in SENG 350 is to regularly prepare for lectures by doing the required readings in advance, attending the lectures and participating in the design and coding walk-throughs, then completing the related exercises as soon as possible. If you do this you may be pleased to discover that the material will grow on you almost subconsciously. The recipe for failure is to await the midterms and final, then furiously attempt to memorize the book and lecture material. Please opt for success.
The class will use Brightspace to submit assignments and post grades, host videos, and facilitate discussion. Class notes are on Github.
Please be aware our session is being recorded to allow students who are not able to attend to watch later. The recording will be posted in Brightspace. Students who have privacy concerns can contact me and may have the option to limit their personal information shared in the recording. If you have other questions or concerns regarding class recording and privacy please contact [email protected].
University and department policies on professional conduct and integrity are applicable. Feel free to see me in person, or via UVic email, for personal questions.
Available on HEAT:
Coursework | Weight (out of 100%) |
---|---|
5 Quizzes | 10% |
Midterm Exams | 30% |
Project | 60% |
Project details and the quizzes are on Brightspace. Quizzes will be completed on Brightspace so please bring something with internet access on those days.
- SEI Software Architecture in Practice, Len Bass, Paul Clements, Rick Kazman.
3rd4th Edition. 2021 - Exercises in Programming Style, Crista Lopes, 2015 (there's a new version as well, but we have access to the first)
- Just Enough Software Architecture, by George Fairbanks, Marshall and Brainerd, 2010.
- Design It! From Programmer to Software Architect, by Michael Keeling, Pragmatic Programmers 2017.
- Documenting Software Architectures, by Paul Clements et al., Addison-Wesley, 2011.
- Designing Software Architecture, A Practical Approach, by Humberto Cervantes and Rick Kazman, Addison-Wesley 2017.
- Continuous Architecture in Practice, Erder, Pureur, Woods, Pragmatic Press, 2020.
- Software Systems Architecture: Working with Stakeholders Using Viewpoints and Perspectives, by Nick Rosanski and Eoin Woods, Addison-Wesley, 2011.
- Applied Software Architecture, Christine Hofmeister, Rod Nord, Dilip Soni, Addison-Wesley, 2000.
- Essential Software Architecture, by Ian Gorton, Springer, 2011.
- Software Architecture: Perspectives on an emerging discipline, Mary Shaw and David Garlan, Prentice-Hall, 1996.
- Architecture of Open-Source Applications, Amy Brown and Greg Wilson, eds. http://aosabook.org