Boston
University
Team Programming Project
Students will be assigned to teams consisting of approximately five members.
Each team should assign people to the following roles:
+ Tech lead
+ Assistant tech lead
+ Implementers
The tech lead is responsible for developing and documenting the conceptual data for the project, and for communicating this information to the implementers. The conceptual data includes, but is not limited to, the requirements, an overview of the proposed system, interfaces between portions of the system, and techniques and approaches for implementing the internals of system components. The tech lead is also responsible for creating test cases to validate each requirement item, and for running the test cases to inform implementers of defects. The tech lead may not do any coding.
The assistant tech lead is responsible for reviewing with the tech lead the conceptual data, providing feedback to the tech lead, and for assisting the tech lead with updating the conceptual data and communicating it to the implementers. The assistant tech lead is also responsible for writing the user documentation, for maintaining a schedule based on estimates and projections from implementers, for maintaining the prioritized list of open issues, and for writing status reports based on input from team members. The assistant tech lead may not do any coding.
The implementers are responsible for producing the code, and for notifying the tech lead and the assistant tech lead when the conceptual data contains errors, or requires clarification. When the implementers feel a significant change is needed in the concepts provided by the tech lead and tech lead assistant, they must first discuss these issues with the tech lead and the tech lead assistant, who will make final decisions and document the changes. Implementers may not make conceptual changes unilaterally. Implementers are also responsible for providing the tech lead and assistant tech lead with feedback on requirements and test cases, and with information necessary to develop the status report, the schedule, the prioritized list of open issues and the user documentation.
On the dates listed below, each group will submit at the start of lecture a CD or a memory stick with a snapshot of the following information (emails will not be considered a submission):
+ Status report
+ Requirements and corresponding test suite
+ Current schedule, showing tasks assigned to team members, projected completion dates, and milestones
+ System design, including UI design
+ A prioritized list of open issues
+ Code
+ User documentation
+ A log of meetings, and minutes from meetings; transcripts of chats, if meetings are held by chat
Snapshots of these materials will be due at the beginning of lecture on the following dates:
|
September 28 |
Project #1 snapshot #1 due -- this submission must include: a status report, a requirements document with test cases, a current projected schedule, a log of meetings, an initial system design |
|
October 13 |
Project #1 snapshot #2 due -- this submission must include: a status report, a requirements document with test cases, a current projected schedule, a log of meetings, system design, initial code, initial user documentation |
|
October 26 |
Project #1 due -- this submission must include all specified items |
Project #1 will implement a tool to enable professors to create and manage their BU web sites. Click here for details about this tool from the customer's perspective.
The completed system and supporting engineering documentation is due at the beginning of lecture on October 26. No extension will be granted.
Project #2 will be introduced on October 26 after the mid-term.
We will be using PHP and MySQL running locally on individual computers or in another configuration acceptable to the team.
PHP software and documentation is available at php.net.
MySQL software and documentation is available at mysql.com. A good administrative tool for MySQL is Navicat, available at navicat.com.
In order to run PHP and MySQL on http://localhost (i.e. on your own desktop or laptop), you will need to set up a web server. Options for web servers are Apache (http://httpd.apache.org/) or Xitami (http://www.xitami.com/), among others
For a combined PHP+MySQL+Apache web server, you may consider
using WAMP, which installs and configures all three components. WAMP is
available at http://www.wampserver.com/en/download.php.
I STRONGLY RECOMMEND USING WAMP.
Written documents should be provided in Word format. Other formats are acceptable if you get my approval first.
+ Status report
The status report should be a clearly-structured single page of prose succinctly indicating what has been completed, what is to be done next, and any issues facing the project.
+ Requirements document:
The requirements document should contain a complete description of the intended system in the form of "Ability to" statements, optionally in an outline tree format. Each leaf of the tree should reference one or more test cases containing complete information for reproducing the behavior of that particular system ability.
The requirements document should also contain a statement of anticipated risks from the perspective of the requirements engineer, and an anticipated range of completion dates based on "best case" and "worst case". The completion date should be calculated from the number of and extent of the required features.
+ Current schedule
The schedule should provide a plan for the entire duration of the project, and should contain a list of tasks for each member of the team, target dates, and significant milestones. Any submitted schedule should be current, i.e., all target dates and milestones should be updated to take into account any slippage that has occurred. This document should also contain an appendix with supporting time estimates.
+ Design document:
The design document should contain the following sections: (a) a single page diagram showing the overall structure of the system, showing only relevant details, (b) one or more pages providing details regarding the components on the diagram (e.g. anticipated interfaces, protocols, platforms, development tools, libraries, etc.), and (c) a list of anticipated objects, the data they contain, and any other information essential for a developer to write code for the objects.
For the user interface aspect of the design, this document should contain sketches of the expected appearance of the forms presented to the user.
The design document should also contain a statement of anticipated risks from the perspective of the system designer, and an anticipated range of completion dates based on "best case" and "worst case". The completion date should be calculated from the number of and extent of the system components.
+ Code
The code should include both PHP application code and a supporting MySQL database.
+ User documentation
User documentation should be formatted most conveniently for the user. For example, for a web-based application, a link from the application to a web page is acceptable.
+ Prioritized list of open issues
This document details the remaining issues, ordered by importance. The issues should include known defects, if any.
+ Meeting log (appendix)
The meeting log should record all meetings, phone calls, chats and any other scheduled or informal communications among team members. This document should provide minutes from each meeting. In the case of chats, this appendix should also contain the chat transcript. I strongly recommend chats.
All members of a team will receive the same grade.
Only the final submission for each project will be graded. The snapshots will allow me to provide teams with "mid-stream" feedback and to gauge progress. However, failure to submit the required components of snapshots will adversely affect the final grade.
Grades will be weighted as follows:
|
Status reports and meeting logs |
5% |
|
Requirements |
10% |
|
Test cases |
5% |
|
Schedules |
10% |
|
System design |
18% |
|
Code construction and feedback about conceptual issues |
25% |
|
Open issue management |
5% |
|
Documentation |
2% |
|
Snapshot submissions (timeliness, completeness) |
20% |
Grades for each of these items will be based on completeness, clarity, thoroughness, proper grammar and spelling.
Although it seems the tech lead's items correspond to a larger portion of the grade than the items for the other team members, it is expected that all team members will make substantial contributions to schedule development, system design revisions, open issue management and other activities to equalize the amount of time each team member spends over the course of the project.