Software Engineering Term Project Guidelines

Summer 2018

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.4), project tracking data (see Section 4.3), code commit data (see Section 4.1), and peer evaluations 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. project manager - coordinate the distribution and assignment of work and serve as the point of contact.
  2. scribe - record meeting notes.
  3. architect - main designer/technical lead.
  4. quality assurance - main testing lead.
  5. tech support - support and educate the team on the computing environment.
  6. software developer - participates in requirements, design, implementation and testing of software.

One person can have multiple roles.

3.3 Project Tracking 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.

Artifact Percentage
Requirements
- Requirements specification document
20%
Design
- Design document
20%
Implementation
- Source code
- Version control repository
35%
Verification & Validation
- Test plan
- Test scripts
- System test summaries
15%
Management
- Project Plan
- Project Tracker
- (Weekly logs)
- (Individual performance goals and accomplishments)
- Project Summary Document
10%

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 Git throughout code development.

4.2 Notes on Source Code

Source code is expected to make use of sound programming principles. It is also expected that code should be commented in such a way as to facilitate automatic document generation using tools such as Javadoc, Doxygen, etc.

4.3 Notes on Project Tracker

Use a project tracking tool as discussed in Section 3.3. Individual assignments must be updated weekly.

4.4 Notes on Weekly Logs

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: http://cs2.ist.unomaha.edu/~hsiy/SElogs.

5. Major Deadlines

DeadlineDeliverable
5/24 Team composition + initial project ideas
5/30 Draft Project Proposal
6/6 Finalized Project Proposal and Draft Project Plan
6/13 Draft User Stories and Wireframes (lo-fi prototypes)
6/20 Draft BDD scripts, Object Model, and a working screen
6/25 Code Milestone 1
7/5 Individual Performance Goals
7/11 Draft Logical View of Architecture and Database
7/18 Code Milestone 2 and Unit Test Scripts
7/25 Draft Requirements Specification Document, Design Document, and Test Plan
8/3 Dry-run submission
8/10 Final Submission (Code Milestone 3 + all documents)

Notes