| Sponsor |
Prof. Colin Potts potts@cc.gatech.edu |
| Area | Sofware Engineering and HCI |
Problem
Most design literature in HCI and software engineering assumes simplistically that the "users" want a "system" and that our task is to develop one that meets their needs. But, most designs now are evolutions of existing systems that are already in use. There's been some research into how software implementations evolve and the results of growing "entropy" over time, as the architecture becomes more and more spaghetti-like. But I know of no work on how the user-visible features of an application evolve. Do we get "spaghetti interfaces"? Is version 5 of the application really the same application as version 1? (E.g. is a desktop publisher the same as a word processor?) How do the designers' tacit claims about the users and their goals change from release to release? This idea of "claims" is an important one. If you put in an interface an "undo" feature, you are claiming (though not usually consciously) that users often perform operations that they regret, or that they often experiment with operations to see what they do. If you implement activities in a to-do list with four levels of priority, called "must do today", "should do today", "nice to do today", and "after hours" you are making some definite claims about how users organize their lives. So every feature is a set of claims, or a set of answers to questions that could have been asked. Phrased this way, a lot of user interfaces consist of dumb answers. (a) In this project, you'll take a common PC or Mac-based software package and rationally reconstruct from the user interfaces and/or documentation how the claims about the users and their concepts evolved from one version to the next. In representing the features, you should use a standard object- oriented notation such as UML. This will make it easier to compare different models (i.e. answers to design questions such as "a document is..." or "an appointment is..."). The research question is whether there are any patterns of evolution, and if so what. It would be nice to have some hints, but that's asking a lot. It would be good just to have a catalog of differences as an application evolved. This is a very open-ended and challenging project, so I don't expect a theory of feature evolution. You might keep focused on an apparently simple sub-domain -- such as importing pictures into Word documents. There is room for several parallel versions of this project running concurrently. One person could take one application; another person another application. Or you could all work on the same application, but concentrating on non-overlapping feature sets. Ideally, you will look at three versions very narrowly, rather than two versions more broadly, but that will depend on your interest and the availability of the versions. This should appeal to anyone interested in HCI, object-oriented languages, database (it's doing some conceptual modeling, after all) and software engineering. (b) A similar project is to compare the tacit claims about user concepts across contemporary versions of competing products. For example, what are the similarities and differences among different organizers' tacit theories of activities and appointments? The same comments about scope and interests apply here too.