Design for Trustworthy Software: Tools, Techniques, and Methodology of Developing Robust Software

Trustworthy software development processes, like most human endeavors, thrive in innovative development environments. Innovation can create breakthrough values for customers in terms of cost, quality, and delivery requirements. This is especially true at upstream stages of the process, which present vast opportunities for meeting customer requirements innovativelymore so than is the case downstream. This chapter focuses on Phase 1 of the DFTS process (see Figure 2.6 in Chapter 2). In particular, we discuss issues related to the hows of the software development process after customer requirements, the whats, have been identified following QFD. We are concerned here with the concept and architectural issues of the software development process rather than detailed design activities that are undertaken from Phase 2 onward. As soon as a particular software concept has been agreed upon, the stage is set to carry out risk assessment of the proposed development concept, using FMEA and other techniques (see Chapter 13) before proceeding to Phase 2.

The ability to innovate has long been recognized as depending on three human qualities: creativity, tenacity, and serendipity. The story is often told about Thomas Alva Edison, who combined these qualities to such a high degree that he obtained 1,082 U.S. patents for his inventions. This record never has been excelled (although a handful of his successors at General Electric have passed the 500 mark). As the story goes, the pile of failed experiments thrown out Edison's second-story office window in Menlo Park reached to the windowsill by the time he discovered tungsten as the ideal material for the filament of the incandescent lightbulb. So although creativity may be learned, success may also depend on the inborn quality of tenacity and circumstances that promote serendipity (see Sidebar 12.1). This chapter discusses three common innovation methodologies that can be used in the software development process: TRIZ, brainstorming, and the Pugh Concept Selection Methodology. The first two provide a means to generate concepts, and the third one provides a methodology to select from a list of workable concepts.

Категории