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 (Sunny, Squander, Subtext), and techniques for synthesizing programs from high-level specifications.