






Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
#NameOfTeam
Members
Adam Chamely
Kyle Mahan
Justin Parker
Thomas Parry
Description
The Goal of this project was to create a functional financial manager.
This would support multiple users, that could create multiple portfolios that contained checking accounts, bonds, mutual funds, stocks, etc.. Anything that had a variable price was updateable via a web update function and also was a way to generate reports based on different events that showed performance over time.
MileStones
Here are some of the Milestones and some of our info about them;
M4: User Interface Design and Implementation
M5: Monitor/Track stock activity from Web
M6: Handle basic queries on system
M7: Web-Enable the application
Difficulties
The main difficulty would have to have been m4. This was the bulk backend of the entire system. While overall this wasn't that big of a problem, compared to the other milestones we felt that this could have been broken up into two milestones. The quantity of information that was needed to process and then manipulate was overwelming at first glance. UML diagrams and good team planning definetly help when trying to organize the model of who needs to do what and how they should be doing it.
Utilities
We found that during the project we encountered many helpful utilities for assisting in the development of the project.
(As is normal with SmallTalk, almost everything that you may need to create has already been done by someone else and it is simply a matter of finding the project to make use of it)
SIXX: Sixx was a magical tool that allowed us to serialize an entire object tree. The beauty of this is that it serialized out in xml ( a requirement for the project) and only took 4 lines of code to do either the save out or file in.
YAXO: The Backend behind SIXX for when the serialized object list was recreated. This gave us the ability to regenerate the object list exactly as it was before it is saved out.
SMACC:When dealing with account queries this was quite helpful. It gave us a very verstaile way of parsing user request and matching them to predefined query syntax. It basically generates a scanner and parser using a grammar that you give it. It's worth the time it takes to get working.
PlotMorph and PieMorph: These were easily used to help in the creation of reports based on account information. Very helpful instead of trying to write our own. For some reason the PlotMorph was set to XORPaint, so all the colors looked screwed up until we found it.
The Good
Here are some things that helped us through this class, and some things we wish we would have known sooner.
It's really easy to write this class off with "Squeak is a useless language that no one uses; I don't need to learn this stuff." Of course like every class here, it's not a Squeak class–it's a class in OO, and Squeak/Smalltalk is the pure maple syrup of Object Oriented Languages. 1 is an object that you can send messages to–take that Java.
The lack of documentation is definitely the worst thing about Squeak, but it goes a long way in making up for it. Here are some things you can do:- Method names are generally named intuitively. Use the message finder to find something that sounds right. Open its context menu and you can either view its senders–other methods that invoke it, or its implementers–classes which use this method.
- Use the hierarchy browser. It's a button on the middle row of the System Browser, and it's great for finding the message you want. Especially with the never-ending Collections subclasses
- Right click on a class name in the browser, go down to more... sample instances and inspect instances are both very cool functions. The first will create a basic instance of this object and bring up an inspector or a Morph (if it's a Morphic object). The second will bring up inspectors for all the instances of this object which are currently running on the VM. This is soo useful when trying to debug code
- Another cool thing to do with Morphic objects is bring up their halo–all the little buttons around them. The red one will bring up the menu for this object. You can go down to debug, and then either inspect or explore morph. Both of these will let you see and change the values of variables while the program is running and see the effects without restarting
CVS or DVS or some other form of version control is imperative. This project will be nearly insurrmountable without it. If you divide your categories up well, you can individually fileout .st files and commit them to CVS. Everyone's work stays fairly separate and updated.
Figure out how to use ChangeSets. Your turnins will get massive if you try to file out everything and zip it up, especially when you start getting stuff off SqueakMap. We ended up having to demo nearly every milestone because our application was too difficult to install.
You can catch errors by putting square brackets around a block and saying ifError: at then end. This was very useful because SmaCC would popup a self error on every invalid search query without it.
We searched all semester for some way to put Squeak in its own garbage can. If anyone figures this out, let me know.
The Bad
Here are some things we had to learn from experience
Don't comment out Squeak's event handler. Actually, do, it's kind of cool, but save your image first!
Don't start Monday night before the project is due. Even if the coding doesn't take that long (which is rare), getting all the paperwork together that you have to turn in to your 9:30 am class can take a lot longer than you'd expect. Although coding all night monday night is perhaps better than doing any coding during spring break...
Do not choose a lame team name. We thought it was trivial, but when your TA asks you what your team name is, and you have to explain "uh, it's pound sign, Name Of Team..." "What the heck kind of name is that?" "it was supposed to be a joke... you know how when you create a class, it gives you the #NameOfSubclass template... yeah..." you feel like a loser.
The Ugly
Here are some unfortunate truths about Squeak.
Don't rely on that little question mark button between instance and class in the System Browser. The majority of classes still have the comment template in there. This is not a good reason to say, "They don't do good documentation, why should I?"
As far as we could tell, there's no good way to make a plain old TextField. The best thing you can do is use a PluggableTextMorph, set its extent, tell it to hideScrollBars indefinitely, and tell it acceptOnCR:true so you don't have to press alt-s to save changes. We also wrote a little method that goes through all the submorphs of a dialog box and accepts all the text fields when you click OK.
Do not install Zurgle. It's right next to YAXO in SqueakMap and really easy to accidentally click on. Basically it ruins everything. You think Squeak is ugly, try WindowsXP themed Squeak.
Overall
We found that this project was more enjoyable than early expectations led us to believe. By the end of m1 and m2 (individual assignments) the general feel was that this was going to be difficult. M3 was a general recap of m1 and m2 but in the group, and m4 was the proverbial hill. But once m4 wsa finished everything else just started to flow. Also, with each milestone you start to understand the underlying quirks of squeak and while not all together 'evil' it does posses a strong ability for verstaility and uniqueness.
And Now...
To install Squeaken, go ahead an upgrade to Squeak3.4 (I'd suggest doing this from the beginning–a couple of the tools you might want to use won't work in 3.2.1, and your TA will probably grade it from 3.4 or at least ours did). Open up the file browser, click on NameOfTeam-Squeaken.cs and click filein. Then you'll have to get Commanche and SIXX from SqueakMap.
Download:
NameOfTeam-Squeaken.zip
Links to this Page
- Cases last edited on 30 July 2011 at 2:33 am by r59h132.res.gatech.edu
- CoWeb Assignment 1. last edited on 19 May 2006 at 2:44 pm by adsl-211-241-171.asm.bellsouth.net