Tools and experiments supporting a testing-based theory of component composition

Development of software using off-the-shelf components seems to offer a chance for improving product quality and developer productivity. This article reviews a foundational testing-based theory of component composition, describes tools that implement the theory, and presents experiments with functional and nonfunctional component/system properties that validate the theory and illuminate issues in component composition. The context for this work is an ideal form of Component-Based Software Development (CBSD) supported by tools. Component developers describe their components by measuring approximations to functional and nonfunctional behavior on a finite collection of subdomains. Systems designers describe an application-system structure by the component connections that form it. From measured component descriptions and a system structure, a CAD tool synthesizes the system properties, predicting how the system will behave. The system is not built, nor are any test executions performed. Neither the component sources nor executables are needed by systems designers. From CAD calculations a designer can learn (approximately) anything that could be learned by testing an actual system implementation. The CAD tool is often more efficient than it would be to assemble and execute an actual system. Using tools that support an ideal separation between component- and system development, experiments were conducted to investigate two related questions: (1) To what extent can unit (that is, component) testing replace system testing? (2) What properties of software and subdomains influence the quality of subdomain testing?

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

[2]  Fei Xie,et al.  Verification of Component-Based Software Application Families , 2006, CBSE.

[3]  Felix Sheng-Ho Chang,et al.  Modular verification of code with SAT , 2006, ISSTA '06.

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

[5]  Hoang Pham Software Reliability , 1999 .

[6]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[7]  B GoodenoughJohn,et al.  Toward a theory of test data selection , 1975 .

[8]  V. Rajaraman Principles of Computer Programming , 1970 .

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

[10]  MeinkeKarl Automated black-box testing of functional correctness using function approximation , 2004 .

[11]  Dick Hamlet,et al.  Software component composition: a subdomain‐based testing‐theory foundation , 2007, Softw. Test. Verification Reliab..

[12]  Michael R. Lyu,et al.  What is software reliability? , 1994, Proceedings of COMPASS'94 - 1994 IEEE 9th Annual Conference on Computer Assurance.

[13]  Dick Hamlet Software component composition: a subdomain-based testing-theory foundation , 2007 .

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

[15]  Harlan D. Mills,et al.  Teaching principles of computer programming , 1987, CSC '87.

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

[17]  Bernard Sufrin,et al.  Principles of Computer Programming: A Mathematical Approach , 1989 .

[18]  John D. Musa,et al.  Software-Reliability-Engineered Testing , 1996, Computer.

[19]  Dick Hamlet Experiments with Composing Component Properties , 2003 .

[20]  Jeff Magee,et al.  Concurrency - state models and Java programs , 2006 .

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

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

[23]  Harlan D. Mills,et al.  Princples of Computer Programming , 1987 .

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

[25]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[26]  J. L. Lions ARIANE 5 Flight 501 Failure: Report by the Enquiry Board , 1996 .