Collaboration Among Software Components



Similar documents
Tools and Experiments Supporting a Testing-based Theory of Component Composition

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

specifications 15. Approaches to constructing The outline of this part:

Software Testing. System, Acceptance and Regression Testing

Testing Metrics. Introduction

Basic Testing Concepts and Terminology

Latest Trends in Testing. Ajay K Chhokra

Improved Software Testing Using McCabe IQ Coverage Analysis

Test Automation Framework

IT3205: Fundamentals of Software Engineering (Compulsory)

Software Engineering Introduction & Background. Complaints. General Problems. Department of Computer Science Kent State University

BERMAD Waterworks. Quick Active Check Valve. 700 Series. Model 740Q. Features and Benefits. Major Additional Features

Introduction to Automated Testing

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

White Papers: Unit Testing. Unit Testing

Next-Generation Performance Testing with Service Virtualization and Application Performance Management

Baseline Code Analysis Using McCabe IQ

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Module 1. Introduction to Software Engineering. Version 2 CSE IIT, Kharagpur

Component-based Development Process and Component Lifecycle Ivica Crnkovic 1, Stig Larsson 2, Michel Chaudron 3

Component Based Development in Software Engineering

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

Table of Contents INTRODUCTION Prerequisites... 3 Audience... 3 Report Metrics... 3

CSTE Mock Test - Part I - Questions Along with Answers

Application of software product quality international standards through software development life cycle

Diaphragm Seal with flush diaphragm and flange acc.to SMS. Completed with pressure gauge in stainless steel, liquid filled or pressure transmitter

A Model for Component Based E-governance Software Systems

1. Introduction. Annex 7 Software Project Audit Process

QTP Open Source Test Automation Framework Introduction

Hazlet Township Public Schools

Taking the First Steps in. Web Load Testing. Telerik

Agilent Measuring Noninsertable Devices

Peter Mileff PhD SOFTWARE ENGINEERING. The Basics of Software Engineering. University of Miskolc Department of Information Technology

Parametric Modeling: The New CAD Paradigm for Mechanical Designs Randy Shih

High Efficiency Copper Finned Tube Boilers 750,000-2,000,000 BTU/HR

CS314: Course Summary

SPL 2-00/-01 OPERATION INSTRUCTIONS

Formal Software Testing. Terri Grenda, CSTE IV&V Testing Solutions, LLC

Recommendations for Performance Benchmarking

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Introduction to Parallel Programming and MapReduce

Autodesk Fusion 360: Assemblies. Overview

Ensuring Reliability in Lean New Product Development. John J. Paschkewitz, P.E., CRE

KWIC Exercise. 6/18/ , Spencer Rugaber 1

Software Engineering. An Introduction. Fakhar Lodhi

Software Engineering. How does software fail? Terminology CS / COE 1530

A Review of an MVC Framework based Software Development

Software Module Test for an Electronic Steering Lock

Design with Reuse. Building software from reusable components. Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14 Slide 1

The V-model. Validation and Verification. Inspections [24.3] Testing overview [8, 15.2] - system testing. How much V&V is enough?

SPECIFICATION BY EXAMPLE. Gojko Adzic. How successful teams deliver the right software. MANNING Shelter Island

Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References

SOFTWARE DEVELOPMENT STANDARD FOR SPACECRAFT

Lab 2 : Basic File Server. Introduction

An Introduction to. Metrics. used during. Software Development

Functional Validation of SAP Implementation

EE4367 Telecom. Switching & Transmission. Prof. Murat Torlak

Software Engineering. Software Engineering. Component-Based. Based on Software Engineering, 7 th Edition by Ian Sommerville

Introduction of Virtualization Technology to Multi-Process Model Checking

How To Understand Software Engineering

Process Models and Metrics

Use service virtualization to remove testing bottlenecks

Product Description Full Voltage Starting Electric Fire Pump Controllers FTA1000

Standard for Software Component Testing

