CCA Common Component Architecture CCA Forum Tutorial Working Group Welcome to the Common Component Architecture Tutorial.

Slides:



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

COP th Lecture September 26, 2005 COP 4009 Component-Based Software Engineering Fall 2005 Instructor: Masoud Sadjadi
Software Engineering and Design Principles Chapter 1.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
Introduction to Software Architecture. What is Software Architecture?  It is the body of methods and techniques that help us to manage the complexities.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Course Instructor: Aisha Azeem
Component-Based Software Engineering CSM-15 Paul Krause.
Software Architecture in Practice (3rd Ed) Introduction
COMPUTER SCIENCE I C++ INTRODUCTION
Center for Component Technology for Terascale Simulation Software (aka Common Component Architecture) (aka CCA) Rob Armstrong & the CCA Working Group Sandia.
Abstraction IS 101Y/CMSC 101 Computational Thinking and Design Tuesday, September 17, 2013 Carolyn Seaman University of Maryland, Baltimore County.
Java and C++, The Difference An introduction Unit - 00.
Center for Component Technology for Terascale Simulation Software 122 June 2002Workshop on Performance Optimization via High Level Languages and Libraries.
OpenAlea An OpenSource platform for plant modeling C. Pradal, S. Dufour-Kowalski, F. Boudon, C. Fournier, C. Godin.
GKK 1 CASC Recommended Viewing: Since this is a pictorial presentation, I’ve gone through the effort to type up what I normally say in the “notes” section.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
A Hybrid Decomposition Scheme for Building Scientific Workflows Wei Lu Indiana University.
Copyright © 2012 Pearson Education, Inc. Chapter 1: Introduction to Computers and Programming 1.
An Introduction to Software Architecture
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1: Introduction to Computers and Programming.
Software Models (Cont.) 9/22/2015ICS 413 – Software Engineering1 -Component-based software engineering -Formal Development Model.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
CCA Common Component Architecture CCA Forum Tutorial Working Group Components for Scientific.
Modular Programming. Modular Programming (1/6) Modular programming  Goes hand-in-hand with stepwise refinement and incremental development  Makes the.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
CCA Common Component Architecture CCA Forum Tutorial Working Group Welcome to the Common.
Introduction To System Analysis and Design
CCA Common Component Architecture CCA Forum Tutorial Working Group Contributors: Language Interoperability Using Gary.
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
SIAM Computational Science and Engineering1 10 February Components for Scientific Computing: An Introduction David E. Bernholdt Computer Science.
CCA Common Component Architecture CCA Forum Tutorial Working Group Welcome to the Common.
CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to Components.
Large Scale Software Systems Derived from Dr. Fawcett’s Notes Phil Pratt-Szeliga Fall 2010.
SE: CHAPTER 7 Writing The Program
Chapter 2 Introducing Interfaces Summary prepared by Kirk Scott.
Grid Computing Research Lab SUNY Binghamton 1 XCAT-C++: A High Performance Distributed CCA Framework Madhu Govindaraju.
Components for Beam Dynamics Douglas R. Dechow, Tech-X Lois Curfman McInnes, ANL Boyana Norris, ANL With thanks to the Common Component Architecture (CCA)
SAP Participants: Douglas Dechow, Tech-X Corporation Lois Curfman McInnes, Boyana Norris, ANL Physics Collaborators: James Amundson, Panagiotis Spentzouris,
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Center for Component Technology for Terascale Simulation Software CCA is about: Enhancing Programmer Productivity without sacrificing performance. Supporting.
SCIRun and SPA integration status Steven G. Parker Ayla Khan Oscar Barney.
Presented by An Overview of the Common Component Architecture (CCA) The CCA Forum and the Center for Technology for Advanced Scientific Component Software.
OOAD Unit – I OBJECT-ORIENTED ANALYSIS AND DESIGN With applications
Scott Kohn with Tammy Dahlgren, Tom Epperly, and Gary Kumfert Center for Applied Scientific Computing Lawrence Livermore National Laboratory October 2,
Component Oriented Programming 1 Introduction to COP.
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 CCA Status and Plans.
Chapter 3 Top-Down Design with Functions Part II J. H. Wang ( 王正豪 ), Ph. D. Assistant Professor Dept. Computer Science and Information Engineering National.
Digital Libraries1 David Rashty. Digital Libraries2 “A library is an arsenal of liberty” Anonymous.
CCA Common Component Architecture CCA Forum Tutorial Working Group An Overview of Components.
A Pictorial Introduction to Components in Scientific Computing.
117 December 2001Pacific Northwest National Laboratory Component-Based Software for High-Performance Computing: An Introduction to the Common Component.
1 Craig Rasmussen Advanced Computing Laboratory Los Alamos National Laboratory Introduction to Object- and Component-Oriented Programming.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
From the customer’s perspective the SRS is: How smart people are going to solve the problem that was stated in the System Spec. A “contract”, more or less.
Center for Component Technology for Terascale Simulation Software (CCTTSS) 110 April 2002CCA Forum, Townsend, TN CCA Status, Code Walkthroughs, and Demonstrations.
MANAGING COMPLEXITY Lecture OO01 Introduction to Object-oriented Analysis and Design Abstract Data Types.
Center for Component Technology for Terascale Simulation Software (CCTTSS) 110 April 2002CCA Forum, Townsend, TN This work has been sponsored by the Mathematics,
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
CCA Common Component Architecture CCA Forum Tutorial Working Group Common Component Architecture.
“Port Monitor”: progress & open questions Torsten Wilde and James Kohl Oak Ridge National Laboratory CCA Forum Quarterly Meeting Santa Fe, NM ~ October.
Introduction to Components
An Introduction to Software Architecture
Chapter 7 –Implementation Issues
Introduction to parallelism and the Message Passing Interface
DBOS DecisionBrain Optimization Server
Presentation transcript:

