Sunday, August 9, 2009

CASE(Computer Aided Software Engineering)


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:

  1. Information engineering-supporting products. These are life-cycle processes, derived from the strategic plans of the enterprise and which provide a repository to create and maintain enterprise models, data models and process models.
  2. Structured diagramming-supporting products. These are derived from several development methodologies like Gane-Sarson or Jackson. These products at least support data flow, control flow and entity flow, which are the three basic structured software engineering diagramming types.
  3. Structured development aids-providing products. These products are providing aids for a structured development of the process. These products are very suitable to be used by the system analysts, because they are helped very much by a structured process, because those can be analysed faster and more accurately.
  4. Application-code-generating products. These are products that generate application-code for a specific goal, set by the designer. Most of the products in this area are using a COBOL-generator, which is a tool that generates programming code in a specific language out of specifications set by the system-designer.

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:

  1. A dictionary, which contains names and descriptions of data items, processes, etc.
  2. A repository, which contains this dictionairy information and a complete coded representation of plans, models and designs, with tools for cross-checking, correlation analysis and validation.

Before implanting CASE and designing tools, a serie of steps should be followed:

  1. Conduct a technology-impact study to determine how the basic business of the organization should change to maximize the opportunities presented by rapid technological change
  2. Evaluate how the organization should be re-engineered to take advantage of new technology
  3. Establish a program for replacing the old systems with the most effective new technology
  4. Commit to an overall integrated architecture
  5. Select a development methodology
  6. Select a CASE-tool
  7. Establish a culture of reusability
  8. Strive for an environment of open interconnectivity and software portability across the entire enterprise
  9. Establish intercorporate network links to most trading partners
  10. Determine how to provide all knowledge to workers with a high level of computerized knowledge and processing power
  11. Determine the changes in management-structure required to take full advantage of innovative systems, architectures, methodologies and tools

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:

  1. Low-cost MIPS, the price of fast processors is decreasing and even faster everyday
  2. Distributed computing environment, end-users are moving towards a multilayered distributed computer architecture
  3. CASE and I-CASE tools, higly integrated, repository-driven, computer-aided systems engineering tools are making it possible to generate application code directly from graphical specifications
  4. Forward/reverse engineering tools, re-engineering tools enable analysts to convert low-level data definition and unstructured process code into standardized data elements and structured code.
  5. New development methodologies, more efficient development life-cycle processes are making it possible to develop applications more rapidly and in closer coordination with end users.
  6. Growth of standards, standards are emerging that will govern the future evolution of hardware and software.

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.


reference:

www.npd-solutions.com/case.html


No comments:

Post a Comment