Optimal allocation of test resources for software reliability growth modeling in software development
Component-based software development approach has become a trend in integrating modem software systems. To ensure the overall reliability of an integrated software system, its software components have to meet certain reliability requirements, subject to some testing schedule and resource constraints. Efficiency improvement of the system-testing can be formulated as a combinatorial optimization problem with known cost, reliability, effort, and other attributes of the system components. This paper considers "software component testing resource allocation" for a system with single or multiple applications, each with a pre-specified reliability requirement. The relation between failure rates of components and "cost to decrease this rate" is modeled by various types of reliability-growth curves. Closed-form solutions to the problem for systems with one single application are developed, and then "how to solve the multiple application problem using nonlinear programming techniques" are described. Also examined are the interactions between the system components, and inter-component failure dependencies are included in the modeling formula. In addition to regular systems, the technique is extended to address fault-tolerant systems. A procedure for a systematic approach to the testing resource allocation problem is developed, and its application in a case study of a telecommunications software system is described. This procedure is automated in a reliability allocation tool for an easy specification of the problem and an automatic application of the technique. This methodology gives the basic approach to optimization of testing schedules, subject to reliability constraints. This adds "interesting new optimization opportunities in the software testing phase" to the existing optimization literature that is concerned with structural optimization of the software architecture. Merging these two approaches improves the reliability planning accuracy in component-based software development.
reliability allocation software testing component-based technology software reliability engineering