Software Component Synthesis Tools

Similar documents
Hey there, I m (name) and today I m gonna talk to you about rate of change and slope.

Abstractions and Reality

Conditionals: More Fun with If-Then and Logic Operators (Project 5)

Instructions on creating CTL files for PAL pin placement

Java Program Structure and Eclipse. Overview. Eclipse Projects and Project Structure. COMP 210: Object-Oriented Programming Lecture Notes 1

1. Introduction EE108A. Lab 1: Combinational Logic: Extension of the Tic Tac Toe Game

Introduction to the IDE

1001ICT Introduction To Programming Lecture Notes

Computing and compilers

Templating functions. Comp Sci 1570 Introduction to C++ Administrative notes. Review. Templates. Compiler processing. Functions Overloading

You might already know that tables are organized into vertical columns and horizontal rows.

Moving from FrameMaker to Blaze: Best Practices

Software Development. Integrated Software Environment

Is There Such a Thing as Software Reliability?

AP Computer Science Summer Assignment (updated 5/29/2018) DUE : Sept. 4, 2018

SKILL AREA 304: Review Programming Language Concept. Computer Programming (YPG)

Game keystrokes or Calculates how fast and moves a cartoon Joystick movements how far to move a cartoon figure on screen figure on screen

Object-Oriented Programming in Objective-C

GRAPHIC #1. Open . Save

Exercise 6 - Addressing a Message

Intro to Python Programming

Orifice Flow Meter

Construction: version control and system building

Conference Paper excerpt From the

Welcome to Python! If you re the type of person who wants to know

Introducing Computer Programming

Chapter 2: Operating-System Structures

World Lit. Weebly Web Design 101

LECTURE/ STUDY NOTES ON C

The first program: Little Crab

VUMC/Microsoft Online Access Tutorial

CS 177 Recitation. Week 1 Intro to Java

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes

by Pearson Education, Inc. All Rights Reserved.

Pseudo Code and Flow Charts. Chapter 1 Lesson 2

Part I Components and Component-based Development

Lesson 1A - First Java Program HELLO WORLD With DEBUGGING examples. By John B. Owen All rights reserved 2011, revised 2015

Fundamentals of Programming. Lecture 1: Introduction to C Programming

and 32 bit for 32 bit. If you don t pay attention to this, there will be unexpected behavior in the ISE software and thing may not work properly!

Introduction to Verilog. Mitch Trope EECS 240 Spring 2004

Yup, left blank on purpose. You can use it to draw whatever you want :-)

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Compiler Design

Decisions, Decisions. Testing, testing C H A P T E R 7

Introduction to UNIX. Logging in. Basic System Architecture 10/7/10. most systems have graphical login on Linux machines

Chapter 2. Operating-System Structures

Basic Computer Skills: An Overview

Chapter 2: Operating-System Structures

PRODUCTION PHASES CHANGES

Operating System Services. User Services. System Operation Services. User Operating System Interface - CLI. A View of Operating System Services

Introduction to K200 Part 1: Getting to Know the STC Computer By Margaret Lion

So read this manual word for word and perform the instructions step-by-step. This will prepare you for your work in K200.

Midterm 2. 7] Explain in your own words the concept of a handle class and how it s implemented in C++: What s wrong with this answer?

transitions 5. inserting

SEER AKADEMI LINUX PROGRAMMING AND SCRIPTINGPERL 7

Lab 4: Interrupts and Realtime

int $0x32 // call interrupt number 50

icancloud Quick Installation Guide

Slide Set 1. for ENCM 339 Fall Steve Norman, PhD, PEng. Electrical & Computer Engineering Schulich School of Engineering University of Calgary

1. The Normal Distribution, continued

You ve probably used your favorite Web browser for a long time. Your

CPE 101. Overview. Programming vs. Cooking. Key Definitions/Concepts B-1

MULTIPLE OPERAND ADDITION. Multioperand Addition

Confidence Intervals. Dennis Sun Data 301

Business Hacks to grow your list with Social Media Marketing

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

Introduction. A Brief Description of Our Journey

TDDC88 Lab 4 Software Configuration Management

Hacking FlowJo VX. 42 Time-Saving FlowJo Shortcuts To Help You Get Your Data Published No Matter What Flow Cytometer It Came From

ITC213: STRUCTURED PROGRAMMING. Bhaskar Shrestha National College of Computer Studies Tribhuvan University

Control Structures. Code can be purely arithmetic assignments. At some point we will need some kind of control or decision making process to occur

Introduction to Computer Science I

In math, the rate of change is called the slope and is often described by the ratio rise

What will you learn: A better understanding of 3 D space How to use keyframes Designing and planning an animation How to render animations

Application Development in ios 7

Conditionals: More Fun with If-Then and Logic Operators

THINGS YOU NEED TO KNOW ABOUT USER DOCUMENTATION DOCUMENTATION BEST PRACTICES

CSE P567 - Winter 2010 Lab 1 Introduction to FGPA CAD Tools

Lecture 1: Overview

Construction: version control and system building

Automatic generation of LL(1) parsers

[Video] and so on... Problems that require a function definition can be phrased as a word problem such as the following:

How To Get Your Word Document. Ready For Your Editor

Contents. Slide Set 1. About these slides. Outline of Slide Set 1. Typographical conventions: Italics. Typographical conventions. About these slides

Test Driven Development (TDD)

