A Formal Representation of Software-Hardware System Design

Eric Walkingshaw, Paul Strauss, Martin Erwig, Jonathan Mueller, Irem Tumer
2009 Volume 2: 29th Computers and Information in Engineering Conference, Parts A and B   unpublished
The design of hardware-software systems is a complex and difficult task exacerbated by the very different tools used by designers in each field. Even in small projects, tracking the impact, motivation and context of individual design decisions between designers and over time quickly becomes intractable. In an attempt to bridge this gap, we present a general, low-level model of the system design process. We formally define the concept of a design decision, and provide a hierarchical
more » ... n of both the design space and the context in which decisions are made. This model can serve as a foundation for software-hardware system design tools which will help designers cooperate more efficiently and effectively. We provide a high-level example of the use of such a system in a design problem provided through collaboration with NASA. with disastrous consequences. Many examples of spectacular software failures have been reported that draw our attention to the importance of good design, including the high-cost and highvisibility mishaps of the Patriot Missile Defense System in 1991, the Ariane 5 rocket in 1996, and the loss of the Mars Climate Orbiter in 1999, to name only a few [9] . What makes one design successful and another one fail? How can we judge the impact of a particular set of decisions on a design? Why were the design decisions made? Being able to answer these kinds of questions is an important prerequisite to effective and systematic design of complex software-intensive systems. In this paper, we present a methodology that can support designers in working with such complex hardware/software systems, by helping them capture when and why the decisions were made and understand the consequences of these design decisions. Such support can be ultimately achieved only if the formal model provides general knowledge that explains hardware/software system design and the design process. Concurrent Design of Software and Hardware Ensuring that such software-intensive systems operate properly requires that the software and the hardware are compatible with each other, reinforcing the need for concurrent design. Concurrent design environments have become common in industries that deal with large scale complex systems as a means to tackle the problem of generating requirements and producing conceptual designs that consist of multidisciplinary subsystems (e.g., Team X at NASA Jet Propulsion Laboratory) [38, 58] . Unfortunately, a true concurrent design approach between the hardware and software developers is not easily realized. The two sides of development can often find themselves disconnected, resulting in them being developed completely independent of each other and put together at the end. The problem with this approach is that, because there is a lack of understanding between the software and hardware sides of development, dependencies are not fully understood and incompatibilities may exist. Testing the system can discover incompatibilities and changes can be made to ensure proper system performance. However, this can be a difficult task, and become very expensive due to changes to the system being implemented late in the design process. In this research, we draw direct parallels between engineering design and software design, with the purpose of bridging this gap. In particular, this paper presents a formal representation of the design process to help bridge the information gap between software and hardware system designers. Observations about Design In the world of engineering design, a "physical design" can have many representations during the different phases of design. A concept can be described as functions and their interactions semantically (for example, verbal or textual representation of a product) [64], using a graphical representation (for example, a functional decomposition) [49] , preliminary sketches to generate concepts/ideas [48] , models to analyze how the design works (stress analysis, failure analysis, vibration analysis, etc.) [15] , and/or detailed drawings that show how the parts/components fit together to meet a need and/or a physical representation of the product (for example, a prototype) [48] . In contrast, "software design" is not very well defined. Very generally, a software design is a plan for implementing a software system, usually by representing the individual parts of the system and their arrangement [1, 11, 13] . The process of design is one of decision making, that is the progression from the initial need (the design problem) to a final product [48, 64] . From this point of view, software design is also understood as a problem-solving process [13] . In this paper, we explore existing commonalities between software and hardware system design. In particular, we make the following observations about design in general that are common to both software and hardware systems.
doi:10.1115/detc2009-87057 fatcat:vo7vsiqojnfdzj7zf4subef3zm