Summary and Conclusions of Architecture Session
1. Introduction (Convenor - John Harvey)
The goals of this session were to raise awareness of the importance of software architecture in building large software systems, and to exchange opinions on what constitutes a good architecture. There are several important reasons for stressing the importance of software architecture.
An architecture-centric approach tends to result in software systems that can be made to be more adaptable to changing requirements and is strongly recommended by the most commonly used software processes in the industry. In addition the architecture provides a blueprint to aid communication between developers and therefore can considerable ease the task of migrating to OO. Frameworks are real code that implement the architecture and guarantee that it is respected. To be successful frameworks must solve most of the standard computing tasks, they must do a lot for you, and also they must provide a clear, easy-to-understand interface for the end-user developers. A study group was convened and met 8 times during the summer to discuss these issues. These discussions generated much of the material that has been used to prepare this session.2. Architectural Styles of HEP experiments (Rapporteur RD Schaffer)
Definition Architecture addresses the organisation of software, the structural elements and their behaviour. The basic terminology and vocabulary were defined, explaining terms such as toolkits, frameworks, interfaces, components, and design patterns. Following the literature, RD gave a categorisation of systems (user-, data- or computation- centric) and of architectural styles (call-and-return style, data flow style, data centred repository and interacting processes). To identify style, the organisation of data and the interaction of control and data must be specified. Any system is a mix of styles.Bibliography A useful bibliography was compiled by the Architecture Study Group and is maintained on its web page : (URL : http://lhcb.cern.ch/computing/SWarchWG/html/Default.htm ). It contains references giving an introduction to Architecture and on classification of styles, on frameworks and on physical design. The Unified Software Development Process (Booch, Rumbaugh, Jacobsen) is a useful standard to follow. It is use-case driven, architecture-centric, iterative and incremental.
Foundation Libraries Many open questions on existing packages e.g. more linear algebra (Blitz++ or SL++), GEANT4 units or Fermilab's SIUnits package? There are still missing pieces such as error logging and exception handling.
Frameworks and toolkits Choices to be made on basic design criteria. For example GAUDI identifies data objects and algorithm objects, maintains transient and persistent representations of data, is datastore-centred, encapsulates user code in specific places, specifies model for component interfaces. Alternative approaches were shown; AC++ (BABAR, CDF), CARF (CMS), Object Networks (ATLAS), data abstraction and data centred repository (ALICE)
Persistency A major issue is coupling to persistency mechanism - choice has implications for migration to new technologies, performance etc. Two architectural models are in evidence, one with, and one without, a transient event store. BaBar, CDF, D0, LHCb are with, CMS, ALICE are without.
Application meta information This gives run time knowledge about classes. In ROOT this is the key component of the architecture
User Interface This should not dominate architecture. Where should knowledge about the UI be?, Should UI be detachable?
Physical design : It is very important to be able to decompose large systems into smaller manageable components. Issues are the compile-time and link time costs, dependencies between packages. System architects should take responsibility for physical design (see Lakos, Martin)
Abstract interfaces : Use factory and strategy patterns, dynamic loading, component technology (e.g. CORBA and DCOM)
3. Discussion
There were a number of direct questions and comments to the rapporteur's talk :
A number of propositions were put by the convenor to stimulate more general discussion:
Comments on Technical Forum
Comments on Java
4. Conclusions
The conclusions as they appeared to the convenor were as follows :
Members of architecture study group are :
Alberto Aimar, Christian Arnault, John Apostolakis, Rene Brun, Federico Carminati, Dirk Duellmann, John Harvey (convenor), Vincenzo Innocente, Pere Mato, Fons Rademakers, RD Schaffer, David Stickland, Craig Tull, Lassi Tuura, Pierre vande Vyvre