Despite the ever increasing importance of computer software in our daily
lives, software engineers rarely analyze their designs to ensure reliability.
That situation is starting to change with the recent development of software
Alloy combines a language that eases the modeling of complex software
designs with an analysis engine that checks extensively for conceptual and
structural flaws in an automated fashion, treating designs as huge puzzles
to be solved.
In the relatively near future, tools similar to Alloy will greatly improve the
dependability of software by basing program development on more robust
and constructive design practices.