Software Architecture and Design - SE464

Overview

Software Architecture and Design (SE464) "Introduces students to the design, implementation, and evolution phases of software development. Software design processes, methods, and notation. Implementation of designs. Evolution of designs and implementations. Management of design activities." Course catalog.

Contact

Lectures are held Tuesday and Thursday from 10:00 to 11:20 in PHY 145. Tutorials are held Friday from 13:30 to 14:20 in MC 2065. There are no scheduled lab slots. Students are expected to organize project meetings on their own.

My office hours are by appointment and will be held in my office, EIT 4007. I will also be available immediately after lectures. See contact details.

Course material, announcements, and submissions will be handled through Learn.

Begin all email subjects with [SE464].

Try not to leave your questions until the last minute.

Teaching assistants

The course is assisted by:

  • Zhuo Chen

  • Parsa Pourali

  • Rodrigo Queiroz

  • Mier Ta

Meetings by appointment.

Course expectations

It is expected that students attend lectures and complete the required assignments. Lectures will often include hands-on activities; participation in these exercises is essential to succeed in the class. Slides will be provided via Learn. Any material discussed in class (lectures & tutorials) or in the required readings will be testable unless otherwise noted.

By the end of the course you should be able to:

  • propose and analyze software architectures.

  • explain the strengths and weaknesses of various architectural styles and design patterns / techniques.

  • communicate and rationalize architectural and design decisions.

  • ideate, justify, and implement software designs.

  • evaluate, compare, and contrast different architectures and designs.

Overview of topics

  • Software architecture, architectural styles, and architectural representations

  • Software design, design patterns, design representations

  • Software architecture and design conception, analysis, and communication

  • Architecture and design recovery / reverse engineering

  • Architecture and design visualization / understanding

  • Cloud / grid computing architectures

Course material

While the course does not have a required textbook, much of the materials will be sourced from the first two texts; additional books are supplementary.

  • Richard N. Taylor, Nenad Medvidovic, and Eric Dashofy. Software Architecture. Foundations, Theory, and Practice. Available in the library or for purchase (e.g., through Amazon.ca). Slides for this book are available online.

  • Ian Gorton. Essential Software Architecture. Available online or for purchase (e.g., through Amazon.ca). Slides for this book are available online.

  • Fred P. Brooks Jr. The Mythical Man Month. Available in the library or for purchase (e.g., through Amazon.ca).

  • Fred P. Brooks Jr. The Design of Design. Unfortunately not in the library but still available e.g. through Amazon.ca.

  • The Architecture of Open Source Applications. Available online.

Course schedule

Lecture material is available through Learn.

This is a tentative schedule that might get adapted during the term.

Week   Date Class
1 Sept. 8 Introduction, organization, and project
2 Sept. 13 Decomposition, Non-functional properties, Architecture
3 Sept. 20 Architectural Styles
4 Sept. 27 Architectural Styles
5 Oct. 4 Modeling, Design Patterns
6 Oct. 13 Design Patterns (no lecture on Oct. 11)
7 Oct. 18 Frameworks
8 Oct. 25 Midterm, Architecture of Open-Source Applications
9 Nov. 1 Dependency Injection, Cloud/REST Architectures
10 Nov. 8 Service-oriented-Architectures, Microservices
11 Nov. 15 Languages: Scala, Checker Framework, Arch Java, etc.
12 Nov. 22 Project presentations
13 Nov. 29    Project presentations, outlook, and wrap-up

Project

The project forms an integral part of this course. The goal of the project is to produce a significant application that performs some useful function (even better, something awesome!). This software must have a considered and defensible design and architecture.

There are only two real restrictions on the application idea itself: no database management apps will be accepted (e.g., simple CRUD apps); also, apps that require crowd buy-in are not acceptable (e.g., apps that would require large numbers of people to contribute content to be viably useful).

Mobile applications have been popular in previous years. To make the architecture interesting, aim to make the app executable on at least two platforms, e.g. a mobile phone app and a browser interface. Using sensors and external devices could also make for interesting apps.

However, other project ideas are welcome: if you have an idea for a project of a suitable size and complexity and find a project team to work with, propose it!

The projects will be completed in teams of four. You are free to select your own team; if you do not have a team or your team has less than four members, try using the course forums to organize a team. If all else fails, please talk to me and I will set you up. Each of the deliverables for the project can be considered an assignment.

Projects will have a difficulty scale applied to them by the instructor and TAs. The scale formula will be:

(project + bonus) * scale = final project grade

Scale will range between 0.75 and 1.0. The components of the scaling mark will be determined by:

5 completeness (compared to proposal)
5 utility
5 polish
10    difficulty

There will also be various sources of bonus marks during the term; each will be worth 2%:

  • Best proposal

  • Best prototype demo

  • Best final demo

  • Accepted to curated App Store

Note: The expectation is that you will work approximately 12 hours per week on this course; at least 8 of these hours will be on the project. Given that the course lasts 13 weeks, each team member is expected to work on the project at least 100 hours. You should be able to accomplish something pretty great in this time; please make the most of this opportunity.

Assessment

Deliverable Date Format Value
Design background Sept 9 Learn Pass/Fail
Project groups Sept 14 Learn Pass/Fail
D1: Proposal Sept 28 Learn + TA 5%
D2: Prototype Oct 17 Learn + TA 5%
Midterm Oct 25 In class 10%
D3: Presentation + video      Nov 22 — Dec 2     In class 10%
D4: Arch + Design Dec 2 Learn + TA      20%
D5: Participation journal Dec 2 Learn Pass/Fail
Final Exam TBD Written 50%

You must pass the final exam and all pass/fail assignments to pass the course.

No late submissions will be accepted.

It is expected that all team members receive the same grade for the project component. The participation journal will be used to arbitrate disagreements.

Policies

Academic Integrity
  • In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [See the academic integrity site for more information.]

  • Turnitin.com: Text matching software (Turnitin®) will be used to screen assignments in this course. This is being done to verify that use of all materials and sources in assignments is documented. Students will be given an option if they do not want to have their assignment screened by Turnitin®. In the first week of the term, details will be provided about arrangements and alternatives for the use of Turnitin® in this course.

Grievance
  • A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4.

  • When in doubt please be certain to contact the department’s administrative assistant who will provide further assistance.

Discipline
  • A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for his/her actions.

  • A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about "rules" for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean.

  • For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline.

  • For typical penalties check Guidelines for the Assessment of Penalties.

Appeals
  • A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground.

  • A student who believes he/she has a ground for an appeal should refer to Policy 72, Student Appeals.

Note for Students with Disabilities
  • AccessAbility Services, located in Needles Hall, Room 1132, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with the AccessAbility Services at the beginning of each academic term.

Acknowledgments

Thanks to Derek Rayside and Reid Holmes for sharing their experience and materials from previous iterations of this and a similar course, CS 446, Winter 2014.

PDF version for easier printing (if you absolutely have to) or if you prefer looking at PDFs.