This document contains all the information that you will need to use BOOST to help you with your designs.
In addition to "how-to" information about the features of BOOST, this also contains some information about the goals of this test, and some information on the technical limitations of BOOST.
For more information, you can see either the Troubleshooting FAQ, or the Version History
Last Updated: Thursday, April 2.
BOOST Tip:
If I have some tip about the program that I want to be sure you'll see, I'll put it in bold underneath an icon like the one above.
The red ball indicates a section that has been substantially changed recently.
Although every effort has been made to remove bugs from BOOST, it's likely that there is still one or two floating around in there. If you have any problems with BOOST, it is important that you report them. The only way that I can learn about bugs in the program is if one of you tell me about them.
However, before you report a bug, it might be worth your time to check out the the Troubleshooting FAQ -- I'm trying to keep that up to date with know bugs -- it might give you a workaround.
If you encounter a bug that's not listed in the FAQ, please send email to noel@cc.gatech.edu. Please include as much of the following information as you can.
In addition to bug reports, I'm also interested to know what you think of the program -- is it helpful? what would make it more helpful? Please feel free to send any comments or complaints you have about the program to noel@cc.gatech.edu.
You should also be aware that, for research purposes, your usage of BOOST is being automatically logged.
BOOST Tip:
BOOST is beta software. Save early and often. REPORT ALL BUGS.
Using BOOST in the Intel NT lab.
The setup in the Intel NT lab has already been created. It's avaible on the drive labled "S on Jefferson" (which may or may not actually be the S drive on your machine. In the folder "Apps\BOOST" double click on the file "BOOST.bat".
Keeping It Current
The version of BOOST in the Intel NT lab will always be current. However, if you are using BOOST from home, you'll probably want to keep your version up to date. The home page for BOOST Downloads and current news is: http://www.gvu.gatech.edu/edtech/BOOST/home.html. You should check this page before using BOOST -- it will have details about new versions, known bugs, and other useful information.
System Requirements
BOOST was developed under Windows95 and NT, and works best under those OS (since it's had the most testing there. However BOOST also will run under Macs and UNIX, download instructions are below. In general BOOST's requirements are the same as the Java runtime requirements on that system.
For logging to work, there needs to be an active internet connection when you quit BOOST.
Download and Install for Windows95 or WindowsNT
The bundle of BOOST for Windows95 and WindowsNT only is bundled with the Windows version of the Java Runtime Environment (bundling the JRE lets me ship BOOST without knowing anything about your local directory structure -- so please don't delete it).
System Requirements
There is a separate BOOST bundle available for Macintosh, that was build with Apple's Mac Runtime Java Software Development kit.
BOOST requires Macintosh is the MRJ (Macintosh Runtime Java) version 2.0 to be intstalled on your Mac. MRJ is available at http://applejava.apple.com. It requires MacOS 8.0 or higher, plus some RAM and hard drive requirements listed on the applejava site.
Download Instructions
Known Issues
These are known problems relating to the Mac version only!
More details
If you are a Mac person, and are interested in playing with MRJ, here is how I created the Mac executable.
As I said, this is more or less working. However, you probably do want to be a little careful with MRJ -- I have a report of a serious system crash being caused by trying to run BOOST under MRJ -- I don't know what might have been done to cause that.
BOOST should run under any flavor of UNIX that has a Java runtime. There have been some problems with font sizes and whatnot.
The BOOST.zip file should work on Solaris, if you replace the Windows JRE with the Solaris JRE (available at http://java.sun.com) -- it's also likely that the UNIX system you are using already has a java runtime. The class name that you want to run is in boost.BOOST, and it's in the BOOST.jar file. Again, let me know if you are having problems. I'm unsure about Java availibity on Linux, so anybody who wants to try this should let me know how it goes.
Here are steps that should work for using BOOST in Linux (or Solaris)
For more information about configuring BOOST in Linux, email me. Also let me know how that works.
When you first start up BOOST, you will see a screen asking for your name and initials. It looks something like this...

Please do use your real name and initials. The name will be used in any HTML pages that you generate, and the initals will be inserted as the comment tag on any Smalltalk code generated. In addition, using your real name will make evaluating BOOST easier.
After you enter both pieces of information, pressing enter or clicking OK will make the window go away.
(By the way, the spherical cow logo is by Matthew A. Cohen)
BOOST supports, but does not enforce, a design process with the following activities. You are not only free to move from one step to another at any time you want, you are encouraged to do so. The activities in the BOOST process are (the purpose of each activities will be explained further below).
BOOST Tip:
Use all the parts of the design process in BOOST -- it will help you create designs that are easier to implement.
After you enter your name and initials, you will see the main BOOST design window. (it'll be blank when you first log in):

Figure 1: The primary BOOST Design Window
What will most likely be your first step in designing with BOOST is to brainstorm a list of classes that might
potentially be part of the design (called candidate classes). Those classes are either rejected, or accepted
to become part of the actual design. The purpose of this step is to encourage you to explore a number of design
possibilities fairly quickly.
The current list of Candidate Classes are displayed in alphabetical order in the list in the upper left quarter. When you start, of course, you have no candidate classes. Duplicate class names are not permitted.
BOOST Tip:
It's okay to create candidates only to reject them -- it's best to try to brainstorm as wide a list of possibilities as you can.
For more information on candidate classes see the OOA/OOD Design Tour.
A class in BOOST is either in the Candidate List, the Reject List, or it is part of the Design. The following descriptions explain how to move classes from between the those three states.
To Add New Candidate Classes: Click on the button labeled "New...". A dialog window will be displayed, similar to the one in the bottom of Figure 1. Type in the class name and either click on the "Add Class" button or press enter. The new class will appear in the Candidate List. The window will stay open until you explicitly close it, allowing multiple candiadates to be added quickly.
To Add A Candidate Class To The Design: There are three ways to do this: either double-click on the class name in the Candidate List, or select the name in the Candidate List and click on "Create", or select the name in the Candidate List and select "Add To Design" from the OOA menu.
To Reject a Candidate Class: Select the class name in the Candidate List. Either click on "Reject", or select "Reject Candidate" from the OOA menu.
To Reconsider a Rejected Class: Reconsidering the rejected class moves it back to the Candidate List. Select the class name in the Rejected List, and press "Reconsider" or select "Reconsider Reject" from the OOA menu.
To Remove a Class from the Design: Select the class in the Design Pane by single clicking on it (it should display in red). Select "Remove From Design" from the OOA menu.
To Rename a Class: Select the class. Then Select "Rename Selected Class..." from the Edit Menu. A dialog will come up that will allow you to change the name of the selected class. (This will also work in OOD mode.)
BOOST Tip:
All of the above actions (as well as all the below actions) can be undone -- BOOST supports the undoing of your last 15 actions.
BOOST allows you to create and edit CRC (Class, Responsibility, Collaborator) cards for each class in your system. A CRC card holds a list of pairs of Responsibilities and Collaborators (called an RC pair). An RC pair is a responsibility of the given class, along with another class that it might have to work with to perform the responsibility.
The purpose of CRC cards is to encourage thinking about what the classes in your system do, rather than how they do it. Thinking about your design in this way can lead to simpler, clearer designs and programs.
To See a Class' CRC Card: Select the class in the Design Pane. Either double-click on it, or select "Open CRC For Class..." from the OOA menu.
The CRC window looks like this:

From the CRC card you can set parent/child links and add and remove Responsibility/Collaborator pairs. If you have more RC pairs than will fit in the window, resizing the window will enlarge the space.
BOOST Tip:
There are more tips on writing CRC cards at the OOA
& OOD design tour.
To change the class' parent class: Choose the parent class from the pulldown menu labeled "Parent". No link will be drawn in the Design Pane (yet), but the other class' information is immediately updated (you can see that if both CRC windows are open).
To add or remove child classes: Click on the button labeled "Add Child..." A dialog box will appear allowing you to select from a list of all potential children in the design. Clicking the button labled "Add>>" adds the selected class on the left to the list of children. Clicking the "<<Remove" button removes the selected class on the right from the list of children.
To add a Responsibility/Collaborator Pair: Type the responsibility in the textbox beneath the RC list. If there is a collaborator, select it from the pulldown menu. Select "Add RC Pair" to add the responsibility to the list (the default collaborator is "None".)
To remove a Responsibility/Collaborator: Select the responsibility in the list. Click on "Remove RC Pair".
So much for the OO Analysis phase. In the OO Design phase, you take the what you have already created and make decisions that move towards the programming phase. Specifically, you create the attributes, services and links that will guide you in your implementation.
The purpose of this step, then, is to build the connections between the requirements you outlined in the OOA steps, and the detail that you need for implementation.
To switch between OOA and OOD: Press the toggle switch at the bottom of the Design Window. The phase that
you are currently in will appear in red.
When you are in OOD Phase, the window will look like this:

From this screen you can:
Here's how to do it:
To Add Attributes to selected class: Select the class by single clicking on it. It should display in red. Press the "Add Attributes" button. You can now enter attributes the same way that you entered candate classes.
To Add Services to selected class: Select the class by single clicking on it. It should display in red. Press the "Add Services" button. You can now enter services the same way that you entered candate classes.
To Edit or Remove Attributes and Services OR
To Edit or Remove Parent/Child links OR
To Edit or Remove Whole/Part links OR
To Edit or Remove Sender/Receiver links:
All four of the above work similarly. You can either get to them by double clicking on a class, or by single clicking on the class, and selecting the relevant menu item from the "OOD" menu.
You will see a tabbed dialog box that allows you to access any of these four items.
In most cases you add a link by selecting the class to be linked to from the relevant pull-down menu, and pressing "add".
You remove a link by selecting the class from the relevant list of existing links, and selecting "remove".
This picture of the Whole/Part section of the window should give you the idea. To make this class part of another, select it from the pulldown labeled "Make Part Of" and click on "Add Whole". If the class already was part of another, it would be displayed in the list box labeled "This class is part of:". Selecting from that list and clicking on "Remove Whole" will remove that link.
All three links, as well as attributes and services can be similarly edited from this window.

To Toggle Between Abstract and Concrete Classes: The checkbox that is always in the upper right of the window allows you to toggle the class between abstract and concrete.
Link Drawing: All three kinds of links are drawn in a specific way in BOOST.
- Parent child links are drawn vertically from the bottom of the parent class, then turn horizontally, then vertically to the top of the child class. The half circle is just below the parent class, and points toward it.
- Part/Whole links are drawn horizontally from the side of the whole class, then turn vertically, then horizontally to the side of the part class. The links are 2/3 of the way up the side of the class, and the triangle is near the whole class and points toward it.
- Send/Receive links are drawn similarly to part/whole links, only 1/3 of the way up the side, and with no other markings.
If the classes in the link are to close together or are in the wrong orientation, than the semicircle or triangle may appear to float, rather than being on the line -- moving the classes to different locations will fix this.
BOOST Tip:
BOOST now snaps classes to an invisible 8x8 grid -- you may notice classes moving slightly when you are done dragging them. This was done to make it easier to line up classes.
BOOST provides a simple design check feature that will catch a number of simple problems with your design.
To access it, click on the big check mark button. A window will come up that will list some potential problems with your design. Even if the system does not find any potential problems, a checklist will still come up with things that you should look for in your design. Among the things that the check feature will capture are:
To go through all the checks: Click on the arrow keys to move between the various checks. You can resize the window to allow you to read all the information without scrolling.
BOOST Tip:
Don't automatically assume that the check feature is always right. Don't automatically assume that the check feature is always wrong. Use the check as an opportunity to make sure that your design has the features you want, and will be easily implemented in an object oriented program.
From the file menu, you can save and load your work. SAVE, SAVE AS..., OPEN and NEW commands will work pretty much as you expect. "Save" will save the file to the server under its current name, "Save As..." will prompt you for a name using the standard file dialog, and save under that. "Open" will allow you to choose from your existing files, again using the standard file dialog, and "New" will give you a blank design window (prompting you to save current work). Files will automatically have the suffix ".ver" appended.
When saving from the Intel NT lab, remember to put your files in your own directory -- the program will point at the BOOST directory by default, but you won't be able to write to that directory.
BOOST allows you to transfer your design to HTML, allowing you to either print it out, or save it for later editing offline (for instance, to add more information before handing in the assignment). To do this, chose "Generate HTML..." from the file menu. A file dialog will ask you where you want to save the HTML. Two files will be saved from what you enter -- a file with the extension ".html" that contains the HTML text, and a file with the extension ".gif" that saves a GIF image of your design diagram. The files might take a little bit to be generated.
The HTML file will NOT automatically pop up -- you'll have to actually open it in whatever browser you want (sorry about that, I'm hoping to put that feature back soon).
You most likely will need to turn in other information besides that in the HTML file -- either by actually editing the file, or by doing other work separately and handing them in together.
BOOST will generate a minimal amount of Smalltalk code from your design, suitable for FileIn to Squeak. To do this, choose "Generate Smalltalk..." from the File menu. You will be prompted for a location to save. The file will be given the extension ".st". These files are only readible by Squeak version 1.3 and higher -- write to me if you are using an earlier version.
The following information will be generated:
Some other things you should know about Smalltalk generation
As you quit BOOST, it will attempt to send a log file to a remote server via FTP. If for some reason it's unable
to do that, it will try to save the log file to the local hard drive, in the root of the BOOST directory. The file
format is xxx.mmddyy.hhmmss.log, where xxx are the initials entered at the beginning, and the rest is the date
and time of the session. If you wind up with a log file in your hard drive, I would greatly appreciate it if you
could email the file to noel@cc.gatech.edu