I have been involved in a variety of research over the years, including virtual reality and databases, but my primary interests fall within the realms of software engineering on human-computer interaction (HCI).
For further details, please see my publications page.
My current software engineering research is focused on software design, with two primary goals. The first, and longest term, goal is to learn something about the nature of design, learning how people do or how they should design software. The second goal is to develop technology to guide designers, especially novices, in software design. The two goals are related in that we can learn about design by trying to help people do it.
As part of this ongoing research, I have developed an approach that uses process-programming to model the process of design, and then executes that process model to guide a novice designer. I have instantiated the approach for the Model-View-Controller design style and have found benefits in design quality and design speed in controlled experiments. This work is in collaboration with Lee Osterweil and other members of the Laboratory for Advanced Software Engineering Research in the Department of Computer Science at the University of Massachusetts Amherst.
I am currently collaborating with a student here at Union College, Vandana Bajaj, to extend the approach to other design styles. In the process, we have developed a classification scheme for design patterns that formalizes an informal notion of "level of abstraction".
I am collaborating with Chris Fernandes on HCI research and we have set up a laboratory in which to carry out experiments on interaction techniques. Our first collaboration has resulted in a new model and mechanism for selective undo. In a selective undo model, a user can undo any action, not just the most recently performed one. Selective undo has been studied by others, but a common problem is that the user actions often depend on each other. If one attempts to undo an action on which another depends, what should be done? Our approach has been to cascade the undo so that the dependent action is also undone. The novel aspect of our approach is that we are using a process program to model the dependencies between actions.
I worked with John Knight in the Department of Computer Science at the University of Virginia and with developers at Motorola, to develop reuse techniques. In particular, I was concerned with approaches to determine the quality of systems based on the quality of the components from which the systems are composed.
I was involved in a project at the University of Virginia to develop an approach for tractably testing safety-critical applications.