CCU delivery. Customer Configuration Updating (CCU) is a software development method for structuring the process of providing customers with new versions of products and updates production. This method is developed by researchers of the Utrecht University.

The delivery phase of the CCU method concerns the process which starts at the moment a product is finished until the actual shipping of the product to the customer.

Introduction to the delivery process 

As described in the general entry of CCU, the delivery phase is the second phase of the CCU method. In figure one the CCU method is depicted. The phases of CCU that are not covered in this article are concealed by a transparent grey rectangle.

As can be seen in figure one, the delivery phase is in between the release phase and the deployment phase. A software vendor develops and releases a software product and afterwards it has to be transported to the customer. This phase is the delivery process. This process is highly complex because the vendor often has to deal with a product which has multiple versions, variable features, dependency on external products, and different kinds of distribution options. The CCU method helps the software vendor in structuring this process.

In figure 2, the process-data diagram of the delivery phase within CCU is depicted. This way of modeling was invented by Saeki (2003). On the left side you can see the meta-process model and on the right side the meta-data model. The two models are linked to each other by the relationships visualized as dotted lines. The meta-data model (right side) shows the concepts involved in the process and how the concepts are related to each other. For instance it is visible that a package consists of multiple parts, being the: software package, system description, manual, and license and management information. The numbers between the relations indicate in what quantity the concepts are related. For example, the “1..1” between package and software package means that a package has to contain at least 1 software package and at the most 1 software package. So in this case a package just has to contain 1 software package. On the left side of the picture the process-data model is depicted. This consists of all the activities within the delivery process. This article is based on this process-data model. The meta-process model (left side of the process-data diagram) is divided into several parts which are presented along with the corresponding paragraphs throughout the article to make it easier to understand.

The tables that describe the concepts of the meta-data model and the activities of the process-data model are presented beneath figure 2.

Table of concepts 
The table of concepts contains all concepts used in the meta-data model with their explanations along with the source from which the explanations are derived.

Table 1: Table of concepts
{| class="wikitable" width="90%"
|- style="background:silver;"
|Concept
|Definition (Source)
|-
|REPOSITORY
|Also called a vault. A repository contains only one complete version of a configuration item (CI). Differences between versions are usually stored using a delta algorithm.

Collection of records describing resources
|-
|package
|A collection of different related items combined for transferring purposes to the customer.
|-
|SOFTWARE PACKAGE
|A collection of different related software components combined for transferring purposes to the customer.
|-
|SOFTWARE COMPONENTS
|The different components of which software consists related through dependencies.
|-
|VERSION
|A version is a state of an object or concept that varies from its previous state or condition.
|-
|SYSTEM DESCRIPTION
|Description of the system including its requirements and the dependencies on other external components.
|-
|manual
|A technical communication document intended to give assistance to people using a particular system.
|-
|LICENSE
|Type of proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software that specifies the perimeters of the permission granted by the owner to the user.
|-
|MANAGEMENT INFORMATION
|All the information that is relevant for the management of the system at the customer site.
|-
|CUSTOMER RELATIONSHIP MANAGEMENT SYSTEM
|A system which maintains all information about the customers.
|-
|CUSTOMER
|A company or person that bought some product or made use of one of your companies services before.
|-
|LICENSE TYPE
|In this case it can either be a long term license, an expired license or a temporary license.
|-
|CUSTOMER DATA
|All known information about the customers in the customer relationship management system.
|-
|CONFIGURATION MANAGEMENT SYSTEM
|A system maintaining information about the software configurations at the customer sites.
|-
|PRODUCT
|An element of software or a document placed under version control.
|-
|UPDATES
|An update also called a patch is a small piece of software designed to update or fix problems with a computer program
|-
|CONFIGURATION
|A configuration is an arrangement of functional units according to their nature, number, and chief characteristics.
|-
|MODIFICATION
|Modification is the act of applying change to an original.
|-
|FEEDBACK
|Feedback allows a vendor to gather large amounts
of data about its customers and its product as it acts in the field
|-
|BUG REPORT
|A report of the problems users encountered using the product. This can mean a problem with a certain function or dead links within the system. This information is collected manually.
|-
|PRODUCT USAGE DATA
|This data contains information about the actual product usage. This reflects on options that are most used within the program.
|-
|ERROR REPORT
|When the software product gets an error it will automatically send an error report to the vendor.
|-
|USAGE QUESTIONS
|Questions users have about handling the product etc.
|}

Activity table 
The activity table contains the explanations of the activities along with the source from which the explanations are derived. Because the method is quite innovative a lot of the activity's are designed especially for this model and therefore the explanations do not have a source.

Table 2: Activity Table

