Report of the LHC Computing Grid Project. Software Management Process RTAG CERN



Similar documents
Software Process in Geant4 an overview

Future of the apps area software build system

A Process for ATLAS Software Development

Project Management Tools

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

CS4507 Advanced Software Engineering

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

SOFTWARE DEVELOPMENT BASICS SED

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

Evaluation of the CMT and SCRAM Software Configuration, Build and Release Management Tools

Global Grid User Support - GGUS - start up schedule

Increasing Development Knowledge with EPFC

Large Projects & Software Engineering

Requirement Management with the Rational Unified Process RUP practices to support Business Analyst s activities and links with BABoK

Development Methodologies

Introduction to Software Development

Software Project Management Plan

NEESit Software Configuration Management Process

Detailed Design Report

Agenda. Tango meeting : Krakow

The "Eclipse Classic" version is recommended. Otherwise, a Java or RCP version of Eclipse is recommended.

IBM Rational Asset Manager

Analyses on functional capabilities of BizTalk Server, Oracle BPEL Process Manger and WebSphere Process Server for applications in Grid middleware

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

HEP Software Consortium

Chapter 13: Program Development and Programming Languages

"FRAMEWORKING": A COLLABORATIVE APPROACH TO CONTROL SYSTEMS DEVELOPMENT

Jonathan Worthington Scarborough Linux User Group

Database Services for CERN

Deliverable DS4.3.2: Report on Development Infrastructure Usage and Adoption

NXTware Remote. Advanced Development and Maintenance Environment for OpenVMS and other Strategic Platforms

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

.NET and J2EE Intro to Software Engineering

VAIL-Plant Asset Integrity Management System. Software Development Process

Best Overall Use of Technology. Jaspersoft

Software Design Models, Tools & Processes *

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

What Is Software Configuration Management?

Verification of Good Design Style of UML Models

Software Project Management using an Iterative Lifecycle Model

Guidelines and Procedures for Project Management

Continuous Integration (CI)

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard

Automated software packaging and installation for the ATLAS experiment

Software Configuration Management

ARDA Experiment Dashboard

Web services with WebSphere Studio: Deploy and publish

JOURNAL OF OBJECT TECHNOLOGY

Nanda Kishor K N. nandakishorkn@gmail.com

U.S. Navy Automated Software Testing

Getting Things Done: Practical Web/e-Commerce Application Stress Testing

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Installing (1.8.7) 9/2/ Installing jgrasp

Global Grid User Support - GGUS - in the LCG & EGEE environment

How To Migrate To Redhat Enterprise Linux 4

RUP Design. Purpose of Analysis & Design. Analysis & Design Workflow. Define Candidate Architecture. Create Initial Architecture Sketch

The Operating System Lock Down Solution for Linux

Android: Setup Hello, World: Android Edition. due by noon ET on Wed 2/22. Ingredients.

Software Evaluation: Criteria-based Assessment

a new generation software test automation framework - CIVIM

Web Application Development Process

BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER

Benefits of Test Automation for Agile Testing

SA4 Software Developer Survey Survey Specification v2.2

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

Building a Volunteer Cloud

Vanilla44 New Features

In this Lecture you will Learn: Implementation. Software Implementation Tools. Software Implementation Tools

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

UML-based Test Generation and Execution

Getting started with API testing

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

Performance Monitoring of the Software Frameworks for LHC Experiments

CMS Dashboard of Grid Activity

The Unified Software Development Process

How To Develop Software

Foundation for HEP Software

Page 1. Outline of the Lecture. What is Software Configuration Management? Why Software Configuration Management?

MDSplus Automated Build and Distribution System

Surveying and evaluating tools for managing processes for software intensive systems

3F6 - Software Engineering and Design. Handout 15 Software Management I With Markup. Steve Young

SOFTWARE TESTING TRAINING COURSES CONTENTS

Apache 2.0 Installation Guide

Transcription:

