- Forward


The Deployment of Software Products
An Introduction


Prof. David Bernstein
James Madison University

Computer Science Department
bernstdh@jmu.edu

Print

An Important Distinction
Back SMYC Forward
  • 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
Back SMYC Forward
  • Development Environment:
    • Your computer, OS, IDE, etc...
  • "Production" Environment:
    • The submission system environment
An Example of this Distinction (cont.)
Back SMYC Forward
  • 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
Back SMYC Forward
  • 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
Back SMYC Forward
  • 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
Back SMYC Forward
  • 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.)
Back SMYC Forward
  • 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.)
Back SMYC Forward
  • 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
Back SMYC Forward
  • 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
Back SMYC Forward
  • 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
Back SMYC Forward
  • Protecting Digital Information:
    • Copy Protection
    • Digital Rights Management
  • Integrity:
    • Digital Signatures
  • 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)
There's Always More to Learn
Back -