Applying Agile Project Management for Accelerator Controls Software W
Total Page:16
File Type:pdf, Size:1020Kb
RPPB05 Proceedings of ICALEPCS07, Knoxville, Tennessee, USA APPLYING AGILE PROJECT MANAGEMENT FOR ACCELERATOR CONTROLS SOFTWARE W. Sliwinski, N. Stapley, CERN, Geneva, Switzerland Abstract engineers, who are members of AB-CO group, develop Developing accelerator controls software is a frameworks, core components and complete systems. challenging task requiring not only a thorough knowledge Thus, the users’ community is diverse, the level of of the different aspects of particle accelerator operations, proficiency in programming varies and many people but also application of good development practices and within it work on temporary basis (such as project robust project management tools. Thus, there was a associates, fellows and technical students) for the Large demand for a complete environment for both developing Hadron Collider (LHC) start up. and deploying accelerator controls software, as well as the Requirements of the Process tools to manage the projects. As an outcome, a versatile development process was formulated, covering the Taking into account the needs of the controls controls software life cycle from the inception phase up to community and the specific nature of the controls domain, the release and deployment of the deliverables. In a list of requirements can be formulated which addition, a development environment was created characterize the properties of the anticipated development providing management tools that: standardize the process: common infrastructure for all the concerned projects; help • Maximise ease of use by providing a quick to organize work within project teams; ease the process of comprehension time (particularly significant for versioning and releasing; and provide an easy integration temporary members). of the test procedures and quality assurance reports. • Standardize development environment (source Change management and issue tracking are integrated repository; projects’ structure; management of with the development process and supported by the dependencies and 3rd party libraries; build, release dedicated tools. This approach was successfully applied and deployment management). for all the new controls software for LEIR, SPS, LHC, • Automate repetitive tasks (build and release injection lines and CNGS extraction. management; running of code coverage and test suites). INTRODUCTION • Encourage high quality (code quality; design and The Controls Group, in the Accelerators and Beams code reviews; documentation; test suites). Department (AB-CO) at CERN, is responsible for the • Provide complete software configuration controls infrastructure of all the accelerators at CERN and management solution (code identification; it provides core systems for accelerator operations, e.g.: configuration control; components’ consistency central timing, front-end systems, equipment settings review; build management; defect tracking). management, software interlocks and machine protection, • Ensure reproduction of the same artefacts at any time alarms, logging services, sequencer for hardware in the future. commissioning, access control, among others. • Provide obvious value so teams easily realize its Development of the core systems can not be done in benefits. separation and a unified infrastructure is necessary in order to streamline all the efforts and to promote reuse of Agile Practices for Controls the common components. Therefore a common When developing controls systems at CERN, there is a development environment was established for software significant dependence on face-to-face communication development particularly in the Java programming with the operators, nearby in the CCC. The work is language, aimed at providing all the necessary services distributed among several small teams (between 2 and 5 for the controls community. people) often composed of co-located staff and temporary members. ABOUT THE DEVELOPMENT PROCESS Each team is assigned to one or more projects which are managed by a project leader, who is an experienced Controls Community software engineer and maintains close collaboration with Users of the controls infrastructure comprise not only operators, who provide requirements and domain of the members of AB-CO group but also operators in the expertise. User requirements can often change and the CERN Control Centre (CCC) [1], physicists and resulting features are needed quickly, which in turn leads equipment experts. Since operators are domain specialists to the necessity of frequent product releases. Operators they often provide user requirements for the control are open to test the new releases especially if they know systems. On the other hand, experienced software Engineering Processes, Project Management Collaboration 612 Proceedings of ICALEPCS07, Knoxville, Tennessee, USA RPPB05 that their new features are available, thus enabling further with JUnit [6]; code quality inspection (using the PMD feedback for following versions. [7] tool); code coverage reports (using Cenqua Clover Having gained operational experience in the controls [8]); source code and documentation generation; domain and having tried several available approaches to integration with the release system. All products must project management in the past, including Rational follow the same directory structure and use common Unified Process (RUP) [2], the agile approach appears to configuration files, thus for the developer, the effort be very promising in assisting teams in developing required when working with a project is greatly software in the manner mentioned above. It was perceived minimized. that agile methods provide the most benefits for our environment, avoiding the overhead related to heavy- Release weight processes, where software releases are performed The release process is handled by a separate tool – only when significant amount of changes or new features Release, which is also based on Apache Ant and supports are implemented. Agile practices are not in fact a Java, C and C++. The main responsibilities of the Release traditional methodology – it is a collection of guidelines tool include: ensuring completeness and consistency and conventions based on experience, knowledge and among components; managing the build process and tools tools. Moreover, the approach is based on reflection and used for builds; ensuring adherence to the organization's continuous improvement of the current environment, development process; managing the software distribution responding to changes in technology, development best repository; making sure every defect has traceability back practices and user requests. Users are not constrained by to the source. Release tool is composed of a client and the process but instead can concentrate more on the server, where the client is fully integrated with the development related to their domain. Common Build, but it can be also used standalone. The A complete environment for Java development was Release tool extracts product sources from the CVS to a provided and only standard Java community tools were new version directory in the distribution repository and used if possible. However in order to address some builds the product by calling build tool (e.g. Common specific requirements of the controls community two Build for Java applications). Subsequently, the new custom solutions were developed: Common Build (build version is installed in a multi-versioned repository system) and Release (release and version management without modifying any previous versions. system) [3] tools. Continuous Integration DEVELOPMENT TOOLS Projects are increasingly leveraging code from other projects. As these "common components" are maintained, What follows is an overview of the tools, which grew any update must be tested with all its dependent projects. over the time and they were setup in order to help manage A Continuous Integration (CI) server was introduced to the development. Some of the mentioned tools we are still automate this increasingly time-consuming task. Using learning how to exploit fully; others are quite mature in web-based Atlassian Bamboo [9] tool, projects can be their use. marked as dependents of a component whereby they are Versioned Source Repository re-built and their test suite re-run for verification. This minimizes the risk of compatibility problems after a new All software products are stored in a dedicated version is released and reduced the time spent by repository for accelerator controls software in the CERN developers on this task. central Concurrent Versions System (CVS) [4]. Each The CI server also produces reports based on a project's product has a well defined directory structure following tests, code coverage, code metrics and inspection. This naming conventions which reflect part of the domain that provides an open account of the health of a project’s code this product is responsible for. base, highlighting areas for improvement. More recently, Common Build the acceptance level of unit tests or of some agreed code metric rules (for example, each class file must have at Common Build is a build system, based on Apache Ant least one comment) can be set. In the future, a project will [5], providing the common tasks required for be considered complete, not only when it provides all the development. When the work on new CERN controls required artefacts, but also when it meets the quality system began in 2002, there was a need for a build tool standards. which would help to set up an easy and uniform process that could be applied to new Java development. Due to Issue Tracking