Software Deployment

Swe03

Description

After development, software should be put to use. That is, it should be released and made available to users, who can then download, install, and activate it. These activities are captured under the common term software deployment. Richard S. Hall in the 'Software Deployment Information Clearinghouse' defines software deployment as follows: "The term software deployment refers to all of the activities that occur after a software system has been developed and made available for release. As such, software deployment includes activities such as packaging, releasing, installing, configuring, updating, and uninstalling a software system." and "Software deployment is the assembly and maintenance of the resources necessary to use a version of a system at a particular site."

The following deployment activities make up the software deployment process:

  • Release
  • Packaging
  • Transfer
  • Installation
  • Configuration
  • Activation
  • De-activation
  • Update
  • Adapt
  • De-installation
  • De-release

These activities are not necessarily performed sequentially.

Many phases of the deployment process are often performed manually. For example, downloading, building and installing a source distribution of a software package, requires a number of commands to be formulated and executed. Each such command requires knowledge of some sort about the activity.

Manual deployment does not scale when deploying

  • many applications
  • applications composed from seperately deployed components
  • on multiple machines
  • on different types of machines

Tools

Many tools are available supporting one or more deployment activities. Here is a list with representative tools, classified by the main activity the tool supports.

Release

Configuration

  • GNU build tools (autoconf, automake, libtool) -- generation of scripts to adapt a source tree to a consumer site before compilation

Packaging

  • RedHat Package Manager -- packaging, installing, de-installing, updating of binary distributions for the RedHat? Linux operating system

  • FileWave?

  • SmartUpdate? (Netscape)

  • gbuild -- a script written to simplify package maintenance

Installation & Update

  • FreeBSD ports collection -- automatic installation and updates based on source code distributions
  • autorpm -- automatic update to newly available rpms
  • up2date -- automatic update of rpms

Activation

Integrated deployment tools

  • Red Carpet -- proposes software updates based on analysis of consumer site and announcements from producer

Other Tool Collections

Issues

  • Managing an installation
    • Library versions: multiple, dependency
    • Adaptability to configuration
    • Traceability and predictability
  • Obfuscation

Literature