Entry Date:
November 14, 1998

Software Design Group (SDG)

Principal Investigator Daniel Jackson

Co-investigators Jonathan Edwards , Sol J Greenspan


The goal of the Software Design Group (SDG) 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.