The gLite Software Development Process

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Project Management Summary Castor Development Team Castor Readiness Review – June 2006 German Cancio, Giuseppe Lo Presti, Sebastien Ponce CERN / IT.
Test Case Management and Results Tracking System October 2008 D E L I V E R I N G Q U A L I T Y (Short Version)
Plateforme de Calcul pour les Sciences du Vivant SRB & gLite V. Breton.
SC7 WG6 Rome Engineering Ingegneria Informatica S.p.A. INFSO-RI Isabel Matranga ETICS Automated Building,Testing and Quality Assurance.
EGEE is a project funded by the European Union under contract IST Software Configuration Management and Integration Alberto Di Meglio EGEE.
CSSE 375 Software Construction and Evolution: Configuration Management
Configuration Management Process and Environment MACS Review 1 February 5th, 2010 Roland Moser PR a-RMO, February 5 th, 2010 R. Moser 1 R. Gutleber.
EGEE-II INFSO-RI Enabling Grids for E-sciencE EGEE and gLite are registered trademarks gLite Release Process Maria Alandes Pradillo.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
SPI Software Process & Infrastructure EGEE France - 11 June 2004 Yannick Patois
EMI INFSO-RI EMI SA2 Report Quality Assurance Alberto Aimar (CERN) SA2 WP Leader.
EMI INFSO-RI EMI Quality Assurance Processes (PS ) Alberto Aimar (CERN) CERN IT-GT-SL Section Leader EMI SA2 QA Activity Leader.
INFSO-RI Enabling Grids for E-sciencE The gLite Software Development Process Alberto Di Meglio CERN.
EMI INFSO-RI SA2 - Quality Assurance Alberto Aimar (CERN) SA2 Leader EMI First EC Review 22 June 2011, Brussels.
EGEE is a project funded by the European Union under contract IST Testing processes Leanne Guy Testing activity manager JRA1 All hands meeting,
EGEE is a project funded by the European Union under contract IST Build Infrastructure & Release Procedures Integration.
A DΙgital Library Infrastructure on Grid EΝabled Technology ETICS Usage in DILIGENT Pedro Andrade
LCG Middleware Testing in 2005 and Future Plans E.Slabospitskaya, IHEP, Russia CERN-Russia Joint Working Group on LHC Computing March, 6, 2006.
1 Schema Registries Steven Hughes, Lou Reich, Dan Crichton NASA 21 October 2015.
INFSO-RI Enabling Grids for E-sciencE The gLite Software Development Process Alberto Di Meglio EGEE – JRA1 CERN.
EGEE is a project funded by the European Union under contract IST Software Configuration Management and Integration Alberto Di Meglio EGEE.
1 / 22 AliRoot and AliEn Build Integration and Testing System.
EGEE is a project funded by the European Union under contract IST JRA1-SA1 requirement gathering Maite Barroso JRA1 Integration and Testing.
NA-MIC National Alliance for Medical Image Computing UCSD: Engineering Core 2 Portal and Grid Infrastructure.
JRA Execution Plan 13 January JRA1 Execution Plan Frédéric Hemmer EGEE Middleware Manager EGEE is proposed as a project funded by the European.
Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Usage of virtualization in gLite certification Andreas Unterkircher.
INFSOM-RI ETICS: E-infrastructure for Testing, Integration and Configuration of Software Alberto Di Meglio Project Manager.
GLite build and integration system Building and Packaging Robert HARAKALY
Enabling Grids for E-sciencE EGEE and gLite are registered trademarks Tools and techniques for managing virtual machine images Andreas.
Software Engineering Overview DTI International Technology Service-Global Watch Mission “Mission to CERN in Distributed IT Applications” June 2004.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
European Middleware Initiative (EMI) The Software Engineering Model Alberto Di Meglio (CERN) Interim Project Director.
INFSO-RI Enabling Grids for E-sciencE The gLite Software Development Process Alberto Di Meglio EGEE – JRA1 CERN.
INFSO-RI Enabling Grids for E-sciencE /10/20054th EGEE Conference - Pisa1 gLite Configuration and Deployment Models JRA1 Integration.
JRA1 Testing Current Status Leanne Guy Testing Coordination Meeting, 13 th September 2004 EGEE is a project funded by the European.
INFSO-RI JRA2 Test Management Tools Eva Takacs (4D SOFT) ETICS 2 Final Review Brussels - 11 May 2010.
GLite build and integration system Building and Packaging Robert HARAKALY
INFSOM-RI ETICS: E-infrastructure for Testing, Integration and Configuration of Software Alberto Di Meglio Project Manager.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
INFSO-RI Enabling Grids for E-sciencE Software Process Author: Laurence Field (CERN) Presented by David Smith JRA1 All Hands meeting,
The EPIKH Project (Exchange Programme to advance e-Infrastructure Know-How) gLite Grid Introduction Salma Saber Electronic.
INFSOM-RI WP3: WP3: Software configuration tools and methodologies Status Report ETICS All-Hands – 23 May 2007 E. Ronchieri.
Frascati, 2-3 July 2008 Slide 1 User Management compliance testing for G-POD HMA-T Phase 2 KO Meeting 2-3 July 2008, Frascati Andrew Woolf, STFC Rutherford.
JRA1 Middleware re-engineering
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Configuration Management
Software Project Configuration Management
Regional Operations Centres Core infrastructure Centres
DataGrid Quality Assurance
Chapter 11: Software Configuration Management
Andreas Unterkircher CERN Grid Deployment
Overview – SOE PatchTT November 2015.
E-Infrastructure for Testing, Integration and Configuration of Software Alberto Di Meglio CERN, INFN, Engineering, 4D Soft, University of Wisconsin.
Marc-Elian Bégin ETICS Project, CERN
Overview – SOE PatchTT December 2013.
SPI Software Process & Infrastructure
Configuration Management
Testing for patch certification
T-StoRM: a StoRM testing framework
The ETICS Build and Test Service
Short update on the latest gLite status
Leanne Guy EGEE JRA1 Test Team Manager
ETICS Services Management
Francesco Giacomini – INFN JRA1 All-Hands Nikhef, February 2008
Leigh Grundhoefer Indiana University
Porting LCG to IA64 Andreas Unterkircher CERN openlab May 2004
Module 01 ETICS Overview ETICS Online Tutorials
Chapter 11: Software Configuration Management
gLite The EGEE Middleware Distribution
Presentation transcript:

