
Composing Software Components
A Software-testing Perspective
By:Â Dick Hamlet
Hardcover | 31 August 2010
At a Glance
388 Pages
23.5 x 15.88 x 2.54
Hardcover
$249.75
or 4 interest-free payments of $62.44 with
 orÂShips in 5 to 7 business days
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.
Industry Reviews
From the reviews:
"Hamlet ... delivers a detailed analysis of component software engineering from a testing viewpoint. ... The book also includes some software that supports implementation of theory, presented in a variety of developer environments. ... Summing Up: Highly recommended. Graduate students and researchers/faculty." (L. Benedicenti, Choice, Vol. 48 (9), May, 2011)| The Griffin | p. vii |
| Acknowledgements | p. ix |
| Introduction | p. 1 |
| A 'Clear Drop' | p. 2 |
| Testing Components and Recording Approximations | p. 2 |
| Synthesizing a System | p. 5 |
| Discussion of the Example | p. 6 |
| Roadmap of this Monograph | p. 8 |
| Theory vs. Practice | p. 9 |
| Formal Theory of Software Testing | p. 10 |
| Exploratory Tools | p. 11 |
| Insights into Component Composition | p. 11 |
| Implications for Testing in General | p. 12 |
| Components and Component-based Development | |
| Engineering, Components, and Software | p. 17 |
| Standardized Components Make Engineering Possible | p. 17 |
| Mechanical Engineering of a Vacuum System | p. 19 |
| Electrical/Computer Engineering of a Laptop | p. 21 |
| Can It Be Done with Software? | p. 23 |
| Software Components and Component-based Development | p. 29 |
| The Parts: Components | p. 30 |
| Common Environment for Software | p. 30 |
| Reuse | p. 31 |
| Information Hiding | p. 32 |
| Object-oriented Design | p. 32 |
| Szyperski's Definition | p. 33 |
| The Systems: Component-based Software Development (CBSD) | p. 34 |
| Product Families | p. 36 |
| Component Development and Cataloging | p. 36 |
| System Design using Components | p. 38 |
| The Viewpoint: Testing Simple Components and Systems | p. 38 |
| Simple Components | p. 38 |
| Simple Systems | p. 39 |
| Critique of the Model | p. 39 |
| CBSD in Practice and Theory | p. 41 |
| Components and Connectors | p. 41 |
| System Architecture | p. 43 |
| Component Models | p. 44 |
| Middleware and Container Services | p. 44 |
| Immutable Components | p. 45 |
| Broader Theory of CBSD | p. 46 |
| General Component-based System Design Theory | p. 46 |
| Component-based Verification | p. 48 |
| Testing vs. Proving | p. 49 |
| Summary of CBSD Issues | p. 50 |
| Software Testing: Practice and Theory | |
| Software Testing's Place in Development | p. 55 |
| 'Lifecycle' Models of Development | p. 56 |
| Development Phases | p. 56 |
| Waterfall Models | p. 57 |
| Agile Models | p. 58 |
| Which Model is Best? | p. 59 |
| Functional/Requirements Testing | p. 60 |
| Unit Testing vs. System Testing | p. 60 |
| Preventing Bugs | p. 61 |
| Software Inspection | p. 61 |
| Formal Methods | p. 62 |
| Creating Perfection vs. Finding Failure | p. 63 |
| Testing in CBSD | p. 63 |
| Software Testing Theory | p. 65 |
| Floyd-Hoare-Mills Semantics | p. 65 |
| Functional Testing Theory | p. 67 |
| Functional Testing Theory without State | p. 67 |
| Extending Functional Theory to Include State | p. 69 |
| Testing Concurrent Software | p. 72 |
| Summary of Testing Theory | p. 75 |
| Subdomain Testing | p. 77 |
| Divide and Conquer (or Multiply and Founder?) | p. 78 |
| History of 'Coverage' Testing | p. 79 |
| Functional Coverage | p. 80 |
| Structural Coverage | p. 81 |
| Combining Functional and Structural Coverage | p. 85 |
| Usage Profiles | p. 86 |
| Subdomain Testing in the Presence of State | p. 88 |
| Concurrency | p. 91 |
| Comparing Subdomain Techniques | p. 92 |
| The 'Subsumes' Partial Ordering | p. 92 |
| Random Testing | p. 93 |
| Comparing Random- and Subdomain-testing | p. 94 |
| Composition of Components | |
| Subdomain Theory of Stateless Component Composition | p. 97 |
| Software Testing is 'Non-compositional' | p. 97 |
| Approximating and Measuring Component Properties | p. 99 |
| Calculating Properties of Stateless Systems | p. 101 |
| Series System | p. 102 |
| Conditional System Control Structure | p. 105 |
| Iterative System Control Structure | p. 106 |
| Combining Different Component Approximations | p. 107 |
| Synthesizing a Component-based System | p. 108 |
| Combining Testing and Proving | p. 108 |
| Summary of the Subdomain Testing Theory | p. 110 |
| Tutorial Example-SYN Tools for Stateless Components | p. 111 |
| Getting Started | p. 112 |
| A Simple Complete Example | p. 113 |
| Approximation and Prediction Errors | p. 124 |
| Better Component Approximations | p. 128 |
| Splitting and Adjusting Subdomains | p. 130 |
| Piecewise-linear Component Approximation | p. 130 |
| How Well Can a Component Developer Do? | p. 133 |
| Internal Profiles | p. 134 |
| Incremental Processing | p. 137 |
| Tutorial Summary | p. 138 |
| Persistent State | p. 139 |
| Extended Subdomain Theory of Composition | p. 139 |
| Algorithms for Synthesizing Systems from Components with State | p. 140 |
| Verifying the Algorithms | p. 144 |
| Testing Measurements | p. 145 |
| 3-D Graphs and Approximation Errors | p. 145 |
| Equi-spaced vs. Sequence Sampling | p. 146 |
| System Predictions | p. 147 |
| Synthesis of Systems with State | p. 148 |
| A Tutorial Example with State | p. 150 |
| Tutorial: Modes (Preferences) | p. 151 |
| Concurrent Execution | p. 167 |
| Adding Concurrency to Composition Theory | p. 167 |
| Algorithm for Synthesizing Components in Parallel | p. 168 |
| Testing Measurements, Behavior Graphs, and System Predictions | p. 169 |
| A Tutorial Example with Concurrency | p. 170 |
| Tutorial: Multiversion Software | p. 171 |
| The Other Non-functional Property: Reliability | p. 179 |
| Reliability in Other Engineering Disciplines | p. 179 |
| Software Reliability Theory | p. 181 |
| Software 'Time' Parameter | p. 182 |
| The Minefield Analogy | p. 182 |
| A Speculative Software Failure Rate | p. 184 |
| Measuring Software Failure Rate | p. 188 |
| Failure Rate in Subdomains | p. 191 |
| Component Independence | p. 192 |
| Reliability Synthesis | p. 193 |
| Difficulties in Component Measurements | p. 194 |
| Synthesis Rules | p. 194 |
| Supporting Tools | |
| CBSD Support Tools | p. 201 |
| Component Developers and System Designers | p. 201 |
| Ideal Tools for I-CBSD | p. 202 |
| Ideal Component-level Testing/Measurement Tools | p. 202 |
| Ideal System-level Synthesis (CAD) Tools | p. 203 |
| SYN Tools: An Existence Proof | p. 203 |
| Tool Implementation | p. 205 |
| Component Conventions | p. 207 |
| Artificial Components | p. 208 |
| Underlying Algorithms | p. 209 |
| Execution by Table-lookup | p. 210 |
| Validating Tools | p. 211 |
| A Nasty Mistake | p. 213 |
| Tool Performance | p. 216 |
| Debugging Components, Component-based Systems, and Support Tools | p. 219 |
| Debugging Components | p. 219 |
| Checking Tests Against Requirements | p. 220 |
| Executing Code Outside the SYN Tools | p. 221 |
| Finding Good Subdomains | p. 221 |
| Graphical Aids | p. 222 |
| Debugging Component-based Systems | p. 222 |
| Component Mismatch | p. 225 |
| Interface Profiles | p. 227 |
| Debugging of Support Tools | p. 228 |
| Problem Decomposition | p. 228 |
| Iterative Enhancement | p. 229 |
| Components and Debugging of SYN Tools | p. 230 |
| Unfinished Business: Volunteer Tool Makers | p. 233 |
| Unstable Algorithms and Code | p. 233 |
| Improving the SYN Tools | p. 234 |
| Who's Next? | p. 236 |
| Case Studies | |
| Accuracy of Component Measurements and System Predictions | p. 239 |
| Better Component Approximation, Better System Prediction | p. 239 |
| Tuning Subdomains with Tool Support | p. 244 |
| Predicting Prediction Accuracy | p. 247 |
| Prediction Error is Linear in Measurement Error | p. 247 |
| Theory of Error Propagation | p. 248 |
| Prediction Error is an Emergent System Property | p. 251 |
| Approximating System Prediction Errors | p. 252 |
| Approximation Accuracy as a Component Test-quality Metric | p. 253 |
| The Right Subdomains for Component Testing | p. 254 |
| Case Studies of I-CBSD | p. 257 |
| Fundamental Questions about Subdomain Testing | p. 257 |
| How to Sample Subdomains? | p. 258 |
| Is Series Synthesis Associative? | p. 261 |
| Moving Control Structures between Components and Systems | p. 262 |
| Series Composition within a Component | p. 263 |
| Conditionals in Code and Conditional Components | p. 264 |
| Raising the Level of Programming | p. 266 |
| Persistent State | p. 266 |
| Infeasible States | p. 266 |
| Modes and Storage in State | p. 270 |
| A Controlled 'Editor' System | p. 277 |
| Iteration at System Level | p. 284 |
| Component and System Reliability | p. 288 |
| Substituting one Component for Another | p. 292 |
| Meeting a Non-functional System Requirement Bound | p. 293 |
| Implications for Software Testing | |
| Unit vs. System Testing | p. 299 |
| Components Make Ideal Software 'Units' | p. 300 |
| Solving Unit-testing Problems | p. 301 |
| Choosing Unit-test Subdomains | p. 303 |
| Unit Testing Is More Than it Seems | p. 305 |
| Saving and Using Unit-test Results | p. 305 |
| Unit Tests the Only Tests | p. 305 |
| Trusting Unit Tests | p. 307 |
| Trustworthy Component Testing | p. 307 |
| Matching Interface Profiles | p. 307 |
| Comparing System Predictions to Requirements | p. 308 |
| Functional vs. Non-functional Properties | p. 311 |
| Non-functional Depends on Functional | p. 311 |
| Non-functional 'Compositional' Properties | p. 312 |
| Run Time | p. 313 |
| Reliability | p. 313 |
| Safety Factors and Prediction Accuracy | p. 314 |
| Predicting Emergent Properties | p. 315 |
| Memory Leaks | p. 315 |
| Security | p. 316 |
| 'Emergent' Prediction Error | p. 317 |
| Conclusion: Lessons Learned from I-CBSD | p. 319 |
| Software Components are Unlike Mechanical Components | p. 319 |
| Software Functions Are Inherently Discontinuous | p. 320 |
| Simple Component Behaviors Lead to Complicated System Behaviors | p. 322 |
| Testing Theory is Unlike Other Formal Methods | p. 323 |
| Conservative Reductions | p. 323 |
| Special Role of Persistent State | p. 324 |
| The Several Meanings of 'Compositional' | p. 325 |
| Compositional Properties | p. 326 |
| Testing Can Be Made Compositional | p. 326 |
| Simple Tools are Remarkably Powerful | p. 327 |
| Open Problems | p. 331 |
| Subdomain Testing in Non-numeric Domains | p. 331 |
| Completing a Testing Theory including State | p. 332 |
| Reliability in the Presence of Stale | p. 332 |
| Better SYN Tools for State | p. 333 |
| Limited Input Domain | p. 333 |
| References | p. 335 |
| Appendix | |
| Tool Specifications | p. 343 |
| Documentation | p. 344 |
| SYN Documentation Tricks | p. 345 |
| Stand-alone Script Execution | p. 346 |
| Error Messages | p. 346 |
| 'Message-discovery' Documentation | p. 348 |
| '#debug' Statements | p. 349 |
| The Script Header Comments | p. 349 |
| Details of the Tool Scripts | p. 349 |
| File Formats | p. 350 |
| Testing and Approximating Components: COMP and friends | p. 353 |
| Synthesizing and Predicting Systems: SYN and Calc | p. 354 |
| Auxiliary Scripts | p. 361 |
| Index | p. 363 |
| Table of Contents provided by Ingram. All Rights Reserved. |
ISBN: 9781441971470
ISBN-10: 1441971475
Published: 31st August 2010
Format: Hardcover
Language: English
Number of Pages: 388
Audience: Professional and Scholarly
Publisher: Springer Nature B.V.
Country of Publication: US
Dimensions (cm): 23.5 x 15.88 x 2.54
Weight (kg): 0.72
Shipping
| Standard Shipping | Express Shipping | |
|---|---|---|
| Metro postcodes: | $9.99 | $14.95 |
| Regional postcodes: | $9.99 | $14.95 |
| Rural postcodes: | $9.99 | $14.95 |
Orders over $79.00 qualify for free shipping.
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.
You Can Find This Book In
This product is categorised by
- Non-FictionComputing & I.T.Computer ScienceSystems Analysis & Design
- Non-FictionComputing & I.T.Information Technology General Issue
- Non-FictionComputing & I.T.Computer Programming & Software Development
- Non-FictionComputing & I.T.Graphical & Digital Media ApplicationsComputer-Aided Design CAD
- Non-FictionComputing & I.T.Digital Lifestyle & Online World: Consumer & User GuidesInternet Guides & Online Services
- Non-FictionComputing & I.T.Graphical & Digital Media Applications3D Graphics & Modelling
- Non-FictionComputing & I.T.Computer Hardware
- Non-FictionComputing & I.T.Computer ScienceMathematical Theory of Computation
























