CSC444'07F Assignment 2 (parts 1 and 2)
R1 Code, R2 Release Plan, and R2 Specifications due November 12
R2 Code and Commentary Due December 3
The purpose of this assignment is for you to better
understand release planning.
For this assignment and the next you may
work in teams of up to 3 people.
The end objective of the assignment is for you to create
web-based appointment booking software for registered massage therapists (RMTs).
Your system should be implemented in the ASP (Application Service Provider) model
in that it will run on your own web server and support the needs of many such businesses
without co-mingling their data.
One administrative user in each RMT practice will login and configure their company's information
(hours of operations, therapists, types of therapy available, constraints, and so on).
The RMTs can then create a link on their own websites for appointment bookings.
Customers can follow the link (to your site - parameterized by URL for the particular practice)
to book appointments.
If the RMT books appointments over the phone or in person they will also use the
website to do so.
If you are unfamiliar with relational databases and programming for the web
you may instead implement the software as a program in a language of your choosing
that reads and writes files for persistent storage and that handles interactive commands
using a command line interface.
In this case, the files should only be read and written by the program.
All information that is stored persistently must be entered via the command line interface.
You need not worry about more than one instance of the program running at a time.
The first part of this assignment (Called "Assignment 2.1")
calls for 3 sub-parts:
- Create a base release R1 of the software
without detailed planning.
This is just a skeleton to provide you with a basis for release planning the next release.
Hard-code as much as possible and reduce the feature set to the bare minimum,
but still consistent with being a decent jumping off point.
Hand in a printout of your working source code.
- Then go through a detailed planning exercise with your teammates for release R2 putting
together a release plan formatted the same way as the
Deterministic Release Plan in Appendix A of the book.
Choose your phase dates.
Divide features into A and B groups as you see fit.
Estimate your w's during the coding period in advance,
estimate an assignment of features to coders,
and estimate their feature coding ECDs.
Hand in the printed release plan.
- For the features you choose, write a specification for each feature explaining all the
externally visible aspects for each feature.
Hand in the specification document.
The second part of the assignment (called "Assignment 2.2") will have your team work through the
release plan to your GA date (December 3), tracking your progress to plan and handing in detailed time
records and a quantitative analysis of how your estimates for work factors and feature ECDs
related to your measured actuals. You will hand in:
- Printed source code for your working program.
- Build scripts and source code zip'd or tar'd and
mailed to penny@cs.toronto.edu.
- Detailed time logs for each member of the team.
- A final release plan showing actual work factors, actual feature ECDs, and actual dates.
- An analysis of how your actuals compared to your estimates including lessons learned.
- Part of your mark will be based upon how functional the system is
(web based or not and how many useful features are working within it) inversely weighted by team size.
- Bonus marks if you deploy the software and email me the URL to take it for a spin myself.
The requirements as discussed with a particular RMT owner
(http://www.torontobodyworks.com) are as follows.
Your implementation should generalize these requirements and make it configurable.
Do browse the web site to get a feeling for the practice and the scheduling.
Note that this list is not exhaustive, there may be important requirements for this
type of software that I neglected to mention here.
Use your judgment.
- Four RMTs cooperate in a practice.
- There are 2 therapy rooms available.
- There are various types of therapies available such as
shiatsu, cosmetic acupuncture, sports massage, craniosacral, and so on (see web site).
- Certain types of therapies require one room or the other.
- Certain therapists are qualified to deliver certain types of therapies.
- Depending upon the type of therapy, appointments can vary in length
from a half hour to several hours in fifteen minute increments.
- Certain types of therapies have minimum and maximum time requirements, or choices of set times.
- Certain therapists may not be willing to do very short or very long sessions.
- The various therapists tend to work regular shifts in a week,
but with frequent changes.
- 30 minutes (configurable) is required to prepare the room between sessions.
- In a pinch, the room can be prepared in 15 minutes, though 30 is preferred.
- Clients may specify any available therapist, only a certain therapist, or a preference
for a certain therapist
- Clients may book recurring appointments.
- Clients should never see the names of other clients.
- If a therapist is unexpectedly away for a day (e.g., falls ill), their appointments
will have to be re-booked. The software should assist in this.
- Clients may cancel with 24 hour notice with no penalty, else they can still cancel but must
pay the fee.
- At any time a therapist can get a view of all their appointments for a given day or week.
- At any time a client can see a list of all their scheduled appointments.
- The RMT administrator can get a report of "utilization" (how full the calendar is for a particular
day or week).