The following is an excerpt from Scott Meyers new book, Effective C++, Third Edition: 55 Specific Ways to Improve Your Programs and Designs.

Memory Management. COMP755 Advanced Operating Systems

Getting Started Guide XC9010 Raspberry Pi Starter Kit

COMP1007 Principles of Programming

Software Tools. Scott Klemmer Autumn 2009

CS 32. Lecture 5: Templates

Lecture Notes for 04/04/06: UNTRUSTED CODE Fatima Zarinni.

COMP Summer 2015 (A01) Jim (James) Young jimyoung.ca

BST Deletion. First, we need to find the value which is easy because we can just use the method we developed for BST_Search.

Some jobs are listed in local classified ads, like the ones found in the newspaper.

Reliable programming

Diocese of Wollongong MS Exchange

COMP 150-IDS: Internet Scale Distributed Systems (Spring 2016) What s in a name?

Making ecards Can Be Fun!

~~ Read Deep Learning in Python: Master Data Science and Machine Learning with Modern Neural Networks written in Python... how to download books

PYTHON YEAR 10 RESOURCE. Practical 01: Printing to the Shell KS3. Integrated Development Environment

Transcription:

Software Component Synthesis Tools Dick Hamlet Department of Computer Science Portland, OR 97207 USA hamlet@cs.pdx.edu Supported by NSF CCR-0112654 and SFI E.T.S. Walton Fellowship

From a Modern Beastiary THE GRIFFIN is a fabulous animal with the body of a lion and the head of an eagle. The griffin is powerful and fierce because of its parts. It will tear to pieces any human being it comes across. Software developers should pay attention to this, because software also may tear people to pieces. Software made from components has the properties of its parts.

NSFAQ What are software tools? (Who builds them?) What is a software component? (And why bother?) How is software tested? How are components combined into systems? (Do the systems work?)

Software Development Tools TOOL: An instrument for performing mechanical operations; anything used like a tool to effect some result. Hence, programs that are used to help develop other programs. For example, an editor, a compiler, a linker, etc. This talk is about Perl programs (mostly written by high school interns!) that help develop component-based software systems.

Software Components: What and Why Definition: A software component is an executable program that obeys a set of conventions for its interface with other programs. Rationale: Components can be developed (and tested) in isolation, then later assembled into systems. System code is easier to understand because its statements are its components. If the components work properly, the system is more likely to work, too.

Subdomain Testing Testing a component: component

Subdomain Testing Testing a component: component Subdomain testing it: component

Testing a Simple Component: Bell Component Bell measurement Gaussian, µ = 6.6,σ = 2.7, 142 equispaced tests: Output 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4 6 8 10 12 Input

Testing a Simple Component: Bell Approximation measurements (Average of 3 samples in each of 48 subdomains): Output 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4 6 8 10 12 Input showing subdomains R-M-S error ranges from 0.1% to 4.3% by subdomain

Composing Components S A B

Composing Components S A B Test Test Predict

Tests Don t Compose Testing two components A and B separately: comp A comp B

Tests Don t Compose Testing two components A and B separately: comp A comp B

Tests Don t Compose Testing two components A and B separately: comp A comp B Series combination doesn t match at the interface comp A comp B

Subdomains to the Rescue! Subdomain testing two components A and B separately: comp A comp B

Subdomains to the Rescue! Subdomain testing two components A and B separately: comp A comp B

Subdomains to the Rescue! Subdomain testing two components A and B separately: comp A comp B Never an interface mismatch! comp A comp B

You remember Bell : Output Example: Chop; Bell 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4 6 8 10 12 Input

Example: Chop; Bell Output 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 2 4 6 8 10 12 Input showing subdomains

Component Chop measurement: Chopping function, 142 equispaced tests: 12 Example: Chop; Bell 10 8 Output 6 4 2 0 0 2 4 6 8 10 12 Input

Approximation measurements (3 samples in each of 48 subdomains): 12 Example: Chop; Bell 10 8 Output 6 4 2 0 0 2 4 6 8 10 12 Input showing subdomains R-M-S error ranges from 0 to 1.1% by subdomain

Prediction for system Chop; Bell: Output 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 Example: Chop; Bell 0 2 4 6 8 10 12 Input showing subdomains Synthesis is fast (5X execution) R-M-S prediction error 0.1% 4.5%

Tool-supported Component-based Development 1 Develop components Repository Write component code Test code to specification Choose good subdomains Approximate with subdomain test Key: (Blue) Human, by-hand (Red slant) Tools, automatic

Tool-supported Component-based Development 1 Develop components Repository Write component code Test code to specification Choose good subdomains Approximate with subdomain test 2 Design system Describe system and get component approximations Synthesize system approximation Compare with system specification Key: (Blue) Human, by-hand (Red slant) Tools, automatic

Tool-supported Component-based Development 1 Develop components Repository Write component code Test code to specification Choose good subdomains Approximate with subdomain test 2 Design system Describe system and get component approximations Synthesize system approximation Compare with system specification 3 Buy components, build system Test system against specification Key: (Blue) Human, by-hand (Red slant) Tools, automatic

Programming in Computer Science Research These tools were developed over about 10 years. High school apprentices did a lot of the programming. The research resulted in the publication of about 6 conference papers, 2 journal papers, and a monograph, about one publication/year low productivity! Programming is fun, but don t give up your day job...

More Information Get the free tools: www.cs.pdx.edu/ hamlet/ components.html Read the book: