Team Project: Reengineering LAPIS GUI

Background and Motivation


Useful software tends to have a long life after their first releases. Based on their experience with using the software, clients report bugs and request new features. As a result, software development teams must fix bugs and implement new features to support the work of their clients. This kind of practice is called Software Maintenance. It is reported that overall, software maintenance consumes more resources than the initial development. More often than not, a new developer hired by a company would start with some kinds of maintenance oriented tasks. It is a vital skill for a developer to be able to understand code written by others and perform changes according to requirements.

Modern software often has some kind of graphical user interface (GUI) with which clients directly interact. GUI usability can be important to the acceptance and success of a software product. Large firms like Microsoft and IBM often assign dedicated GUI usability teams to test their products throughout the software life cycle. Smaller firms, with less resources, may require individual developers to do both coding and usability testing. Thus, understanding your users and developing usable GUI for them is another valuable skill that a developer should learn and master.

The goal of this project is to reengineer LAPIS in a team of 3 - 4 members. The assumed context is a company that is going to make an official release of LAPIS.  Thus, it becomes necessary to remove from the current version of LAPIS as many as possible usability deficiencies or concerns that may be justified from a research stand point but absolutely unsuitable for a product. Note that this reengineering process does not imply that the LAPIS developers are incompetent. Rather, it shows that dedicated engineering effort for usability must always be planned and conducted in the development of any serious product.

The starting point for this project is a set of requirements described in the next section, which are derived from your efforts in doing Assignment 3. Since this project is a team effort, it pays off for you to think early about work load distribution among team members. Possible roles for team members may include designing & programming, testing & reporting, and demo & presentation. Note that one member may assume multiple roles and one role may use more than one member. Effective communication, cooperation, and coordination are keys to project success.

Product Specification

Part A. Core Functionalities

A1. Main menu (4%)


   - Remove Debug menu and all of its menu items.

   - Move help menu to the far right end of the menu bar.
   - Reorganize the menu bar as follows (change Go to History, and Tools to Commands; move Selection to Edit, and Scripts to Commands).

File   Edit           Commands    History                           Help
           ||                      ||
           =>Selection     => Scripts

    - Make sure that all menu items have accelerator keys.
    - Use ellipsis in menu text wherever necessary.

A2. Command ComboBox (2%)

    Prevent adding into the command history any command that contains a syntax error.


A3. LAPIS Help (2%)

    Display help contents inside the current LAPIS window rather than opening up a new window.


A4. Cleanup (2%)

    Remove the stderr pane below the main text area. Remove the feedback button at the bottom right corner.


A5. Geek Speaking (3%)

    a. When command "extract xyz" is entered into the command field, a dialog with a title "TCParseException" is popped up. This commits blooper 26, speaking geek. Change the title to "Command Syntax Error".


    b. When the following pattern is entered into the pattern area,  a dialog titled "parse error" is popped up. Another example of blooper 26.  Change the title to "Pattern Syntax Error".

             word start with "aaa"
                  ending "bbb"

    c. When the "Send Feedback" button is clicked in the "Send Feedback and Bug Reports" form, a dialog titled "FileNotFoundException" is popped up. This is an example of blooper 28, "Erroneous error messages". Correct it by giving a better title like "Log File for Saving Feedback Cannot Be Found".

A6. Consistency with Mainstream Web Browsers (7%)

a. Move the Back, Forward, Reload, and Stop toolbar buttons to the same row as the command combo box.  Remove the "Command" label from the command combo box. This will make LAPIS similar to IE and FireFox. Feel free to change the icons if desired. 2%


b. Re-implement the pattern editor and the script editor as a dialog. Separate dialog control buttons from content control buttons. Currently, these 2 editors use a combo box to implement common actions like file creation and file saving. Use a menu instead. 3%

c. Re-implement "Find and Replace" and "Clustering Find and Replace" as a dialog as well. 2%

Part B.
Teams may voluntarily implement some of the following features, which are considered more challenging. Bonus marks may be given under the instructor's discretion.


B1. Redesign the patterns dialog by replacing the pattern history with a scrolling list, and adding a button to invoke "Unusual Matches" directly inside the patterns dialog. (Currently "Unusual Matches" is only available as a menu item.)

B2. Currently, the markers are drawn on the track of the scroll bar in the main text area. Show colored markers on a separate column, in the same way as Eclipse does in its Java editor.

B3.
Sometimes, LAPIS displayed a web page as "Plain Text". This is a poor default. Correct it so that the right file type is used.

B4.
File history versus command history. A web browser maintains, in temporal order, a linked list of documents (navigation history) that a client has visited, as well as all the documents a client has seen (history). History always subsumes, but may be **strictly** a super set of,
navigation history. The command history of LAPIS, as is, is effectively identical to this web browser history model. On the other hand, a true command history will provide, for each document visited, a list of commands that once executed in order, will lead to the creation of that document. Such a command history can then be turned into scripts and reused in the future.

B5. Anything that you would like to try out as part of the project. Must be approved by the instructor to qualify for bonus.

Peer Testing

In addition to reengineering LAPIS, each team will also test another peer team's product anonymously and produce a testing report. Teams must email me a URL where their final product can be downloaded and tested.


Due Date & Deliverables

Tuesday December 2:
6 PM         Working Software uploaded to a given URL for peer testing

Wednesday December 3:
4-5 PM      Demo & Presentation
                 15 minutes per team


Friday December 5:
11:59 PM  email me the following items in a zipped file
                 Testing Report + Development Report + Final Project Source Code


*** Extension of any due date can be purchased at the price of 5 marks per 24 hours.


Marking Criteria

30% (20% core functionality, 6% development report (3) & demo and presentation (3), 4% testing report)


1. Core functionalities (20, see the Product Specification section for detailed mark breakdown)
 For each core feature implemented, the following percentage of marks will be given
    - 100%, absent of bugs,
    - 50%, some bugs but able to work around them,
    - 0%, otherwise.

2. Coding style

   - It should be relatively easy for me to identify what changes you have made to the LAPIS source code. This can be achieved by appropriate comments for important methods and data structure in the source code plus a note in the development report. You may lose up to 20% of your mark for poor coding style.

3. Demo & presentation (3)

   - A team
will get 3 marks automatically if they demonstrate their program and speak about their major design decisions before the class.

4. Development Report (3)

    A short report (no more than 3 pages) that describes
   - team member work distribution (1)
   - what have been implemented and where they can be found in the source code (1)
   - lessons learned (e.g., team work, development process, technology) (1)

5. Testing Report (4)

A list of problems you identified from the software you tested and a description where and why they are problematic. The description should be clear and easy to understand by the development team and me. Use screenshots. Your report will be given a grade using the following formula, min(1, m/n)*4, where m is the number of problems that you correctly identified, and n is the number of problems that the instructor identified from the final product.

Tips:

Technical tips may be posted here during the next 3 weeks.