CASE

FOR SOFTWARE PROCESS

AUTOMATION

BY

ANKITHA CHOWDARY GARAPATI

ABSTRACT:

Computer Aided Software Engineering is a technique to help with one or more phases of the software development cycle which involves analysis, design, implementation and maintenance of software. CASE is the use of computer-based support in the software development process. They provide all kinds of computer-based support for any of the managerial, administrative, or technical aspects of any part of a software project. The CASE approach to building and maintaining systems involves software tools and training for the developers who will use them.

CASE provides the engineer with the ability to automate the manual activities and to improve engineering insight. Also CASE tools ensure that quality is designed before the product is built. Although benefits can be derived from individual CASE tools that address specific software engineering activities, the real power of CASE can be achieved only through integration.

INTRODUCTION:

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 developed faster, too.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).
Since the early days of writing software, there has been an awareness of the need for automated tools to help the software developer. Initially the concentration was on program support tools such as translators, compilers, assemblers, macro processors, and linkers and loaders. However, as computers became more powerful and the software that ran on them grew larger and more complex, the range of support tools began to expand. In particular, the use of interactive time-sharing systems for software development encouraged the development of program editors, debuggers, code analyzers, and program-pretty printers.

As computers became more reliable and greater in use, the need for a broader notion of software development became apparent. Software development came to be viewed as:

  • A large-scale activity involving significant effort to establish requirements, design an appropriate solution, implement that solution, test the solution and document the functionality of the final system.
  • A long-term process producing software that requires enhancement through out its lifetime. The implications of this are that the structure of the software must enable new functionality to be added easily, and detailed records of the requirements, design, implementation, and testing of the system must be kept to aid maintainers of the software. In addition, multiple versions of all artifacts produced during a project must be maintained to facilitate group development of software systems.
  • A group activity involving interaction among a number of people during each stage of its life. Groups of people must be able to cooperate, in a controlled manner, and have consistent views of the state of the project.

This view "programming in the large" resulted in a wide range of support tools being developed. Initially, the tools were not very sophisticated in their support. However researchin the area of software development processes gave rise to a number of software design methods that could be used as the basis for software development.

CASEBUILDING BLOCKS

Computer Aided Software Engineering can be as simple as a single tool that supports a specific software engineering activity or as complex as a complete environment that encompasses tools, databases, people, hardware, a network, operating systems, standards, and number of other components.

The following are the building blocks for CASE:

Each building block forms a basis for the next. The environment architecture with hardware platform and operating system support including networking and database management lays the ground work for CASE. Portability services provide a bridge between CASE tools and their integration framework and environment architecture. The integration frame work enables individual CASE tools to communicate with one another. Portability Services allow CASE tools to migrate across various hardware platforms and operating systems without much adaptive maintenance. However CASE can also be a point solution to assist in a particular software engineering activity without using all of these building blocks.

TAXONOMY:

Various attempts have been made to make finer-grained distinctions between different classes of CASE tools along a number of dimensions. The most common distinctions are:

  • Tools that are interactive in nature (such as a design method support tool) and those that are not (such as a compiler). The former class sometimes called CASE tools, while the latter class called development tools.
  • Tools that support activities early in the life cycle of a soft ware project (such as requirements and design support tools) and those that are used later in the life cycle (such as compilers and test support tools). The former class sometimes called front-end CASE tools, and the latter are called back-end CASE tools.
  • Tools that are specific to a particular life-cycle step or domain (such as a requirements tool or a coding tool) and those that are common across a number of life-cycle steps or domains (such as a documentation tool or a configuration management tool). The former class sometimes called vertical CASE tools, while the latter class are called horizontal CASE tools.