Engineering Process Software Qualities Software Architectural Design

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

The Practical Organization of Automated Software Testing

RapidIO Network Management and Diagnostics

An Aspect-Oriented Product Line Framework to Support the Development of Software Product Lines of Web Applications

Test-Driven Development. SC12 Educator s Session November 13, 2012

Software testing. Objectives

Benefits of Test Automation for Agile Testing

DDR subsystem: Enhancing System Reliability and Yield

Software Engineering. Software Testing. Based on Software Engineering, 7 th Edition by Ian Sommerville

760 Veterans Circle, Warminster, PA Technical Proposal. Submitted by: ACT/Technico 760 Veterans Circle Warminster, PA

EFFORT ESTIMATION IN QUOTATION PHASE OF COMPLEX PROJECTS DEVELOPMENT

Intelligent and Automated Software Testing Methods Classification

Regression Clustering

SoMA. Automated testing system of camera algorithms. Sofica Ltd

CHAPTERS A NEW KNOT MODEL FOR COMPONENT BASED SOFTWARE DEVELOPMENT

Testing Low Power Designs with Power-Aware Test Manage Manufacturing Test Power Issues with DFTMAX and TetraMAX

TESSY Automated dynamic module/unit and. CTE Classification Tree Editor. integration testing of embedded applications. for test case specifications

SECTION 2.5: FINDING ZEROS OF POLYNOMIAL FUNCTIONS

How To Write Software

Application Performance Testing Basics

Automatic vs. Manual Code Analysis

Configuration Management

A-145 LFO. 1. Introduction. doepfer System A LFO A-145

Testing Big data is one of the biggest

Organizing Your Approach to a Data Analysis

Latch Timing Parameters. Flip-flop Timing Parameters. Typical Clock System. Clocking Overhead

Process Intelligence: An Exciting New Frontier for Business Intelligence

Network Security. Chapter 6 Random Number Generation

Levels of Software Testing. Functional Testing

Stainless Linear Motion Rolling Guide series

What makes a good process?

Software Project Audit Process

Software Testing. Knowledge Base. Rajat Kumar Bal. Introduction

Requirements engineering

2.0 System Description

Transcription:

Collaboration Among Software Components Dick Hamlet Department of Computer Science Portland State University Portland, OR 97207 hamlet@cs.pdx.edu

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme

A haphazard activity directed at finding failures Unit Testing Today

Unit Testing Today A haphazard activity directed at finding failures Some of its problems: Units seldom have good specifications Coverage metrics are weak surrogates Developers make lousy testers (too close to code) Independent testers are lousy (don t understand code) Stubs are impossible to devise

Unit Testing Today A haphazard activity directed at finding failures Some of its problems: Units seldom have good specifications Coverage metrics are weak surrogates Developers make lousy testers (too close to code) Independent testers are lousy (don t understand code) Stubs are impossible to devise Results are discarded because Not quantitative No connection with subsequent development Useless even for regression testing

Unit Testing Today A haphazard activity directed at finding failures Some of its problems: Units seldom have good specifications Coverage metrics are weak surrogates Developers make lousy testers (too close to code) Independent testers are lousy (don t understand code) Stubs are impossible to devise Results are discarded because Not quantitative No connection with subsequent development Useless even for regression testing But everyone hopes it will help...

What Do the Other Engineers Do? Designing a Vacuum System from Components

