SE2 logo: Software Design and Architecture

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.

SE2 is offered under course codes CS446, CS646, SE464, and ECE452.

Lectures are held Monday, Wednesday and Friday for Section 2 from 12:30 to 1:20pm and for section 1 from 1:30pm to 2:20pm in MC 2038.
Official administrative entry.

The official course syllabus/overview can be found here.

While the course does not have a required textbook, much of the materials will be sourced from the following texts.

  • 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.
  • Edward Yourdon. Death March. 2nd Edition
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns. Elements of Reusable Oriented Oriented Software (Gang of four)
  • Eric Freeman and Elizabeth Freeman. Head First Design Patterns
  • Sanjeev Sharma and Bernie Coyne. DevOps for Dummies. Freely available online (for email address)
  • Michael A Nielsen & Isaac L Chuang. Quantum Computing and Quantum Information
  • ACM Computing Surveys. Special Issue: Queuing Network Models and Computer System Performance. Volume 10, No 3. September 1978 (Paper Pages 225-261)

Contacttop

Submissions

Course submission will employ cs446 within learn.uwaterloo.ca software.

Discussions

Announcements and online discussions relating to CS446 will employ Piazza. You must be a registered student in order to post to:

https://piazza.com/uwaterloo.ca/spring2017/cs446

CS446 Office Hours

All office hours are by appointment, except where explicitly announced due to anticipated numbers. Requests for such meetings must be submitted via e-mail, preferably at least one hour prior to the proposed meeting, so that sufficient time is allowed for response. It would be helpful to explain in the email the reason for the request.

Ideally, actual meeting times will be arranged that minimise crowds forming, thus improving the quality of subsequent interchange. Absent any explicit request for an office hour to be held, that office hour is implicitly cancelled. Students may continue to show up to an office hour unannounced, but they may find no one there, and they may find themselves discriminated against in terms of the scheduling of the office hour.

Issues relating to the course project should first be raised with the TA's rather than with the instructor.

RoleNameEmailHoursLocation
InstructorDr Ian DavisBy appointmentDC3334/DC2133
TAAaron Sarson By appointmentDC3334
TAAngshuman Ghosh By appointmentDC3334Availability
TAAayush Rajasekaran By appointmentDC2517
TAYuan Xi By appointmentDC2548

Course Scheduletop

The course schedule is broadly broken down into three components:

Project development and management

This first section of the course discusses approaches to managing and developing software.

Design

In the second section of the course we will focus on design patterns. This may constitute review for many of you.

Architecture

The architecture component will comprise the last section of the course.

Projecttop

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. 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, Android, BB10, WP8, or FirefoxOS). While the app can be HTML5-based, it must be deployable in a standard app container. The library also has iOS and Android devices that can be signed out.

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, I will assign you to a random team one week after the start of this course.

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 pitch
  • Best prototype demo
  • Best final demo
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.

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

You must also participate in an oral defence of your work, architecture and design, conducted by the CS446 TA's.

This will be conducted in:

June 10thDC2314
June 11thDC2314
June 12thDC3323
June 13thDC3323
June 14thDC3323

Please use the poll below to schedule a suitable time when you can all meet to do this:

https://doodle.com/poll/mkqun34ts5knha8b.

Nominal Course Outlinetop

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.

Policiestop

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