Home
Education Page
Description
Schedule
Mailinglists
Literature
Book
Slides
WebLog
Assignments
Learning Wiki
Personal Log
Projects
Reviews
Center
Master Program
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
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_. [[http://www.cs.colorado.edu/~rickhall/][Richard S. Hall]] in the '[[http://www.cs.colorado.edu/~rickhall/deployment/][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 * [[http://sourcewell.berlios.de/html/][SourceWell]] -- software announcement & retrieval ----+++ 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 * [[http://www.easysw.com/epm/][EPM - ESP Package Manager]] * FileWave * SmartUpdate (Netscape) * [[http://www.program-transformation.org/Tools/AutoBundle][AutoBundle]] -- bundling of source packages and package announcement through [[http://www.program-transformation.org][package base]] * [[http://www.cryon.com/gbuild/][gbuild]] -- a script written to simplify package maintenance ----+++ Installation & Update * [[FreeBSD ports collection]] -- automatic installation and updates based on _source code_ distributions * [[http://www.autorpm.org/][autorpm]] -- automatic update to newly available rpms * up2date -- automatic update of rpms ----+++ Activation ----+++ Integrated deployment tools * [[http://www.ximian.com/products/redcarpet/][Red Carpet]] -- proposes software updates based on analysis of consumer site and announcements from producer * [[Software Dock]] ----+++ Other Tool Collections * [[http://www.cs.colorado.edu/~rickhall/deployment/links.html][Software Deployment Links]] at the [[http://www.cs.colorado.edu/~rickhall/deployment/][Software Deployment Information Clearinghouse]] ----++ Issues * Managing an installation * Library versions: multiple, dependency * Adaptability to configuration * Traceability and predictability * Obfuscation -------------------------------++ Literature * [[http://www.tldp.org/HOWTO/Software-Release-Practice-HOWTO/][Software Release Practice HOWTO]] by Eric S. Raymond * [[http://www.usenix.org/publications/library/proceedings/lisa96/reguero.html][Managing and Distributing Application Software]] by Ph. Defert, E. Fernandez, M. Goossens, O. Le Moigne, A. Peyrat, and I. Reguero (USENIX LISA'96) * [[http://www.ics.uci.edu/~andre/][André van der Hoek]] * Antonio Carzaniga, Alfonso Fuggetta, Richard S. Hall, Dennis Heimbigner, Andre van der Hoek, Alexander L. Wolf. [[http://www.cs.colorado.edu/~carzanig/papers/CU-CS-857-98.pdf][A Characterization Framework for Software Deployment Technologies]]. Technical Report CU-CS-857-98, Dept. of Computer Science, University of Colorado, April 1998. * 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. * [[http://www.cwi.nl/~mdejonge/][Merijn de Jonge]]. Source Tree Composition. In _Seventh International Conference on Software Reuse_, No. 2319 of _Lecture Notes in Computer Science_, Springer-Verlag, 2002. * André van der Hoek. [[http://www.ics.uci.edu/~andre/research/papers/CDSA2001.pdf][Integrating Configuration Management and Software Deployment]]. In _Proceedings of the Working Conference on Complex and Dynamic Systems Architecture (CDSA 2001)_, Brisbane, Australia, December 2001. * André van der Hoek and Alexander L. Wolf. [[http://www.ics.uci.edu/~andre/research/papers/SPE2002.pdf][Software Release Management for Component-Based Software]] In Software - Practice and Experience 33, January 2003 * Chris Luer. Composition Environments for Deployable Software Components. Technical Report #02-18, Department of Information and Computer Science, University of California, Irvine, August 2002. * T.R. Fullhart. [[http://www.kayos.org/download/rpm-tutorial.html][RPM Tutorial]] * Dan Poirier. [[http://www-106.ibm.com/developerworks/library/l-rpm1/][Packaging software with RPM, Part 1. Using RPM on Red Hat Linux 7.1]]