The gLite Software Development Process Alberto Di Meglio CERN 4 October 2005

Overview Software configuration management and tools Release process System configuration ETICS CERN

gLite Services Software stack and origin (simplified) Computing Element Gatekeeper (Globus) Condor-C (Condor) CE Monitor (EGEE) Local batch system (PBS, LSF, Condor) Workload Management WMS (EDG) Logging and bookkeeping (EDG) Information and Monitoring R-GMA (EDG) Storage Element glite-I/O (AliEn) Reliable File Transfer (EGEE) GridFTP (Globus) SRM: Castor (CERN), dCache (FNAL, DESY), other SRMs Catalog File/Replica & Metadata Catalogs (EGEE) Security GSI (Globus) VOMS (DataTAG/EDG) Authentication for C and Java based (web) services (EDG) CERN

gLite Services Software stack and origin (simplified) JRA3 User Interface UK CLIs APIs CERN IT/CZ Security Services Information & Monitoring Services Authorization Info systems publishing tools Service Discovery Auditing Authentication Data Services Job Management Services Metadata Catalog File & Replica Catalog Accounting Storage Element Data Management Computing Element Workload Management CERN

From Development to Product LCG-2 (=EGEE-0) prototyping product 2004 2005 LCG-3 EGEE-1 Fast prototyping approach High quality standards Integration, configuration, deployment tools as separate activities from development to enforce common conventions and practices Unit and system testing to enforce quality and compliance with specs Single out individual components for deployment on pre-production service as often as possible CERN

Software Process JRA1 Software Process is based on an iterative method loosely based on RUP and some XP practices It comprises two main 12-month development cycles divided in shorter development-integration-test-release cycles lasting from 2 to 6 weeks The two main cycles starts with full Architecture and Design phases, but the architecture and design are periodically reviewed and verified. The process is fully documented in a number of standard document: Software Configuration Management Plan (SCM) Test Plan Quality Assurance Plan Developer’s Guide CERN

