Engineering Papers⌕ Search

Engineering topics

Selby, Richard W.

Publications and source records attributed to Selby, Richard W..

Empirically based analysis of failures in software systems

An empirical analysis of software-system failures is used to study several specific issues in software testing, reliability analysis, and reuse. Failure data from a large software manufacturer and a NASA production environment were collected and analyzed. The systems ranged in size from 30,000 to over 100,000 lines. The results show that (1) the first 15 percent of the test cases detected 67 percent of the high-severity failures and 50 percent of all failures; (2) multiple fault-detection and testing phases may result in a significant increase in reliability or none at all; (3) composite measures of system reliability did not adequately reflect reliability at the function or component level; (4) developers were biased toward portions of systems that would be heavily tested; (5) fault-proneness of reused or modified components was 74 percent less than that of newly developed components; and (6) systems with more reused software had lower component development effort, but not lower component fault-proneness.

Selby, Richard W.↗

Learning from examples - Generation and evaluation of decision trees for software resource analysis

A general solution method for the automatic generation of decision (or classification) trees is investigated. The approach is to provide insights through in-depth empirical characterization and evaluation of decision trees for software resource data analysis. The trees identify classes of objects (software modules) that had high development effort. Sixteen software systems ranging from 3,000 to 112,000 source lines were selected for analysis from a NASA production environment. The collection and analysis of 74 attributes (or metrics), for over 4,700 objects, captured information about the development effort, faults, changes, design style, and implementation style. A total of 9,600 decision trees were automatically generated and evaluated. The trees correctly identified 79.3 percent of the software modules that had high development effort or faults, and the trees generated from the best parameter combinations correctly identified 88.4 percent of the modules on the average.

Selby, Richard W.↗

Comparing the effectiveness of software testing strategies

This study compares the results of code reading, functional testing, and structural testing in three aspects of software testing: fault detection effectiveness, fault detection cost, and classes of faults detected. Thirty two professional programmers and 42 advanced students applied the three techniques to four unit-sized programs in a fractional experimental design. The major results of this study are the following: (1) With the professional programmers, code reading detected more software faults and had a higher detection rate than did functional or structural testing, while functional testing detected more faults than did structural testing, but functional and structural testing were not different in fault detection rate. (2) In one advanced student subject group, code reading and functional testing were not different in faults found, but were superior to structural testing, while in the other advanced student subject group there was no difference among the techniques. (3) With the advanced student subjects, the three techniques were not different in fault deteciton rate. (4) Number of faults observed, fault detection rate, and total effort in detection depended on the type of software tested. (5) Code reading detected more interface faults than did the other methods. (6) Functional testing detected more control faults than did the other methods. (7) When asked to estimate the percentage of faults detected, code readers gave the most accurate estimates while functional testers gave the least accurate estimates. Appendix B includes the source code for the word.

Basili, Victor R.↗