Specifying Software Robustness


Today's multistage development processes can anticipate downstream activities in support of robust design such as testing and debugging by grouping functions or signal factors into small homogeneous groups.[7] This vastly simplifies the analysis using orthogonal arrays (discussed in Chapter 17). It also recognizes that all the function points in a business software application interact or influence each other equally. Applications are naturally organized into functional hierarchies that partition the application in a natural way. In addition, Taguchi has proposed design as a three-step process:[8]

1.

System design is intended to meet the end users' functional requirements.

2.

Parameter design is intended to make product performance less sensitive to exogenous factors in its usage environment.

3.

Tolerance design involves tightening tolerances on product or process parameters to reduce variability in performance.

For example, software system or application design involves new concepts, ideas, and methods to provide novel or improved software capability to users. Unless the technology offering a competitive advantage in the marketplace is patented, copyrighted, or held as a trade secret, it can quickly be copied by competitors, and competitive advantage is soon lost. Parameter design allows the development team to build the novel technology into the product in a uniform yet intrinsic way that is not easily isolated and copied. The product also will be less sensitive to user error and environmental hazards, such as errors in data or other related application programs. Parameter design is used to make a product robust, or less sensitive, to noise factors without trying to control or eliminate the noise. Sidebar 16.3 gives a simple example concerning musical instrument construction to illustrate this process. This example is a mechanical rather than a programming one, and it is implicit rather than explicit. However, it shows the essence of this Taguchi insight on using parameter design to dramatically improve quality at no cost. The best examples of trade-offs between parameter and tolerance design are naturally electronic circuits. The fastest but most expensive way to reduce performance variability in such circuits is to tighten tolerances on critical components. The best way is to change design point parameters in such a way that tolerances are not so critical. If parameter design is inadequate to meet performance robustness goals, the design team must turn to tolerance design.

Tolerance design requires the use of tighter tolerances or higher-quality, higher-cost materials to reduce performance variation or sensitivity to environmental or usage factors. For tolerance design, the quality loss function is used to substantiate the increased costs of higher-quality components by lower loss to society.[9] Opportunities for tolerance design do not occur as often in software development as they do in circuit design, in which they are a legendary design trade-off. Examples include the use of more time- and/or space- (or use license) costly algorithms for computing functions as opposed to a less accurate estimate of a computed value. A sensitivity or error analysis of an algorithm may lead the software designers to a parameter design to avoid the higher-cost software component.

The benefits of robust software specification for robust software development are technology readiness, flexibility, and reproducibility. Computer software development lends itself naturally to small-scale laboratory-like experiments of test data to optimize functionality. This quality technology allows an entire group of program products rather than just individual programs. As soon as a software function's robustness has been optimized, newly planned products within the same family can be designed using straightforward adjustments. This ensures one of the greatest benefits of software reusability: reduced cycle time and enhanced quality in downstream software development. Finally, all these benefits can be reproduced downstream for the benefit of both the software vendor and the user.[10]

Sidebar 16.3: An Example of Parameter Design

One of the authors bought a modern baroque-style harpsichord for his wife while teaching at the Technical University of Stuttgart in the mid-1960s. The instrument performed beautifully during the time they lived in Germany, but after they returned to the United States, he had to retune it every time it was played. A careful reading of the German instructions brought to light the requirements that the instrument was to be kept at a temperature of 60 to 65 degrees Fahrenheit (European room temperature), with relative humidity between 68 and 70%. This was no problem in a stone or concrete house in Southern Germany, but it was impossible in Minnesota, where winter humidity is 10 to 20% and in the summer is 60 to 80%. Controlling the ambient temperature and humidity by storing the instrument in a special cabinet is expensive enough for a cello, but it would be out of the question for an instrument as large as a baroque harpsichord. The author asked Dr. Layton James, harpsichordist of the St. Paul Chamber Orchestra, how he dealt with this problem. Dr. James had years earlier bought a Zuckerman harpsichord kit. He carefully laid it out in his basement, stacking the spruce and other wood parts to get good air circulation, and left them there for three years before building the instrument. He had no tuning problems with the finished instrument. So, for a given system design, his implicit parameter design approach produced the desired insensitivity to environmental factors. This would have been much more expensive to handle through tolerance design or by controlling for "noise" in the ambient storage or performance environment.





Design for Trustworthy Software. Tools, Techniques, and Methodology of Developing Robust Software
Design for Trustworthy Software: Tools, Techniques, and Methodology of Developing Robust Software
ISBN: 0131872508
EAN: 2147483647
Year: 2006
Pages: 394

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net