![]() College of Engineering & CS Wright State University Dayton, Ohio 45435-0001 |
edmui, An Editor with Multiple User Interfaces:RequirementsCEG 760: Advanced Software EngineeringDr Prabhaker Mateti, 4 Credit Hours, Spring
Qtr 2000 |
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.
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.
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.
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.
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.
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.
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.