View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Milestone Two

Case Study for Milestone #2
by Team Schadenfreude


For Milestone #2, our goal is to develop our Milestone #1 to handle inconsistent database, missing important information, and mirrored relationships. To accomplish this, we have to add two more functionalities, 'check' which will check for vital information, connect mirror and transitive information, and identity contradictions and conflicts, and 'search' which will search based on two queries: query based on any relationship or info from M1 and query based on global information. For more infomation Fall2002 M2 - Handle, correct, and support a correct genealogy


Our design processes begin with gathering as many ideas as possible from among team members. Then we started to build scenarios and UML class diagrams.

Preliminary design: collect all a person's family members, loop through each persons in the collection, print out the missing informations, mirror and identify conflict as we loop through the collection.

After meetings and discussions, we overcame some unresolved problems regarding the check method, so we went ahead to ask the TA for clarification. Hint: TA is there to help us...

Preliminary design: create two objects, PersonQuery (an abstract class) and GlobalQuery(an abstract class). The implementation of PersonQuery consists of objects for each person's instances, such as QueryGivenName,QuerySurName, QueryIsMale, QueryIsFemale, QueryBornIn, QueryDied, etc. The GlobalQuery consists of QueryLivedOn, QueryLivedIn, and QueryGeneralSearch.

There are couple reasons why we design the query this way first because all of Query classes have the same behavior, match. 'match' is an abstract method which is overwritten by each of the Query subclass ex: QueryGivenName has the match message to match the givenName of a person. Secondly, it will be easier in the future if we need to add another Query object (no modification needed for previous implementation).

Example scenarios for search:


We made our UML class diagram using Magic Draw. This is a very nice tool but it is not free and school computers do not have it. There several other programs that student can get easy access to such as rational rose or visio. From experience, all of them give very sufficient results.

Since the M1, the diagram has change quite a lot. We add more classes including new Query class, and more functions to Person class as requirements (See diagram for details).
External Image

Implementation and Conclusion

Implementation (coding) was pretty straight forward for this milestone. But this project was the first group project we have. Although overall it went good, there are suggestions we want to point out for future students. START EARLY on project. It might look easy (or actully easy), but last minute integration surely does not work well. THINK AHEAD, good design is worth the time spent. If your code depends on other person's code, try to help to get that part done as early as possible.

Since we do not have our actual source code for this M2, refer to M4 and check it out.

Link to this Page