| 6.170 | Laboratory in Software Engineering Fall 2002 Problem Set 6: Foliotracker, Part 2 Due: Tuesday, October 29, 2002 at 2:00pm |
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/.
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:
Early on in your design, you should consider basic questions such as:
You should also pay careful attention to issues of usability:
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.
(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 graphicsOn a Windows machine, you can use Alt-PrtScn.
athena% man xv
(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.)
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.