But these distinctions are problematic. It is difficult to give a simple and consistent definition of `interactive' that is meaningful. For example, some classes of compilers prompt the user for information. In the second and third cases, there is an assumption about the methods and approaches in use (e.g., object-oriented software development, or prototype-oriented development), hence broadly a CASE tool is a computer-based product aimed at supporting one or more software engineering activities within a software development process.

CASE tools can also be classified by function in terms of

  • Their role as instruments for managers or technical people
  • Their use in various steps of the software development process
  • The environment architecture i.e. hardware and software that supports the CASE tools
  • Origin
  • Cost

Information Engineering Tools:

Information engineering Tools provide a meta model from which specific information systems are derived. These CASE tools model business information rather than focusing on the requirements of a specific application. They represent the business data objects, their relationships and the data object flow between different business areas.

Process Modeling And Management Tools:

These tools represent the key elements in a process. They provide links to process descriptions that helps to understand the work tasks that are required to perform the process.

Project Planning Tools:

They lay emphasis on project effort, cost estimation and project scheduling. Estimated effort, project duration etc are computed by the estimation tools. Project Scheduling tools define all project tasks as a work breakdown structure, modeling task network, task interdependencies etc.

Risk Analysis Tools:

Risk analysis tools identify potential risks and plan to mitigate, monitor and manage the risks, which is of greater importance in large projects. They enable a project manager to build a risk table by identifying and analyzing the risks.

Project Management Tools:

The project schedule and the project plan is tracked and monitored on a continuing basis. Also the manager should use tools to collect metrics that will ultimately indicate the software product quality. They are extensions to project planning tools.

Requirements Tracing Tools:

Sometimes when developing a large system, the final product may fail to meet customer specified requirements. These tools provide a systematic approach to the isolation of requirements, beginning with customer RFP.

Metrics And Management Tools:

These tools focus on process, project and product characteristics. They capture project specific metrics like LOC/person-month, defects per function point etc that provide an overall indication of product quality.

Documentation Tools:

Documentation tools provide an opportunity to improve productivity as organizations spend a substantial amount of time developing documents. These document production and desktop publishing tools support every aspect of software engineering.

Quality Assurance Tools:

The quality assurance tools audit source code to determine compliance with language standards. They also extract technical metrics to project the quality of the software being built.

Database Management Tools:

This establishes a project database and given emphasis on configuration objects these database management tools for CASE may evolve from relational database management systems to object oriented database management systems.

Software Configuration Management Tools:

The major tasks here are identification, version control, change control, auditing and status accounting. Software configuration management is the kernel of the CASE environment.

Analysis and Design tools:

They enable the software engineer to create models of the system to be built with representation of data, function and behavior and characterization of data, architectural, procedural and interface design.

PRO/SIM tools:

Prototyping and Simulation tools help predict the behavior of a real time system prior to the time it is built. It allows the customer gain insight into in to its function, operation and response prior to actual implementation.

Interface Design and development Tools:

These are like a toolkit of program components such as menus, buttons, icons, scrolling mechanisms, window structures, device drivers etc. Also there are interface prototyping tools that enable rapid on screen creation of sophisticated user interfaces.

Programming Tools:

These encompass compliers, editors and debuggers that are available to support most conventional programming languages.

Integration and Testing tools:

There are different categories of tools under this like data acquisition tools that acquire data to be used during testing, Static Measurement tools that analyze source code without executing test cases, Dynamic Measurement tools that analyze the source code during execution, Simulation tools which simulate functions of hardware or other externals, Test management tools that assist in planning, development and control of testing etc.

Reengineering Tools:

Reverse engineering to specification tools take source code as input and generate structured analysis and design models. Code restructuring and analysis tools analyze program syntax, generate a control graph, and automatically generate a structured program.

CASE ENVIRONMENT:

A CASE environment is a collection of CASE tools and other components together with an integration approach that supports most or all of the interactions that occur among the environment components, and between the users of the environment and the environment itself. The CASE tools provide an environment that will help automate the software process.

The first generation of CASE tool developers concentrated to a large extent on the automation of isolated tasks such as document production, version control of source code, and design method support. While successes have been achieved in supporting such specific tasks, the need for these `islands of automation' to be connected has been clearly recognized by many first generation CASE tool users. The tools that support the individual tasks of design, coding, documentation, and version control must be integrated if they are to support this kind of scenario effectively. A typical CASE environment consists of a number of CASE tools operating on a common hardware and software platform.

