Custom software can be developed for most any purpose. Business "front-end" software is becoming very popular. A computer can be used to keep track of the sales, orders, invoicing, ... This type of software is usually referred to as a POS (Point Of Sale) system. Other applications are network management, industrial process control, data acquisition, numerical control, ...
The user interface is the most visible part of any application. A well-designed user interface should closely resemble what the user is familiar with. If an application is to replace all of the paperwork related to work-orders and invoicing, then the interface should mimic the look and feel of those workorders and invoices.
Typically once the decision is made to computerize a certain aspect of their business, people tend to get too carried away. Handing tasks off to a computer system should done very gradually, so that the control remains in the hands of the user, rather than the software. Taking things one step at a time allows for the user to get familiarized with all aspects of the new system. This builds confidence in the software, and prevents frustration in the event an error is made. It is always better to learn how to walk before attempting to run!
The first version of a software package usually requires some fine-tuning. Modular design promotes implementation of a tree structure to the product. By using this structure type, components of the software are linked together in an intuitive manner while preserving the option of adding or changing minor or major components of the product without too much difficulty. Modular design provides the most cost effective balance of flexible product for the client and programming resource management from the developer.
Some of the customization options may be programmed so the user can directly make changes through the software. Others may require intervention by the programmer. Updates to the software may be delivered in a number of ways. In most cases, the original software and the updates may be written to a CD-rom. An easy to use install program takes care of the setup procedures, making sure to preserve any of the data already created with the previous version of the software and updating any existing user files to work with the newly implemented features. Another option for updating and maintaing the software is remote access: Through a modem/network (or intra/inter-net) the updates can be remotely installed when the system is not in use. If help is needed, the programmer can then take control of the computer(s) and provide assistance to the user.