Final Project Deliverable

There are 12 marks remaining (or 12% of your final grade) which will be allocated to your final project deliverable. The breakdown is as follows:

Report (1 mark): This short document will consist of a table that lists all of the tasks from your iteration plan, the original estimated cost, and the actual cost. You should be filling in the table as you go along.

Also include a paragraph on any major project decisions (e.g., you added some features, cut some features, changed the test plan, etc.), and a paragraph on what you would change if you had to do the project all over again (basically, what you learned).

Implementation Quality (7 marks): These marks relate to how well you executed your development plans:

  • Testing (2 marks): I will perform basic customer scenarios against your hosted site, as well as try and "break" you; a measure of robustness.
  • Code Quality (3 marks): Looking at other aspects of your code, such as comments/documentation, maintainability, and structure.
  • Test Suite (2 marks): How well you implemented your tests and your choice of test input (did you choose good values?).

Customer Demo (4 marks): Your 10-15 minute demo will be presented in ICT 616 on April 11 during lab time. Take this time to be creative and "sell" your product.

  • Presentation (2 marks): How well you sold your project.
  • Polish (2 marks): Polish ties into implementation quality. Your presentation will include a live demo--how smooth was it? Would it be appealing to the customer?

Please post any questions you may have. Good luck!

Course Project - Iteration, Design, and Test Plans

For this project milestone, you will need to deliver a document that contains your team's iteration, design, and test plans. Here are my expectations:

Iteration Plan

  • Select the set of features from your requirements document that you will deliver this iteration. This is usually a difficult job--you need to choose features that will satisfy the customer, maximize your profit, but are conservative enough so that you can deliver on time with acceptable quality.
  • Break down each feature into a set of tasks (3-4 per feature is good) and provide a cost estimation for each. Assign the tasks to team members.
  • You may want to assign the tasks to your own "internal" milestones to help keep your project on track.

Design Plan

  • Create a UML diagram that shows how your major subsytems relate (for example, authentication, user profiles, etc.). This is essentially your architecture.
  • Create UML diagrams for each subsystem to depict how they be designed. These can be object diagrams, although adding methods and properties may be useful for when you start coding.

Test Plan

You test plan will cover two aspects--feature testing and system (integration) testing.

  • For feature testing, you are basically making a contract with each other on how to keep quality high. Describe your testing strategy for the features that you develop. For example, how will you unit test? What principles will you use (boundary, equivalence, fuzzing, etc.)? Will you use code coverage? How will you test performance? What testing tools will you use? And so forth.
  • For system testing, how will you know that the integrated product is of high-quality? What scenarios must work? What are the performance metrics that must be met? What is the acceptable amount of open bugs? etc.

Please submit your document in PDF via email by Friday.

Course Project - Requirements Document

Here are some things to consider for your requirements document:

  • The document is your first attempt at collaboration, so be sure to make everything cohesive. That is, even though 4-5 different people will be contributing, the document should read as if it was authored by 1 person.
  • Keep the scope of the requirements to the "discussion space" of the system and all of the features that comprise the fully functional version. There will be many (around 40-50 is a good approximation).
  • Assign each requirement a priority--you will use this information in your next deliverable.
  • Each team member should create a use-case description of a high-priority feature. But remember, keep the document cohesive by using the same entitiy names where applicable.
  • There is no required number of mock-ups--create enough to convey your vision and make sure they're polished.

This deliverable will be 4 out of the 20 marks for the project (and it is a group mark). Submit it in PDF via email by Friday.

Course Project Deliverables

Tomorrow in class (March 1st) the project will be introduced. You will work in teams of about 4 students and are responsible for forming your own teams. The following are the four key deliverables for this project:

  1. Requirements document, including key use cases, and mockups of key parts of the user interface. Due March 9th by 5pm.
  2. Iteration plan for the first (and only) iteration, which breaks the project down in to smaller tasks, estimates how long those tasks will take and assigns each task to one team member. It is important to note that this should be a realistic plan and should not attempt to implement everying in the requirements document. Due March 16th by 5pm.
  3. System design and test plan. Document using proses and supporting diagrams the basic structure of your system. Also document how you will test it. Also, due March 16 by 5pm.
  4. Iteration one code and demo. (A small number of features that work well and are well tested will get you a better grade than a larger number of features that do not work well and are not well tested.) Due Wednesday April 11 during tutorial time.

Good luck!

Lab Exercise #6

Blackbox Testing

I have created a service running on http://csc.cpsc.ucalgary.ca:11998 with the following specification:

Description: when path '/equal' is sent, will determine the equality of strings 'a' and 'b', defined in the query string. For example:

'/equal?a=somestring&b=somestring'

The following response codes are returned:

200 - The strings are equal

201 - The strings are not equal

404 - Unknown path

666 - The server crashed (simulated)

You will need to write an automated test suite for this service. There are at least 4 bugs in the code, and your tests should detect them all.

Please hand in a hardcopy of your test suite + a brief write-up on the bugs you detected and which tests detected them. If you actually crash the server during your testing, please let me know so I can restart it.

Lab Exercise #4

Design

For this exercise, you will use node to create a server that manages images in a directory. The server can perform 3 tasks:

1)  List the images available for download. An HTTP GET request with path of '/Action/list' will trigger this response.

2) Download an image. An HTTP GET request with path of '/Files/image.jpg' will send the file 'image.jpg' to the client.

3) Upload an image. An HTTP POST request with path of '/Files/image.jpg' will contain binary data in its body that will be saved as 'image.jpg' on the server.

The following capture demonstrates how the server should work and the common errors it should handle:

Capture

Design is the important aspect of this assignment. Use the principles you've learned in class to make a clean, maintainable design. For example, a request for the server to manage memos (say, for an emergency department) in another directory should be an easy change.

Marking will be done in two parts: you will demonstrate your server working in Wednesday's lab (2 marks) and hand in a hard-copy of your code for its design to be evaluated (2 marks) for a maximum of 4 marks.

Check out the comments for some hints. Also, please post your questions here.