{| class="wikitable" width="90%"
|- style="background:silver;"
|Activity
|Sub-Activity
|Description (Source)
|-
|colspan=2 |package
|Packaging the system so that it can be transferred to the customers’ site.
|-
|rowspan=6|
|package software
|Combining different software components into one package that can be delivered to the customer.
|-
|package system description
|Add a system description to the package.
|-
|package manual
|Add a manual to the package.
|-
|package license
|Add a license to the package.
|-
|package management information
|Add a management information document to the package.
|-
|Check package
|Make sure that the package is complete and ready for deployment at the customer site.
|-
|colspan=2 |Advertise update
|When a vendor wishes to provide updates to its customers, the customers first need to be informed through the available communication channels.
|-
|colspan=2 |Prepare distribution
|Prepare measures be able to get the software to the customer.
|-
|rowspan=2|
|Set package in repository
|A finished software component will be made available in some release repository.
|-
|Create transfer channels
|The vendor needs to create channels through which the software can be transferred to the customer.
|-
|colspan=2 |Distribute
|Getting the software to the different customers.
|-
|rowspan=5|
|customer request
|A customer makes the vendor aware of his interest for a certain product or update.
|-
|Determine configuration needs
|It is determined which software components are needed for a successful configuration update.
|-
|Determine configuration constraints
|It is determined to which constraints the infrastructure of the customer has to suffice in order to run the new product or update.
|-
|Check customers license
|It is checked if the customer is in possession of the right license for the new configuration update.
|-
|Deliver update
|Getting the software components at the customer site.
|-
|colspan=2 |Inform customer
|Providing the customer with information about in this case the status of its request.
|-
|colspan=2 |Update CRM
|Add information to the CRM system so that it contains the most current information available.
|-
|colspan=2 |Receive delivery and deployment report
|Getting a report (automatically or manually) about the success of the delivery and deployment from the customer.
|-
|colspan=2 |Update license type
|Add information about the license obtained by the customer so that the system contains the most current information available.
|-
|colspan=2 |Update configuration management
|Add recent information in the configuration management system, so that the customer most recent configuration is stored.
|-
|
|Update product properties
|Renew the information about the products in use by the customer so that the system contains the most current information available.
|}

Package software 

In order to deliver the developed product to the customer, the vendor needs to package the different components of its product into a package. By doing this, the customer will receive all the information and software components at once fulfilling all its needs. After combining all elements into one package the software vendor will carefully have to check if the package is complete. The package will have to provide the customer with all the tools and information to use the product. When this is not the case the software vendor will get a lot of questions from its customers which will consume a lot of time. It is therefore very important that the package is checked carefully before it is shipped. The package can be a physical combination of different elements packed into for example a box, but it can also be a digital combination of files which contain all the elements. Within the CCU process it is stated that a package will consist of five elements, being: software package, system description, manual, and license and management information. In the following paragraphs is explained how these elements fit into the CCU delivery phase.

Software package 
One of the elements of the package will be the software package. The software package is a package in itself, because it consists of the different software components that together form the product. In contrast with the overall package, the software package is always a technical package in which all the files needed are combined in order to run the software product. Another concept of the software package is the version. This keeps track of the modifications made to the software product. By relating it to the software package the vendor and the customer are able to keep track of the functionality and properties of the product the customer is using.

System description 
It is a general description of what the product and its functionalities. In addition it will also describe of what components, the product consists and how these are related to other product software already in place. In case of a software update it will for example describe how the previous version of the software is modified by this product. Besides this, it will also describe the requirements needed to run the software product properly. For example, what other products and configurations need to be in place in order to let this product run properly.

Manual 
The manual is the document that will provide the customer with guidance in deploying and using the product.

License 
The license is in this case a Software license agreement in which is stated how the customer is permitted to use the product. For example, it can state how many users are permitted to use the software product. In this situation the license agreement is a contract or a certificate which is the customers prove of its using permits. The software vendor has its own part of the agreement which in most cases is stored in a system. An elaboration of this part can be found at the receive feedback section of this article. The license agreement shipped to the customer can be a digital document as well as a physical document.

Management information 
This piece of information should contain the information that is relevant for managing the system at the customer site. In many cases this information is already part of the manual. However, in particular situations this information is meant only for the management of the system and not for the users of the system and is therefore supplied as a separate document.

Distribution 

After the package is assembled it needs to be distributed to the customers. This section within the delivery process is about the actual delivery of the package to the customers.

Offline vs Online 
The software distribution of a product can be done offline as well as online. In an offline situation the package is a physical package which contains all the elements. The software is stored on a data carrier such as a CD or a DVD, and the documents might also be stored in a digital form on this data carrier, or they might be in physical form such as a booklet. The package as a whole is a physical product. In an online situation the entire package needs to be in a digital form. The consequences on the distribution process are described in the following paragraphs. CCU is designed to fit both situations but as bandwidth is growing it is making more sense to distribute especially updates and new versions to existing customers online. In this article both ways are discussed. In the process-data model it is assumed that the software vendor conducts both distribution channels. As a practical example: HISComp, a provider of medical information systems distributes its software straightforward via CDs. However they use their website to distribute patches for the software products.

Preparation of distribution 

