SEAL Developers 3, 2003 Lassi A. Tuura, Northeastern University CMS Components Plug-in Manager Lassi A. Tuura Northeastern University,

Slides:



Advertisements
Similar presentations
Physicist Interfaces Project an overview Physicist Interfaces Project an overview Jakub T. Moscicki CERN June 2003.
Advertisements

Web Applications Development Using Coldbox Platform Eddie Johnston.
Copyright 2004 Monash University IMS5401 Web-based Systems Development Topic 2: Elements of the Web (g) Interactivity.
Vincenzo Innocente, BluePrint RTAGNuts & Bolts1 Architecture Nuts & Bolts Vincenzo Innocente CMS.
Core Application Software Activities Ian Fisk US-CMS Physics Meeting April 20, 2001.
Advanced Object-Oriented Programming Features
ACAT Lassi A. Tuura, Northeastern University CMS Data Analysis Current Status and Future Strategy On behalf of CMS.
Course Instructor: Aisha Azeem
CHEP `03 March 24, 2003 Vincenzo Innocente CERN/EP CMS Data Analysis: Present Status, Future Strategies Vincenzo.
Off-line Graphics Tools Ianna Osborne Northeastern University.
SEAL V1 Status 12 February 2003 P. Mato / CERN Shared Environment for Applications at LHC.
Behavioral Patterns  Behavioral patterns are patterns whose purpose is to facilitate the work of algorithmic calculations and communication between classes.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
The Design Discipline.
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Architecture Of ASP.NET. What is ASP?  Server-side scripting technology.  Files containing HTML and scripting code.  Access via HTTP requests.  Scripting.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Lesley Bross, August 29, 2010 ArcGIS 10 add-in glossary.
© 2005 by IBM; made available under the EPL v1.0 | March 1, 2005 Tim deBoer Gorkem Ercan Extend WTP Server Tools for your.
LiveCycle Data Services Introduction Part 2. Part 2? This is the second in our series on LiveCycle Data Services. If you missed our first presentation,
Configuration Management (CM)
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
Ontology Engineering and Plugin Development with the NeOn Toolkit Plug-in Development for the NeOn Toolkit June 1st, 2008 Michael Erdmann, Peter Haase,
Outline What is IGUANA IGUANA and Other Projects Architecture Framework ORCA Visualisation IGUANA at D0 GEANT4 Visualisation OSCAR Visualisation DDD Visualisation.
CSCI-383 Object-Oriented Programming & Design Lecture 13.
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
XML Registries Source: Java TM API for XML Registries Specification.
Sage ACT! 2013 SDK Update Brian P. Mowka March 23, 2012 Template date: October 2010.
Event Data History David Adams BNL Atlas Software Week December 2001.
Andrew S. Budarevsky Adaptive Application Data Management Overview.
NOVA Networked Object-based EnVironment for Analysis P. Nevski, A. Vaniachine, T. Wenaus NOVA is a project to develop distributed object oriented physics.
(c) University of Washington01-1 CSC 143 Java Programming as Modeling Reading: Ch. 1-6.
Tool Integration with Data and Computation Grid GWE - “Grid Wizard Enterprise”
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
The Factory Patterns SE-2811 Dr. Mark L. Hornick 1.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Gaudi Framework Tutorial, April Algorithm Tools: what they are, how to write them, how to use them.
SEAL Core Libraries and Services CLHEP Workshop 28 January 2003 P. Mato / CERN Shared Environment for Applications at LHC.
INFSO-RI Module 05 The ETICS Plugins and Compliance Analysis Alberto Di Meglio.
SEAL Project Core Libraries and Services 18 December 2002 P. Mato / CERN Shared Environment for Applications at LHC.
INFSO-RI Enabling Grids for E-sciencE Ganga 4 – The Ganga Evolution Andrew Maier.
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.
INFSO-RI Enabling Grids for E-sciencE ARDA Experiment Dashboard Ricardo Rocha (ARDA – CERN) on behalf of the Dashboard Team.
Dispatching Java agents to user for data extraction from third party web sites Alex Roque F.I.U. HPDRC.
Tool Integration with Data and Computation Grid “Grid Wizard 2”
Giulio Eulisse, Northeastern University CHEP’04, Interlaken, 27th Sep - 1st Oct, 2004 CHEP’04 IGUANA Interactive Graphics Project:
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.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
Vincenzo Innocente, CERN/EPUser Collections1 Grid Scenarios in CMS Vincenzo Innocente CERN/EP Simulation, Reconstruction and Analysis scenarios.
Geant4 User Workshop 15, 2002 Lassi A. Tuura, Northeastern University IGUANA Overview Lassi A. Tuura Northeastern University,
CPT Week, November , 2002 Lassi A. Tuura, Northeastern University Core Framework Infrastructure Lassi A. Tuura Northeastern.
LCG/Blueprint RTAG 5-6, 2002 Lassi A. Tuura, Northeastern University CMS Components Generic Infrastructure Bits Lassi A. Tuura.
: Information Retrieval อาจารย์ ธีภากรณ์ นฤมาณนลิณี
Plug-In Architecture Pattern. Problem The functionality of a system needs to be extended after the software is shipped The set of possible post-shipment.
Building Preservation Environments with Data Grid Technology Reagan W. Moore Presenter: Praveen Namburi.
VI/ CERN Dec 4 CMS Software Architecture vs Hybrid Store Vincenzo Innocente CMS Week CERN, Dec
HEPVis May, 2001 Lassi A. Tuura, Northeastern University Coherent and Non-Invasive Open Analysis Architecture Lassi A. Tuura.
Elements of LCG Architecture Application Architecture Blueprint RTAG 8 th June 2002 P. Mato / CERN.
Modularization of Geant4 Dynamic loading of modules Configurable build using CMake Pere Mato Witek Pokorski
Fermilab Scientific Computing Division Fermi National Accelerator Laboratory, Batavia, Illinois, USA. Off-the-Shelf Hardware and Software DAQ Performance.
Introduction  Model contains different kinds of elements (such as hosts, databases, web servers, applications, etc)  Relations between these elements.
Self Healing and Dynamic Construction Framework:
Magento Technical Guidelines Eugene Shakhsuvarov, Software Magento
Introduction to J2EE Architecture
OpenOffice. org Extensions Infrastructure What it is –. What it can –
Introduction to Apache
Module 01 ETICS Overview ETICS Online Tutorials
CMS Software Architecture
Plug-In Architecture Pattern
Presentation transcript:

SEAL Developers 3, 2003 Lassi A. Tuura, Northeastern University CMS Components Plug-in Manager Lassi A. Tuura Northeastern University, Boston

March 3, 2003 Lassi A. Tuura, Northeastern University 2 CMS Frameworks: Structure Federationwizards Detector/EventDisplay Data Browser Analysis job wizards Generic analysis Tools ORCA FAMOS Objytools GRID OSCAR COBRA Distributed Data Store & Computing Infrastructure CMStools Consistent User Interface Coherent basic tools and mechanisms

March 3, 2003 Lassi A. Tuura, Northeastern University 3 ODBMS GEANT 3 / 4 CLHEP PAW Replacement C++ Standard Library + Extension Toolkits C++ Standard Library + Extension Toolkits Frameworks: Layering Calibration Objects Calibration Objects Generic Application Framework Physics modules Grid-Uploadable BasicServices Adapters and Extensions Configuration Objects Configuration Objects Event Objects Event Objects (Grid-aware) Data-Products SpecificFrameworks Event Filter Reconstruction Algorithms Physics Analysis Data Monitoring

March 3, 2003 Lassi A. Tuura, Northeastern University 4Modules v What’s a module? r An (extension) component to a framework (often dynamically loaded) r Framework knows only that a module extends a particular API (usually abstract interfaces), not how and what it needs to do so r Examples abound: Netscape plug-ins, Apache modules, Python and PERL modules, Illustrator and PhotoShop extensions, … r Used in many ways in CMS projects: package builders, detector units, hit/digi readers and writers, and many algorithms are essentially extensions of APIs provided by COBRA, and “subframeworks” in ORCA v Why modules? r Eases management—framework doesn’t need to know lots of details about the modules, but can simply load them and gain additional capabilities r Helps to give symbolic names to capabilities and allow framework to reason about them: “here’s all you will need to read data product X” r Allows better services to external parties (Python, GRID, IGUANA, …) without having to put that knowledge into many applications

March 3, 2003 Lassi A. Tuura, Northeastern University 5 Plug-ins in CMS: Background v Much of CMS software has “done” plug-ins for a while r IGUANA: a few years – The origin of the model described here – Apart from a tiny kernel, virtually everything else is in plug-ins – Plug-ins and dynamic linking are 100% orthogonal r COBRA: probably longer than I have been in CMS – Essentially the same model as IGUANA, technically not so refined but functionally much the same – Planned to use IGUANA system but then SEAL came along r We have a few years of experience with this model and like it v Basic principles r Framework outside r Simplicity r Lightweight

March 3, 2003 Lassi A. Tuura, Northeastern University 6

March 3, 2003 Lassi A. Tuura, Northeastern University 7 Implementation Features v Maintains a list of directories with plug-in module definitions v Plug-in module = shared library with well-defined entry points r Self-describing through a query entry point r But really orthogonal to dynamic loading – Some or all plug-ins can be built into the program v Automatically detects new, changed or removed modules r For new or changed ones loads it, queries its capabilities, and unloads it r Maintains a cache of module properties r Updates the cache if the directory is writable v When requesting information from the database, uses the cache instead of loading all the modules all the time v Two packages: generic base plus specific implementation r The model described here is the specific one, the generic one has no model

March 3, 2003 Lassi A. Tuura, Northeastern University 8 Technical Basics v Any C++ type can be created through plug-in mechanism v Any module/package can define a new plug-in category r Also other plug-in modules (the only way we use it, our kernel is empty) r Different plug-in categories in same or different projects coexist peacefully v Separate dynamic loading and factory interfaces r Clients see only a (powerful) factory r Modules see a relatively simple factory provider interface r Physical decomposition choices have no impact on interfaces r Dynamic loading is optional, changing packaging does not affect code v Automated caching r Program can reason about run-time environment without loading it all r Optional and transparent, failure to cache only shows up as (a big) slowdown v No external meta data: every plug-in module is self-contained r Build system automatically provides a list of available plug-in modules

March 3, 2003 Lassi A. Tuura, Northeastern University 9 Implementation Structure v Plug-in manager r (Green means user-visible class) r Practical layers: concrete object factories – IgBrowserDB, IgSiteDB, … r Concrete implementation – IgPluginDB, IgPluginDirectory, IgPlugin, IgPluginDef – IgPluginDBViewBase, IgPluginDBView, IgPluginDBItem r Generic caching and module-loading base – IgPluginCache, IgPluginBase – Knows how to manage plug-in modules (shared libraries) – Maintains a plug-in information cache per directory – The cache is an automatically updated text file (provided it is writable)

March 3, 2003 Lassi A. Tuura, Northeastern University 10 Plug-In Cache Object Factory Object Factory Implementation Structure… v Each module has three entry points: attach, detach, and query r Query just caches information: the module capabilities are recorded in the cache and the in-memory database that merges all caches r Attach and detach happen on module load/unload: module installs factories for various named plug-in objects it can create v Application state management and service components r Object location service: how you find all those plug-ins you’ve created r Won’t get into this in this presentation, but related and already involved Plug-in Database Plug-In Cache Module Object Factory Attached Unattached

March 3, 2003 Lassi A. Tuura, Northeastern University 11 System API Base Manager Module Providers Module Providers Factory Clients Factory Clients Cache View Item Structure

March 3, 2003 Lassi A. Tuura, Northeastern University 12 Classes #1 v Basic machinery r IgPluginCache: Maintains raw cache data per directory – Automatic update mechanism – Means to access per-module raw cache data (= “descriptors”) r IgPluginBase: Base class for a loadable module – Ability to load, unload, query, check if attached, check entry points, … – A derived class must implement actual behaviour, no meaning to given to the above, just services that typical plug-in managers will find useful r SharedLibrary (from classlib): Dynamic loading support

March 3, 2003 Lassi A. Tuura, Northeastern University 13 Classes #2 v Syntactic sugar: our plug-in manager model r IgPlugin, IgPluginDef: Module wrapper – Module providers derive IgPluginDef – Unit for managing the cached data r IgPluginDirectory: A directory of our modules – Derives IgPluginCache and instantiates IgPlugin – Mechanism to write to and reconstruct from cache r IgPluginDB: Collection of plug-in data – Collection of IgPluginDirectories – Collection of plug-in views (categories) r IgPluginDBViewBase, IgPluginDBView – An actual view of the plug-in database r IgPluginDBItem: Cached item – Interacts with the IgPluginDBView through IgPlugin and IgPluginDB – Also reconstructed from the cache (managed by IgPluginDB and view)

March 3, 2003 Lassi A. Tuura, Northeastern University 14 Classes #3 v Practical layer r IgBrowserDB, IgBrowserInfo – Browser factory, details about what is cached about browsers (= name) – Note! This is the only level at which the actual object type, factory argument lists, constructor arguments etc. are defined and used! r IgSiteDB, IgSiteInfo – etc. r …

March 3, 2003 Lassi A. Tuura, Northeastern University 15 Module Provider Interface class MyPluginDef : public IgPluginDef { public: virtual voidquery (void); virtual voidattach (void); }; DEFINE_IGUANA_PLUGIN (MyPluginDef); void MyPluginDef::query (void) { IgBrowserDB::Def ::declare (this); } void MyPluginDef::attach (void) { IgBrowserDB::Def ::installFactory (this); }

March 3, 2003 Lassi A. Tuura, Northeastern University 16 Module Provider Interface // COBRA way of doing the same thing static PKBuilder me;

March 3, 2003 Lassi A. Tuura, Northeastern University 17 Factory Client Interface void SomeFoo (void) { IgState*state = …; IgSite*site = …; IgBrowser*browser = IgBrowserDB::get () ->instantiate (“MyFoo”, state, site); }

March 3, 2003 Lassi A. Tuura, Northeastern University 18 Category Definition class IgBrowserInfo : public IgPluginDBItem { public: typedef IgBrowser Object; struct Factory { virtual ~Factory (void); virtual Object *create (IgState *state, IgSite *parent) = 0; }; template struct AutoFactory : Factory { virtual Object *create (IgState *state, IgSite *parent) { return new T (state, parent); } }; // Some methods (ctor, create(), attach(), factory()) } class IgBrowserDB : public IgPluginDBView { public: virtual IgBrowser *instantiate (const std::string &name, IgState *state, IgSite *parent); };