- Software Development: The Need for a New Paradigm
- Software Development Strategies and Life-Cycle Models
- Software Process Improvement
- ADR Method
- Seven Components of the Robust Software Development Process
- Robust Software Development Model
- Key Points
- Additional Resources
- Internet Exercises
- Review Questions
- Discussion Questions and Projects
Seven Components of the Robust Software Development Process
Software has become an increasingly indispensable element of a wide range of military, industrial, and business applications. But it is often characterized by high costs, low reliability, and unacceptable delays. Often, they are downright unacceptable (see Sidebar 1.2). Software life-cycle costs (LCC) typically far exceed the hardware costs. Low software quality has a direct impact on cost. Some 40% of software development cost is spent testing to remove errors and to ensure high quality, and 80 to 90% of the software LCC goes to fix, adapt, and expand the delivered program to meet users’ unanticipated, changing, or growing needs.17 While the software costs far exceed hardware costs, the corresponding frequency of failure rate between software and hardware could be as high as 100:1. This ratio can be even higher for more advanced microprocessor-based systems.18 Clearly, these are huge issues that cannot be addressed effectively by continuing to deploy traditional software development approaches.
It is well known that various quality issues are interrelated. Moreover, high costs and delays can be attributed to low software reliability.18 Thus, it is conceivable that several objectives may be met with the correct strategic intervention. Quality has a great many useful attributes, and you must clearly understand the customer perspectives throughout the software life cycle. This helps you not only understand the changing user needs but also avoid cost escalation, delays, and unnecessary complexity. You need to deploy a multipronged strategy to address quality issues in large and complex software such as enterprise applications. The Seven Components of a Robust Software Development Process are shown in Figure 1.11. They are as follows:
A steadfast development process that can provide interaction with users by identifying their spoken and unspoken requirements throughout the software life cycle.
Provision for feedback and iteration between two or more development stages as needed.
An instrument to optimize design for reliability (or other attributes), cost, and cycle time at once at upstream stages. This particular activity, which addresses software product robustness, is one of the unique features of the RSDM, because other software development models do not.
Opportunity for the early return on investment that incremental development methods provide.
Step-wise development to build an application as needed and to provide adequate documentation.
Provision for risk analyses at various stages.
Capability to provide for object-oriented development.
Figure 1.11 Seven Components of the Robust Software Development Process