6.170 Laboratory in Software Engineering
Spring 2002
Problem Set 6: Foliotracker, Part 2
PS 6 due: Tuesday, April 2, 2002 at 4:00pm

Handout P6


Introduction

In the previous problem set, you have designed and implemented the back-end for Foliotracker, an application that enables a user to track the contents and value of multiple stock portfolios. In this problem set you will develop a front-end graphical user interface (GUI) to complete Foliotracker. The previous problem set is to be completed and handed in for grading before you start the second.

The GUI will access your back-end implementation through an application programmer's interface (API) which you have thoroughly specified and carefully designed in the previous problem set. The two major focuses of this problem set are i) to design and implement a user-friendly GUI, and ii) to integrate the front-end and the back-end to complete Foliotracker. To build a GUI, you'll need to learn how to use Swing. The online Java Tutorial trail, which is at http://java.sun.com/docs/books/tutorial/ , includes a section on Swing and the Java Foundation Classes; you'll find it at http://java.sun.com/docs/books/tutorial/uiswing/.

Problem Set 6

Through a front-end GUI, Foliotracker enables the user to track the contents and value of multiple stock portfolios. A Foliotracker can be used to manage and maintain multiple stock portfolios where a portfolio is a collection of stock holdings. A portfolio could also contain meta-data about a person's transaction history, statistics, etc. Your first task is to determine what functionality the front-end should support. At the minimum, it should be possible to:



Here are some possible features you might consider including in your design:
You should choose a set of features that you plan to implement. We recommend that you order them according to difficulty and desirability, and think carefully about which you will jettison if things turn out harder than you thought.

More fundamentally, you will need to consider basic questions such as
These issues need to be addressed at the start; they'll be much harder to deal with if you postpone them. In general, your GUI should be easy to use and attractive, and straightforward to build. You'll probably want to play around with Swing a bit to get a feel for how things are done and what's possible before you design it.

You should hand in the following artifacts:

(a) Overview (15 pts) [One page or less]
A terse and precise description of what the application's purpose is; what kinds of functionality it supports; what your GUI looks like and how it is to be used. Think of this section as a compressed user manual: the kind of summary of an application often found on marketing flyers.

(b) MDD (15 pts)
Draw a module dependency diagram showing the classes in Foliotracker, consisting of both front-end and back-end parts, with complete depends and meets relationships. You can treat all classes in javax.swing as just one box. Also, just include relevant and important modules of your GUI--those that interact with the back-end API.

(c) Concrete Object Model (15 pts)
An object model of Foliotracker, consisting of both front-end and back-end parts, at the level of abstraction of the implementation. The objects in the model should include all those involved in the representation. Make sure you include information about mutability and about which references may be null.

(d) Screen-shots of GUI (15 pts)
A set of screen-shots of your GUI showing how it is organized and what functions it offers. You should include those shots which reveal the functionality you described in the Overview section.

You can create screen-shots on Athena by using the xv Grab command:
athena% add graphics
athena% man xv
Or, if on a Windows machine, you can use Alt-PrtScn.

(e) Implementation (20 pts)
An overview design of your implementation and the specifications of all methods and classes used in your front-end implementation. Turn in the html files generated by javadocs or in plain-text. Do not turn in your source code. Also, turn in the specifications for your back-end API (i.e. interfaces that the front-end accesses). You should also tell us what you feel are important design decisions and how the integration process of the front-end and back-end parts went. For instance, you should tell us how the stock price is fetched and updated and how modules interact during this process. Think of this as an internal document that a colleague of yours can read to understand how your code works so that he can maintain the software when you get promoted to a managerial position.

(f) Testing (20 pts)
A terse but convincing overview of your testing strategy, what kind of testing you performed, and what test cases you used. List the functionality of Foliotracker as seen by the user through the GUI and for each functionality, tell us how you tested it.


Make sure you submit all your code using the turnin script as usual.

Errata

None.

Q & A

This section will list clarifications and answers to common questions about the exercises. We'll try to keep it as up-to-date as possible, so this should be the first place to look (after carefully rereading the handout) when you have a problem.


Back to the Problem Sets .
For problems or questions regarding this page, contact: 6.170-webmaster@mit.edu .