Abstract
Defect analysis of software components can be used to guide testing, with the goal of focusing on parts of the software that were fault-prone in earlier releases or earlier life cycle phases, such as development. We replicate a study that adapted a reverse architecting technique using defect reports to derive fault architectures. A fault architecture determines and visualizes components that are fault-prone in their relationships with other components, as well as those that are locally fault-prone. Our case study uses defect data from three releases of a large medical record system to identify relationships among system components, based on whether they are involved in the same defect report.
We investigate measures that assess the fault-proneness of components and component relationships. Component relationships are used to derive a fault architecture. The resulting fault architecture indicates what the most fault-prone relationships are in a release. We also apply the technique in a new way. Not only do we derive fault architectures for each release, we derive fault architectures for the development, system test and post release phases within each release. Comparing across releases, makes it possible to see whether some components are repeatedly in fault-prone relationships. Comparing across phases, makes it possible to see whether development fault architectures can be used to identify those parts of the software that need to be tested more. We validate our predictions using system test data from the same release. We also use the development and system test fault architectures to identify fault-prone components after release, and validate our predictions using post release data.
Similar content being viewed by others
References
Ash, D., Alderete, J., Oman, P.W., and Lowther, B. 1994. Using software models to track code health. Procs. International Conference on Software Maintenance, ICSM'94, Victoria, BritishColombia, Canada, pp. 154-160.
Eick, S., Loader, C., Long, M., Votta, L., and VanderWeil, S. 1992. Estimating software fault content before coding. Procs. 14th International Conference on Software Engineering, Melbourne, Australia, pp. 59-65.
Feijs, L., Krikhaar, R., and van Ommering, R. 1998. A relational approach to software architecture analysis. Software Practice and Experience, 28(4): 371-400.
Gall, H., Hajek, K., and Jazayeri, M. 1998. Detection of logical coupling based on product release history. Procs. of the International Conference on Software Maintenance, Washington, D.C., pp. 190-198.
Khoshgoftaar, T. and Szabo, R. 1994. Improving code churn predictions during the system test and maintenance phases. Procs. International Conference on Software Maintenance, Victoria, BritishColombia, Canada, pp. 58-66.
Khoshgoftaar, T. and Allen, E. 1998. Predicting the order of fault-prone modules in legacy software. Procs. Ninth International Symposium on Software Reliability Engineering, Paderborn, Germany, pp. 344-353.
Krikhaar, R. 1997. Reverse architecting approach for complex systems. Proceedings of the International Conference on Software Maintenance, Bari, Italy, pp. 1-11.
Ohlsson, N., Helander, M., and Wohlin, C. 1996. Quality improvement by identification of fault-prone modules using software design metrics. Procs. International Conference on Software Quality, ICSQ'96, Ottowa, Canada, pp. 1-13.
Ohlsson, M. and Wohlin, C. 1998. Identification of green, yellow, and red legacy components. Procs. International Conference on Software Maintenance, ICSM'98, Bethesda, Washington, D.C., pp. 6-15.
Ohlsson, M., von Mayrhauser, A., McGuire, B., and Wohlin, C. 1999. Code decay analysis of legacy software through successive releases. Procs. IEEE Aerospace Conference, Track 7.401.
Schneidewind, N. F. 1997. Software metrics model for quality control. Procs. International Symposium of Software Metrics, Metrics'97, Albuquerque, New Mexico, pp. 127-136.
Stringfellow, C. and Andrews, Anneliese 2001. Quantitative analysis of development defects to guide testing: A case study. Submitted to Journal of Software Quality, 9(3): 195-214.
Tilley, S., Wong, K., Storey, M., and Muller, H. 1994. Programmable reverse engineering. International Journal of Software Engineering and Knowledge Engineering, 4(4): 501-520.
von Mayrhauser, A., Wang, J., Ohlsson, M., and Wohlin, C. 1999. Deriving a fault architecture from defect history. International Conference on Software Reliability Engineering, pp. 295-303.
von Mayrhauser, A., Ohlsson, M., and Wohlin, C. 2000. Deriving fault architecture, from defect history. Journal of Software Maintenance, Research and Practice, 12: 287-304.
Wohlin, C. and Runeson, P. 1998. Defect content estimations from review data. Procs. International Conference on Software Engineering, Kyoto, Japan, pp. 400-409.
Wohlin, C. and Runeson, P. 1995. An experimental evaluation of capture-recapture in software inspections. Journal of Software Testing, Verification and Reliability, 5(4): 213-232.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Stringfellow, C., Andrews, A. Deriving a Fault Architecture to Guide Testing. Software Quality Journal 10, 299–330 (2002). https://doi.org/10.1023/A:1022138004472
Issue Date:
DOI: https://doi.org/10.1023/A:1022138004472