In this article, we will see a simple theoretical model for software deployment. We will focus on deploying software over the Web, but what is said here can be applied to other situations as well. For concreteness, we will use the Java platform as an example. Here, instead of providing practical advice, we will discuss some basic concepts in a simple intuitive way. A definition of software deployment is also provided.
By software deployment and related services, we mean a broad range of software services comprising the first installation, upgrades, and other maintenance facilities.
The ideas proposed here can be summarized in two approaches. The first is adopting an additional layer of specialized software services (deployment services) that programs can rely on. The second is to think of this set of services as inherently cyclic by taking advantage of the Internet.
A Simplistic Model of the Software Lifecycle
First of all, a consideration. The Internet and all its related technologies (mainly the Web) have not made the software deployment issue obsolete. On Web-enabled platforms, all-HTML clients are suitable for some kind of applications only. After all, similar "thin client" technologies in other contexts have turned out to be much less successful (for example, the WAP on wireless devices). This emphasizes the importance of sophisticated deployment and maintenance of software applications on client platforms. (This term refers to any suitable computing platform, such as PCs, sophisticated personal devices, etc.)
We start from a rather simple, high-level view of the software lifecycle, as shown in Figure 1.
Figure 1 The waterfall software lifecycle model.
After the software is developed and published, it is distributed to the target clients, is properly installed, and is ready to be used. This is the well-known waterfall model of the software lifecycle.
What we will see in the rest of this article is how this familiar situation has changed with the advent of the Internet, in particular for deployment.