A software development project is a time-consuming and complex activity that requires the resources of a number of people and a significant financial outlay. A great deal of effort is required to establish the objectives of the project, which are then formalised in a requirements specification. Further effort must be expended in designing a solution that meets all of the requirements within the specified schedule, and within budgetary constraints. Once the design has been finalised, perhaps the most work-intensive part of the project is the implementation phase, during which all of the program code is written and tested. All of these activities must be documented, and the documentation maintained in an up-to-date state, to facilitate future system maintenance or enhancement. Any means of automating these activities, in whole or in part, can help to minimise the time required to complete the project and thus significantly reduce overall project costs.
Computer-Aided Software Engineering (CASE) is the application of a range of software tools to the development of information systems. Indeed, software tools can be applied to the entire range of activities involved in the systems development lifecycle, including the analysis, design, implementation, testing, documentation, and maintenance of information systems. Since all stages of the software development life-cycle can be directly supported by software of one kind or another, a broad definition of the term "computer-aided software engineering" might indicate the inclusion of project management software, compilers, assemblers, and linkers in the list of CASE tools. Usually, however, only those tools that are directly involved in the analysis, design and coding of information systems are considered to be included.
The first CASE tools were often developed to help software developers carry out a specific task, such as the production of flowcharts or the automated generation or re-factoring of program code. Later, integrated families of CASE tools were developed that offered support for a range of activities related to the development of information systems. Some of these integrated CASE tool suites were designed to support a particular development methodology. There are a number of proprietary applications, for example, that provide support for SSADM. Such applications facilitate the creation of common SSADM documents such as data flow diagrams, process descriptions, entity relationship diagrams, and entity life history diagrams.