About the Software Design Group at MIT
Our goal is to develop tools and techniques to make software more dependable and increase programmer productivity. We explore all phases of the software development process, from requirements and design to testing and maintenance, and leverage techniques from formal methods, program analysis, and language design.
Design modeling and analysis
Alloy is a declarative
modeling language suitable for describing complex structures
in software design. Its analysis tool, based on a powerful
model finder called Kodkod, has been used in a
variety of applications, including an air traffic
controller, web security, network protocols, configurations,
and safety analysis for a radiation therapy machine.
Fast, automated analysis of code against specification
We
are exploring on new analysis techniques that allow programmers to specify
their design intent, and automatically check that the code satisfies
the specification (Rubicon, Forge).
New approaches to programming
We are developing new
programming systems for reducing the amount of low-level
decisions that the programmer needs to make (Squander,
Subtext),
and techniques for synthesizing programs from high-level
specifications.