SE2: Software Design and Architecture - CS 446, CS 646, ECE 452

SE2: Software Design and Architecture is the second course of the three software engineering capstone project courses, offered jointly by the David R. Cheriton School of Computer Science and the Department of Electrical and Computer Engineering at the University of Waterloo.

Lectures are held Tuesday and Thursday from 1600 to 1720 in MC 2038. My office hours are by appointment at DC 2332. Official administrative entry.

Important dates and information will be posted here on this website. The official syllabus is also the contents on this website.

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 through Amazon.ca.

Contact

The best way to get help is via email. Please try not to leave your questions until the last minute. Prefix the subject line with CS446/ECE452/CS646 for a prompt reply.

  • Instructor: Mei Nagappan - mei.nagappan@uwaterloo.ca (DC2332). Office hours by appointment
  • TA: Aaron Sarson - asarson@uwaterloo.ca (DC3334).Office hours Th 1000 - 1100
  • TA: Sahba Ezami - sezami@uwaterloo.ca (DC3334).Office hours Mo 1500 - 1600

You could also use Piazza to discuss with your fellow classmates. Please sign up here. The Piazza page for the class is here.

Course Schedule

The course is broadly broken down into two components:

Architecture

The architecture component will comprise the first half of the course.
DateTopicsNotes
Jan 3 Introduction
Jan 5 Architecture Overview
Jan 10 Architectural views & decomposition
Jan 12 Non-functional properties
Jan 17 Project Proposal Prep Attendance Compulsory
Jan 19 Project Proposal Prep Attendance Compulsory
D2/D4 signup
Jan 24 Project Proposal Presentations
  • Opti
  • Roast Duck
  • Project Orange
  • Hippothesis
  • Awesome Possum
  • APP
  • CJ2
  • Use Your Imagination
Jan 26 Project Proposal Presentations
  • WXYZ
  • Welm
  • Jet
  • Kennedy
  • Best SW Arch...
  • Group 5
  • Crash Test Dummies
Jan 31 Arch styles intro
Feb 2 Arch Styles (D2)
Feb 7 Arch Styles (D2)
Feb 9 Arch Styles (D2)

Design

The design component will comprise the second half of the course.
DateTopicsNotes
Feb 14 Midterm Review
Feb 16 Project time
Feb 21 Reading Week
Feb 23 Reading Week
Feb 28 Project Prototype Demo (D3)
  • Crash Test Dummies
  • Group 5
  • Best SW Arch...
  • Kennedy
  • Jet
  • Welm
  • WXYZ
Mar 2 Project Prototype Demo (D3)
  • Use Your Imagination
  • CJ2
  • APP
  • Awesome Possum
  • Hippothesis
  • Project Orange
  • Roast Duck
  • Opti
Mar 7 Design Introduction
Mar 9 Design Patterns (D4)
Mar 14 Design Patterns (D4)
Mar 16 MVC/MVP, Cloud/REST
Mar 21 Quick Recap
Mar 23 Class cancelled for orals
Mar 28 Class Cancelled
Mar 30 (0400 PM - 0600 PM) Final Demo
Apr 24 (0400 PM - 0630 PM) Final Exam (Open book, open notes, and anything on paper)

Project

The project forms an integral part of this course. The goal of the project is to produce a significant mobile app that performs some useful function. This software must have a considered and defensible design and architecture. One requirement for the implementation of the app is that it must work on at least two platforms (iOS and Android).

There are only three real restrictions on the app idea itself: no database management apps will be accepted (e.g., simple CRUD apps that do not make sense in a mobile context); 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); apps that require a complex server infrastructure are also not acceptable.

You must demo your app on a mobile device (iOS or Android). While the app can be HTML5-based, it must be deployable in a standard app container. The library has iOS and Android devices that can be signed out. After the prototype demo we will provide a 'pivot' to each group; this will consist of a new or modified requirement for your app that you will have to include for the final demo (and write about in the architecture and design deliverable).

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, please talk to me and I will set you up.

Project grades need not be the same for all team members. Each team member will get a score based on effort. Projects will have a difficulty scale applied to them by the instructor and TAs. The scale formula will be:

