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.
Deliverable | Deadline | Description |
---|---|---|
Team registration | 1st week | Register your teams and your preferred project on Moodle. |
Team meetings | 2nd week | Get 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 specification | 4th week | Rather than having a bizarre idea of what the application is going to look like, prepare precise specification for it. |
Requirements feedback | 5th week | Each team reviews the requirements specification prepared by the team they are paired with. The feedback should be summarized in a separate document. |
Fixed requirements | 6th week (Apr 10th) | Each team prepares fixed requirements specification based on the feedback provided by the other team and help from TAs. |
Software design | 9th week | Each team designs their application using UML. The design should present both the general architecture and specific components. |
Software design feedback | 10th week | Each team reviews the design prepared by the team they are paired with. The feedback should be summarized in a separate document. |
Fixed software design | 11th week (May 6th) | Each team prepares fixed design based on the feedback provided by the other team and help from TAs. |
Switching projects | 9th-11th weeks | The teams designing the first project now implement the second one and vice versa. |
Software implementation | 13th week (May 23rd) | Each team implements the application designed by the team they are paired with. |
Software testing | 14th week | Each team tests the implementation provided by the team they are paired with and makes sure that it satisfies their requirements. |
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:
- Boards: https://docs.gitlab.com/ee/user/project/issue_board.html
- Milestones: https://docs.gitlab.com/ee/user/project/milestones/
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.