A program that is employed in the development, repair, or enhancement of other programs or of hardware. Traditionally a set of software tools addressed only the essential needs during program development: a typical set might consist of a text editor, compiler, link loader, and some form of debug tool. Such a set concentrates solely on the program production phase and is that normally provided by a program development system.
It is now recognized that software tools can assist in all activities of all phases of the software life cycle, including management and quality-assurance activities. Thus a comprehensive set would address such issues as requirements specification, design, validation, configuration control, and project management. Such tools would frequently form part of an integrated software engineering environment.