Elements of LCG Architecture Application Architecture Blueprint RTAG 8 th June 2002 P. Mato / CERN.

Slides:



Advertisements
Similar presentations
COM vs. CORBA.
Advertisements

Software Reuse SEII-Lecture 28
Ideas on the LCG Application Architecture Application Architecture Blueprint RTAG 12 th June 2002 P. Mato / CERN.
15 March, 2000LHCb Computing1 Software Review Panel LHCb Answers to Architecture, Data Model and Program Infrastructure Pere Mato for the LHCb Collaboration.
Technical Architectures
Notes to the presenter. I would like to thank Jim Waldo, Jon Bostrom, and Dennis Govoni. They helped me put this presentation together for the field.
Programming with Objects: Class Libraries and Reusable Code.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
R R R CSE870: Advanced Software Engineering: Frameworks (Cheng, Sp2003)1 Frameworks A Brief Introduction.
Satzinger, Jackson, and Burd Object-Orieneted Analysis & Design
Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display. Design Patterns.
Building software from reusable components.
Reuse Activities Selecting Design Patterns and Components
Chapter 3.4 Programming Fundamentals. 2 Data Structures Arrays – Elements are adjacent in memory (great cache consistency) – They never grow or get reallocated.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
Software Reuse Prof. Ian Sommerville
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
Design Patterns.
International Workshop on Web Engineering ACM Hypertext 2004 Santa Cruz, August 9-13 An Engineering Perspective on Structural Computing: Developing Component-Based.
Gaudi Framework Tutorial, April Introduction.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
COM vs. CORBA Computer Science at Azusa Pacific University September 19, 2015 Azusa Pacific University, Azusa, CA 91702, Tel: (800) Department.
Design patterns. What is a design pattern? Christopher Alexander: «The pattern describes a problem which again and again occurs in the work, as well as.
Ceg860 (Prasad)L6MR1 Modularity Extendibility Reusability.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
© DATAMAT S.p.A. – Giuseppe Avellino, Stefano Beco, Barbara Cantalupo, Andrea Cavallini A Semantic Workflow Authoring Tool for Programming Grids.
SEAL: Core Libraries and Services Project CERN/IT After-C5 Meeting 6 June 2003 P. Mato / CERN.
Refining middleware functions for verification purpose Jérôme Hugues Laurent Pautet Fabrice Kordon
Introduction to Gaudi LHCb software tutorial - September
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
SEAL: Common Core Libraries and Services for LHC Applications CHEP’03, March 24-28, 2003 La Jolla, California J. Generowicz/CERN, M. Marino/LBNL, P. Mato/CERN,
Introducing Allors Applications, Tools & Platform.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
SEAL Core Libraries and Services CLHEP Workshop 28 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
SEAL Project Core Libraries and Services 18 December 2002 P. Mato / CERN Shared Environment for Applications at LHC.
GDB Meeting - 10 June 2003 ATLAS Offline Software David R. Quarrie Lawrence Berkeley National Laboratory
Billy Bennett June 22,  Intent Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype.
Plug-in Architectures Presented by Truc Nguyen. What’s a plug-in? “a type of program that tightly integrates with a larger application to add a special.
23/2/2000Status of GAUDI 1 P. Mato / CERN Computing meeting, LHCb Week 23 February 2000.
DØ Offline Reconstruction and Analysis Control Framework J.Kowalkowski, H.Greenlee, Q.Li, S.Protopopescu, G.Watts, V.White, J.Yu.
Advanced Object-oriented Design Patterns Creational Design Patterns.
CERN Tutorial, February Introduction to Gaudi.
The SEAL Component Model Radovan Chytracek CERN IT/DB, LCG AA On behalf of LCG/SEAL team This work received support from Particle Physics and Astronomy.
Project Work Plan SEAL: Core Libraries and Services 7 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Modularization of Geant4 Dynamic loading of modules Configurable build using CMake Pere Mato Witek Pokorski
©MAK Technologies, Inc. The Dynamic-Link-Compatible C++ RTI API for IEEE 1516 Len Granowetter MÄK Technologies x121.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
SEAL: Common Core Libraries and Services for LHC Applications
Jim Fawcett CSE775 - Distributed Objects Spring 2014
Component Object Model(COM)
Design Patterns: MORE Examples
“Algorithm Tools” what they are, how to get them and how to use them
Self Healing and Dynamic Construction Framework:
Introduction to Design Patterns
GLAST Gaudi Review T. Burnett H.Kelly 10 Sept 02 Gaudi code review
Tools for Composing and Deploying Grid Middleware Web Services
GAUSS - GEANT4 based simulation for LHCb
Software Architecture Lecture 7
Software Architecture Lecture 7
Chapter 8, Design Patterns Introduction
Software Architecture Lecture 7
SEAL Project Core Libraries and Services
Presentation transcript:

Elements of LCG Architecture Application Architecture Blueprint RTAG 8 th June 2002 P. Mato / CERN

08/07/2002LCG Application Architecture2 Reminder: The Goal is Integration  The Goal is to facilitate the integration of LCG and non LCG software to build coherent applications –We should establish the specifications (“blueprint”) of the model that would facilitate this integration.  Two possible forms of integration: –A) Implementing the software components using a defined number of low and high level building blocks (Rene’s proposal) –B) Defining interfaces and protocols without any assumption on the way the implementation is made.

