Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
trying to edit 4 blind mice
- Bryan Smith
- Narasimha Rao Bayyana
- Vikram Ramchand
- George Chang
The Design (you have to zoom in to read it).
The CRC Cards.
General Advice to Future Squeakers
Guzdial's white book is outdated. Some of the examples won't even compile with a 3.4 image. So I wouldn't buy it. But Squeak does have some excellent utilities that provide information. The system browser's 'find class' option is a fast way to find classes that you've never seen before. And the 'senders of' and 'implementors of' buttons will help you find examples in the system of how to do things that aren't mentioned in class. I also found the hierarchy browser to be of much use. It shows you an inheritance view of any class, so that you can find all of the messages that a class understands due to inheritance. you can find it in the system browser. Don't underestimate the power of the hierarchy browser! It will help, I promise!
Another utility that contributed to our project was the debugger.
It is well designed and robust. when you get an error, and you will, click on one of the lines that are named after a class that you wrote, and you can track all of the variables and their values through the stack trace. But best of all, you can edit your code right there on the fly, recompile, and rerun the message call from the entry point into your message! Learn to use it!!! Pay special attention to the row of buttons that separate the 2 areas of the screen. These let you step through the message and then after each step, you can use the panes at the bottom to inspect the values of the variables that are in scope!!!
Right Click Options
I would also recomend that you get comfortable with the 'inspect it' and 'explore it' options in your right click menu. If you have a problem, but it isn't causing an exception, you can use inspect/explore to see what is in a collection/complex object in a nice tree view. It really helped us track down assignment errors.
But the best resource of all for Squeakers has got to be Squeakmap. It will save you MUCH time if you go ahead and read all of the entries at the very beginning of class. We used SmaCC, PieChartMorph, Plot-Morph, and Commanche. Basically one package was found useful for every Milestone. But we could've cut our workload in half if we had explored Squeakmap more thoroughly. Specifiaclly you need to look at: SIXX, YAXO, and SOAP.
We chose not to learn how to create change sets, but instead did all of our turnins using a .zip file of .st files. This actually worked out ok for us, but i wouldn't recommend it to others! The only reason we got away with this was due to the fact that we designed our system such that all the coders were working in isolation except for Bryan, who did integration. So he knew what oreder to file in the change sets. If we had done this differently it would have blown up in our face! So learn from our near mistake and learn to use Change sets for your turnin!!! see: How to create a changeset : from Bumblebee Tuna for more info. They also have some other good advice that I won't repeat here.
Design Principles and Systematic Procedures
If you've had 2335, you may recall the advice about walking through your design with CRC cards and scenarios. This was very helpful to us at the beginning of the project to insure that our design was complete. And I suggest you do the same. I know it seems kindergarten-ish. But it really helps! I did about much of the formalization of the design one day while waiting for a group meeting to start. And when we began, we used the scenarios and CRC to walk through the working system as a way to familiarize everyone else with what I had done, and to correct errors/design flaws. This saved us alot of time and helped us realize the value of Software Engineering! And this will help you too!
Many groups had concurrency issues. And they all have recomendations on how to solve this problem in their cases page. There are many solutions, but one element is common between all of them: plan on how to deal with the inevitable integration/concurrency issues before they happen!!!!!
Our solution was to assign each class to one person and disallow others form editing it, period. And we also used SUnit tests to regression test old code whenever new code was integrated. It really helped. At one point I broke my code and a teammates with a change that i forgot to tell my teamates about. SUnit helped us find the offending code in SECONDS FLAT with our tests. I can't overemphasize
the necessity of planning well for integration and concurrency control. Look into DVS or roll your own concurrency/integration mechanism. Either way, DO IT NOW!!!! Don't wait until the night before M4 is due to find out how important this is!!!!!!
Milestone Descriptions and Other Pitfalls to Avoid
George's M6: Handle basic queries on system
Vikram's M7: Design a Web Interface for the system
HOW TO USE DOMXML
Links to this Page