System-level design is characterized by the need to understand the system-level impacts of local design decisions. To achieve this, a system-level designer must be able to write and compose specifications from multiple, heterogeneous domains. They must also be able to take these specifications and predict when and how they interact, effectively decreasing the intellectual distance between specification. Rosetta is a language designed first and foremost to support these activities.
Part I introduces the basic elements of a Rosetta specification by walking through a simple system-level specification. Facets and domains are introduced first as the basic building blocks of a Rosetta specification. Techniques for composing models horizontally to define composite systems and vertically to define different aspects of the same system are presented as primary techniques for heterogeneous model composition. Interactions are introduced in model composition as a mechanism for understanding how information from one domain impacts another. Finally, techniques for representing usage requirements as assumptions and correctness conditions as implications are presented.
After completing Part I you will have an overview of a Rosetta specification and an introduction to basic Rosetta specification concepts. Most importantly, you will have a road map for learning Rosetta and a basic understanding of how to read a Rosetta specification.