What Do the Other Engineers Do? Designing a Vacuum System from Components 1 Choose components from catalog (http://us.trinos.com) Type CF flange, 304 stainless 50mm ID, 72.4mm bolt circle 8 M8 bolts Viton seal 10 8 Torr

What Do the Other Engineers Do? Designing a Vacuum System from Components 1 Choose components from catalog (http://us.trinos.com) Type CF flange, 304 stainless 50mm ID, 72.4mm bolt circle 8 M8 bolts Viton seal 10 8 Torr 2 Sketch system using data 1

What Do the Other Engineers Do? Designing a Vacuum System from Components 1 Choose components from catalog (http://us.trinos.com) Type CF flange, 304 stainless 50mm ID, 72.4mm bolt circle 8 M8 bolts Viton seal 10 8 Torr 2 Sketch system using data 1 3 Calculate and check system properties Volume (add component volumes) Pressure loss (combine flange losses) Required pump

What Do the Other Engineers Do? Designing a Vacuum System from Components 1 Choose components from catalog (http://us.trinos.com) Type CF flange, 304 stainless 50mm ID, 72.4mm bolt circle 8 M8 bolts Viton seal 10 8 Torr 2 Sketch system using data 1 3 Calculate and check system properties Volume (add component volumes) Pressure loss (combine flange losses) Required pump 4 Repeat 1 3 if needed Oops! Need more volume, use 80mm ID Oops again! Pressure loss too high, use OFHC copper seal OK, system properties look good

What Do the Other Engineers Do? Designing a Vacuum System from Components 1 Choose components from catalog (http://us.trinos.com) Type CF flange, 304 stainless 50mm ID, 72.4mm bolt circle 8 M8 bolts Viton seal 10 8 Torr 2 Sketch system using data 1 3 Calculate and check system properties Volume (add component volumes) Pressure loss (combine flange losses) Required pump 4 Repeat 1 3 if needed 5 Assemble system (no surprises!) Oops! Need more volume, use 80mm ID Oops again! Pressure loss too high, use OFHC copper seal OK, system properties look good

What Do the Other Engineers Do? Designing a Vacuum System from Components 1 Choose components from catalog (http://us.trinos.com) Type CF flange, 304 stainless 50mm ID, 72.4mm bolt circle 8 M8 bolts Viton seal 10 8 Torr 2 Sketch system using data 1 3 Calculate and check system properties Volume (add component volumes) Pressure loss (combine flange losses) Required pump 4 Repeat 1 3 if needed 5 Assemble system (no surprises!) Would that it were so in software! Oops! Need more volume, use 80mm ID Oops again! Pressure loss too high, use OFHC copper seal OK, system properties look good

Software Components component input executable code state output

Software Components Executable code component Interface Black-box behavior Local state input executable code state output

Software Components Executable code component Interface Black-box behavior Local state input executable code state output Why components? Reuse is better, cheaper (?) Precise software units Sidestep programming-language and design issues

Component-based Software Development (CBSD) Components Specified, designed, implemented, tested in isolation Later to be used in systems without modification component catalog records data for later use

Component-based Software Development (CBSD) Components Specified, designed, implemented, tested in isolation Later to be used in systems without modification component catalog records data for later use Systems Assembled by matching components interfaces Combination scheme is the system architecture In principle, design is done from the component catalog Assembled system tested against its specification

Component-based Software Development (CBSD) Components Specified, designed, implemented, tested in isolation Later to be used in systems without modification component catalog records data for later use Systems Assembled by matching components interfaces Combination scheme is the system architecture In principle, design is done from the component catalog Assembled system tested against its specification Ideal context for studying unit vs. system testing

Subdomain Testing Tools Describe components and systems with configuration files Component description Executable code file (any source language) Subdomain decomposition of the domain System architecture Flowgraph of component connections

Subdomain Testing Tools Simplifying restrictions Floating-point values on each execution: 1 One input value (read STDIN) 2 One output value (write STDOUT) 3 One non-functional value (run time) reported (write STDERR) 4 One state value read/written (disk file)

Subdomain Testing Tools Simplifying restrictions Floating-point values on each execution: 1 One input value (read STDIN) 2 One output value (write STDOUT) 3 One non-functional value (run time) reported (write STDERR) 4 One state value read/written (disk file) Why so restricted? Simplify a complex situation to study it A small research group can implement powerful tools

A Component Description A sawtooth with three teeth modulated by an inverted parabola saw.ccf saw.bin 0 0.416666666666625 5 0.416666666666625 0.83333333333325 5 0.83333333333325 1.24999999999987 5 1.24999999999987 1.6666666666665 5 1.6666666666665 2.08333333333313 5 2.08333333333313 2.49999999999975 5 2.49999999999975 2.91666666666637 5 2.91666666666637 3.333333333333 5 3.333333333333 3.74999999999975 5 3.74999999999975 4.1666666666665 5 4.1666666666665 4.58333333333325 5 4.58333333333325 5 5 5 5.41666666666675 5 5.41666666666675 5.8333333333335 5 5.8333333333335 6.25000000000025 5 6.25000000000025 6.666666666667 5 6.666666666667 7.08333333333363 5 7.08333333333363 7.50000000000025 5 7.50000000000025 7.91666666666687 5 7.91666666666687 8.3333333333335 5 8.3333333333335 8.75000000000012 5 8.75000000000012 9.16666666666675 5 9.16666666666675 9.58333333333337 5 9.58333333333337 10 5

A Component Description A sawtooth with three teeth modulated by an inverted parabola saw.bin saw.ccf #!/usr/bin/perl -w # # executable saw.bin # # sawtooth with parabolic envelope $cycles = 3; #number of "teeth" $interval = 10.0; #[0,10) $env = 10.0; $X = <STDIN>; #read input $Y = $X*$env*$cycles/$interval; $Y -= int($env)*int($y/$env); #sawtooth $Y *= 1.0 - (($X-6)**2)/(36); #parabola print "$Y\n"; #write output print STDERR "1.0\n"; #constant run time saw.bin 0 0.416666666666625 5 0.416666666666625 0.83333333333325 5 0.83333333333325 1.24999999999987 5 1.24999999999987 1.6666666666665 5 1.6666666666665 2.08333333333313 5 2.08333333333313 2.49999999999975 5 2.49999999999975 2.91666666666637 5 2.91666666666637 3.333333333333 5 3.333333333333 3.74999999999975 5 3.74999999999975 4.1666666666665 5 4.1666666666665 4.58333333333325 5 4.58333333333325 5 5 5 5.41666666666675 5 5.41666666666675 5.8333333333335 5 5.8333333333335 6.25000000000025 5 6.25000000000025 6.666666666667 5 6.666666666667 7.08333333333363 5 7.08333333333363 7.50000000000025 5 7.50000000000025 7.91666666666687 5 7.91666666666687 8.3333333333335 5 8.3333333333335 8.75000000000012 5 8.75000000000012 9.16666666666675 5 9.16666666666675 9.58333333333337 5 9.58333333333337 10 5

Subdomain Component Testing component input executable code state output Output 10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10 Input

Subdomain Component Testing component input executable code state output Output 10 9 8 7 6 5 4 3 2 1 0 0 2 4 6 8 10 Input

Subdomain Component Testing component input executable code state output 10 8 Output 6 4 2 0 0 2 4 6 8 10 Input

Subdomain Component Testing component input executable code state output Output 9 8 7 6 5 4 3 2 1 0 2.8 3 3.2 3.4 3.6 Input

Two copies of the sawtooth in series system component component Predicting System Behavior input executable code state output input executable code state output

Two copies of the sawtooth in series input executable code component state system output Predicting System Behavior input executable code component state output system.pscf 1 2 S saw.ccf saw.ccf

Two copies of the sawtooth in series input executable code component state system output Predicting System Behavior input executable code component state output system.pscf 1 2 S saw.ccf saw.ccf 10 8 Output 6 4 2 0 0 2 4 6 8 10 Input

Two copies of the sawtooth in series input executable code component state system output Predicting System Behavior input executable code component state output system.pscf 1 2 S saw.ccf saw.ccf Output 10 9 8 7 6 5 4 3 2 1 0 2.8 3 3.2 3.4 3.6 Input

A Component with State On non-negative inputs 0..9, store count of longest sequence On negative inputs -10..-1, return stored sequence counts (for 9..0) input executable code component state output

A Component with State On non-negative inputs 0..9, store count of longest sequence On negative inputs -10..-1, return stored sequence counts (for 9..0) Example: input executable code component state -1 1 0-1 1 1 5-2 0 0 0 1 0 0 0 2 output

A Component with State On non-negative inputs 0..9, store count of longest sequence On negative inputs -10..-1, return stored sequence counts (for 9..0) input executable code component state -1 1 0-1 1 1 5-2 Example: 0 0 0 1 0 0 0 2 Implementation state: 5.11200010000 output

A Component with State On non-negative inputs 0..9, store count of longest sequence On negative inputs -10..-1, return stored sequence counts (for 9..0) input executable code component state -1 1 0-1 1 1 5-2 Example: 0 0 0 1 0 0 0 2 Implementation state: 5.11200010000 output current digit current count

A Component with State On non-negative inputs 0..9, store count of longest sequence On negative inputs -10..-1, return stored sequence counts (for 9..0) input executable code component state -1 1 0-1 1 1 5-2 Example: 0 0 0 1 0 0 0 2 Implementation state: 5.11200010000 output maximum zero sequence maximum one sequence

A Component with State On non-negative inputs 0..9, store count of longest sequence On negative inputs -10..-1, return stored sequence counts (for 9..0) input executable code component state -1 1 0-1 1 1 5-2 Example: 0 0 0 1 0 0 0 2 Implementation state: 5.11200010000 output maximum five sequence

Component Output Behavior Random-length sequences of random test points: 4 3 Output 2 1 0-1 -8-6 -4-2 0 2 4 Input 6 8 0 2 4 6 8 10 Input State

Component Result-state Behavior Systematic coverage of (input state) pairs: 10 8 6 Result state 4 2 0 Input State 10 8 6 4 2 0-8 -6-4 -2 0 2 4 6 8 Input

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme

Approximation Errors Output 9 8 7 6 5 4 3 2 1 0 Component measurement: 2.8 3 3.2 3.4 3.6 Input subdomain r-m-s error [2.81, 2.92) 2.93 [2.92, 3.02) 2.97 [3.02, 3.12) 3.01 [3.12, 3.23) 3.05 [3.23, 3.33) 3.08 [3.33, 3.44) 1.95 [3.44, 3.54) 2.02

Approximation Errors Output 9 8 7 6 5 4 3 2 1 0 Component measurement: 2.8 3 3.2 3.4 3.6 Input subdomain r-m-s error [2.81, 2.92) 2.93 [2.92, 3.02) 2.97 [3.02, 3.12) 3.01 [3.12, 3.23) 3.05 [3.23, 3.33) 3.08 [3.33, 3.44) 1.95 [3.44, 3.54) 2.02 Output System prediction: 10 9 8 7 6 5 4 3 2 1 0 2.8 3 3.2 3.4 3.6 Input subdomain r-m-s error [2.81, 2.92) 7.00 [2.92, 3.02) 125.17 [3.02, 3.12) 7.30 [3.12, 3.23) 7.30 [3.23, 3.33) 6.97 [3.33, 3.44) 0.40 [3.44, 3.54) 1.19

Spurious-state Sampling How to test components/systems with state?

How to test components/systems with state? Spurious-state Sampling For i = 1,2,3,...,N: Externally set state S i from specification Choose input X i Execute on point (X i, S i ) Compare resulting state and output with specification

How to test components/systems with state? Spurious-state Sampling For i = 1,2,3,...,N: Externally set state S i from specification Choose input X i Execute on point (X i, S i ) Compare resulting state and output with specification

How to test components/systems with state? Spurious-state Sampling For i = 1,2,3,...,N: Externally set state S i from specification Choose input X i Execute on point (X i, S i ) Compare resulting state and output with specification Execute on input X 0 to initialize ( reset ) state to S 0 Check S 0 and output against specification For i = 1,2,3,...,N: Choose input X i Execute on input X i (state is S i 1 ) Compare result state S i and output with specification

State Sampling vs. Input Sequences Systematic state sampling Random input sequences 4 3 4 3 Output 2 1 Output 2 1 0 0-1 -8-6 -4-2 0 2 4 Input 6 8 0 2 4 6 8 10 Input State -1-8 -6-4 -2 0 2 4 Input 6 8 0 2 4 6 8 10 Input State

State Sampling vs. Input Sequences Systematic state sampling Random input sequences 4 3 4 3 Output 2 1 Output 2 1 0 0-1 -8-6 -4-2 0 2 4 Input 6 8 0 2 4 6 8 10 Input State -1-8 -6-4 -2 0 2 4 Input 6 8 0 2 4 6 8 10 Input State Sampling infeasible states: Wastes scarce testing time Distorts the real behavior Hides unexpected real states Worst case: specified states are infeasible

The Internal Profile Problem Each component distorts the profile it receives

The Internal Profile Problem Each component distorts the profile it receives For the two sawtooth components in series: 0.12 relative frequency 0.1 0.08 0.06 0.04 0.02 uniform profile [9.6, 10.0) [9.2, 9.6) [8.8, 9.2) [8.3, 8.8) [7.9, 8.3) [7.5, 7.9) [7.1, 7.5) [6.7, 7.1) [6.2, 6.7) [5.8, 6.2) [5.4, 5.8) [5.0, 5.4) [4.6, 5.0) [4.2, 4.6) [3.8, 4.2) [3.3, 3.8) [2.9, 3.3) [2.5, 2.9) [2.1, 2.5) [1.7, 2.1) [1.2, 1.7) [0.8, 1.2) [0.4, 0.8) [0.0, 0.4) 0 subdomains of 2nd component in series

The Internal Profile Problem Each component distorts the profile it receives For the two sawtooth components in series: relative frequency 40% variation 7% variation subdomains of 2nd component in series [5,5.4) [5.31,5.36) The same thing happens within a subdomain

Design Rules Design Rule 1 Check calculated system profiles against component test profiles Derived Rule 1-1 Don t use a general-purpose component for a few specific values

Design Rules Design Rule 4 Group state values within as few components as possible don t create cross-product states Derived Rule 4-1 Group all modes (preferences) in a control component; test all combinations

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog)

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1 3 Synthesize system using CAD tools

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1 3 Synthesize system using CAD tools 4 Compare internal profiles predicted in 3 with those used in 1

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1 3 Synthesize system using CAD tools 4 Compare internal profiles predicted in 3 with those used in 1 5 Repeat 1 4 until profiles are similar

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1 3 Synthesize system using CAD tools 4 Compare internal profiles predicted in 3 with those used in 1 5 Repeat 1 4 until profiles are similar 6 Verify system against specification using predictions of 3

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1 3 Synthesize system using CAD tools 4 Compare internal profiles predicted in 3 with those used in 1 5 Repeat 1 4 until profiles are similar 6 Verify system against specification using predictions of 3 That s what the other engineers do...

A New Component-based Development Scheme 1 Develop and test components quantitative descriptions (or get quantitative descriptions from component catalog) 2 Design system using component descriptions from 1 3 Synthesize system using CAD tools 4 Compare internal profiles predicted in 3 with those used in 1 5 Repeat 1 4 until profiles are similar 6 Verify system against specification using predictions of 3 CAD Calculation 3 is much faster and easier than system testing

Summary of the Talk Questions What can unit testing do in principle? For what kind of code does unit testing work? Background Unit testing here and there Software components are nice units Component-based software development (CBSD) Subdomain testing tools to synthesize CB systems Results Pitfalls of component testing in CBSD Design rules in aid of component testing A new development/testing scheme