Research in Constructability
These research projects investigate ways to improve
development and evolution of software, especially ubiquitous and reliable
software. They are concerned with ways to make design decisions, with notations
and tools for constructing software, and with the organization of distributed
development projects
Design environments for software architecture that support customization to
specific domains. Integration of architecture analysis tools. Connections to
other software development activities, including requirements modeling and
software construction
Includes work on compositional connectors (Bridget's thesis work), and on
publish-subscribe architectures. Work has both a formal modeling and analysis
side, as well as an engineering side. Goal is to develop new techniques for
composing systems with well-understood properties
Software architecture is increasingly recognized as a crucial part of building and maintaining software systems, but often its benefits are diminished because the implementation of a system diverges from its intended architecture as the system evolves. The ArchJava language adds software architecture description constructs to the Java programming language, and uses a lightweight type system to ensure that the implementation conforms to the specified architecture.
The Fluid Project is focused on creating practicable tools for programmers to assure and evolve real programs. We focus on "mechanical" program properties that tend to defy traditional testing and inspection regimes. These are properties with a non-local character, in that there may be no single place in the code where they are manifest, and they may involve non-determinism.
The goal of the Vitruvius project is to elucidate the architectural level of abstraction so that the collective experience of successful architects can be captured, organized, and made available to ordinary practioners.
|