Software abstractions

by Daniel Jackson

Blurb

In Software Abstractions Daniel Jackson introduces a new approach to
software design that draws on traditional formal methods but exploits automated
tools to find flaws as early as possible. This approach--which Jackson calls
"lightweight formal methods" or "agile modeling"--takes from formal specification
the idea of a precise and expressive notation based on a tiny core of simple and
robust concepts but replaces conventional analysis based on theorem proving with a
fully automated analysis that gives designers immediate feedback. Jackson has
developed Alloy, a language that captures the essence of software abstractions
simply and succinctly, using a minimal toolkit of mathematical notions. The designer
can use automated analysis not only to correct errors but also to make models that
are more precise and elegant. This approach, Jackson says, can rescue designers from
"the tarpit of implementation technologies" and return them to thinking deeply about
underlying concepts.Software Abstractions introduces the key elements of the
approach: a logic, which provides the building blocks of the language; a language,
which adds a small amount of syntax to the logic for structuring descriptions; and
an analysis, a form of constraint solving that offers both simulation (generating
sample states and executions) and checking (finding counterexamples to claimed
properties). The book uses Alloy as a vehicle because of its simplicity and tool
support, but the book's lessons are mostly language-independent, and could also be
applied in the context of other modeling languages.

Member Reviews Write your own review

Be the first person to review

Log in to comment