CCA Common Component Architecture CCA Forum Tutorial Working Group Components for Scientific.

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Agenda Definitions Evolution of Programming Languages and Personal Computers The C Language.
Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Framework is l Reusable Code, often domain specific (GUI, Net, Web, etc) l expressed as l a set of classes and l the way objects in those classes collaborate.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 3 – Building.
Component Patterns – Architecture and Applications with EJB copyright © 2001, MATHEMA AG Component Patterns Architecture and Applications with EJB JavaForum.
CIM2564 Introduction to Development Frameworks 1 Overview of a Development Framework Topic 1.
A Brief Introduction to Software Design and Design Quality By Laura Leventhal.
Software Reuse Building software from reusable components Objectives
Testing Components in the Context of a System CMSC 737 Fall 2006 Sharath Srinivas.
Building software from reusable components.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
Domain-Specific Software Engineering Alex Adamec.
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
Center for Component Technology for Terascale Simulation Software (aka Common Component Architecture) (aka CCA) Rob Armstrong & the CCA Working Group Sandia.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
Center for Component Technology for Terascale Simulation Software 122 June 2002Workshop on Performance Optimization via High Level Languages and Libraries.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Introduction to Object-oriented programming and software development Lecture 1.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
A Hybrid Decomposition Scheme for Building Scientific Workflows Wei Lu Indiana University.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
UNIT – II ARCHITECTING WEB SERVICES. WHAT ARE WEB SERVICES ? Web Services are loosely coupled, contracted components that communicate via XML-based interfaces.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Software Component Technology and Component Tracing CSC532 Presentation Developed & Presented by Feifei Xu.
CCA Common Component Architecture Manoj Krishnan Pacific Northwest National Laboratory MCMD Programming and Implementation Issues.
Software Requirements Engineering CSE 305 Lecture-2.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
SOFTWARE DESIGN.
SIAM Computational Science and Engineering1 10 February Components for Scientific Computing: An Introduction David E. Bernholdt Computer Science.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to Components.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Patterns and Reuse. Patterns Reuse of Analysis and Design.
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
Components for Beam Dynamics Douglas R. Dechow, Tech-X Lois Curfman McInnes, ANL Boyana Norris, ANL With thanks to the Common Component Architecture (CCA)
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
SCIRun and SPA integration status Steven G. Parker Ayla Khan Oscar Barney.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
OOAD Unit – I OBJECT-ORIENTED ANALYSIS AND DESIGN With applications
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
CCA Common Component Architecture CCA Forum Tutorial Working Group An Overview of Components.
OOP (Object Oriented Programming) Lecture 1. Why a new paradigm is needed? Complexity Five attributes of complex systems –Frequently, complexity takes.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
Lecture 21: Component-Based Software Engineering
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component Application.
Introduction to Service Orientation MIS 181.9: Service Oriented Architecture 2 nd Semester,
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component.
A service Oriented Architecture & Web Service Technology.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Object Oriented Systems Design
CompSci 280 S Introduction to Software Development
Object Oriented Programming
Introduction to Components
Distribution and components
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Tools for Composing and Deploying Grid Middleware Web Services
An Introduction to Software Architecture
What Is Good Software(Program)?
Presentation transcript:

CCA Common Component Architecture CCA Forum Tutorial Working Group Components for Scientific Computing: An Introduction

CCA Common Component Architecture Introduction to Components 2 Goals of This Module Introduce basic concepts and vocabulary of component-based software engineering Highlight the special demands of high-performance scientific computing on component environments Provide a unifying context for the remaining talks –And to consider what components might do for your applications

CCA Common Component Architecture Introduction to Components 3 Motivation: Modern Scientific Software Engineering Challenges Productivity –Time to first solution (prototyping) –Time to solution (“production”) –Software infrastructure requirements (“other stuff needed”) Complexity –Increasingly sophisticated models –Model coupling – multi-scale, multi-physics, etc. –“Interdisciplinarity” Performance –Increasingly complex algorithms –Increasingly complex computers –Increasingly demanding applications

