The design of a system is rarely, if ever, accomplished with all aspects of that system described in the same fashion. For example, an automobile brings together design work from a number of discrete disciplines and domains — mechanical, electrical, ergonomic, and even economic, to name but a few. Each of these domains has their own ways of expressing design intent and content. Yet, though all of these domains interact to comprise the finished product, none of them share a common vocabulary. As a result, diagnosing and solving problems that span multiple domains is a vexing issue.
The Rosetta specification language, which has been in development for about 10 years, is an effort to bridge the domain gaps in system-level design. Rosetta attempts to provide a means of predicting how a change in one component of the system affects the system's overall properties, while accounting for cross-disciplinary effects.
In his foreword to Perry Alexander's System-Level Design With Rosetta, Grant Martin observes that "...every new language seems to require at least one book to be written to promote understanding and further interest and use, so \[for Rosetta\] this milestone has now been achieved." Alexander, one of the fathers of the Rosetta language, has produced what may prove to be the seminal text on Rosetta, and one that helps move it from an academic exercise to a real-world language.
In its roughly 350 pages, Alexander's book takes the reader through the various elements of Rosetta. The language was designed to support a number of system-level design needs, ranging from multiple domains and multiple semantics, abstract modeling, vertical and horizontal decomposition, and semantics. All of these aspects of the language are covered in detail.
In its introduction, the book details what Alexander terms "the anatomy of a specification." Here, through the example of a simple data register, Alexander explains how one might model several different aspects of that register using Rosetta's modeling primitives, facets and domains. He moves on to assemble different specifications to form a system-level model using Rosetta's interaction-modeling system. Finally, he discusses how Rosetta supports the recording of usage assumptions and implications in its models.
The book is packed with clear code examples that explain all of the language's elements, both individually and in combination. Inasmuch as Rosetta represents more than a simple language but also a methodology, that methodology is also clearly detailed. A final section describes some case studies, or a collection of usage examples for Rosetta specifications.
Anyone who's curious about Rosetta and, indeed, interested in a holistic approach to system-level design, should find this volume highly useful.