Nowadays everything has to go faster. Because of the increasing speed of changing market-demands new products replace old ones much earlier than before, so the development of new products has to go faster. Thus the production lines have to be developped faster, too. A very important role in this development is software engineering because many production processes are 'computer aided', so software has te be designed for this production system. It seems very important to do the software engineering right and fast. In the past, software systems were build using traditional development techniques, which relied on hand-coding applications. Software engineers had to design software without help of computers, by programming each step at one time. This way is much too costly and time-consuming. In order to speed up the process the bottlenecks in building software systems are to be found . This is hard to do because of the increasing role of computers in our society. Technology is developped further every day, so faster and bigger computers enter the scene. The software running on these computers can be more extensive because they can handle more information in the same time, so there is an increasing amount of data to go with it. Finding the right data out of this increasing amount of information is getting harder and harder, so finding the bottleneck is harder to do.
To speed up the software system building process, a new concept of designing software is introduced in the '70s, called Computer Aided Software Engineering (CASE). This term is used for a new generation of tools that applies rigorous engineering principles to the development and analysis of software specifications. Simply, computers develop software for other computers in a fast way by using specific tools. When implanted in a Concurrent Engineering environment, this process is taking place while some parts of the developed software is running already. It's a sort of on-line software engineering. There are a lot of problems with these kinds of systems because they are very complex, not easily maintainable and fragile. Some of the tools which were very progressive back then, are obsolete right now, so they have to be updated, which can be a problem because the software engineering process is fit around these tools.
The tools developped right now are evolutional products out of earlier tools. The first tools, developped in the mid '70s, were mainly introduced to automate the production and to maintenance structured diagrams.When this automation covers the complete life-cycle process, we speak of Integrated Computer Aided Software Engineering (I-CASE). When only one specific part of the life-cycle process is covered we speak of -just- Computer Aided Software Engineering (CASE).
Later on, integrated CASE (I-CASE) products were introduced. This was an important step because I-CASE products are capable of being used to generate entire applications from design specifications.
Recently, CASE tools have entered a third phase: the introduction of new methodologies based on capabilities of I-CASE tools. These new methodologies utilize Rapid Prototyping techniques to develop applications faster, at lower cost and higher quality. By using Rapid Prototyping a prototype can be made fast, so the developped system can be tested more often in between the development-phases because it doesn't cost much time to create a prototype. Mistakes can be detected and corrected earlier this way. The earlier this can be done, the better because correcting these mistakes gets harder and more expensive when the system is developped further. So a lot of time and money can be saved using Rapid Prototyping.
As said above, a new set of tools is necessary. These tools should automate each phase of the life-cycle process and tie the application development more closely to the strategic operations of the business. A lot of different tools have been developped over the years and are being developped right now. There are so many tools, that we could easily get confused. To survey all these CASE tools we divide them in the following categories:
The heart of a well-designed I-CASE sytem is a repository, which is used as a knowledge base to store information about the organization, its structure, enterprise model, functions, procedures, data models etc. The meaning represented by diagrams and their detail windows is stored in the repository. The repository steadily accumulates information relating to the planning, analysis, design, construction and maintenance of systems. In other words: The repository is the heart of a CASE system.
Two types of mechanisms have been used in CASE software to store design information:
Before implanting CASE and designing tools, a serie of steps should be followed:
When an enterprise takes these actions ahead of its competition, it wil gain a major competitive advantage. An enterprise should also be up-to-date because the rapid advances in computer technology allows the competition to get ahead of you. Some significant trends in the development of new system environments include:
We now have some insight in what CASE is, how it should be implanted and used and which tools are available. For more information I refer to the literature because the theory is too extensive to completely discuss it at this point.