|This article does not cite any references or sources. (October 2008)|
|Software development process|
A software developer at work
|Activities and steps|
Software deployment is all of the activities that make a software system available for use.
The general deployment process consists of several interrelated activities with possible transitions between them. These activities can occur at the producer site or at the consumer site or both. Because every software system is unique, the precise processes or procedures within each activity can hardly be defined. Therefore, "deployment" should be interpreted as a general process that has to be customized according to specific requirements or characteristics. A brief description of each activity will be presented later.
Deployment activities 
- The release activity follows from the completed development process. It includes all the operations to prepare a system for assembly and transfer to the customer site. Therefore, it must determine the resources required to operate at the customer site and collect information for carrying out subsequent activities of deployment process.
- Install and activate
- Activation is the activity of starting up the executable component of software. For simple system, it involves establishing some form of command for execution. For complex systems, it should make all the supporting systems ready to use.
- In larger software deployments, the working copy of the software might be installed on a production server in a production environment. Other versions of the deployed software may be installed in a test environment, development environment and disaster recovery environment.
- Deactivation is the inverse of activation, and refers to shutting down any executing components of a system. Deactivation is often required to perform other deployment activities, e.g., a software system may need to be deactivated before an update can be performed. The practice of removing infrequently used or obsolete systems from service is often referred to as application retirement or application decommissioning.
- The adaptation activity is also a process to modify a software system that has been previously installed. It differs from updating in that adaptations are initiated by local events such as changing the environment of customer site, while updating is mostly started from remote software producer.
- The update process replaces an earlier version of all or part of a software system with a newer release.
- Mechanisms for installing updates are built into some software systems. Automation of these update processes ranges from fully automatic to user initiated and controlled. Norton Internet Security is an example of a system with a semi-automatic method for retrieving and installing updates to both the antivirus definitions and other components of the system. Other software products provide query mechanisms for determining when updates are available.
- Version tracking
- Version tracking systems help the user find and install updates to software systems installed on PCs and local networks.
- Web based version tracking systems notify the user when updates are available for software systems installed on a local system. For example: VersionTracker Pro checks software versions on a user's computer and then queries its database to see if any updates are available.
- Local version tracking system notifies the user when updates are available for software systems installed on a local system. For example: Software Catalog stores version and other information for each software package installed on a local system. One click of a button launches a browser window to the upgrade web page for the application, including auto-filling of the user name and password for sites that require a login.
- Browser based version tracking systems notify the user when updates are available for software packages installed on a local system. For example: wfx-Versions is a Firefox extension which helps the user find the current version number of any program listed on the web.
- Uninstallation is the inverse of installation. It is the removal of a system that is no longer required. It also involves some reconfiguration of other software systems in order to remove the uninstalled system’s files and dependencies.
- Ultimately, a software system is marked as obsolete and support by the producers is withdrawn. It is the end of the life cycle of a software product.
Deployment roles 
The complexity and variability of software products has necessitated the creation of specialized roles for coordinating and engineering the deployment process. For desktop systems, an end user is frequently also the "software deployer" when they install the software package on their machine. For enterprise software, there are many more roles involved. Additionally, the roles involved typically change as the application progresses from test (pre-production) to production environments. The typical roles involved in software deployments for enterprise applications are:
- Pre-production environments
- Production environments
See also 
- Application lifecycle management
- Product lifecycle management
- Systems management
- System deployment
- OSGi, JNLP, RPM, Apt, Capistrano
- Software release
- Definitive Media Library
- Redhat / Fedora Spacewalk (software)
- FAI OpenSource Software Linux
- M23 OpenSource Software Linux
- Open PC Server Integration (opsi) OpenSource Software Windows
- RPM with YUM OpenSource Software Linux
- MS SCCM Microsoft Windows
- HP OpenView (Hewlett-Packard)
- IBM Tivoli Provisioning Manager and Tivoli Intelligent Orchestrator
- Novell ZENworks (Novell) Zero Effort Networks
- BlackBerry MDS Suite Research In Motion (RIM)
- Standardization efforts
- The Future of Software Delivery - free developerWorks whitepaper
- Carzaniga A., Fuggetta A., Hall R. S., Van Der Hoek A., Heimbigner D., Wolf A. L. — A Characterization Framework for Software Deployment Technologies — Technical Report CU-CS-857-98, Dept. of Computer Science, University of Colorado, April 1998. http://serl.cs.colorado.edu/~carzanig/papers/CU-CS-857-98.pdf
||This article needs attention from an expert in Computing. (August 2008)|
|This article does not cite any references or sources. (August 2008)|
Software distribution is the process of delivering software to the end user. This is not to be confused with a distribution, or distro, which is collection of software components built, assembled and configured so that it can be used essentially "as is" for its intended purpose.
Software distribution is often the closest thing to turnkey form of free software. It may take the form of a binary distribution, with an executable installer which can be downloaded from the Internet. Examples range from whole operating system distributions to server and interpreter distributions (for example WAMP installers). Software distribution can also refer to careware and donateware.
In recent years, the term has come to refer to nearly any "finished" software (i.e. something that is more or less ready for its intended use, whether as a complete system or a component of a larger system) that is assembled primarily from open source components.
Examples of software distributions include:
- Berkeley Software Distributions such as FreeBSD, NetBSD, OpenBSD and DragonflyBSD
- Linux distributions such as Ubuntu, SUSE, Debian, and Fedora
- Application servers such as JBoss or Apache Geronimo
- The Eclipse Europa release of software development tools
- The PostgreSQL relational database
Distribution support 
Technical support is a key issue for end-users of distributions, since the distribution itself is typically free and may not be "owned" in a commercial sense by a vendor. Depending on the distribution, support may be provided by a commercial support vendor, the developers who created the distribution or by the user community itself.
Free software distribution tools 
Commercial software distribution tools 
- LANDesk Management Suite provides software distribution for Windows, OS X, and Linux.
- Dell KACE provides remote administration, software distribution, and software installation to any Windows, Mac, or Linux desktop or server.
Distribution tools for mobile devices 
Distribution of software to small mobile devices such as phones, PDAs and other hand-held terminals is a particular challenge due to their ad-hoc connectivity. Some tools that cater to this category of devices are:
- Sybase iAnywhere Afaria
See also