Software developers, tool integrators, and system administrators interact with multiple CASE tools and environment components that form the software and hardware platform of the CASE environment. We can define a CASE environment by emphasizing the importance of these interactions:The critical part is that the interactions among environment components are supported within the environment. Not only concentrating on the selection of CASE tools and components when assembling a CASE environment, there is also need to support the interactions among those components.

INTEGRATION:

Benefits can be derived from individual CASE tools that address specific software engineering activities, but the real power of CASE can be achieved only through integration. The integrated CASE environment ( I-CASE) enables

  • Smooth transfer of information from one tool to another and from one software engineering step to the next.
  • Allow directaccess to any tool contained in the environment.
  • A change to one item of information to be tracked to other related information items.
  • Collect both management and technical metrics that can be used to improve the process and the product.
  • Reduction in the effort required to perform umbrella activities such as software configuration management, quality assurance and document production.
  • Increase in project control through better planning, monitoring and communication.
  • Improved coordination and support communication among staff members working on a large software project.

Integration demands standardized interfaces between tools, consistent representation of information, homogeneous mechanism for communication, and an effective approach to enable the I-CASE to move along various hardware platforms and operating systems.Each of the building blocks of a CASE architecture must fit together in a seamless fashion. Tools are integrated so that software engineering information is available to each tool that needs it.

INTEGRATION ARCHITECTURE:

A pool of software engineering information is created by using CASE tools, corresponding methods, and a process framework. The integration framework facilitates flow of information into and out of the pool. To accomplish this the architectural components required are: a database system to store the information, a tools control mechanism to control coordinate the use of CASE tools and user interface. These components are represented as layers.

“Architectural Model for the integration Framework”

The User Interface Layer provides a standard interface toolkit with human computer interface management and display objects. They provide a communication between the interface and the CASE tools. Presentation Protocol is the set of guidelines that give all CASE tools the same look and feel. The Tools Layer incorporates set of tool management services with the CASE tools themselves which control the behavior of tools within the environment. The Object Management Layer (OML) performs the configuration management functions. This provides the mechanism for tools integration. It works in conjunction with the CASE repository to provide Integration services. The Shared Repository Layeris the CASE database and the access control functions enable interaction with the database.

REPOSITORY:

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 dictionary information and a complete coded representation of plans, models and designs, with tools for cross-checking, correlation analysis and validation.

The heart of a well-designed I-CASE system 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.

Role of Repository in I-CASE:

The CASE repository is referred to as a software bus. Information moves through it, passing from tool to tool as the software process progresses.The repository for an I-CASE environment is the set of mechanisms and data structures that performs the following functions

  • Data Integrity which includes functions to validate entries to the repository, ensure consistency
  • Data tool Integration establishes a data model which is accessed by all tools in the I-CASE environment and controls access to data
  • Information Sharing is for sharing information among the developers and controls multi user access to data and locks or unlocks the objects
  • Data-data Integration relates data objects to achieve other functions.
  • Document standardization is to create standard software engineering documents by definition of objects in the database.

CONCLUSION:

Computer aided software engineering span every step in the software process and in those umbrella activities that are applied throughout the process. CASE combines a set of building blocks that begin at the hardware and operating system level and end with individual tools.

The tools developed right now are evolutional products out of earlier tools. The first tools, developed in the mid '70s, were mainly introduced to automate the production and to maintain structured diagrams.When this automation covers the complete life-cycle process, it isIntegrated Computer Aided Software Engineering (I-CASE).The introduction of integrated CASE (I-CASE) products 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. A lot of time and money can be saved using Rapid Prototyping.

Hence these set of tools is necessary to 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 developed over the years and are being developed right now which provides the engineer with the ability to automate the manual activities and to improve engineering insight.