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

Team Asterisk - M6 Case Study

The Assignment

Basically we had to export our GenealogyMap to a file format used for genealogy trees called GEDCOM. We then had to use a GEDCOM reading tool to make sure that what was exported was in the correct format. The next step was to import that file and recreate the tree we exported. The milestone required us to:

Our Approach

This project easily split into two parts. The first being the exporting to a file and the second was importing that file. We essentially decided early on what the basic export file would look like. We then split the implementation into two parts and came together at the end.

Because of our earlier design efforts the information for exporting was really easy to find. The hard part was how to put the structure together. We basically created an algorithm to build a data structure with all of the information that would be exported and then printed that to a file.

The import was a little harder than expected because of a few minor issues. We tried to basically copy the parser from M5 which worked great for M5 but just wasn't a good fit for this project. We then went back to the drawing board and quickly came up with a good solution.

The Design

What Went Right

In general this was an algorithm based milestone. Once as we got a firm grasp of how we wanted the algorithm to work the coding was long but painless. Our integration went pretty well but as usual we did hit a few bumps.

What Went Wrong

While integrating we realized that there were some problems because of gender. The milestones had allowed people to be added without having a gender. This was not a problem until this milestone but with GEDCOM when a family is defined you must add the parents as mother and father. For the most part this was fairly easy to get around.

One thing we did take away from this milestone was how easy it gets to write very long methods in Squeak that accomplish the full requirement at hand and not try to break the method into pieces. (Kind of like I just did with that sentence). Since all methods in Squeak are public, at first it might not seem as intuitive to write helper functions. While working on the export part of the milestone it became very obvious that one method would become very unmanageable very quickly. At that point smaller methods that really did just one thing were added and managing the code became much easier. To really make the export portion truly manageable more work would need to go into creating simpler functions. At one point while integrating we needed to change something in a part of export that was trying to do to much and gave up because of the errors that we were adding. If we had implemented this with more, smaller methods the integration would have gone much smoother.


This milestone went pretty smoothly mostly because of the design that went into earlier milestones and planning out the algorithms beforehand.

Screen Shot

Final Files

Link to this Page