CCA Common Component Architecture CCA Forum Tutorial Working Group Welcome to the Common Component Architecture Tutorial Active Members: Rob Armstrong, David Bernholdt, Wael Elwasif, Lori Freitag, Dan Katz, Jim Kohl, Gary Kumfert, Lois Curfman McInnes, Boyana Norris, Craig Rasmussen, Jaideep Ray

2 CCA Common Component Architecture CCA Introduction Acknowledgements Thanks to all members of the CCA Forum –Originated in 1998; open to everyone interested in HPC components –See –Active CCA Forum participants include ANL - Lori Freitag, Kate Keahey, Jay Larson, Ray Loy, Lois Curfman McInnes, Boyana Norris, … Indiana University - Randall Bramley, Dennis Gannon, … JPL – Dan Katz, … LANL - Craig Rasmusse, Matt Sotille, … LLNL - Tom Epperly, Scott Kohn, Gary Kumfert, … ORNL - David Bernholdt, Wael Elwasif, Jim Kohl, Torsten Wilde, … PNNL - Jarek Nieplocha, Theresa Windus, … SNL - Rob Armstrong, Ben Allan, Curt Janssen, Jaideep Ray, … University of Utah - Steve Parker, … And others as well … Thanks to the Office of Mathematical, Information, and Computational Sciences (MICS), U.S. Department of Energy – Support of the Center for Component Technology for Terascale Simulation Software (CCTTSS), which is funded through the SciDAC Initiative CCTTSS team is a subset of the CCA Forum; leader is Rob Armstrong (SNL) See

CCA Common Component Architecture CCA Forum Tutorial Working Group Introduction to Components

4 CCA Common Component Architecture CCA Introduction Overview Why do we need components? What are components? How do we make components?

5 CCA Common Component Architecture CCA Introduction Why Components In “Components, The Movie” –Interoperability across multiple languages –Interoperability across multiple platforms –Incremental evolution of large legacy systems (esp. w/ multiple 3rd party software) Complexity

6 CCA Common Component Architecture CCA Introduction Why Components The task of the software development team is to engineer the illusion of simplicity [Booch].

7 CCA Common Component Architecture CCA Introduction Software Complexity Software crisis –“Our failure to master the complexity of software results in projects that are late, over budget, and deficient in their stated requirements” [Booch] Can’t escape it –“The complexity of software is an essential property, not an accidental one” [Brooks] Help is on the way… –“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] –“Intracomponent linkages are generally stronger than intercomponent linkages” [Simon] –“Frequently, complexity takes the form of a hierarchy” [Courtois]

8 CCA Common Component Architecture CCA Introduction The Good the Bad and the Ugly 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!).

9 CCA Common Component Architecture CCA Introduction Components Promote Reuse Components promote software reuse – “The best software is code you don’t have to write” [Steve Jobs] Reuse, through cost amortization increases software quality –thoroughly tested code –highly optimized code –improved support for multiple platforms –developer team specialization Hero programmer producing single-purpose, monolithic, tightly-coupled parallel codes Rob X

10 CCA Common Component Architecture CCA Introduction What Are Components Why do we need components? What are components? How do we make components?

11 CCA Common Component Architecture CCA Introduction What Are Components [Szyperski] A component is a binary unit of independent deployment –well separated from other components fences make good neighbors –can be deployed independently A component is a unit of third-party composition –is composable (even by physicists) –comes with clear specifications of what it requires and provides –interacts with its environment through well-defined interfaces A component has no persistent state –temporary state set only through well-defined interfaces –throw away that dependence on global data (common blocks) Similar to Java packages and Fortran 90 modules (with a little help)

12 CCA Common Component Architecture CCA Introduction What Does This Mean Once again –A component is a binary unit of independent deployment –A component is a unit of third-party composition –A component has no persistent state So what does this mean –Components are “plug and play” –Components are reusable –Component applications are evolvable

13 CCA Common Component Architecture CCA Introduction What Are Components II Components live in an environment and interact with the environment through a framework and connections with other components. Components can discover information about their environment from the framework. Components must explicitly publish what capabilities they provide. Components must explicitly publish what connections they require. Components are a runtime entity.

