SWE 621 Software Design & Architecture

Spring 2021Tuesday, 4:30pm-7:10pm, Online


Grades • Syllabus, Schedule, and Slides • Announcements, Assignments, Discussion (Piazza)

Course Overview

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.

Learning Outcomes

Required Textbooks

Course Staff

Instructor: Prof. Thomas LaToza (tlatoza@gmu.edu)
   Office hours by appointment.
Teaching Assistant: Ajit Yadav (ayadav4@masonlive.gmu.edu)

Schedule

Preliminary 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: HWs: HW0 due

3. Design as Domain Modeling (2/9)

Required Readings:

4. Design as Abstraction (2/16)

Required Readings: HWs: HW1 due

5. Notations for Design (2/23)

Required Readings:

6. Architectural Styles (3/2)

Required Readings: HWs: HW2 due

Midterm Exam (3/9)

7. Design for Change (3/16)

Required Reading:

8. Design Patterns (3/23)

Req Readings: HWs: HW3 due

9. Following a Design (3/30)

Req Readings:

10. Programming Styles (4/6)

Req Readings: from Lopes, Exercises in Programming Style: HWs: HW4 due

11. Design for Reuse (4/13)

Req Readings:
  • Myers, Stylos, Improving API Usability
  • Robillard, DeLine, A field study of API learning obstacles
  • 12. Design Ecosystems (4/20)

    Req Readings: HWs: HW5 due

    13. Review and Project Presentations (4/27)

    Req Reading: none

    Final Exam: 5/4, 4:30pm - 7:15pm

    Course Policies

    Online Course

    This 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.

    Contacting

    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

    Office hours this semester are by appointment. Please email the instructor or course TA to make an appointment.

    Readings

    Weekly 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.

    Resources

    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.

    Exams

    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.

    Makeups

    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.

    In-Class Activities

    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.

    Assignments

    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:

    1. Work on and submit all HWs independently.
    2. 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.

    Grading

    In-Class Activities: 10%
    HWs and project presentation: 40%
    Mid-term exam: 20%
    Final exam: 30%

    Honor Code

    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.

    Privacy

    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 Resources

    Writing Center
    University Libraries
    Counseling and Psychological Services (CAPS)
    University Policies
    GMU Academic Calendar