General outline

Introduction

For this course there are two projects to select from. We provide their outline on the respective pages, leaving many parts unspecified and free for interpretation. Completing and fully specifying these parts is your first task. After this is done, another team picks up the design, and actually implements it in C++, while you pick up the other team's design and implement it. This way, everyone will ultimately work with both projects, but with different roles.

Teams

For this project teams of 2-4 people are formed. The teams are split into two groups. The first group will work on the specification and design for the first project and the second group will do the same for the second project. Afterwards, the groups will swap projects and so each team will implement the specifications that some team from another group has designed.

Please register your team's name and members on Moodle before February 25th.

Process

The general process is the same no matter which project a team was assigned to. The work on the project has to be done in a GitLab repository so that it's easier for TAs to track progress. We provide a template repository that you can clone to get started.

All documents that you should prepare as deliverables must be in a commonly used format (PDF, or PNG for images). You are free to use any tool (e.g. LibreOffice, Google Docs, Notepad, etc.), as long as the end result is converted to PDF.

DeliverableDeadlineDescription
Team registration1st weekRegister your teams and your preferred project on Moodle.
Team meetings2nd weekGet to know each other before starting to work together. It is good to know each other weaknesses, ideas, background before starting to actually work together. Exchange ideas for the project.
Requirements specification4th weekRather than having a bizarre idea of what the application is going to look like, prepare precise specification for it.
Requirements feedback5th weekEach team reviews the requirements specification prepared by the team they are paired with. The feedback should be summarized in a separate document.
Fixed requirements6th week (Apr 10th)Each team prepares fixed requirements specification based on the feedback provided by the other team and help from TAs.
Software design9th weekEach team designs their application using UML. The design should present both the general architecture and specific components.
Software design feedback10th weekEach team reviews the design prepared by the team they are paired with. The feedback should be summarized in a separate document.
Fixed software design11th week (May 6th)Each team prepares fixed design based on the feedback provided by the other team and help from TAs.
Switching projects9th-11th weeksThe teams designing the first project now implement the second one and vice versa.
Software implementation13th week (May 23rd)Each team implements the application designed by the team they are paired with.
Software testing14th weekEach team tests the implementation provided by the team they are paired with and makes sure that it satisfies their requirements.

To Deliver

To track your process on your own, it is recommended to use GitLab Issues, Boards and Milestones functionality. For more information refer to the documentation:

Communication

For asking questions that might be of interest to all teams, please use the public Moodle forum.

For private questions that only concern your team's situation, send us a email. Please format your email subject as follows so we don't lose your email: [SoftwareEngineering][TEAM_NAME] Subject.

Please discuss the issue within your team first before sending us an email.

Submission

In order to submit projects for grading you just have to upload your last commit (before the correspondent deadline) as a release. For this purpose gitlab offers the Releases functionality. For the first two phases please upload the two documents as .pdf files.

For the lecturers group to see the team's work, you need to add us as project members individually with "Reporter" level, see this Moodle thread for details (this needs to be done once).

Projects

There are two projects you will work on in this course. We do not expect you to have significant background knowledge about the projects' domains: you should focus on the software engineering process, and not on being as realistic as possible.

CAS (Computer Algebra System)

A console application for performing algebra calculations, in the spirit of MATLAB/Octave, Maple, R, etc. See the description.

Health Monitor

An event handling pipeline connecting various health sensors to hospital systems. See the description.

Grading

Pass/Fail. Quality of the implementation is not a big factor, excluding extreme cases. What is important is that you devote enough time, follow through the whole process, keep to the deadlines, and provide all required deliverables. In order to check this, we will look at your GitLab repositories, so make sure to use them as a cornerstone for organizing your work.