Wyoming Programmer's Workbench
Programmers deal with different types of artifacts, including models, code, and test cases. Models can be written in many different notations, but the Unified Modeling Language (UML) is becoming the de facto and de jure standard. Part of UML is the Object Constraint Language (OCL), which allows programmers to annotate their model with semantics. OCL allows models to specify which behaviors are valid. This can be done with a broad stroke, essentially constraining the possible states of the system. It can also be done in a very detailed level, giving precise, unambiguous semantics to class methods. This opens up tremendous opportunities. The model can be a Platform Independent Model (PIM), with enough detail to describe an application while avoiding commitment to a specific implementation technology, e.g., J2EE, .Net, Web Services, or Posix Threads. This model can be converted automatically into a Platform Specific Model (PSM), and the PSM can be converted automatically into actual code. We are not there yet, but that is the vision laid out as Model-Driven Architecture (MDA), an idea with the potential to change the way we program.
The Wyoming Programmer's Workbench (WPW) is an Eclipse-based project with the goal of making it simple for programmers to switch between these three types of artifacts.
One of my Ph.D. students, Nadya Kuzmina, has been the main force behind the WPW for some time. She is exploring ways to extract a model directly from the code. Her technique uses a mixture of static and dynamic analysis to deduce some constraints from the code. ContExt, her tool, is based on John Paul's AbsInt and Ernst's Daikon, and it is currently under development. Details can be found in the ContExt wiki.
This project received support from the NSF's Science of Design program, which has allowed us to form a research group in the department. The group is led by Jim Caldwell and myself, and it includes our colleague Eric Wang, and Ph.D. students Nadya Kuzmina, John Paul, Sunil Kothari, and Joseph Paul. Recently we were joined by two undergraduates, courtesy of the NSF: Heather Aust and Yuki Kawabe. Our goal is to determine to what extent comprehensibility can be used as a measure of good design. We measure comprehensibility by seeing how well Nadya and John's tool can extract a specification from a program.
There is room for other students to join the WPW. If you are interested, let me know, and we can write a proposal for funding together.