Deliver: A Fresh Look at Software Release and Deployment
by Gerco Ballintijn, Remy Jansen and Tijs van der Storm
The goal of the Deliver project is to fully automate the processes of software release and deployment by explicitly storing and using knowledge about the software. To achieve this goal, Deliver performs research in the areas of configuration management, software product lines and software deployment.
The release and deployment of enterprise application software is a complex task for a software vendor due to the enormous scale of the undertaking. There are many customers for the vendor to serve, all of whom might require their own version or variant of the application. Furthermore, the application itself will consist of many (software) components that depend on each other to function correctly. On top of that, these components will evolve over time to meet the changing needs of the customers. As a consequence, the release and deployment of these applications takes a significant amount of effort and is frequently prone to errors.
The goal of the Deliver project is to ease the software release and deployment effort and reduce the risks associated with it. This will be achieved by explicitly managing all the knowledge about the application, thereby allowing software vendors to improve the software upgrade process. For instance, the creation of incremental upgrades can be simplified and consistency requirements can be enforced. Furthermore, the explicit management of software knowledge also enables the evaluation of 'what if' scenarios; for example, what will happen to the software configuration of customer X if she upgrades application component Y? These evaluations improve the risk assessment of the deployment process, and in turn these assessments improve vendor-customer interaction.
Managing software knowledge is, however, only part of the story. The software must still be delivered to customers. The Deliver project aims to support dynamic delivery of software via the Internet, in the form of both full packages and upgrades. Fortunately, the explicitly managed software knowledge can also be used to enhance this process (see Figure 1). Specifically, it can be used to compute the difference between a customer's existing software configuration and the desired new configuration. This difference can then be used to create the required upgrades. To deliver the software upgrade to the customer, the Deliver project must develop specialised delivery methods and protocols.
|Figure 1: Intelligent software knowledge base drives Web-based delivery.
Central to the release and deployment activities envisioned by the Deliver project is the Intelligent Software Knowledge Base (ISKB). This knowledge base can be seen as an extension of a version control system that stores all information about all the artefacts that are part of the application's life cycle. The ISKB consists of two parts: a global knowledge base at the vendor's side that stores information on all available applications in all available versions, and a local knowledge base at the customer's side that stores information about the installed applications. An important part of the Deliver research is the design and implementation of the ISKB.
As a first step toward the ISKB, the Deliver project has investigated how Feature Diagrams can be interpreted as configuration interfaces for software components. Feature Diagrams are used for analysing commonality and variability of software products or components (see Figure 2). To ensure that components are configured and composed correctly before they are delivered to a customer, a technique has been developed to store these Feature Diagrams in a prototype relational knowledge base.
|Figure 2: Hierarchical description of software variability.
The Deliver project is based at the Centre for Mathematics and Computer Science (CWI) in Amsterdam and is funded by the Jacquard program of the Netherlands Organisation for Scientific Research (NWO). To further its research goals, the project cooperates with both the Utrecht University and the Dutch Platform for Product Software. The Deliver project started in the summer of 2003 and is intended to run for four years. The research will be performed by five researchers and will result in scientific publications and prototype tools.
Critical to the success of the Deliver research is close collaboration with industrial partners. Such collaboration is necessary to examine the specific characteristics of the release and deployment phase of enterprise application software. One method for examining these characteristics is the use of case studies that examine the practices of software companies. These case studies supply the Deliver project with knowledge of the specific real-life issues of releasing and deploying large-scale software and of the contexts in which they occur.
Additionally, the case studies offer the companies involved an external assessment of their own release and deployment activities. An important part of this assessment is a comparison of the company's activities with both the 'state of the practice' and the 'state of the art'. Based on these assessments, the Deliver project is able to propose improvements and extensions to the current practices of the companies.
Recently, a case study was completed into the release and delivery processes of the Dutch software vendor Exact Software. Exact Software is a leading manufacturer of software for accounting and office automation, with offices in 26 countries and over 160,000 customers. During the case study a comparison was made between the release and deployment tools used by Exact Software and the features of the ISKB. This comparison lead to several improvement proposals, including the tracking of dependencies between components and the introduction of configuration management techniques, such as branching and change sets.
Gerco Ballintijn, CWI, The Netherlands
Tel: +31 20 592 4266
Sjaak Brinkkemper, Utrecht University, The Netherlands
Tel: +31 30 253 3175