Components and Component-based Development.- Engineering, Components, and Software.- Software Components and Component-based Development.- CBSD in Practice and Theory.- Software Testing: Practice and Theory.- Software Testing's Place in Development.- Software Testing Theory.- Subdomain Testing.- Composition of Components.- Subdomain Theory of Stateless Component Composition.- Tutorial Example - SYN Tools for Stateless Components.- Persistent State.- Concurrent Execution.- The Other Non-functional Property: Reliability.- Supporting Tools.- CBSD Support Tools.- Tool Implementation.- Debugging Components, Component-based Systems, and Support Tools.- Unfinished Business: Volunteer Tool Makers.- Case Studies.- Accuracy of Component Measurements and System Predictions.- Case Studies of I-CBSD.- Implications for Software Testing.- Unit vs. System Testing.- Functional vs. Non-functional Properties.- Conclusion: Lessons Learned from I-CBSD.- Open Problems.
Software components and component-based software development (CBSD) are acknowledged as the best approach for constructing quality software at reasonable cost. Composing Software Components: A Software-testing Perspective describes a 10-year investigation into the underlying principles of CBSD. By restricting attention
to the simplest cases, startling results are obtained:
. Components are tested using only executable code. Their behavior is recorded and presented graphically.
. Functional and non-functional behavior of systems synthesized from components are calculated from component tests alone. No access to components themselves is required.
. Fast, accurate tools support every aspect of CBSD from design through debugging.
Case studies of CBSD also illuminate software testing in general, particularly an expanded role for unit testing and the treatment of non-functional software properties.
This unique book:
. Contains more than a dozen case studies of fully worked-out component synthesis, with revealing insights into fundamental testing issues.
. Presents an original, fundamental theory of component composition that includes persistent state and concurrency, based on functional software testing rather than proof-of-programs.
. Comes with free supporting software with tutorial examples and data for replication of examples. The Perl software has been tested on Linux, Macintosh, and Windows platforms. Full documentation is provided.
. Includes anecdotes and insights from the author's 50-year career in computing as systems programmer, manager, researcher, and teacher.
Composing Software Components: A Software-testing Perspective will help software researchers and practitioners to understand the underlying principles of component testing. Advanced students in computer science, engineering, and mathematics can also benefit from the book as a supplemental text and reference.
Provides more than a dozen revealing case studies of component synthesis
Includes supporting software (written in Perl for Linux, Mac, and Windows) with tutorial examples and data for the replication of experiments
Presents an original, fundamental theory of component composition based on software testing rather than proof-of-programs