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
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
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.
- GNU build tools (autoconf, automake, libtool) -- generation of scripts to adapt a source tree to a consumer site before compilation
- 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
Integrated deployment tools
- Red Carpet -- proposes software updates based on analysis of consumer site and announcements from producer
Other Tool Collections
- Managing an installation
- Library versions: multiple, dependency
- Adaptability to configuration
- Traceability and predictability