Often difficult with add-on, complex software; e.g., (p. 208): system that
requires a third party RDBMS.
Customer fears:
Too hard: "Do you want to update the registry
now?", "The digital certificate is out of date; do you want to
continue?",
"Install bilateral indexing on the database?"
Too complex:
"If you are running an older version; refer to
www.something.com for assistance."
Installation breaking in midstream ==> unknown,
unstable state ==> we're lost.
Unknown amount of required time.
Don't want to have to reboot.
Hohmann (p. 208): "Sensitize
developers"; let them run
through the install process themselves (≈all dentists must subject
themselves to a
root canal).
How to cut over:
All-or-nothing.
Temporary parallel systems.
On-site system testing.
User training.
Maintenance:
User support.
Continued bug tracking, fixing and performance
enhancements.
Upgrades:
Hohmann (p. 217) "Like
installation, only worse."
Have a running system that we depend on; cannot
afford
to break it.
Data format & definition changes.
Ripple upgrade:
Your upgrade requires an upgrade of something else.
Something that your system uses gets upgraded
(reverse ripple).
Especially pronounced in open source systems
(mostly
solved now through recursive system update functions).
Config files have been renamed or worse, moved!!
Release policies, administration & support.
Configurability:
p. 227: "Ease of
configuration is a worthwhile idea for both tarchitects &
marketects."
As with usability, poor configurability
Harms the productivity of users.
Burdens the tech support department.
Reflects negatively on the product & its
producers.
Takes away the advantages of modularity.
Configuration 'patterns:'
Rely on standard files & locations; e.g., *.conf
files in the /etc
directory in Linux; *.ini files
in Windows.
Make !!!ALL!!!
other local files, directories & machine names a mandatory
configurable..., yet provide graceful feedback when these settings are
not properly configured.
Use XML to store configuration information.
Configuration test scripts; e.g., in UNIX/Linux: make make config
--> make
--> make
install.
Parameterize only what must be parameterized (p. 229).
Provide reasonable default configuration settings; e.g., RDBMS.
Run-time configuration; e.g., switch logging on/off; set
default printer, etc.
Include documentation directly in the config files.