14 CCA Common Component Architecture CCA Introduction Components Are Different From Objects Think of a component stereo system: –You buy a new, super-cool CD player, bring it home, wire it up, turn on the power, and it works! A software component system: –You buy (or download) a new, super-fast FFT component, wire the connections, click on the go button, and it works! –(remember, a software component is a binary unit) A software class library: –You buy it, install it, do a little programming (or a lot), compile it, link it, and then run it, and hopefully it works.

15 CCA Common Component Architecture CCA Introduction Components, Different From Objects II You can build components out of object classes. But a component is more than just an object.

16 CCA Common Component Architecture CCA Introduction Pictorial Example Consumer uses Producer provides

17 CCA Common Component Architecture CCA Introduction Three Components Integrator integrate( ) RandomGenerator getRandomValue( ) Function evaluate( )

18 CCA Common Component Architecture CCA Introduction How Do We Make Components Why do we need components? What are components? How do we make components?

19 CCA Common Component Architecture CCA Introduction Interface Declaration class Integrator { virtual void integrate( double lowBound, double upBound, int count ) = 0; }; Integrator.h MODULE Integrator interface integrate module procedure integrate_Abstract end interface END MODULE Integrator.f90 Integrator integrate( )

20 CCA Common Component Architecture CCA Introduction Publish the Interface in SIDL Publish the interface –interfaces are published in SIDL (Scientific Interface Definition Language) –can’t publish in native language because of language interoperability requirement Integrator example: interface Integrator extends cca.Port { double integrate(in double lowBound, in double upBound, in int count); }

21 CCA Common Component Architecture CCA Introduction F90 Abstract Integrator Module MODULE Integrator ! ! use the MonteCarloIntegrator module for the implementation ! use MonteCarloIntegrator interface integrate module procedure integrate_Abstract end interface CONTAINS function integrate_Abstract(x0, x1, count) real(kind(1.0D0)) :: integrate_Abstract, x0, x1 integer :: count integrate_Abstract = integrate_MonteCarlo(x0, x1, count) end function integrate_Abstract END MODULE Integrator

22 CCA Common Component Architecture CCA Introduction F90 Program program Driver use Integrator print *, "Integral = ", integrate(0.0D0, 1.0D0, 1000) end program

23 CCA Common Component Architecture CCA Introduction C++ Abstract Integrator Class /** * This abstract class declares the Integrator interface. */ class Integrator { public: virtual ~Integrator() { } /** * Sets the function, which will be evaluated by the integration. */ virtual void setFunction(Function* function_to_integrate) = 0; /** * Returns the result of the integration from lowBound to upBound. * * lowBound - the beginning of the integration interval * upBound - the end of the integration interval * count - the number of integration points */ virtual double integrate(int count, double x0, double x1) = 0; };

24 CCA Common Component Architecture CCA Introduction C++ Object-Oriented Program #include #include "Function.h" #include "Integrator.h" #include "RandomGenerator.h" int main(int argc, char* argv[]) { LinearFunction* function = new LinearFunction(); UniformRandomGenerator* random = new UniformRandomGenerator(); MonteCarloIntegrator* integrator = new MonteCarloIntegrator(); integrator->setFunctionInstance(function); integrator->setRandomGeneratorInstance(random); cout integrate(100) << endl; return 0; }

25 CCA Common Component Architecture CCA Introduction Component Program LinearFunction evaluate( ) UniformRandomGenerator getRandomValue( ) MonteCarloIntegrator integrate( ) TrapezoidalIntegrator integrate( ) ReallyWierdFunction evaluate( ) GaussianQuadIntegrator integrate( ) LinearNRandomGenerator evaluate( ) Component LibraryProgram

26 CCA Common Component Architecture CCA Introduction Final Thought Components are reusable assets. Compared with specific solutions to specific problems, components need to be carefully generalized to enable reuse in a variety of contexts. Solving a general problem rather than a specific one takes more work. In addition, because of the variety of deployment contexts, the creation of proper documentation, test suites, tutorials, online help texts, and so on is more demanding for components than for a specialized solution. [Szyperski, p. 14]

27 CCA Common Component Architecture CCA Introduction Bibliography Booch, G Object-Oriented Analysis and Design with Applications. Second Editions. Santa Clara, CA: The Benjamin/Cummings Publishing Company, p. 8. Brooks, F. April No Silver Bullet: Essence and Accidents of Software Engineering. IEEE Computer vol. 20(4), p. 12. Courtois, P. June On Time and Space Decomposition of Complex Structures. Communications of the ACM vol 28(6), p Gall, J Systemantics: How Systems Really Work and How They Fail. Second Edition. Ann Arbor, MI: The General Systemantics Press, p. 65. Simon, H The Sciences of the Artificial. Cambridge, MA: The MIT Press, p Szyperski, C Component Software: Beyond Object-Oriented Programming. New York, NY: Addison-Wesley, p. 30