Software Deployment
Swe04
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
- 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
- Richard S. Hall, Dennis Heimbigner, Alexander L. Wolf. A Cooperative Approach to Support Software Deployment Using the Software Dock. In Proc. Int'l Conf. Software Eng. (ICSE '99), IEEE CS Press, 1999.
- Merijn de Jonge. Source Tree Composition. In Seventh International Conference on Software Reuse, No. 2319 of Lecture Notes in Computer Science, Springer-Verlag, 2002.
- Chris Luer. Composition Environments for Deployable Software Components. Technical Report #02-18, Department of Information and Computer Science, University of California, Irvine, August 2002.