200 likes | 214 Vues
Explore the AIDA project's abstract interfaces for data analysis, motivating easier tool adoption and interchanging implementations while minimizing coupling. This architectural approach promotes component independence and flexibility in developing tools. Join us to contribute and benefit from unified interfaces across packages.
E N D
AIDA - Abstract Interfaces for Data Analysis Andreas Pfeiffer for the AIDA group andreas.pfeiffer@cern.ch Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Outline • Motivation • Architectural issues • Abstract Interfaces • Components • Status and future Plans Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
The AIDA project • AIDA project (Abstract Interfaces for Data Analysis) was initiated at the HepVis’99 workshop in Orsay • Presently active mainly developers from existing packages • Tony Johnson (JAS) • Andreas Pfeiffer (Lizard/Anaphe) • Guy Barrand (OpenScientist ) • Mark Dönszelmann (Wired) • Developers from LHCb/Gaudi Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Introduction • Design Interfaces for Data Analysis (in HEP) • “The goals of the AIDA project are to define abstract interfaces for common physics analysis tools, such as histograms. The adoption of these interfaces should make it easier for developers and users to select to use different tools without having to learn new interfaces or change their code. In addition it should be possible to exchange data (objects) between AIDA compliant applications.” (http://aida.freehep.org) • Open for contributions of any kind • questions, suggestions, code, implementations … Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Motivation • Minimize coupling between components • Provide flexibility to interchange implementations of these interfaces • Allows and try to re-use existing packages • even across “language boundaries” • e.g., C++ analysis using Java Histograms • Allow for faster turn-around time Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Use of Components withAbstract Interfaces • User Code uses only Interface classes • IHistogram1D * hist = histoFactory-> create1D(‘track quality’, 100, 0., 10.) • Actual implementations are selected at run-time • loading of shared libraries • No change at all to user code but keep freedom to choose implementation User Code Histo-IF Fitter-IF Histo- Impl. 1 Fitter- Impl. X Histo- Impl. 2 Fitter- Impl. Y Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Architectural issue:Abstract Interfaces • Abstract Interfaces • Only pure virtual methods, inheritance only from other Abstract Interfaces • Components use other components only through their Abstract Interface • Defines a kind of a “protocol” for a component • Allow each component to develop independently • reduces maintenance effort significantly • Maximize flexibility and re-use of packages • Re-use of existing packages to implement components reduces start-up time significantly Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Architectural issue: Components (I) • Identify components by functionality • Define “protocol” using Abstract Interfaces • Emphasize separation of different aspects for each component • Example: Histogram • statistical entity (density distribution of a physics quantity) • view of a “collection of data points” (which can be a density distribution but also a detector efficiency curve) • command to manipulate/store/plot/fit/... Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Architectural issue: Components (II) • “User’s view” is different from “implementor’s (developer’s) view” • separate Abstract Interfaces for both aspects • “command-layer” vs. “implementation-layer(s)” • UserInterface as a separate component • by definition couples to most of the other components • Facade pattern • promotes weak coupling between the other components • interfaces to scripting and/or GUI Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Initial Categories and dependencies Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
History • started in Sept. 1999 (HepVis 99, Orsay) • several (mini-) workshops since then • main ones Paris 2000 and Boston 2001 • release 1.0 summer 2000 • concentrated on “developers view” • Histogram package only • IAxis, IHistogram, IHistogram1D, IHistogram2D, IHistogramFactory • release 2.0 May 2001 (“Boston release”) • about 20 Interface classes • aiming at discussion and gathering feedback Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
AIDA Workshop Autumn 2000 (Orsay) • Start working from “users view” • Concentrated discussions on • Histogram • “developer” vs. “user” view • Management • directory-like Tree • Store (developer only, hidden from user) • Tuple Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
AIDA Workshop Spring 2001(Boston) • Continued discussion on Interfaces • concentrated on open issues from Paris workshop and Infrastructure • New developments • JAida: C++ access to Java libs • Java reference implementation • Infrastructure • CVS repository, mailing lists, web, ... • Very constructive Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Across the languages • JAida : C++ access to Java libs • using C++ proxies implementing the C++ Abstract Interfaces to the Java interfaces C++UserCode AIDA-IF C++ JAida AIDA-IF Java Java Lib Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Infrastructure (I) • Location of repository (Java and C++) • Anonymous CVS access • :pserver:anoncvs@cvs.freehep.org:/cvs/aida (passwd aida) • module: aida • “Release area” for C++ code • /afs/cern.ch/sw/contrib/AIDA/<version>/AIDA/ • #include <AIDA/IHistogram.h> • version : x.y.p • tarballs (C++) available in /afs/cern.ch/sw/contrib/AIDA/tar/AIDA-<version>.tar.gz Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Infrastructure (III) • Mailing lists (archived) • <listName>@cern.ch • project-aida-dev (open) • project-aida (open) • project-aida-announce (posting moderated, subscription open) • Web page (http://aida.freehep.org/) • Updated automatically from repository • On web page links to implementations • from whoever provides one (and informs us) Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Status of Components Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Time schedule / release plan • Release for discussion andfeedback • even if not (yet) “complete” • V 2.0 mid May 2001 (“Boston release”) • C++ and Java version of the Interfaces • V 2.1 Aug. 2001 (“Genova release”) • updates from discussions at Geant-4 workshop • fixed some problems with C++ version • Aiming for 2-3 month release frequency Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
“Use-cases” of AIDA • Java reference implementation in FreeHEP repository • JAS, OpenScientist and Lizard/Anaphe plan for implementations of version 2.x by Dec. 2001 • Used by Gaudi/Athena (LHCb, Atlas, Harp) • Gaudi people involved in design • Adopted and used in Geant-4 examples/testing • new category created in Geant-4 for analysis • No need to go for “least common denominator” • use “reasonable” superset and concentrate on design Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch
Summary • Design of Abstract Interfaces for Data Analysis • Maximize flexibility and re-use • Allow for faster turn-around time • Allows for and try to re-use existing packages • No need to go for “least common denominator” • use “reasonable” superset • concentrate on proper design • http://aida.freehep.org Andreas Pfeiffer, CERN/IT, andreas.pfeiffer@cern.ch