Monday, May 26, 2008

The Four Faces of a Software Application

Ever feel that no two people see your Software Application the same way?


Unless it is notepad or you are not going to share your software with anyone you will notice four distinct collection of scenarios for your application; Installation, Configuration, Administration and User.


Installation is the easiest to overlook because every well maintained program makes installation a breeze. An ease which masks the difficulty of the problem. Today's applications are rapidly developed in days, sometimes just hours and for the talented perhaps in just minutes. The rich feature set that is immediately available comes from leveraging powerful and extensive frameworks. Getting those frameworks on the target machine amounts to an install within an install. Which brings up a hard unalterable rule of Software Development. "Create the Install program before you have anything to install." Less mature developers and nontechnical managers will not understand this focus on the install first. If you have good QA they will save a company from itself by insisting on an installers.

After an application is installed it will be configured to its environment. Initially an ever growing amount of configuration will live in the installer. Time will reveal that this bloats the installer and turns testing the installer into a nightmarish complex exercise. Eventually, separating the installation from configuration is required. Where those configuration components live then becomes a delicate trade off. If you can rely upon your users, you may be able to leverage a large amount of the System OS configuration components. If not, you will need to wrap them and expose them in your administrative interfaces.

Skipping over Administrative for a moment, once the application is installed and configured it should run without any care and feeding. Thus all of the things related to the Install, Configuration and Administration are merely noise to the end user. The user interface should focuses only on how to get work done on a day to day basis.

There should be a separate interface for Administration which is now defined as those exception or unusual cases of interacting with the program. Troubleshooting or diagnosing failures is also included here. The Administrative interfaces should anticipate that there will be failures and provide some means of working within the app to report them at the very least.

No comments: