CASE (Computer-aided software engineering)
Software tools are now available to support most routine activities in the software process. These tools support editing of different types of document (designs, programs, etc.), compilation and debugging, and information management. Information management tools collect information about the system and allow users to browse and query that information. For example, a requirements traceability tool will allow users to examine the dependencies between requirements.
Early advocates of CASE suggested that orders of magnitude improvement were likely if integrated CASE tools were used. Significant improvements are possible for programming activities (integrated editing, compilation and debugging) but, for larger projects, the impact of CASE has been less dramatic.
In fact, the improvements for larger projects that have been achieved are of the order of 40% (Huff, 1992). Although this is significant, the predictions when CASE tools were first introduced in the 1980s and 1990s were that the use of CASE technology would generate huge savings in software process costs.
The improvements from the use of software tools are limited by three factors:
- For large projects, the major problems are caused by poorly defined requirements and requirements that change to reflect changing business needs. These lead to extensive rework of the software. These result in unforeseen costs and delays to the software development. As this is a business rather than a technical problem, tool support cannot reduce these costs.
- Software engineering is, essentially, a design activity based on creative thought. Software tools automate routine activities but attempts to harness artificial intelligence technology to provide support for design have not been successful.
- In most organisations, software engineering is a team activity and software engineers spend quite a lot of time interacting with other team members. Although tools for collaboration are improving, they are still fairly limited and do not support creative processes in an effective way.
My CASE classification sets out a number of different ways of classifying software development tools.
Interactive development enviroments, such as those based on ECLIPSE, consist of an integrated set of tools supporting a range of process activities. They will always include a source code editing system, compiler and debugger.
Huff, C. C. (1992). Elements of a realistic CASE tool adoption budget. Comm. ACM, 35 (4), 45-54.