






Hotspots: Admin Pages | Turn-in Site |
Current Links: Case Final Project Summer 2007
Fall 2003 M2: Create a simple Guide
(Group, Due 09/16)
Now that you've built your help repository, it's time to start building a Guide to take advantage of it. The very first step is to form your team. Then your team will write an initial set of instructions, create a simple GUI for your help repository, and start building a Guide to lead the user through the instructions for a particular task.
Questions on Fall 2003 Milestone 2
Goals:
- To form your team.
- To get more experience building classes.
- To try your hand at building simple GUI elements.
- To use SUnit for more complex tests.
Team Forming:
For this milestone you will need to form a group of 3-4 students from within the class. You might find it helpful to read about Team Issues, particularly the Tips for working in groups. This group will be responsible together for milestones 2 through 7. Your first task for M2 is to form your group, and create a team entry on the Swiki in the Fall 2003 Team Declaration Page. YOU CANNOT DO THIS PROJECT ALONE (or in a 2 person group)!! You may reuse any code that you wrote for M1 if you feel it is useful. The only restriction is that the M1 code reused must have been written by one of the members of your group.
Requirements:
You will need to write some instructions to fill your repository. We've assembled a list, based on the submissions from M1, of potential "how-to" tasks. You'll need to choose two tasks from the List of Potential How-To Tasks and create detailed, step-by-step instructions for how to complete each task.
The next step is to enter those instructions into your help repository. To help you do this, you'll create a simple graphical user interface (GUI) for your repository. While you can create this GUI using whatever mechanism you want (MVC, Morphic, etc.), we strongly recommend that you use Morphic. The specific requirements for the GUI are:
- Users should be able to see browse through all of the available instructions by their task names. When users select a particular task name, they should be able to see all of the steps associated with the task instructions.
- Users should be able to enter new instructions in the repository by typing in the individual steps and giving the task instructions a name.
- Users should be able to load/save task instructions to a file.
- Users should be able to display the GUI by executing HelpRepository browse.
Finally you'll need to start building your Guide. The Guide will provide users with an interface to the help repository, and will eventually be able to demonstrate how to complete a particular task. For right now you're just going to focus on implementing enough functionality that your guide will allow users to find instructions for a particular task and will then lead the users through it. You'll create a class Guide that understands (at a minimum) the following messages:
- allHelpTasks
- Returns names and descriptions of all available tasks
- helpTasksMatching: aCollectionOfStrings
- The collection of strings specifies a set of keywords the user is interested in. Your code should returns the names, descriptions, and match ratio of any tasks matching some subset of the provided keywords. The match ratio is the ratio of keywords matched (e.g. '4 of 5 keywords') by a particular help task.
- Hint: you may find it helpful to extend your TaskInstructions class to store keywords associated with those instructions and extend your HelpRepository class to search the repository for instructions matching the keywords.
- provideHelpOn: aString
- Tells the Guide to start providing help on the task whose task name matches the specified string. The Guide should return the first step of the associated instructions; for now you can just print it to the Transcript.
- nextStep
- Returns the next step of the instructions. Make sure to handle the cases where the user has not yet chosen a particular set of instructions and where the user has already worked through all the steps in the instructions.
- previousStep
- Returns the previous step of the instructions. Make sure to handle the cases where the user has not yet chosen a particular set of instructions and where the user is already at the first step in the instructions.
Turn-in
Before class time, turn-in your code and the filed-out instructions for the two tasks you chose using the Fall 2003 Turnin Information with the code 'M2'. It will greatly help your TA if you also include a README with instructions on how to work your UI, presuming you haven't shown them in person (which would be even better).
In class, please turn-in:
- CRC Card analysis of objects: CRC cards for each class added for M2. It's REQUIRED to hand in xeroxed or generated-tables that represent your CRC cards rather than the actual 3x5 cards. You must also include written text of at least one scenario that you used in your analysis.
- UML class diagram of classes
Include your TA's name, as well as the names of the team members, on materials you turn-in in class.
Grading:
- 20% Good CRC card analysis: Reasonable names, understandable and clearly defined responsibilities, good exploration of other class names, believable scenario.
- 10% Good UML class diagram: Correct usage of notation (5%), matches CRC analysis (5%)
- 10% A generally good design.
- 10% Well-documented and good style source code
- 50% Working system:
- 10% Detailed instructions on how to complete the two tasks you chose.
- 10% Fully implemented Guide.
- 20% Help repository GUI
- 10% for corresponding SUnit tests.
Links to this Page