A software system that provides support for the development, repair, and enhancement of software, and for the management and control of these activities. A typical system contains a central database and a set of software tools. The central database acts as a repository for all information related to a project throughout the lifetime of that project. The software tools offer support for the various activities, both technical and managerial, that must be performed on the project.
Different environments vary in the general nature of their databases and in the coverage provided by the set of tools. In particular, some encourage (or even enforce) one specific software engineering methodology, while others provide only general support and therefore allow any of a variety of methodologies to be adopted. All environments, however, reflect concern for the entire software life cycle (rather than just the program development phase) and offer support for project management (rather than just technical activities). These two features normally differentiate a software engineering environment from a program development system. See also PSE (def. 1).