CCA Common Component Architecture Introduction to Components 4 Motivation: For Library Developers People want to use your software, but need wrappers in languages you don’t support –Many component models provide language interoperability Discussions about standardizing interfaces are often sidetracked into implementation issues –Components separate interfaces from implementation You want users to stick to your published interface and prevent them from stumbling (prying) into the implementation details –Most component models actively enforce the separation

CCA Common Component Architecture Introduction to Components 5 Motivation: For Application Developers and Users You have difficulty managing multiple third-party libraries in your code You (want to) use more than two languages in your application Your code is long-lived and different pieces evolve at different rates You want to be able to swap competing implementations of the same idea and test without modifying any of your code You want to compose your application with some other(s) that weren’t originally designed to be combined

CCA Common Component Architecture Introduction to Components 6 Some Observations About Software… “The complexity of software is an essential property, not an accidental one.” [Brooks] –We can’t get rid of complexity “Our failure to master the complexity of software results in projects that are late, over budget, and deficient in their stated requirements.” [Booch] –We must find ways to manage it

CCA Common Component Architecture Introduction to Components 7 More Observations… “A complex system that works is invariably found to have evolved from a simple system that worked… A complex system designed from scratch never works and cannot be patched up to make it work.” [Gall] –Build up from simpler pieces “The best software is code you don’t have to write” [Jobs] –Reuse code wherever possible

CCA Common Component Architecture Introduction to Components 8 Not All Complexity is “Essential” An example of how typical development practices can exacerbate the complexity of software development… At least 41 different Fast Fourier Transform (FFT) libraries: –see, Many (if not all) have different interfaces –different procedure names and different input and output parameters Example: SUBROUTINE FOUR1(DATA, NN, ISIGN) –“Replaces DATA by its discrete Fourier transform (if ISIGN is input as 1) or replaces DATA by NN times its inverse discrete Fourier transform (if ISIGN is input as -1). DATA is a complex array of length NN or, equivalently, a real array of length 2*NN. NN MUST be an integer power of 2 (this is not checked for!).”

CCA Common Component Architecture Introduction to Components 9 Component-Based Software Engineering CBSE methodology is emerging, especially from business and internet areas Software productivity –Provides a “plug and play” application development environment –Many components available “off the shelf” –Abstract interfaces facilitate reuse and interoperability of software Software complexity –Components encapsulate much complexity into “black boxes” –Plug and play approach simplifies applications –Model coupling is natural in component-based approach Software performance (indirect) –Plug and play approach and rich “off the shelf” component library simplify changes to accommodate different platforms

CCA Common Component Architecture Introduction to Components 10 A Simple Example: Numerical Integration Components FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort Interoperable components (provide same interfaces)

CCA Common Component Architecture Introduction to Components 11 FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort An Application Built from the Provided Components Hides compexity: Driver doesn’t care that MonteCarloIntegrator needs a random number generator

CCA Common Component Architecture Introduction to Components 12 Another Application… FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort

CCA Common Component Architecture Introduction to Components 13 Application 3… FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort

CCA Common Component Architecture Introduction to Components 14 And Many More… FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort Dashed lines indicate alternate connections Create different applications in "plug-and-play" fashion

CCA Common Component Architecture Introduction to Components 15 What are Components? No universally accepted definition…yet A unit of software development/deployment/reuse –i.e. has interesting functionality –Ideally, functionality someone else might be able to (re)use –Can be developed independently of other components Interacts with the outside world only through well- defined interfaces –Implementation is opaque to the outside world –Components may maintain state information –But external access to state info must be through an interface (not a common block) –File-based interactions can be recast using an “I/O component” Can be composed with other components –“Plug and play” model to build applications –Composition based on interfaces

CCA Common Component Architecture Introduction to Components 16 What is a Component Architecture? A set of standards that allows: –Multiple groups to write units of software (components)… –And have confidence that their components will work with other components written in the same architecture These standards define… –The rights and responsibilities of a component –How components express their interfaces –The environment in which are composed to form an application and executed (framework) –The rights and responsibilities of the framework

