Alloy is a little language for software design. It comes with the Alloy Analyzer, which can generate sample structures and behaviors automatically (no test cases needed!) and can check complex properties. Think of it as a lightweight debugger for the essential concepts of your design.
Alloy is easy to learn, but it’s not just another programming language. Data structures are modeled as relations (like in a relational database) and behaviors are given as logical constraints. In short, Alloy is a relational logic tuned to software design. The Alloy Analyzer is built on SAT-solving technology, which allows it to find subtle flaws automatically that you would never catch with testing.
The Alloy Analyzer is a one-step install, and includes its own syntax highlighting editor and a visualizer that shows analysis results as customizable diagrams. Several tool extensions are available (currently as separate builds) that provide additional features.
To get a flavor of Alloy, check out:
— additional resources, models, tools, and papers by the Alloy community!
Alloy Board Members
Alloy is the product of a research project funded by the National Science Foundation under Grant Nos. 0325283, 0541183, 0438897 and 0707612; by the Air Force Research Laboratory (AFRL/IF) and the Disruptive Technology Office (DTO) in the National Intelligence Community Information Assurance Research (NICIAR) Program; and by the Nokia Corporation as part of a collaboration between Nokia Research and MIT CSAIL.