6.170 Laboratory in Software Engineering
Fall 2002
Problem Set 6: Foliotracker, Part 2
Due: Tuesday, October 29, 2002 at 2:00pm

Handout P6


Introduction

In the last problem set, you designed and implemented the back-end of Foliotracker, an application for tracking the contents and value of multiple stock portfolios. In this problem set, you'll develop a front-end graphical user interface (GUI) to complete Foliotracker.

The GUI will access your back-end implementation through the application programmer's interface (API) that you developed last time. Your challenge in this problem set is (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 (see http://java.sun.com/docs/books/tutorial/) includes a section on Swing and the Java Foundation Classes, which you'll find at http://java.sun.com/docs/books/tutorial/uiswing/.

Tasks

Before you delve into the design and implementation of your GUI, you should think about its functionality. What commands and features should it support? These are not necessarily the same set of features you developed for your API in the previous problem set. There may be features you implemented in the API that you will decide not to exploit in your GUI, and conversely features of the GUI that you are not offered directly by the services of the API, but can nevertheless be implemented without extending it.

At the very least, your GUI should allow a user to:

Here are some additional features you might consider including in your design:

We recommend that you order your chosen features according to difficulty and desirability, and think carefully about which you will jettison if things turn out harder than you thought.

Early on in your design, you should 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.

You should also pay careful attention to issues of usability:

Do a heuristic evaluation of your design

Although it's crucially important that you think carefully about all these design issues before you plunge into implementation, you'll probably find it most productive to work iteratively, going back and forth between experimental prototyping (sketching or coding) and thinking about the design. When designing for a particular GUI framework such as Swing, it makes no sense to prescribe functionality and GUI design before you have a good grasp of what can be done, and how easily.

Artifacts

You should hand in the following artifacts:

(a) Overview (15 pts) [Two pages 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 as a compressed user manual: the kind of summary of an application often found on marketing flyers.

(b) MDD (15 pts)
A module dependency diagram showing the classes in Foliotracker, consisting of both front-end and back-end parts. You should make reasonable engineering judgments about which classes to include, and at what level of detail to annotate the dependence relationships. For example, you may choose to exclude some of the classes in the Swing package, or to summarize their dependences. To explain any special techniques, design patterns, or abstractions you devised for decoupling or other purposes, add a short note.

(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. You should make reasonable engineering judgments about what level of abstraction is appropriate.

(d) GUI Evaluation (15 pts) 

A heuristic evaluation of your GUI.  For at least 4 of the Nielsen usability heuristics presented in lecture, identify an aspect of your interface that might be a usability bug, judging by that guideline, and explain why.  If you found the bug in an early design iteration and subsequently fixed it, show how your solution helps. If the bug still exists in your final interface, propose a solution, or argue why the bug would be hard to fix.

Also include 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, and any additional shots (or early design sketches) needed to illustrate your heuristic evaluation.

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

(e) Implementation Narrative (20 pts)
An overview of the design of your implementation, explaining the key design decisions (such as how the stock price is fetched and updated and how modules interact during this process). Specifications of all classes used in your front-end, and the specification of your back-end API (again). Turn in the html files generated by javadocs or in plain-text; do not turn in your source code for this. Think of this as an internal document that a colleague of yours can read to understand how your code works so that she can maintain the software when you get promoted to a managerial position.

(f) Code Testing (20 pts)
A terse but convincing overview of your testing strategy, what kind of testing you performed, and what test cases you used. (Note: we mean code testing here; you are not required to do user testing.)


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 .