software deployment activities that make a software system available for use software development core activities processes requirements design engineering construction testing debugging deployment maintenance paradigms and models agile cleanroom incremental prototyping spiral v model waterfall methodologies and frameworks asd devops dad dsdm fdd iid kanban lean sd less mdd msf psp rad rup safe scrum semat tsp up xp supporting disciplines configuration management documentation software quality assurance sqa project management user experience practices atdd bdd cco ci cd ddd pp standup tdd tools compiler debugger profiler gui designer modeling ide build automation release automation infrastructure as code testing standards and bodies of knowledge babok cmmi ieee standards iso 9001 isoiec standards pmbok swebok itil glossaries artificial intelligence computer science electrical and electronics engineering vte 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 side or at the consumer side 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 history this section needs expansion you can help by adding to it january 2017 when computers were extremely large expensive and bulky mainframes and minicomputers software was often bundled together with the hardware by manufacturers if business software needed to be installed on an existing computer this might require an expensive timeconsuming visit by a systems architect or a consultant for complex onpremises installation of enterprise software today this can still sometimes be the case however with the development of mass market software for the new age of microcomputers in the 1980s came new forms of software distribution first cartridges then cassette tapes then floppy disks then in the 1990s and later optical media the internet and flash drives this meant that software deployment could be left to the customer however it was also increasingly recognised over time that configurability of the software by the customer was important and that this should ideally have a userfriendly interface rather than for example requiring the customer to edit registry entries on windows in preinternet software deployments deployments and their closely related cousin new software releases were of necessity expensive infrequent bulky affairs it is arguable therefore that the spread of the internet made endtoend agile software development possible indeed the advent of cloud computing and software as a service meant that software could be deployed to a large number of customers in minutes over the internet this also meant that typically deployment schedules were now determined by the software supplier not by the customers such flexibility led to the rise of continuous delivery as a viable option especially for less risky web applications deployment activities release the release activity follows from the completed development process and is sometimes classified as part of the development process rather than deployment process it includes all the operations to prepare a system for assembly and transfer to the computer systems on which it will be run in production therefore it sometimes involves determining the resources required for the system to operate with tolerable performance and planning andor documenting subsequent activities of the deployment process installation and activation for simple systems installation involves establishing some form of command shortcut script or service for executing the software manually or automatically for complex systems it may involve configuration of the system possibly by asking the enduser questions about its intended use or directly asking them how they would like it to be configured andor making all the required subsystems ready to use activation is the activity of starting up the executable component of software for the first time not to be confused with the common use of the term activation concerning a software license which is a function of digital rights management systems in larger software deployments on servers the main copy of the software to be used by users production 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 in complex continuous delivery environments andor software as a service systems differentlyconfigured versions of the system might even exist simultaneously in the production environment for different internal or external customers this is known as a multitenant architecture or even be gradually rolled out in parallel to different groups of customers with the possibility of cancelling one or more of the parallel deployments for example twitter is known to use the latter approach for ab testing of new features and user interface changes a hidden live group can also be created within a production environment consisting of servers that are not yet connected to the production load balancer for the purposes of bluegreen deployment deactivation deactivation is the inverse of activation and refers to shutting down any alreadyexecuting components of a system deactivation is often required to perform other deployment activities eg 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 uninstallation uninstallation is the inverse of installation it is the removal of a system that is no longer required it may also involve some reconfiguration of other software systems in order to remove the uninstalled systems dependencies update the update process replaces an earlier version of all or part of a software system with a newer release it commonly consists of deactivation followed by installation on some systems such as on linux when using the systems package manager the old version of a software application is typically also uninstalled as an automatic part of the process this is because linux package managers do not typically support installing multiple versions of a software application at the same time unless the software package has been specifically designed to work around this limitation builtin update mechanisms for installing updates are built into some software systems or in the case of some operating systems such as linux android and ios into the operating system itself 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 semiautomatic 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 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 autofilling of the user name and password for sites that require a login on linux android and ios this process is even easier because a standardised process for version tracking for software packages installed in the officially supported way is built into the operating system so no separate login download and execute steps are required so the process can be configured to be fully automated some thirdparty software also supports automated version tracking and upgrading for certain windows software packages adaptation 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 a consequence of a new release being made available adaptation may require specialist technical skills such as computer programming in certain complex cases deployment roles the complexity and variability of software products has fostered the emergence of specialized roles for coordinating and engineering the deployment process for desktop systems endusers frequently also become the software deployers when they install a software package on their machine the deployment of enterprise software involves many more roles and those roles typically change as the application progresses from test preproduction to production environments typical roles involved in software deployments for enterprise applications may include in preproduction environments application developers see software development process buildandrelease engineers see release engineering release managers see release management deployment coordinators see devops in production environments system administrator database administrator release coordinators see devops operations project managers see information technology infrastructure library application lifecycle management product lifecycle management systems management system deployment software release definitive media library readme release management 1e deployment tools ansible saltstack osgi jnlp rpm apt capistrano lansweeper xebialabs iceflo electric cloud buildmaster serena deployment automation chef standardization efforts solution installation schema submission request to w3c oasis solution deployment descriptor tc omg specification for deployment and configuration of componentbased distributed applications omg dc jsr 88 java ee application deployment articles the future of software delivery free developerworks whitepaper carzaniga antonio fuggetta alfonso hall richard s van der hoek andr heimbigner dennis wolf alexander l april 1998 a characterization framework for software deployment technologies technical report cucs85798 pdf boulder co department of computer science university of colorado bouldermwparseroutput citecitationfontstyleinheritmwparseroutput qquotesmwparseroutput codecs1codecolorinheritbackgroundinheritborderinheritpaddinginheritmwparseroutput cs1lockfree abackgroundurluploadwikimediaorgwikipediacommonsthumb665lockgreensvg9pxlockgreensvgpngnorepeatbackgroundpositionright 1em centermwparseroutput cs1locklimited amwparseroutput cs1lockregistration abackgroundurluploadwikimediaorgwikipediacommonsthumbdd6lockgrayalt2svg9pxlockgrayalt2svgpngnorepeatbackgroundpositionright 1em centermwparseroutput cs1locksubscription abackgroundurluploadwikimediaorgwikipediacommonsthumbaaalockredalt2svg9pxlockredalt2svgpngnorepeatbackgroundpositionright 1em centermwparseroutput cs1subscriptionmwparseroutput cs1registrationcolor555mwparseroutput cs1subscription spanmwparseroutput cs1registration spanborderbottom1px dottedcursorhelpmwparseroutput cs1hiddenerrordisplaynonefontsize100mwparseroutput cs1visibleerrorfontsize100mwparseroutput cs1subscriptionmwparseroutput cs1registrationmwparseroutput cs1formatfontsize95mwparseroutput cs1kernleftmwparseroutput cs1kernwlleftpaddingleft02emmwparseroutput cs1kernrightmwparseroutput cs1kernwlrightpaddingright02em resources visual studio release management vtesoftware engineeringfields computer programming requirements engineering software deployment software design software maintenance software testing systems analysis formal methods concepts data modeling enterprise architecture functional specification modeling language orthogonality programming paradigm software software archaeology software architecture software configuration management software development methodology software development process software quality software quality assurance software verification and validation structured analysis orientations agile aspectoriented object orientation ontology service orientation sdlc modelsdevelopmental agile eup executable uml incremental model iterative model prototype model rad up scrum spiral model vmodel waterfall model xp other spice cmmi data model er model function model information model metamodeling object model systems model view model languages idef uml usl sysml softwareengineers victor basili kent beck grady booch fred brooks barry boehm peter chen danese cooper ward cunningham tom demarco edsger w dijkstra delores m etter martin fowler adele goldstine margaret hamilton c a r hoare lois haibt mary jean harrold grace hopper watts humphrey michael a jackson ivar jacobson alan kay nancy leveson stephen j mellor bertrand meyer david parnas trygve reenskaug winston w royce james rumbaugh mary shaw peri tarr elaine weyuker niklaus wirth edward yourdon related fields computer science computer engineering project management risk management systems engineering category commons 