After a new package is assembled, the customer needs to be made aware of the new release. In the process-data model this is being depicted as a loop which states advertising the update until the customers are being properly informed. Besides this, the package ready for delivery, needs to be stored in a repository for the online distribution. In addition the vendor needs to create transfer channels. For the online distribution this means that the vendor needs to create online channels to its repository. In most cases this means that a link to the product on the website of the vendor is created. In case of updates it is largely applicable that the current version of the software product at the customer site automatically checks the repository for new updates of the product. In case of offline distribution, the vendor needs to create physical transfer channels. This can be shops or just a contract with a courier company.

The actual distribution 
The distribution begins with the request for a product by the customer. This can be done automatically when the current product of the customer searches for an update at the online repository. The customer can also manually do a request for a product via the website of the vendor. A third option is that the customer does the request via telephone or e-mail.

When the vendor is aware of the customer request it will determine the customer needs. By checking what the customer current configuration is and what the customer desires. This process can also take place automatically by checking the customer configuration in the configuration management system. More information on this system is provided in the next chapter. When it is clear what product the customer needs and the possible modifications to this product it is necessary to determine if the customer current configuration suits the new product. The current configuration is compared to the constraints of the new product. This can also be done automatically by the configuration management system. When the configuration of the customer appears to be insufficient the customer is informed about this. For example, the vendor can make clear to the customer that it will need an external product for this new product to run properly. Besides this the Customer Relationship Management (CRM) system of the vendor is updated. There is more information about this in the chapter about CRM.

When the customer configuration is sufficient the vendor will check the current license of the customer. If the customer does not have a proper license for the requested product the license needs to be obtained. The customer will be informed about this and the CRM system will be updated again. If the customer has the proper license or wants to buy the proper license along with the product, the product is delivered to the customer.

Software configuration management 
The Software Configuration Management system, is a system at the vendor's site which keeps track of the configurations at the customer site. By storing this in a system the vendor will be able to give the customer particular service when it needs a new product. In the software configuration management system information about the products used by the customer, the version of these products, as well as which updates are already being done, is stored. In some cases it is possible that the vendor did some modifications to the product particularly for this customer. This will also have to be stored in the system. Also there needs to be configuration data, some generic information about the configuration the customer is using. For example, what operating platform the customer uses for its software. What also should be stored in this system is information about the feedback that the vendor gets from the customer. This includes bug reports, product usage data, error reports and usage questions. More information about this feedback can be found in the CCU phase activation and usage.

By storing all this information the vendor can determine the customer needs very precisely whenever a customer requests a product or an update. As already stated the vendor can also easily inform the customer about some adaptations the customer needs to make to its configuration in order to let the product function properly. Another advantage of storing this information in a system is that it will ease the process of online delivery. The checking of the configuration needs and constraints can all be done automatically when a customer does a request.

CRM system 
The customer relationship management system contains all kinds of data about the customers of a company. In this article we will discuss the function of this customer data in the CCU delivery process. Information about the license agreement between the customer and the software vendor is stored in the CRM system. In the meta-data model this repository and online distribution is linked to the CRM system this can again be done automatically. The system will check if the license of a customer is sufficient to obtain a certain product or update.

Receiving feedback and updating the systems 

In order to keep all the described systems up-to-date at the vendor site it is important that the vendor receives a lot of

Example 
An example of a successful application of the CCU method can be found at Exact Software (ES). ES is a manufacturer of accounting and enterprise resource planning software based in the Netherlands. ES has combined Product Data Management (PDM), Customer Relationship Management (CRM) and Software Configuration Management (SCM) in order to maintain the configuration at the customer site in a better and less complex way. ES has a module in its CRM software that contains all contracts of each customer. This is linked to their PDM system. Every contract corresponds to files that can be downloaded for a new version or update of a previous version. In the delivery phase this means that the customers are able to obtain all the products through an online connection. So ES sells contracts (licenses) and stores them into their CRM system, the delivery of the actual products can be done by the customers themselves completely automated requiring little effort. The PDM system is on its turn linked to the SCM system which keeps track of the configurations the customers are using. In the delivery phase this means that ES is able to automatically determine the customer needs whenever a customer does a request.

See also 
 Release Management

References

Further reading 
 Krishnan M. S., (1994). Software release management: a business perspective, Proceedings of the 1994 conference of the Centre for Advanced Studies on Collaborative research, p. 36, October 31-November 3, 1994, Toronto, Ontario, Canada
 S. Jansen & G. Ballintijn and Sjaak Brinkkemper (2004). Software Release and Deployment At Exact: A Case Study
 S. Jansen & G. Ballintijn and Sjaak Brinkkemper (2005). Integrated SCM/PDM/CRM and delivery of software products to 160.000 customers. CWI. Software Engineering [SEN] 2004.
 Saeki M. (2003). Embedding Metrics into Information Systems Development Methods: An Application of Method Engineering Technique. CAiSE 2003, 374-389.

Business process
Software development process