CCA Common Component Architecture Introduction to Components 17 Interfaces, Interoperability, and Reuse Interfaces define how components interact… Therefore interfaces are key to interoperability and reuse of components In many cases, “any old interface” will do, but… General plug and play interoperability requires multiple implementations providing the same interface Reuse of components occurs when they provide interfaces (functionality) needed in multiple applications

CCA Common Component Architecture Introduction to Components 18 Designing for Reuse, Implications Designing for interoperability and reuse requires “standard” interfaces –Typically domain-specific –“Standard” need not imply a formal process, may mean “widely used” Generally means collaborating with others Higher initial development cost (amortized over multiple uses) Reuse implies longer-lived code –thoroughly tested –highly optimized –improved support for multiple platforms

CCA Common Component Architecture Introduction to Components 19 Typical Component Lifecycle Composition Phase –Component is instantiated in framework –Component interfaces are connected appropriately Execution Phase –Code in components uses functions provided by another component Decomposition Phase –Connections between component interfaces may be broken –Component may be destroyed In an application, individual components may be in different phases at different times Steps may be under human or software control

CCA Common Component Architecture Introduction to Components 20 Relationships: Components, Objects, and Libraries Components are typically discussed as objects or collections of objects –Interfaces generally designed in OO terms, but… –Component internals need not be OO –OO languages are not required Component environments can enforce the use of published interfaces (prevent access to internals) –Libraries can not It is possible to load several instances (versions) of a component in a single application –Impossible with libraries Components must include some code to interface with the framework/component environment –Libraries and objects do not

CCA Common Component Architecture Introduction to Components 21 Domain-Specific Frameworks vs Generic Component Architectures Domain-Specific Often known as “frameworks” Provide a significant software infrastructure to support applications in a given domain –Often attempts to generalize an existing large application Often hard to adapt to use outside the original domain –Tend to assume a particular structure/workflow for application Relatively common Generic Provide the infrastructure to hook components together –Domain-specific infrastructure can be built as components Usable in many domains –Few assumptions about application –More opportunities for reuse Better supports model coupling across traditional domain boundaries Relatively rare at present –Commodity component models often not so useful in HPC scientific context

CCA Common Component Architecture Introduction to Components 22 Special Needs of Scientific HPC Support for legacy software –How much change required for component environment? Performance is important –What overheads are imposed by the component environment? Both parallel and distributed computing are important –What approaches does the component model support? –What constraints are imposed? –What are the performance costs? Support for languages, data types, and platforms –Fortran? –Complex numbers? Arrays? (as first-class objects) –Is it available on my parallel computer?

CCA Common Component Architecture Introduction to Components 23 Commodity Component Models CORBA, COM, Enterprise JavaBeans –Arise from business/internet software world Componentization requirements can be high Can impose significant performance overheads No recognition of tightly-coupled parallelism May be platform specific May have language constraints May not support common scientific data types

CCA Common Component Architecture Introduction to Components 24 The “Sociology” of Components Components need to be shared to be truly useful –Sharing can be at several levels Source, binaries, remote service –Various models possible for intellectual property/licensing Components with different IP constraints can be mixed in a single application Peer component models facilitate collaboration of groups on software development –Group decides overall architecture and interfaces –Individuals/sub-groups create individual components

CCA Common Component Architecture Introduction to Components 25 Who Writes Components? “Everyone” involved in creating an application can/should create components –Domain scientists as well as computer scientists and applied mathematicians –Most will also use components written by other groups Allows developers to focus on their interest/specialty –Get other capabilities via reuse of other’s components Sharing components within scientific domain allows everyone to be more productive –Reuse instead of reinvention As a unit of publication, a well-written and –tested component is like a high-quality library –Should receive same degree of recognition –Often a more appropriate unit of publication/recognition than an entire application code

CCA Common Component Architecture Introduction to Components 26 Summary Components are a software engineering tool to help address software productivity and complexity Important concepts: components, interfaces, frameworks, composability, reuse Scientific component environments come in “domain specific” and “generic” flavors Scientific HPC imposes special demands on component environments –Which commodity tools may have trouble with