next up previous
Next: Human-Computer Interaction Up: Specific Areas for Research Previous: Modeling and Analysis

Engineering for Quality

One of the most important issues in complex systems is achieving and assuring quality--identifying and resolving tradeoffs between various qualities, determining how to achieve multiple qualities, and providing confidence or assurance that particular systems will exhibit required qualities over their lifetime. Currently we have no way to achieve or assure high levels of quality.

Essential system-wide properties (reliability, safety, security, timing, and modifiability) must be built in from the beginning; they cannot be added on or simply measured afterward. Up-front planning and changes to the development process are needed to achieve particular objectives. These changes include using notations and techniques for reasoning about system properties, constructing the system to achieve particular properties, and validating (at each step so that it is done early) that the evolving system has the desired qualities. Central to this problem is the consideration of the interactions among critical system properties and potential conflicts among them. Research about different kinds of properties are usually associated with distinct, often insular, disciplines of computer science: reliability, performance, correctness, metrics, etc.

An unwarranted assumption is often made that independent approaches to achieving specific software and system qualities can be easily composed. Unfortunately, this is not true. As just one example, approaches to ensure timing or reliability properties may (and often do) interact in important but indirect ways with approaches to ensure safety properties. Many techniques can be found to attack particular subproblems, but these techniques may not be easily integrated or may be too costly if very different procedures are required for each critical property or if each part of the software development process does not build on the results obtained in the previous steps. We need integrated methodologies for developing and maintaining software that encompass the entire development process and consider multiple and perhaps conflicting goals. The problem must be approached as a whole, not just the separate parts.


next up previous
Next: Human-Computer Interaction Up: Specific Areas for Research Previous: Modeling and Analysis

Jeannette Wing
Wed Apr 17 09:16:52 EDT 1996