Report of the LHC Computing Grid Project Software Management Process RTAG Marco Cattaneo, Gabriele Cosmo, Simon George, Fons Rademakers (chair), Stephan Wynhoff CERN 6 May 2002

Table of Contents 1 Chair s Introductory Remarks 3 2 SC2 Mandate to the RTAG 4 2.1 Guidance from the SC2 4 2.2 Additional Constraints 4 2.3 Organization 4 2.4 External Experts 4 2.5 RTAG timetable 5 3 Assumptions Not Explicitly in Mandate 6 4 General Recommendations 7 5 Architecture-Centric 8 6 Iterative and Incremental Development Process Error! Bookmark not defined. 7 Use Case and User Driven 10 8 Testing and Quality Assurance 11 9 Roles 12 10 Person Power Estimations 13 11 External Software Packages 14 12 Tools 15 12.1 Free Open Source Tools 15 12.2 Commercial Tools 15 2

1 Chair s Introductory Remarks This document is the result of a set of intense meetings and e-mail discussions conducted in the best of spirits. All members of the RTAG were on the same wave-length concerning the approach to software engineering and all recommendations made in this report are supported unanimously by all RTAG members. 3

2 SC2 Mandate to the RTAG Define a process for managing LCG software. Specific tasks to include: Establish a structure for organizing software, for managing versions and coherent subsets for distribution Identify external software packages to be supported Identify recommended tools for use within the project to include configuration and release management Estimate resources (person power) needed to run an LCG support activity 2.1 Guidance from the SC2 It is assumed that: Procedures and tools will be specified Will be used within project Can be packaged and supported for general use Will evolve with time 2.2 Additional Constraints There were two additional constraints concerning the mandate of the RTAG: The RTAG does not make any recommendations on how experiment internal software should be developed and managed However, if an experiment specific program becomes an LCG product it should adhere to the development practices proposed by this RTAG 2.3 Organization The RTAG was composed of one representative per LHC experiment plus one from IT: ALICE Fons Rademakers ATLAS Simon George CMS Stefan Wynhoff LHCb Marco Cattaneo IT Gabriele Cosmo 2.4 External Experts On the issue of configuration management systems the RTAG consulted with external experts. Fons Rademakers attended the CMT workshop where he conveyed the RTAG s ideas about the 4

basic requirements for such a system and where he had many positive discussions with Christian Arnault. The detailed workings and functionality of the SCRAM system were explained to the RTAG by H.P. Wellisch. 2.5 RTAG timetable The first meeting took place the 4 th of February and was followed by a total of more than 10 hours of meetings, with all members in physical attendance. The final report was presented during the LCG Launch Workshop on 12 March. 5

3 Assumptions Not Explicitly in Mandate While it was not in our mandate to discuss and recommend software development methodologies and software project management practices, we felt we had to make some basic assumptions about these issues since the practices we recommend will work best in this environment. However, we expect most recommendations to still hold even if not all assumption turn out to be true. The basic assumptions are: All LCG software projects will be components of one overall architecture An architect will be appointed to define this architecture LCG software projects will define a common software development process that all LCG projects will adhere to. Not highly formalized, but we assume that it will be based on one of the current best practice methodologies, e.g. extreme Programming (XP), Rational Unified Process (RUP), or USDP. All these methodologies share the following ideas: o Architecture centric o Iterative and incremental approach to software development ( release early, release often ) o Use-case driven ( let user feedback drive the development ) 6

4 General Recommendations There are two main general recommendations: All LCG projects must adopt the same set of tools, standards and procedures. The tools must be centrally installed, maintained and supported. Adopt commonly used open-source or commercial software where available. Try to avoid do it yourself solutions in this area where we don t have core competency. Concerning commercial software, avoid commercial software that has to be installed on individual s machines as this will cause well known problems of license agreements and management in our widely distributed environment. Commercial solutions for web-portals or other centrally managed solutions would be fine. 7

