Video & Lecture on Intro to Software Architecture
This lecture, recorded at the University of Colorado Boulder in September 2012, is an introduction to the major concepts of software architecture. The audience consisted of 70 seniors majoring in computer science. It is based on material taken from the book Just Enough Software Architecture.
Most developers have no formal eduction in software architecture, yet a system’s architecture has a big influence on its success. Software architecture has been intensively researched for more than twenty years now and studying it will help you do a better job of designing systems, give you names for the concepts and patterns, and help you choose between competing designs.
References
Topics
Major topics covered in this lecture include:
- Architects focus on system qualities
- Tradeoffs
- Architecture, architecting, architects
- Views
- Quality attributes
- Analysis
- Standard notations
- Guiderails
- Architectural styles
- Conceptual model
- Engineering with models
- Canonical model structure
- Models and code
- Process and risk
The pacing of the lecture is considerably slower than when I give this lecture to industry practitioners because undergraduates need to be provided with more examples to ground the lessons. This lecture was just over 2 hours but with a different audience it would be about 75 minutes.
Exercise: Designing an alarm clock
Here is the exercise that goes along with the lecture. The point of the exercise is to focus attention not on the features of the alarm clock – all alarm clocks have reasonably equivalent features for our purposes – but instead on the qualities and the ways the clocks can fail.
Why would you choose a battery-based clock over one that plugs into the wall? Well, LED clocks are easy to read at night but generally start blinking 12:00 every time the power goes out. So there is a tradeoff between readability and reliability. But of course the battery can fail too…
The class structures its choices according to the “rational architecture choice” template, which looks like this:
Since X is a priority, we chose design Y, accepting downside Z.
I hope you enjoy it.