Back to Homepage

Credit: public domain

Homework 3: Requirements

Andrew Begel

By now you should have a detailed specification of your design, detailing every visual and interactive detail of your solution to the problem you selected. Your next task is to translate this into a set of requirements, each expressed in natural language. Each of your projects has a different number of requirements, so I can't say how long your list needs to be. If I had to guess, I'd say you'll have anywhere from dozens to hundreds. Sound daunting? Here's your motivation: you're basically creating a to-do list for your eventual implementation work. The better your to-do list, the easier it will be to get started, plan your effort, and ensure you can get the work done on time. All of those things are necessary for great engineering (and for a great grade in this class).

Create a requirements document in your repository's wiki. To make the requirements easier to navigate and understand, organize your requirements into sections, grouping sets of related requirements. Each section should be linked to a part of your design specification, when appropriate, so it's easier to understand what the requirements concerned. Each requirement should be precise, testable, and non-conflicting. The set of requirements overall should be complete.

Grading criteria

For homework credit, submit a link to your requirements document in your public repository in Canvas.

To incentivize you to be thorough in your requirements, your requirements will be graded according to the following scale:

Note that in this grading scale, it's really easy to get a zero if you don't think really carefully about every detail. Scour your design specification for every little detail, generating as many requirements as you can, and then generate even more. Remember that the more detailed you can get, the better your engineering to do list for later! Save yourself the future effort of generating these lists by doing a thorough job now, which will help you plan.

Fortunately, if I do find something missing, even though you'll lose points, you'll get an extensive list of feedback from me about ways to improve your requirements.