College of Engineering & CS
Wright State University
Dayton, Ohio 45435-0001

edmui, An Editor with Multiple User Interfaces:

Requirements

CEG 760: Advanced Software Engineering

Dr Prabhaker Mateti, 4 Credit Hours,  Spring Qtr 2000
Course Syllabus | Projects | Due Dates | news:wright.ceg.760

   

Perspective

This is a rough and incomplete description of a project in CEG 760: Advanced Software Engineering expected to be completed by each student individually. CEG 760 students have had at least one undergraduate senior level course in software engineering, and are fluent in both C++ and Java, and have had considerable experience with interprocess communication mechanisms. It is our goal to pursue a deeper understanding of specifications, designs and implementations than in an undergraduate course. It is our goal to develop specs and designs at a degree of precision and completeness that an implementation expected to yield a couple of thousand lines of code can be done in say, three, weeks.

You (the students, individually) are the one-person team developing an interactive text editor similar in power to say the Notepad of Windows.  However, there are two interesting twists.

  1. We want our editor to have multiple user interfaces.
  2. The editor must be able to edit extremely large files.

Functionality

At all times, the user is looking at the content of one page. A page for us is that which can be seen through one window.  Hence, the size of the page varies as the size of window gets changed.

There are two cursors, one called ``the-dot'', and the other ``the-mark''. A rectangle, called the DMR (the dot-mark-region), is defined, at all times, by the dot and mark at opposite corners.

Movement of these two cursors by single characters, words,  and pages must be provided.  Cursors can also be reposition by doing a search.

The user should be able to create, and edit (insert, delete, move, cut, copy, paste, search/replace) the file, see the view of the current page change accordingly, and eventually save and close.

Page-up, Page-down, Delete, Home, End, ... keys should do the obvious.

The file is saved as a normal text file, and can be opened for further editing later on.

Performance

We expect the editor to be "reasonably fast."  This editor must not be slower than a factor of 10 compared to file-copy, on the same platform,  while doing insert/delete/copy/paste operations.  Cursor movement by character, word, and page should be nearly instantaneous.

Storage Resource Consumption

The editor must be able to edit extremely large files.  Assume that it is typical to edit files larger than available RAM.  You can expect the availability of free disk space equaling 1.5 times the size of the file being edited.

Interactive User Interface

We want our editor to have multiple user interfaces.  In the first release of this project, we expect to be easily able to switch among the interfaces of three other popular editors: vi, emacs, and pico.

User's input is presently only via the keyboard. However, we intend to allow input via the mouse and other devices in the beta versions of this program.

The design of the alpha version should anticipate our goal of having flexible changes in the user interface.

Design for Testability

This is an interactive program. Users input comes from the keyboard in reaction to creative thought processes and what is shown on the screen. We want our product to be reliable, and one of the techniques we depend on is regression testing. On the other hand, it is going to be very tedious to have to type for lengthy periods of time. This program must be designed with extra scaffolding to accommodate regression testing so that keystrokes can be captured and replayed.

Design for Enhanceability

User's input is presently only via the keyboard. However, we intend to allow input via the mouse and other devices in the beta versions of this program.

We are developing the product via iterative enhancement. When previous designs are not suitable in the face of unforeseen demands on the program we will not hesitate discarding old designs and starting over. However, certain requirements are clear enough right now and were described above but are not being completely being designed-in because we need to get this product out in a few weeks. So, design the product with enhanceability in mind.
 

 
http://www.cs.wright.edu/people/faculty/pmateti/