SIAM Computational Science and Engineering1 10 February 20031 Components for Scientific Computing: An Introduction David E. Bernholdt Computer Science.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

COM vs. CORBA.
Alternate Software Development Methodologies
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 3 – Building.
CIM2564 Introduction to Development Frameworks 1 Overview of a Development Framework Topic 1.
Automated Analysis and Code Generation for Domain-Specific Models George Edwards Center for Systems and Software Engineering University of Southern California.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
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.
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.
© Fujitsu Laboratories of Europe 2009 HPC and Chaste: Towards Real-Time Simulation 24 March
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 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.
CCA Common Component Architecture CCA Forum Tutorial Working Group Components for Scientific.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
SOFTWARE DESIGN.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to Components.
4.2.1 Programming Models Technology drivers – Node count, scale of parallelism within the node – Heterogeneity – Complex memory hierarchies – Failure rates.
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)
Center for Component Technology for Terascale Simulation Software CCA is about: Enhancing Programmer Productivity without sacrificing performance. Supporting.
An Introduction to Software Engineering. Communication Systems.
1 Introduction to Software Engineering Lecture 1.
SCIRun and SPA integration status Steven G. Parker Ayla Khan Oscar Barney.
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
Introduction to Software Engineering. Why SE? Software crisis manifested itself in several ways [1]: ◦ Project running over-time. ◦ Project running over-budget.
Presented by An Overview of the Common Component Architecture (CCA) The CCA Forum and the Center for Technology for Advanced Scientific Component Software.
1 UNIT –II Architecting Web Service. 2 Why SOA? – business point of view  Information Technology (IT) workers face many challenges, including: Limited.
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.
CCA Common Component Architecture CCA Forum Tutorial Working Group Welcome to the Common Component Architecture Tutorial.
Enabling Self-management of Component-based High-performance Scientific Applications Hua (Maria) Liu and Manish Parashar The Applied Software Systems Laboratory.
CCA Common Component Architecture CCA Forum Tutorial Working Group CCA Status and Plans.
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Software Engineering Jon Walker. What is Software Engineering? Why do we call it Software Engineering? Why not just call it programming or software development?
CCA Common Component Architecture CCA Forum Tutorial Working Group An Overview of Components.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
1 Craig Rasmussen Advanced Computing Laboratory Los Alamos National Laboratory Introduction to Object- and Component-Oriented Programming.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
C OMPUTATIONAL R ESEARCH D IVISION 1 Defining Software Requirements for Scientific Computing Phillip Colella Applied Numerical Algorithms Group Lawrence.
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component Application.
CCA Common Component Architecture CCA Forum Tutorial Working Group Writing Components.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
1/30/2003 Los Alamos National Laboratory1 A Migration Framework for Legacy Scientific Applications  Current tendency: monolithic architectures large,
CCA Common Component Architecture CCA Forum Tutorial Working Group A Simple CCA Component.
Performance-Driven Interface Contract Enforcement for Scientific Components 10th International Symposium on Component-Based Software Engineering Medford,
A service Oriented Architecture & Web Service Technology.
Introduction to Components
Information Systems Development
Classifications of Software Requirements
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
SOFTWARE DESIGN AND ARCHITECTURE
Distribution and components
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Component Based Software Engineering
Service-centric Software Engineering
An Introduction to Software Architecture
Introduction to Pattern Oriented Analysis and Design (POAD)
Automated Analysis and Code Generation for Domain-Specific Models
Presentation transcript:

SIAM Computational Science and Engineering1 10 February Components for Scientific Computing: An Introduction David E. Bernholdt Computer Science and Mathematics Division Oak Ridge National Laboratory Research supported by the Computer Science and Mathematics Division of Oak Ridge National Laboratory, managed by UT-Battelle, LLC for the US Dept. of Energy under contract DE-AC-05-00OR22725

SIAM Computational Science and Engineering210 February 2003 Goal of This Talk 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 Not to tout a particular component environment

SIAM Computational Science and Engineering310 February 2003 Modern Scientific Software Engineering Challenges Productivity –Time to first solution (prototyping) –Time to solution (“production”) –Software infrastructure requirements Complexity –Increasingly sophisticated models –Model coupling – multi-scale, multi-physics, etc. –“Interdisciplinarity” Performance –Increasingly complex algorithms –Increasingly complex computers –Increasingly demanding applications

