Game Development Reference
Version 1 of any software is full of bugs. Version 2 fixes all the bugs and is
great. Version 3 adds all the things users ask for, but hides all the great stuff
in Version 2.
Configuration management has always been an integral component of the soft-
ware development life cycle because its main purpose is to efficiently handle the
evolving nature of software design. The deployment and support of a product
often causes many headaches and problems, especially with regards to updating
the user base with the latest software version. It is for this reason that there is such
a following around thin-client architectures and web-based solutions. A change is
generally only needed in a single location on the server to affect all connected
users. Imagine a company with a thousand machines that use a particular software
application. If it is deployed as a desktop application, you must rely on the user to
perform updates because of the large user base.
There are virtually limitless varieties of machine configurations within the user
base of a software product, and the components and code of desktop applications
must run on all of them. So many different configurations of software can also
lead to the infamous “DLL Hell” that has haunted configuration management for
many years. There is also a large assortment of security profiles within any orga-
nization of reasonable size, so it is important that software run under a diverse
range of security permissions.