(project score for the team member + 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
  • 5: difficulty
  • 5: pivot
There will also be various sources of bonus marks during the term; each will be worth 2%:
  • Best pitch
  • Best prototype demo
  • Best final demo
  • Accepted to curated App Store (i.e., iOS)
NOTE: The expectation is that you will work approximately 12 hours per week on this course; at least 5 of these hours should be on the project. Given that the course lasts 13 weeks, each team member is expected to work on the project at least 65 hours. You should be able to accomplish something pretty great in this time; please make the most of this opportunity.

2014 Project Videos

A selection of project videos from 2014 are included in this playlist to help you get an idea of the scope of projects suitable for the course.

Assessment

All deliverables are due at Noon on the day of submission. No late submissions shall be graded.
Deliverable Date Format Value
Project Groups Jan 12 E-Mail me and TAs Pass/Fail
Project Proposal Prep Jan 17/19 Attendance in class Pass/Fail
D1: Proposal Document Jan 23 Email me and TAs 5%
D1: Proposal Presentations Jan 24/26 In class Pass/Fail
D2: Architecture Activity Feb 2/7/9 In Class 10%
D3: Prototype Document Feb 27 Email me and TAs 5%
D3: Prototype Demo Feb 28/Mar 2 In class Pass/Fail
D4: Design Activity Mar 7/9/14/16 In Class 10%
D5: Arch + Design Document Mar 20 Email me and TAs 10%
D5: Arch + Design Oral Exam Mar 22/23/24 Oral exam location TBD 10%
D6: Final Documentation Mar 27 Email me and TAs 5%
D6: Presentation + Video Mar 28/30 In Class 5%
Final Exam TBD Location TBD 50%

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

Graduate Student Project

For graduate students only: in addition to the mobile project, you will perform an individual graduate project. The graduate project is worth 25% of your grade; your final exam grade will only account for 25% of your final grade instead of 50%.

Three types of graduate projects are possible:

  1. Build a Software Tool:

    The goal of this style of project is to identify some problem developers encounter in practice, find some solution, and validate that the solution helps with the initial problem. I would recommend drawing upon your experience as you write code to identify some problem that has inhibited you in the past and fix it.

    The outcome of this project will be a short (5-6 page) paper describing the problem, your solution, a comparison to related approaches, and some form of validation.

  2. Literature Survey:

    The goal of this kind of project is to gain a more complete understanding of a topic relevant to this course. The outcome of this project will be a critical summary of the state-of-the-art on your selected topic; this summary should be 8-10 pages. It is essential that this summary synthesizes the surveyed literature to identify important themes, findings, and open questions.

  3. Use an Advanced Software Development Tool

    The goal of this project is to provide a validation of some previously-existing development tool from the research community. The tool you validate must be related to the course material. The outcome of this project will be a 6-8 page paper describing your experience with the tool outlining its strengths, weaknesses, and avenues for future improvement.

There are two deliverables for the graduate project:

  1. Project proposal. Before you undertake your project you will need to submit a proposal for approval. The proposal should be short (1-2 pages in ACM format). The proposal should include a problem statement, the motivation for the project, a set of objectives you aim to accomplish, and a set of milestones. I will read these and provide comments. The proposal is not for marks but _must_ be completed in order to pass the course. This will be due on Jan 31 via email to me.
  2. Written report. The required length of the written report varies from project to project; all reports must be formatted according to the ACM format and submitted as a PDF. This artifact will constitute 100% of the graduate project grade. This will be due on Apr 03 via email.

Nominal Course Outline

This is the high-level outline provided by the department; while this is general guideline the course will be adjusted according to your feedback, interests, and experience.

Introduction (1h)

Why design? Input, output, and constraints of the design process. Types of design. Relationship to software quality and evolution. Design in more mature implementation technologies.

Software Design Process Models (3h)

Design as search. Design spaces. Design state, goal structure, generative design operations, early quantitative evaluations, control of design process. Basic models of design (transformational, plan/architecture driven). Relationship to other life-cycle activities.

Arch/Design Representations (9h)

What should be represented (structure, behaviour)? Informal representations of design, examples of design notations. Formal representation of design. Domain specific architecture descriptions. Role of standards, reference architectures. Design documentation.

Design Plans/Arch (9h)

Review of small/medium scale plans (data structures, programming language structures, concurrency). Plans/architectures for common types of software systems (translators, embedded, real-time, user interface).

Design Strategies and Methods (6h)

Design strategies. Selected methods: object modelling technique, structured design, real-time, user interfaces. Methods for design with off-the-shelf components.

Design Assessment (3h)

Assessment dimensions and factors affecting their relative importance. Design tradeoffs. Evolvability/understandability criteria. Design complexity metrics. Assessment strategies (analytical, simulation, rapid prototyping), example: response time/throughput estimation.

Design Verification (3h)

Design reviews, scenarios and test cases, testing of executable design representations. Verification of properties.

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

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).
Toggle Menu