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]  Simeon C. Ntafos,et al.  An Evaluation of Random Testing , 1984, IEEE Transactions on Software Engineering.

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

[3]  Aditya P. Mathur,et al.  On the estimation of reliability of a software system using reliabilities of its components , 1997, Proceedings The Eighth International Symposium on Software Reliability Engineering.

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

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

[6]  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.

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

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

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

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

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

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

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

[14]  Joseph A. Goguen,et al.  Software Engineering with OBJ , 2000, Advances in Formal Methods.

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

[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.  Partition Testing Does Not Inspire Confidence , 1990, IEEE Trans. Software Eng..

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

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

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

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

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

[23]  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).

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

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

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

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

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

[29]  Hassan Masum,et al.  Review of Computational Geometry: Algorithms and Applications (2nd ed.) by Mark de Berg, Marc van Kreveld, Mark Overmars, and Otfried Schwarzkopf , 2000, SIGA.

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

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

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

[33]  John B. Goodenough,et al.  Toward a theory of test data selection , 1975 .

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

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

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

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

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

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

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

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

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

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