5 Architecture-Centric To support an architecture-centric approach we propose that: Projects should be decomposed into small teams of 2 to 5 people Software systems should be decomposed into packages, where: o A package is an atomic unit o With a well defined interface (API) Coherent naming and coding conventions are adopted All software comes with at least a C/C++ language binding. Other language bindings (e.g. Java, Python, Perl, C#) are optional Typically one developer is owner of a package with check-in permission. He should also guard the quality of the code provided by the other team members Specific tools supporting this process are: Not a specific design tool, but design diagrams produced should be in UML notation CVS should be used for source code version control GNUmake should be used as build tool Either CMT or SCRAM, or better, a unified tool, should be used for configuration management Preferred tools to manage platform dependencies, packaging, exporting are: autoconf, CMT, SCRAM/DAR, rpm, GRID install and export tools 8

6 Configuration and Release Management The main idea of the process we propose is that software is released early and often to users. This allows the users to follow from the very beginning the progress of the software and allows them to steer and adjust the next steps of the development process by changing, add or removing features to be implemented next in view of the current product. We propose to have major releases 2 to 3 times per year. Required deliverables for these releases are: Source and binaries in common place distribution formats, e.g. tar and rpm, GRID package/installation tool format (for all supported platforms at the same time) Test and validation suites with reference output Up to date documentation: install, user and reference manuals, design documents for core components and code examples Hyperized manuals on the web (using doxygen or lxr) Release notes describing what has changed since the last release in each package In addition to the major releases there should be development releases as often as possible, like once per 2 to 3 weeks. Releases are typically identified by a number like x.y.z, where x is the major version number, y the minor and z the patch level. Ideally code should be binary compatible between patch releases, i.e. no interface changes. Another important aspect is to have a fully automated nightly build system in place. This ensures that the code can be run at all times and that any compile errors and warnings are found as soon as possible. In addition to the nightly build a suite of regression tests and benchmarks should be run. We propose for nightly builds: To use the latest tags made by package developers on top of most recent development releases To build optimized and debug version 9

7 Use Case and User Driven Another pillar of most modern development methodologies is that the user feedback drives the development process. An initial prototype or first version is made based on a set of initial user requirements. However after the first release this set of user requirements is to be reviewed in light of the prototype and the user s wishes, expectations and priorities and a new set of requirements for the next development cycle are to be made. This process ensures that the most important features are implemented first, less important features are postponed till nobody asks for them anymore or till they become the next most important ones. In this ways there is no effort wasted on things the user does not want and the product will solve the user s most immediate needs. To facilitate optimal user interaction and involvement we propose: Meetings with users o Planning meetings to define features for next major releases o Annual workshop Discussion with users o Bug reporting facility Bugs must be fixed with priority and fixes should be made available to the user for testing o Mailing list and/or discussion forum To discuss all aspects of the system, from request for help to discussion of new features Training courses and tutorials To support this process a tool we suggest for evaluation is SourceForge. SourceForge provides all project management tools needed via a single, web based, point of entry. Each project or subsystem can have its own setup, but with the same look and feel, which makes the navigation between projects easy. SourceForge provides the following tools: Automatic creation of archived mailing lists, discussion for a (c.f. majordomo, hypernews) Browse access to CVS (c.f. cvsweb) Bug reporting and tracking tool (c.f. Remedy, Bugzilla) Release archive Task management Project statistics SourceForge is a commercial product from VA Software (http://www.vasoftware.com). While equivalent tools for several of its components are available we feel that the time and effort saved by deploying this single tools is worth the cost. 10

8 Testing and Quality Assurance A coherent set of tools for Q&A and testing should be put in place. To facilitate code readability and coherency and easier maintenance, a set of coding conventions and rules should be adopted. Don't reinvent the wheel, but use one of the existing coding standards and rules. Also, adoption of a rule checking tool to automate this process is suggested (RuleChecker, CodeWizard). Areas for Q&A and testing which can be supported by specific tools are: Memory allocation checking (Insure++, Purify) Unit, regression, validation and performance tests (McCabe) Dependency analysis (Deputy) We also advice to regularly verify portability of the code on different compilers and architectures. This will also help to quickly detect trivial and potentially serious bugs in the code like unitialized variables, illegal memory access, memory alignment, etc. Platforms and compilers we suggest to consider are: Different architectures (32/64, little/big endian) o i386, Sparc/64, IA-64 Different compilers (g++, native C++) o g++, CC, VC++, icc, ecc Different operating systems (Unix/Win32) o Linux, Solaris, Windows It is important that this Q&A process is as much automated as possible, otherwise one may be tempted to cut corners by not always running the tests. 11

9 Roles To support the software process as outlined in the previous chapters we see the following roles: Release manager o Overall release manager for all LCG core projects Communicates release schedule with project managers o Is in control and responsible for major releases Defines release schedule Coordinates integration of external and internal packages Ensures completeness and overall consistency of deliverables o Quite a lot of work, so job could rotate between LCG project managers Librarian o Builds and tests on all reference platforms o Installs and distributes the releases o Keeps external software up to date o Configures, installs and maintains the tools supporting the process Tool smith o Installs and maintains all products and tools needed to support the development process QA support person o Promotes and facilitates QA process within projects Technical writer o Keeps manuals, tutorials, etc. complete and up to date 12

10 Person Power Estimations To cover the roles as described in the previous chapter we estimate the following number of persons: 1 release manager o Rotates between project managers with each major release 1-2 librarians, 1 once project stabilizes o This is 1 FTE, should always be more than 1 person 1-2 tool smiths, 1 once project stabilizes o Task could be shared with librarian 1 QA support person 1-2 technical writers Some of these tasks scale with the size and scope of the LCG project and should be reviewed during the lifetime of the project to see if they are still adequately staffed.. 13

11 External Software Packages A part of the LCG software process also involves the installation and maintenance of third party software used by the project. This work is typically done by the librarian(s). To be effective there must be only a single central location where these packages are installed. At all cost, installation of local, private versions should be avoided. We propose: Central installation of third party software o In an easy to find place Not buried deep inside some release structure Single distribution point with rpm/tar files o Multiple versions made available Let users (or integrators) chose the version they want via appropriate configuration tools New versions installed on request o No need for additional private installations by individual projects Clearly define a coherent set of versions used for each release o Streamlined installations process Uniform installation procedures for all external packages in the same format as LCG software Build up local expertise on widely used external packages o Provide first level support to users o Interact with authors to report bugs, etc. o In particular case of HEP specific libraries: Local expertise includes active participation in evolution of the software, representing the needs of the CERN users At this time it is not clear which external packages the LCG project will use. Here we give some examples of external software packages as indication of scope: General purpose o E.g. Boost, Python, XML Xerces HEP specific o CLHEP Frameworks and toolkits o ROOT, GEANT4 Mathematical libraries o GNU scientific library 14

12 Tools In this chapter we list the tools mentioned in the previous chapters of the paper. They are ordered by free Open Source tools and commercial tools. 12.1 Free Open Source Tools The most common and popular Open Source tools are: CVS, Concurrent Versioning System (source code versioning and control system) The GNU automake, autoconf and gmake tools (build tools) CMT and SCRAM (configuration management tools) CVSweb (tool allowing the browsing of a CVS repository via the web) LXR (Linux X-reference) Hypernews (news forum) Majordomo (mailing list) RPM (RedHat Package Manager) Doxygen (documentation generator) Deputy (dependency analyzer) 12.2 Commercial Tools The most interesting commercial tools are: SourceForge o Collaborative Software Development (CSD) platform from VA Software o Contains, a.o.: CVS interface, bug reporting, mailing list, monitoring and reporting, searching, Oracle9 interface, etc. RuleChecker for IRST (coding rule checker) CodeWizard (coding rule checker) Insure++ (memory leak checker) McCabe (testing framework) 15

16 Software Management Process RTAG - Final Report