The Deployment of Software Products
An Introduction
|
Prof. David Bernstein
James Madison University
|
|
Computer Science Department |
bernstdh@jmu.edu |
|
An Important Distinction
- Development Environment:
- The hardware and software that are used to
(design and) implement a software product
- Testing Environment:
- The hardware and software that are used to
test (usually integration testing and system testing)
a software product
- Production Environment:
- The hardware and software system that the user interacts
with through the software product
An Example of this Distinction You're Familiar With
- Development Environment:
- Your computer, OS, IDE, etc...
- "Production" Environment:
- The submission system environment
An Example of this Distinction (cont.)
- A Problem You May Have Bumped Into:
- Your submissions didn't compile on the submission system
- What You Should Have Done:
- Created a testing environment that looked more like
the production environment (e.g., copy the
.zip
file to another directory, unzip it, and compile from the
command line)
Physical Architectures
- Definition:
- A physical architecture is a realization of a
software product as artifacts (e.g., files) residing on and
executing on computational resources
- An Important Note:
- A product's physical architecture is distinct from its
logical architecture (i.e., the software's major
components and the relationships between them)
Characteristics of Physical Architectures
- Where is the software installed?:
- Local device
- Central device(s)
- Hybrid
- Where is the software executed?
- Local device
- Central device(s)
- Hybrid
- Where are user configurations and data stored?
- Local device
- Central device(s)
- Hybrid
Archetypal Physical Architectures
- An Observation:
- Ignoring the hybrids, there are three characteristics
each of which has two possible values, so there are
\(2^3 = 8\) archetypal physical architectures
- The Rare Archetypes:
- Mobile Agents - The software is stored on the
user device and executed on the shared device (using
data from one or the other)
- The software is stored and executed on one device (either the user
device or the shared device) but the user
data is stored on another
Archetypal Physical Architectures (cont.)
- Mainframe:
- The software product is installed on and executes on a
central device, and is accessed from the user's device
(which behaves as a generic "terminal")
- Configuration information for each user and user data
is stored on the central device
- Personal:
- The software product is "permanently" installed on the
user's device (e.g., personal computer, phone, tablet)
and executes on that device's processor
- If the device has multiple users, configuration information
and user data are associated with each user
- Shared:
- The software product is "permanently" installed on
a shared storage device but executes on the user device's
processor
- Configuration information for each user and user data are
stored on the user's device
- Cloud:
- The software product is temporarily delivered
to the user's device and executes on that device's
processor (e.g., applets, WWW apps)
- Configuration information for each user and user data is
(mostly) stored "in the cloud"
Archetypal Physical Architectures (cont.)
- The Hybrid Architectures:
- Some components of the system (e.g., classes)
may be stored/executed on one device while others might be
stored executed on another
- Some data may be one one device and some data may be on another
- Some Important Examples:
- A product with a logical client-server architecture in
which the client is on the user's device and the server is
on a central device
- A product with sensitive/personal data stored on the
user's device and common data stored on a central
device
Activities in the Deployment Process
- Release:
- Prepare the product for the subsequent steps (i.e.,
assemble the parts/resources/artifacts and create a
distributable package)
- Install:
- Transfer the product from the development environment
to the production environment
- Activate:
- Start all of the executable components
- Deactivate:
- Stop the executable components
- Uninstall:
- Remove the product from the production environment
Adding Updates to the Idealized Process
- The Issue:
- All or part of an installed product may need to
updated
- Some Complications:
- It may or may not require deactivation and reactivation
- It is important to be able to "undo" an update and
return the product to its previous state
- An Implication:
- Design and implement with updates in mind
Some Other Issues Related to Deployment
- Protecting Digital Information:
- Copy Protection
- Digital Rights Management
- Integrity:
- Distributable Packages:
- Installers (e.g., InstallShield, Installer VISE)
- "Stores" (e.g., Apple Store, Play Store, Windows Store)
- Virtual Machines (e.g., VMWare, VirtualBox)
- Containers (e.g., Docker)