The term Software Engineering is used when the people who will use the software sit down with the people who build and maintain the software and create a detailed plan of what is needed, how it will be used, who will use it. This enables only the software really needed is written, is most able to do the work required, will mean maximum benefit with minimum training and support. Oh, and it is cost effective for both creators and users of the software.