SCM The SCM Plan is the core document of the Software Process It contains a description of the processes and the procedures to be applied to the six SCM activity areas: Software configuration and versioning, tagging and branching conventions Build Tools Systems Bug Tracking Change Control and the Change Control Board (CCB) Release Process Process Auditing and QA Metrics It is based on a number of standard methods and frameworks including: ISO 10007:2003 - Quality management systems -- Guidelines for configuration management, ISO, 2003 IEEE Software Engineering Guidelines (http://standards.ieee.org/reading/ieee/std/se) The Rational Unified Process (http://www-306.ibm.com/software/awdtools/rup/) In addition it adopts best-practice solutions1 to guarantee the highest possible quality in a very distributed and heterogeneous collaboration 1S.P. Berczuk, Software Configuration Management Patterns, Software Patterns Series, Addison-Wesley, 2002 A. Di Meglio et al., A Pattern-based Continuous Integration Framework for Distributed EGEE Grid Middleware Development, Proc. CHEP 2004 CERN

Version and Configuration Control Based on CVS using CERN Central IT CVS service Fixed directory structure for each module Rules for tagging and branching (e.g. bug fix branches) Common naming conventions for baseline and release tags Configuration files to automate creation of workspaces Used to enforce build reproducibility Used to create private workspaces for developers Rules apply also to external dependencies, all third-party packages and versions are controlled by the build systems, not the developers CERN

CVS Structure project src test doc config interface examples JRA1 EGEE org.glite org.glite.subsys org.glite.subsys.comp1 org.glite.subsys.compN CERN

Workspaces A Workspace is one of the basic SCM Patterns It is a private area where a build can be produced under configuration control It includes all internal and external dependencies, but nothing is really installed on the computer, everything exists within the workspace sandbox More independent workspaces can coexist on the same computer for parallel development The workspace is created using a Configuration Specification File (CSF) The CSFs contain all the information necessary to prepare the workspace extracting modules and other dependencies from CVS or the central software repository There is a CSF file for the overall org.glite middleware suite and one CSF for each subsystem CSFs are stored in the corresponding modules in CVS and versioned so that any version of the MW suite and all its subsystems can be reproduced at any time CERN

Build Tools Ant: used for the general build management and all Java modules. Make + GNU Autotools: for C/C++, Perl and other languages as necessary. Some effort has been done to port the Makefiles to Windows or use Cygwin, but with very limited success CruiseControl: used to automate the nightly and integration builds on the central servers An abstraction layer has been created on top of these tools to provide a common interface to all build tools independently of the language, platform and tool used CERN

Build Systems Common Build System Central Build System The common build system allows all developers, integrators and testers to manage private builds on their own computers with the same tools and settings (compilers, flags, configurations, etc) Based on the concept of Private Workspaces, more than one independent workspace can be created on the same computer Uses a set of common build and properties files to define targets and properties for all project modules External dependencies are stored and versioned either in CVS or a central repository. All modules use the same versions of the external dependencies across the project Central Build System Located at CERN and maintained by the JRA1 Integration Team Based on the Common Build System, but automated by means of CruiseControl and Maven to generate a continuous, automated integration process and the overall project web site. CERN

Build Infrastructure Two nightly build servers on RH Linux 3.0 (ia32) Clean builds out of HEAD and v. 1.x every night of all components Results are published to the gLite web site Tagged every night and totally reproducible One continuous build server on RH Linux 3.0 (ia32) Incremental builds out of v. 1.x every 60 minutes Results published to CruiseControl web site Automated build error notifications to developers and Integration Team One nightly build server on RH Linux 3.0 (ia64) Clean builds every night of all components One nightly build server on Windows XP Clean builds every night of all components currently ported to Windows Build system supported platforms: Red Hat Linux 3.0 and binary compatible platforms (SLC 3, CentOS, etc), 32 and 64-bit (gcc) Windows XP/2003 CERN

Defect Tracking System Based on the Savannah project portal at CERN Used also for change requests (for example API changes, external libraries version changes, etc). In this case, request are assigned to the Change Control Board for further evaluation (explained later) Heavily customized to provide several additional bug status on top of the default Open and Closed (!) Each gLite subsystem is tracked as a separate category and related bugs are assigned to the responsible clusters CERN

Defect Tracking Configuration Two conditions: Open, Closed Ten main states: None, Accepted, In Progress, Integration Candidate, Ready for Integration, Ready for Test, Ready for Review, Fixed, Duplicate, Invalid Transitions between two states is in principle subject to specific checks (Is it a defect? Can it be fixed? Test passed, Review passed?) Not all transitions are allowed and additional automated changes can be triggered by changing the bug status (condition, assignment, etc) CERN

Defect Tracking Cycle CERN

Change Control Board All public changes must go through a formal approval process The CCB is tasked to collect and examine the change requests Changes are tracked and handled as quickly as possible The CCB is not a physical team, but a role that is assumed by more than one team or group depending on the type of change (interface changes, bug fixes, software configuration changes, etc) CERN

Release Process Developers works on code functionality and documentation and produce baseline candidates Baseline candidates are continuously integrated and unit tested on the build servers A build is successful if all the modules compile and are unit tested and documented. If a build is not successful, the faulty baseline candidates are rejected and control returns to the developers All baselines candidates are automatically tagged every night When all baseline candidates in the application build list (Application CSF file) are successfully built, an system baseline is produced and passed to testing If all test, certification and validation procedures are successful, the individual baselines in the build are considered eligible to be promoted to release if all required functionality is present Development Release Managers promote eligible baselines to full releases by retagging them When all components have been released, functionality is frozen and the system baseline is promoted to Release Candidate. The Release Candidate is tested again, validated and certified, all critical and major bugs are fixed, normal bugs are fixed as time allows. A number of Release Candidates may be produced during a short number of iterations. The final release is published CERN

Installation Guide, Release Notes, etc Release Process Development Integration Testing Coordinated with Applications and Operations Deployment Packages Software Code Fail Pass Testbed Deployment Integration Tests Fix Fail Functional Tests Pass Installation Guide, Release Notes, etc CERN

Integration and Configuration During the Integration phase individual development modules from the different JRA1 clusters are assembled and uniform deployment packages are produced and tested The deployment packages are completed with installation and configuration scripts, documentation and release notes The configuration information is encoded using an XML schema. The advantage is that it allows structure and inheritance, can be validated and easily transformed in other formats as required by external configuration system. The disadvantage is that is more difficult to read than key-value pairs if one wants to manipulate the files directly (but there are several tools to do that easily) CERN

Integration and Configuration At the moment three scenarios are being used Simple web-based configuration: the XML-encode configuration files are stored on a web server and the configuration scripts access them using a standard web-enabled parser. Special features like XInclude to have all common parameters in centralized files, node-based access, etc are easily provided Quattor: it is an installation and configuration system developed at CERN for managing large computing centres. The gLite Quattor templates are automatically created during the build process and the XML configuration files can be easily transformed in the internal XML format used by Quattor and, viceversa, gLite XML files can be generated from Quattor. This is currently used to manage the internal JRA1 “Prototype” infrastructure Configuration web service: is a web service like most of the gLite services with which it shares the security infrastructure based on VOMS certificates. It can use multiple back-ends (files, RMDBS) and both administrators and services can access it to dynamically read/write configuration information. A prototype has been developed as a demonstrator. CERN

Packaging Installation packages for the gLite Middleware are produced by the integration team Supported packaging formats are: Source tarballs with build scripts Binary tarballs for the supported platforms Native packages for supported platforms (e.g. RPMs for Red Hat Linux Enterprise 3.0, MSIs for Windows XP, etc) Packages are created by a packager program integrated in the build system. SPEC files for RPMS are automatically generated (but developers may provide their own if they wish). Extension to the creation of Windows MSI is foreseen Installation and configuration is handled by configuration scripts developed by the integration team for each high level middleware service (ex. Computing Element, Data Catalog, R-GMA information system, etc) CERN

Software Quality Assurance Software Metrics are collected as part of the build process Failure to pass a quality check fails the build Additional checks are implemented in the version control system (coding style, documentation tags) Software Defect and QA Metrics are collected from the defect tracking system Reports and graphs are published on the project web site (this is still limited, must be improved) CERN

SLOC Total Physical Source Lines of Code (SLOC) SLOC = 718,871 (as of 30 September 2005) Total SLOC by language (dominant language first) C++ 222749 (30.99%) Java 175386 (24.40%) Ansi C 163465 (22.74%) Perl 73799 (10.27%) sh 45688 ( 6.36%) Python 32995 ( 4.59%) Total complete builds: 641 (all 1.x branches), 236 (HEAD) Number of subsystems: 21 Number of CVS modules: 454 Defects/KSLOC = 3.21 CERN

Code Size and Stability The Code Size chart shows the changes in total number of SLOCs during the life of the project The Code Stability chart shows the change rate of code size during the life of the project. As the project nears completion the rate should approach 0 CERN

Bug Counts and Trends CERN

ETICS Build system, software configuration, service infrastructure, dissemination, EGEE, gLite, project coord. Software configuration, service infrastructure, dissemination The Condor batch system, distributed testing tools, service infrastructure Web portals and tools, quality process, dissemination, DILIGENT Test methods and metrics, unit testing tools, EBITS CERN

What is ETICS? ETICS stands for E-Infrastructure for Testing, Integration and Configuration of Software The major goals of the project are: To set-up an international and well-managed distributed service for software building, integration and testing that international collaborative software development projects can use as a commodity To organize and disseminate a database of software configuration and interoperability information that projects can use to validate and benchmark their products against existing middleware and applications To investigate and promote the establishment of an international software quality certification process with the ultimate goal of improving the overall quality of distributed software projects CERN

The ETICS Service The distributed build and test service is the core of ETICS The goal is to free open-source, academic and commercial projects from the need of setting up their own distributed infrastructure and use a managed service The service will initially run in three resource centres: CERN, INFN and UoW and will expand to more locations The service will provide all the necessary tools and information to build and test distributed software on many different platforms, producing reports and notifications It will have a web portal to access information and register projects for being compiled and tested CERN

http://www.glite.org http://cern.ch/egee-jra1 http://www.eu-etics.org More information http://www.glite.org http://cern.ch/egee-jra1 http://www.eu-etics.org CERN