08/07/2002LCG Application Architecture3 Component interface specifications  Integration technologies –Mainly for distributed computing –CORBA, DCOM (.NET), Web Services, JavaBeans  Abstract interfaces –C++ “in process” integration –Robust and efficient. A bit awkward for end-users.  Scripting extension modules –Ideal for prototyping. Rapid application development (RAD). –Dependent of the scripting tool Probably the best solution but unrealistic in our environment Works well within a given Framework Minimal coupling, maximum flexibility. Lacks performance. 

08/07/2002LCG Application Architecture4 Abstract Interfaces  Pure abstract interfaces minimizes compilation and linking coupling with the implementation. Typically, not directly usable by end-users.  Interfaces capabilities (communalities): –Identification (interface ID) –Versioning (major and minor version numbers) –Lifetime support (reference counting)  What can be used in the definition of interfaces? –Basic types? STL? CLHEP? class IMagneticFieldSvc : virtual public IService { public: // Get the magnetic field vector at a given point in space. virtual StatusCode fieldVector( const HepPoint3D& xyz, HepVector3D& fvec ) const = 0; }; Base Class Interface? IInterface

08/07/2002LCG Application Architecture5 Not everything should be Abstract  Handling abstract interfaces is rather “painful”, “inefficient”, etc.  So, decide what needs to be abstract and what not –“Data-like” classes are candidates to be concrete classes –“Service/Manager-like” classes are candidates to be classes implementing abstract interfaces  No absolute rule –Tradeoff between inconveniences and benefits –Example: it makes sense to have a “data-like” class like an histogram to be abstract

08/07/2002LCG Application Architecture6 Component Capabilities  Typically components implements multiple interfaces (capabilities) –Each one specialized on a given domain (persistent-able, configure- able, draw-able, …) –Minimal coupling between domains  There exist the need to “navigate” from one interface to another –“queryInterface()” vs. dynamic_cast<> Algorithm IAlgorithmIProperty Event Loop Service Interactive Component Configurator

08/07/2002LCG Application Architecture7 Composition vs. Inheritance  Composition is often a good design solution for code re-use –Low coupling. The aggregate do not need to be compiled/linked with the components –Ex: complex Algorithm composed of simple ones –queryInterface() facilitates composition  Inheritance is used to extend functionality –Very often unavoidable. Strong coupling  No absolute rule Aggregate Component1 Component2 I1 I2 I3

08/07/2002LCG Application Architecture8 IInterface // Interface ID static const InterfaceID IID_IInterface(1,0,0); class IInterface{ public: /// Retrieve interface ID static const InterfaceID& interfaceID() { return IID_IInterface; } /// Query other interfaces from this interface virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface) = 0; /// Increment the reference count of Interface instance virtual unsigned long addRef() = 0; /// Release Interface instance virtual unsigned long release() = 0; }; ID major version minor version

08/07/2002LCG Application Architecture9 DLL Factories & Dynamic Loading DLL SvcFactory IFactory Service {new} Service Service / Algorithms / Converters SvcFactory xxxFactory FactoryTable Manager getFactoryTable Client {instantiate} Plug-and-Play Factory pattern to avoid using concrete implementation. Run-time discovery of components. Only pure abstract classes (interfaces) are accessible.

08/07/2002LCG Application Architecture10 Factories in Practice #include “IMagneticFieldSvc.h” // Magnetic Field service implementation class MagneticFieldSvc : public IMagneticFieldSvc { StatusCode fieldVector( const HepPoint3D& xyz, HepVector3D& fvec ); }; MagneticFieldSvc.h #include “SvcFactory.h” #include “MagneticFieldSvc.h” // Instantiation of a static factory class used by clients to create static SvcFactory s_factory; MagneticFieldSvc::MagneticFieldSvc( const std::string& name, ISvcLocator* svc ) : Service( name, svc ) {... } StatusCode MagneticFieldSvc::fieldVector( const HepPoint3D& xyz, HepVector3D& fvec ) {...} MagneticFieldSvc.cpp Static factory instantiation. Factory identified by class name. Component name Component Locator

08/07/2002LCG Application Architecture11 Basic Infrastructure  Interfaces without a minimal infrastructure are “useless” –Basic types (status, exceptions, etc.) –Set of Core services  Core Services: –Component Loader/Unloader »Loads dynamic libraries, discovers available factories, etc. –Component Creator/Locator »Needed by any component that requires to interact with another. Identification by component “name”. –Incidents and Incident Manager (“event”) –Properties and Property Manager –Error Reporting/Exception Handling –Data Dictionary (for data-like objects and interfaces) –GUI Manager,...

08/07/2002LCG Application Architecture12 Software Structure  Foundation Libraries –Low level, fairly independent class libraries to complement the “standard” types –These types can be used freely in interfaces  Basic Framework –Set of core infrastructure services to allow development of other framework components  Specialized Frameworks –Simulation, reconstruction, Interactive analysis, etc. Frameworks ReconstructionSimulation Analysis Foundation Libraries Triggers Basic Framework

08/07/2002LCG Application Architecture13 Don’ts and Do’s  Don’ts –Global data (e.g. errno, singletons) –Communication under hidden channels. –Invent new C++ dialects. Use standard C++ (templates, namespace, exceptions, etc.)  Do’s –Hire technicalities of “component model” to end-users (small templated methods may help here, powerful base classes) –Minimize dependencies. Favor run-time dependencies (decided at the application level) to compile-time dependencies at lower level.

08/07/2002LCG Application Architecture14 Proposals for Discussion  Foundation Libraries: –STL(native), CLHEP  Interface Model: –As presented: naming conventions, interface ID, interface discovery, factories, naming services, …  Adopt AIDA: – AIDA interfaces for data analysis components  Develop/adapt set of core services –Component loader, Naming service, Dictionary, etc.