SIAM Computational Science and Engineering410 February 2003 Some Observations About Software… “Our failure to master the complexity of software results in projects that are late, over budget, and deficient in their stated requirements.” [Booch] “The complexity of software is an essential property, not an accidental one.” [Brooks] “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]

SIAM Computational Science and Engineering510 February 2003 A Random Example An example of what can lead to a crisis in software: 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 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!).

SIAM Computational Science and Engineering610 February 2003 More Observations… “The best software is code you don’t have to write” [Jobs] “Intracomponent linkages are generally stronger than intercomponent linkages.” [Simon] “Frequently, complexity takes the form of a hierarchy.” [Courtois]

SIAM Computational Science and Engineering710 February 2003 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” –Facilitates reuse and interoperability of components 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

SIAM Computational Science and Engineering810 February 2003 What are Components? No universally accepted definition…yet A unit of software deployment/reuse –i.e. has interesting functionality –Ideally, functionality someone else might be able to (re)use 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) Can be composed with other components –“Plug and play” model to build applications –Composition based on interfaces

SIAM Computational Science and Engineering910 February 2003 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

SIAM Computational Science and Engineering1010 February 2003 A Simple Example: Numerical Integration Components FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort

SIAM Computational Science and Engineering1110 February 2003 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

SIAM Computational Science and Engineering1210 February 2003 Another Application… FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort

SIAM Computational Science and Engineering1310 February 2003 Application 3… FunctionPort MidpointIntegrator IntegratorPort FunctionPort MonteCarloIntegrator IntegratorPort RandomGeneratorPort IntegratorPort Driver GoPort NonlinearFunction FunctionPort LinearFunction FunctionPort RandomGenerator RandomGeneratorPort PiFunction FunctionPort

SIAM Computational Science and Engineering1410 February 2003 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

SIAM Computational Science and Engineering1510 February 2003 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 Phases may be intermixed Steps may be under human or software control

SIAM Computational Science and Engineering1610 February 2003 Libraries vs Components Component environments rigorously enforce interfaces Can have several versions of a component loaded into a single application Component needs add’l code to interact w/ framework –Constructor and destructor methods –Tell framework what ports it uses and provides –Environmental queries Invoking methods on other components typically requires modifications to “library” code Integrator Integrator library code (modified) Framework interaction code (new)

SIAM Computational Science and Engineering1710 February 2003 Objects vs Components You can build components out of object classes –(or out of Fortran procedures) But a component is more that just an object A component only exists in the context of a component standard and the environment it defines (framework)

SIAM Computational Science and Engineering1810 February 2003 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

SIAM Computational Science and Engineering1910 February 2003 Designing for Reuse 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

SIAM Computational Science and Engineering2010 February 2003 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?

SIAM Computational Science and Engineering2110 February 2003 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

SIAM Computational Science and Engineering2210 February 2003 Domain-Specific vs General Component Models Domain-specific 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 Relatively common General Provide the infrastructure to hook components together –Domain-specific infrastructure can be built as more components Usable in many domains –More opportunities for reuse Relatively rare at present

SIAM Computational Science and Engineering2310 February 2003 Summary Components are a software engineering tool to help address software productivity and complexity Important concepts: components, interfaces, frameworks, composibility, reuse Scientific HPC imposes special demands on component environments –Which commodity tools may have trouble with Scientific component environments come in “domain specific” and “general” flavors

SIAM Computational Science and Engineering2410 February 2003 Coming Attractions Monday (MS21) CCA-Component Based Simulation of Flows on Adaptively Refined Structured Meshes The BioPSE Software System: Releasing and Supporting an Open Source Problem Solving Environment Creating Grid-Enabled Applications through Cactus and GridLab Tuesday (MS45) High Throughput Genome Analysis Environment A Migration Framework for Legacy Scientific Applicatications yourSky as a Prototype for the National Virtual Observatory Component Architecture A Common Component Architecture (CCA) Study 3:15-5:15 pm in Garden Room A