Software component composition: a subdomain‐based testing‐theory foundation

Composition of software elements into assemblies (systems) is a fundamental aspect of software development. It is an important strength of formal mathematical specification that the descriptions of elements can be precisely composed into the descriptions of assemblies. Testing, on the other hand, is usually thought to be ‘non‐compositional.’ Testing provides information about any executable software element, but testing descriptions have not been combined to describe assemblies of elements. The underlying reason for the compositional deficiency of testing is that tests are samples. When two elements are composed, the input samples (test points) for the first lead to an output sample, but it does not match the input test points of the second, following element. The current interest in software components and component‐based software development (CBSD) provides an ideal context for investigating elements and assemblies. In CBSD, the elements (components) are analysed without knowledge of the system(s) to be later assembled. A fundamental testing theory of component composition must use measured component properties (test results) to predict system properties. This paper proposes a testing‐based theory of software component composition based on subdomains. It shows how to combine subdomain tests of components into testing predictions for arbitrarily complex assemblies formed by sequence, conditional, and iteration constructions. The basic construction of the theory applies to functional behaviour, but the theory can also predict the system's non‐functional properties from component subdomain tests. Compared with the alternative of actually building and testing a system, theoretical predictions are computationally more efficient. The theory can also be described as an exercise in modelling. Components are replaced by abstractions derived from testing them, and these models are manipulated to model system behaviour. This article replaces a previously published version. DOI: 10.1002/stvr.368. Copyright © 2007 John Wiley & Sons, Ltd.

[1]  Heinz W. Schmidt,et al.  Trustworthy components - compositionality and prediction , 2003, J. Syst. Softw..

[2]  David S. Rosenblum Adequate Testing of Component-Based Software , 1997 .

[3]  John H. R. May,et al.  Building a system failure rate estimator by identifying component failure rates , 1999, Proceedings 10th International Symposium on Software Reliability Engineering (Cat. No.PR00443).

[4]  Simeon C. Ntafos,et al.  An Evaluation of Random Testing , 1984, IEEE Transactions on Software Engineering.

[5]  Elaine J. Weyuker,et al.  Testing Component-Based Software: A Cautionary Tale , 1998, IEEE Softw..

[6]  Amer Diwan,et al.  Discovering Algebraic Specifications from Java Classes , 2003, ECOOP.

[7]  Clemens Szyperski,et al.  Component software , 1997 .

[8]  B. Littlewood Software Reliability Model for Modular Program Structure , 1979, IEEE Transactions on Reliability.

[9]  Peter T. Popov Reliability Assessment of Legacy Safety-Critical Systems Upgraded with Off-the-Shelf Components , 2002, SAFECOMP.

[10]  William E. Howden,et al.  Reliability of the Path Analysis Testing Strategy , 1976, IEEE Transactions on Software Engineering.

[11]  Dick Hamlet When only random testing will do , 2006, RT '06.

[12]  John D. Musa,et al.  Operational profiles in software-reliability engineering , 1993, IEEE Software.

[13]  Dick Hamlet,et al.  Properties of Software Systems Synthesized from Components , 2004 .

[14]  Karl Meinke,et al.  Automated black-box testing of functional correctness using function approximation , 2004, ISSTA '04.

[15]  Dick Hamlet,et al.  Software Component Dependability - a Subdomain-based Theory , 1996 .

[16]  Corrado Böhm,et al.  Flow diagrams, turing machines and languages with only two formation rules , 1966, CACM.

[17]  Richard G. Hamlet,et al.  Theory of software reliability based on components , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[18]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[19]  Denise M. Woit,et al.  Probabilistic program analysis for software component reliability , 2002 .

[20]  Dick Hamlet,et al.  Continuity in software systems , 2002, ISSTA '02.

[21]  Harlan D. Mills,et al.  Theory of Modules , 1987, IEEE Transactions on Software Engineering.

[22]  Michael D. Ernst,et al.  Automatic generation of program specifications , 2002, ISSTA '02.

[23]  Bojan Cukic,et al.  Comparing Partition and Random Testing via Majorization and Schur Functions , 2003, IEEE Trans. Software Eng..

[24]  Harlan D. Mills,et al.  Principles of computer programming : a mathematical approach , 1987 .

[25]  Robert W. Floyd,et al.  Assigning Meanings to Programs , 1993 .

[26]  Joseph A. Goguen,et al.  Software Engineering with Obj: Algebraic Specification In Action , 2010 .

[27]  C. A. R. Hoare,et al.  Proof of correctness of data representations , 1972, Acta Informatica.

[28]  Dick Hamlet Subdomain testing of units and systems with state , 2006, ISSTA '06.

[29]  John J. Marciniak,et al.  Encyclopedia of Software Engineering , 1994, Encyclopedia of Software Engineering.

[30]  Elaine J. Weyuker,et al.  An Extended Domain-Bases Model of Software Reliability , 1988, IEEE Trans. Software Eng..

[31]  Donald C. Wells Extreme Programming: A gentle introduction , 2003 .

[32]  Daniel Jackson,et al.  Alloy: a lightweight object modelling notation , 2002, TSEM.

[33]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1977, CACM.

[34]  Sarfraz Khurshid,et al.  Korat: automated testing based on Java predicates , 2002, ISSTA '02.

[35]  S. L. Gerhart,et al.  Toward a theory of test data selection , 1975, IEEE Transactions on Software Engineering.

[36]  F. Frances Yao,et al.  Computational Geometry , 1991, Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity.

[37]  Bojan Cukic,et al.  A Bayesian approach to reliability prediction and assessment of component based systems , 2001, Proceedings 12th International Symposium on Software Reliability Engineering.

[38]  William E. Howden,et al.  Methodology for the Generation of Program Test Data , 1975, IEEE Transactions on Computers.

[39]  Ralf H. Reussner,et al.  Reliability prediction for component-based software architectures , 2003, J. Syst. Softw..

[40]  Marija Mikic-Rakic,et al.  A Family of Software Architecture Implementation Frameworks , 2002, WICSA.

[41]  R. Hamlet RANDOM TESTING , 1994 .

[42]  Richard G. Hamlet,et al.  Partition Testing Does Not Inspire Confidence , 1990, IEEE Trans. Software Eng..

[43]  Richard G. Hamlet On subdomains: Testing, profiles, and components , 2000, ISSTA '00.

[44]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1976, Software Pioneers.

[45]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[46]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.