Rigorous System Design
Rigorous System Design deals with the formalization of the design of mixed hardware/software systems. It advocates rigorous system design as a coherent and accountable model-based process leading from requirements to correct implementations. It presents the current state of the art in system design, discusses its limitations and identifies possible avenues for overcoming them. A rigorous system design flow is defined as a formal accountable and iterative process composed of steps, and based on four principles: 1) separation of concerns; 2) component-based construction; 3) semantic coherency; 4) correctness-by-construction. The combined application of these principles allows the definition of a methodology clearly identifying where human intervention and ingenuity are needed to resolve design choices, as well as activities that can be supported by tools to automate tedious and error-prone tasks. The presented view for rigorous system design has been amply implemented in the BIP (Behavior, Interaction, Priority) component framework and substantiated by numerous experimental results showing both its relevance and feasibility. Rigorous System Design concludes with a discussion advocating a system-centric vision for computing, identifying possible links with other disciplines and emphasizing centrality of system design. It is an ideal primer for researchers and practitioners interested in the design of mixed hardware/software systems.