I am Neil Ernst,
This course looks at Software Architecture and Design.
In my experience there is a key problem with that title.
You have only done a few years of software development. Some of the problems in software architecture take years of practice to appreciate.
Can you think of some?
Learning about software architecture and design has two main approaches.
One Documenting and Designing is to prepare you to prepare and describe architectures you will be responsible for.
For example, you move into a government IT job. You are asked to prepare an IT modernization strategy for the Ministry of Finance. You will present that strategy to senior leaders who want to know the technical and non-technical details about your plan.
The second objective Understanding and Refactoring is to enable you to work on the opposite side. Given a software system, come up with intelligent questions and analysis to understand a) how it works b) what key requirements it satisfies c) what evidence supports that.
A contractor presents their finely polished powerpoint deck for their bid to modernize your company’s payroll with a custom one. You need to know a) what it integrates with in your system b) how security guarantees can be met c) long-term costs.
The main deliverable in this course is a major, term-long project you will do with 4-5 other students.
Fill out the survey at https://ca.research.net/r/R3FCBMG
We will then allocate teams based on compatibility.
Here are three definitions.
Here is the definition we will use. It is designed to orient us to the notion that there is not just one thing to call the architecture, but rather a set of structures that help us reason about what the system is doing.
The software architecture of a system is the set of structures needed to reason about the system, which comprise the software elements, relations among them, and properties of both. (text p.4)
You don’t need structure when your files are small enough. But we pretty quickly exceeded that…
Margaret Hamilton, lead engineer for the NASA Apollo software
images from Garlan and Shaw, “Software Architecture: Perspectives…” 1996
We’ve started to expand on what architecture is in the context of software engineering.
On Thursday we will start to go into detail about how we define these structures, and how we uncover them.

Neil Ernst ©️ 2024-5