This milestone was just to design the entire project. It required thought about all upcoming milestones and how they were going to be implemented in our project.
One of the major parts was the UML for how all of the classes were to interact. A diagram of our class interaction is shown below.
Looks pretty complicated, doesn't it. We have quite a few classes, but each was designed to work together in a way that seems very intuitive. We used Microsoft Visio to draw this diagram. Visio has all the arrows and boxes already made; you can find them under New/Software/UML Model Diagram. Visio is available on all the States Cluster computers.
For each milestone, we also had to create a
set of scenarios to help guide our coding. We also had a set of CRC cards
to go with each milestone. CRC cards helped visualize how each class would
interact, and this proved to be very useful in the UML design stage.
Here is a sample CRC Card.
Scenarios were basically a list of things a user might want to do with the program. A scenario would list the user's intentions and what the output would be if the user performed that action. It also includes any undesired results and how to remedy this result.
In order to keep us on track, we created a
timeline with a list of responsibilities for each team member. Each date
on the timeline specified what partial contribution was due.
The timeline for out project can be found here --> TimeLine
Along with the scenarios, CRC cards, and UML
diagram, we also listed test cases for each milestone. This example of a
test case is from Milestone 4:
TEST PURPOSE: test the creation of the user interface
TEST CASE: workspace code Genealogy Map new open
EXPECTED RESULT: a new GUI is displayed to the user
ACTION: correct behavior
We came up with roughly 10 test cases for each milestone, although more may be needed depending on amount of functionality that will be tested.
Again, starting early was important. It allowed us to not only cover the basics of what needed to be done, but also be as thorough as possible. A thorough design in terms of UML, CRC cards, and a test plan was important to doing well on this milestone.
Our unfamiliarity with Squeak again came back to haunt us as some of the upcoming milestones required functions that we felt would take a good amount of time to research how they were going to work, and how they were going to be implemented. This caused us to second-guess ourselves in how much information and detail should be included in the design.