This course will provide a comprehensive introduction to software architecture and design, methods, processes, and notations. This course will explore design as the enumeration, evaluation, and selection of design alternatives to achieve quality attributes, including perspectives on design from risk minimization, domain modeling, abstraction, architectural styles, design patterns, and reuse.
- Characterize a design space, including identifying risks and key architectural decisions
- Design abstractions that express a system or domain model
- Use notations to describe elements and relations in an architecture
- Reverse engineer design decisions, architectural styles, design patterns, design rules, and programming styles from existing systems
- Create and evaluate designs for modifability and reuse
- Just Enough Software Architecture: A Risk-Driven Approach, George Fairbanks, 2010 (referenced as Fairbanks)
Instructor: Prof. Thomas LaToza (email@example.com)Office hours by appointment.
Teaching Assistant: Ajit Yadav (firstname.lastname@example.org)
SchedulePreliminary Schedule, subject to change. Lecture titles link to lecture slides.
1. Course Overview, Design as Choice (1/26)Required Readings: none
2. Design as Risk Minimization (2/2)Required Readings:
- Fairbanks, Chapter 1: Introduction
- Fairbanks, Chapter 3: Risk-Driven Model
- Fairbanks, Chapter 4: Example: Home Media Player
3. Design as Domain Modeling (2/9)Required Readings:
- Fairbanks, Chapter 5: Modeling Advice
- Fairbanks, Chapter 6: Engineers use Models
- Fairbanks, Chapter 8: The Domain Model
4. Design as Abstraction (2/16)Required Readings:
- Fairbanks, Chapter 10: The Code Model
- Fairbanks, Chapter 11: Encapsulation and Partitioning
5. Notations for Design (2/23)Required Readings:
- Fairbanks, Chapter 12: Model Elements
- Fairbanks, Chapter 13: Model Relationships
6. Architectural Styles (3/2)Required Readings:
- Fairbanks, Chapter 2: Software Architecture
- Fairbanks, Chapter 14: Architectural Styles
Midterm Exam (3/9)
7. Design for Change (3/16)Required Reading:
8. Design Patterns (3/23)Req Readings:
- Gamma, Helm, Johnson, Vlissides, Design Patterns: Abstraction and Reuse of Object-Oriented Design
- Schmidt, Using design patterns to develop reusable object-oriented communication software
9. Following a Design (3/30)Req Readings:
10. Programming Styles (4/6)Req Readings: from Lopes, Exercises in Programming Style:
- 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
11. Design for Reuse (4/13)Req Readings:
12. Design Ecosystems (4/20)Req Readings:
- Bosch, From software product lines to software ecosystems
- Bogart, Kästner, Herbsleb, Thungow, How to break an API: Cost negotiation and community values in three software ecosystems
13. Review and Project Presentations (4/27)Req Reading: none
Final Exam: 5/4, 4:30pm - 7:15pm
Online CourseThis course is offered entirely online. To participate in class, you will need access to a computer with a functioning webcam and microphone. Class will be held via Zoom, with Blackboard Collaborate used as a backup. To create a sense of a shared space, all participants are required to leave their video on.
If you have a general question about an assignment or course content, first check piazza to see if someone has already answered your question. If not, post your question in piazza, where your question may be answered by other students or the course staff. For questions about grades, contact one of the TAs by email.
Office hours this semester are by appointment. Please email the instructor or course TA to make an appointment.
ReadingsWeekly readings will be from the course textbook as well as from a number of classic software engineering papers. You should read the assigned readings before each class. Many of the readings are available online. For these readings, you will need to access the link either the Mason Library proxy server or Mason VPN.
The course website lists the sylabus, course schedule, and links to the lecture slides. Assignments and announcements as well as discussion will be posted on Piazza. Grades will be posted on Blackboard.
There will be a midterm exam and a comprehensive final exam. Both will be closed-book and in-class. Exams will cover material from the lectures as well as from the assigned readings.
Unless arrangements are worked out in advance, missed exams cannot be made up. As some of the HW assignments involve peer evaluations where groups give and receive feedback with other groups, late HW submissions impact not only the groups themselves but other students in the course. Thus, 10% will be deducted for late HW assignments and late HW assignments will only be accepted for 24 hours after the due date. HW assignments submitted more than 24 hours late will receive a zero. If you’re worried about being busy around the time of a HW submission, please plan ahead and get started early.
As software architecture and design require achieving a mastery of design skills, each class will include an extended in-class group activity. Each activity will result in a small deliverable, often in the form of diagrams, sketches, or lists. In-class activities will each be worth 10 points and will be graded for participation as follows:Satisfactory: put forth a good effort in accomplishing the activity's goals (10/10)
Needs improvement: substantially misunderstood the activity or did not make meaningful progress (5/10)
Not present: did not submit deliverable from activity (0/10)
To accomodate planned or unplanned absences, the three lowest scores (including absences) will be dropped.
The assignments in the course will be in the form of a group project. You will select three competing open source applications that each offer an alternative architecture and design for the same underlying problem. Over the course of the semester, you will reverse engineer the architecture and design of each and compare and constrast the approaches taken.
You are allowed to work on the HWs collaboratively using one of two models:
- Work on and submit all HWs independently.
- Collaborate from start to finish on all HWs with at most two other students in SWE 621. You must submit one solution as a group for each HW. Additionally, each group member will separately submit a peer evaluation, describing the involvement of each group member (including themselves) in the HW assignment.
Note: You are NOT ALLOWED to include “guest names.” Every person listed as a collaborator must contribute. If someone is listed as a collaborator but did not contribute, all will be given a zero on the assignment and reported to the university honor committee.
GradingIn-Class Activities: 10%
HWs and project presentation: 40%
Mid-term exam: 20%
Final exam: 30%
GMU is an Honor Code university; please see the Office for Academic Integrity for a full description of the code and the honor committee process, and the Computer Science Department’s Honor Code Policies regarding programming assignments. The principle of academic integrity is taken very seriously and violations are treated gravely. What does academic integrity mean in this course? Essentially this: when you are responsible for a task, you will perform that task. When you rely on someone else’s work in an aspect of the performance of that task, you will give full credit in the proper, accepted form. Another aspect of academic integrity is the free play of ideas. Vigorous discussion and debate are encouraged in this course, with the firm expectation that all aspects of the class will be conducted with civility and respect for differing ideas, perspectives, and traditions. When in doubt (of any kind) please ask for guidance and clarification.
Accommodations for Disabilities
If you have a documented learning disability or other condition that may affect academic performance you should: 1) make sure this documentation is on file with the Office for Disability Services to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs.
Students must use their MasonLIVE email account to receive important University information, including messages related to this class. See MasonLive for more information.
Other Useful Campus ResourcesWriting Center
Counseling and Psychological Services (CAPS)
GMU Academic Calendar