Title | Author | Date |
---|---|---|
SENG480a/CSC485b/CSC578b---Lecture 1 |
Neil Ernst |
Jan 7, 2019 |
I am Neil Ernst, assistant professor in the Department of CS, formerly a senior researcher and consultant at the SEI. I've approached software architecture from both an academic/research perspective, as wel l as a consulting engineer. In my four years at the SEI, I helped evaluate, document, and design software architectures in government and scientific settings.
This course has two main objectives. One---Documenting---is to prepare you to prepare and describe architectures you will be responsible for. For example, you move out into a government IT job. You are asked to prepare a modernization strategy for the Department 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---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.
This course is divided into a project, worth 50%, a midterm, worth 25%, and assignment(s), worth 15%. Participation will be marked as well and worth 10%. We meet twice a week. I intend to lecture for about 20-30 mins, then turn it over to a peer exercise for the next 20 minutes, and conclude with either more lectures or a summary. I am arranging a few guest lectures from architecture practitioners as well.
The main deliverable in this course is a major, term-long project you will do with 4 other students, in groups that I form. You will select a large, open source project, and generate a chapter-length document that completely describes the project's architecture. What exactly that comprises will be the subject of the lectures.
Your individual project mark will reflect your team's performance, adjusted by a peer / instructor participation factor. If you do nothing, you can expect a 0 for the project (and will fail the course).
Group projects are best summarized by Dickens:
It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us ... (A Tale of Two Cities)
We will go into detail about functioning well in groups, but you should not assume that your group's problems will be an excuse for poor performance. Turn the winter of despair into a spring of hope as early as you can.
(we brainstormed ideas on the blackboard)
Here are three definitions.
- "the important stuff ... whatever that is (Martin Fowler)"
- “Architecture is the decisions that you wish you could get right early in a project.” Ralph Johnson
- the “...significant design decisions (where significant is measured by the cost of change).” (Grady Booch)
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)