Software, compared to other engineered products, is a case of pure design. As we have stated, software unreliability is always the result of design faults and human intellectual failures.[16] Therefore, it is even more critical that that is where the quality issues are addressed. The philosophy and systems proposed in this book provide an upstream methodology for software developers to identify optimal features and settings for robust (trustworthy) software. The elements of the system just discussed are depicted in our proposed Robust Software Development Model (RSDM) created to help develop trustworthy software (see Figure 2.6). It meets the seven key requirements of the Robust Software Development Process that we discussed in Chapter 1. It is based on sound management principles and proven tools, techniques, and methodologies characterized by the following key elements:
We will refer to the RSDM and DFTS process interchangeably: The model depicts the process, and the process is illustrated by the model. A number of software development models have evolved over the last few decades. Many of these, such as the Waterfall Model, Phased Life-Cycle Models, the Spiral Model, and the V-Model, have their origins in aerospace and other manufacturing industries and do not always reflect the realities of the software development process. RSDM is an iterative model and provides for interaction with internal as well as external customers and capturing VOC throughout the development process. Furthermore, it is robust and flexible and can be tailored for any software development process. The following chapters discuss the application of this model and its various elements, particularly in an enterprise software development context. We would like to reiterate that in a software development organization or any enterprise where software technology is an important activity, software development is too important to be left to software engineers alone. It is ultimately the responsibility of the CEO and the top executive team. They must provide the required leadership, create the right management infrastructure, and foster the enabling environment for developing trustworthy software. |