Software Engineering Term Project Guidelines

Summer 2016
Updated: 5/16/2016

1. Introduction

Real-world software development is different from the experience gained in most class programming projects. Requirements are often unclear and complex. No one can accomplish a fairly complex project singlehandedly. Systematic testing is vital. In the real world, one must work with the realization that the software produced will be used by, and maintained by, other people, hence usability and maintainability are important qualities. The purpose of the software engineering term project is to help you get a feel for real-world software development. Students will work together in teams of 4-6 members. Students will be taking this project from problem definition to system test, applying basic software engineering processes.

You should understand that the project will require a significant commitment of your time from the beginning of the semester to the end.

1.1 Overall Objectives

2. Project Proposals

The project proposal is to be written up as a problem statement. This statement will be reviewed and the proposal may be modified in order to fit within the time constraints.

3. Working Together

Students will be asked to self-organize into teams consisting of 4-6 members.

3.1 Grading Policy

Each member of the team is expected to contribute equally to the project. Note that project grades will be given on an individual basis. In other words, if one person does not contribute substantially to the project, his/her grade will be significantly reduced. Weekly logs (see Section 4.2), peer opinions, project tracking data, and code commit data will be the primary sources of information for assessing individual contributions to the project. If there is a clear discrepancy in individual contributions, individual project grades will be adjusted accordingly.

3.2 Team Roles

Each team must appoint:

  1. team leader (head honcho) - coordinate the distribution and assignment of work and serve as the point of contact.
  2. scribe (record keeper) - record meeting notes.
  3. architect (idea person) - main designer/technical lead.
  4. quality assurance (bug catcher) - main testing lead.
  5. tech support (genius bar) - support and educate the team on the computing environment.
  6. software developer (code ninja) - participates in requirements, design, implementation and testing of software.

One person can have multiple roles.

3.3 Collaboration Tools

Our experience has shown that some CSCI 4830 projects fail because the teams were unable to make progress due to teamwork issues (unable to find common meeting time, unable to agree on ways of communicating decisions and tasks, etc.). To mitigate this, you are required to make use of tools for tracking project activities. Some commonly used tools:

3.4 Tips

While there is no magic formula for successful teamwork, the following are helpful tips from my observations of successful teams in the past.

4. Project Artifacts To Be Submitted

These are the artifacts that should be submitted. Examples and templates will be provided later.

- Requirements specification document
- Design document
- Source code
- Version control repository
Verification & Validation
- Test plan
- Test scripts
- System test summaries
- Project plan
- (Weekly logs)
- Work item assignments
- Project Summary Document

4.1 Notes on Version Control Repository

Source code for the project must be version-controlled, i.e., modifications should be saved using a version control repository such as Subversion or Git throughout code development. Version control support is also available through Rational Team Concert. This repository is part of the final project submission.

4.2 Notes on Weekly Logs

When your team proposal has been approved, each team member must record every week a log of his/her activities contributing towards the project. The tasks should be brief and specific. Examples:

Fill out the weekly log here:

5. Major Deadlines:

DateDeliverableNature of Feedback
5/23 Team composition + initial project ideas Verbal approval
5/31 Problem Statement/Project Proposal Written comments
6/6 Initial Project Plan Written comments
6/27 Proof-of-concept or working prototype Written comments
7/5 Initial Requirements Specification Document Written comments
7/12 Initial Design Document, Code Milestone 1, Test Plan Written comments
7/26 Code Milestone 2, unit test scripts, test summaries Written comments
8/12 Final Submission (Code Milestone 3 + all project documents) Grade

5.1 Notes