Computer aided software engineering
CASE can be broadly defined as a set of automated tools that assist in the entire software engineering process. Properly used, CASE tools help improve productivity during the development process and the quality of the resulting system.
5.2 Strengths, weaknesses, and limitations The major benefit attributed to CASE is improved productivity. When used properly, CASE significantly reduces development time. A major reason is automation. CASE replaces many tedious manual procedures with automated tools.
Another major benefit of CASE is improved quality. CASE tools help enforce style conventions, validate syntax, perform consistency checks across models, generate highly maintainable code, and improve quality. CASE can also be used to track the progress of a project and maintain traceability from analysis, through design and implementation.
CASE aids in managing the ripple effects that result from a change to a model. In response to a change, CASE makes the necessary changes in all affected models, so the analyst does not have to redraw the diagrams. Consequently, the analyst is more likely to try more alternatives and develop better solutions.
A secondary benefit of CASE is better documentation because the system makes it easy to create, assemble, and maintain high quality documentation. Because of improved system quality and better documentation, using CASE often results in reduced software maintenance costs. Also, CASE documentation provides a new form of corporate memory that survives staff changes and the limits of paper documentation.
Some CASE tools are based on a specific methodology or do not support the modeling conventions required by a given project. As a result, they sometimes force the users to adopt and use the approach imposed by the CASE tool. It is the analyst’s responsibility to choose the right tool for the application. The application should not be forced to fit the tool.
CASE ARCHTECTURE
CASE is an environment that supports the software engineering process. The environment usually consists of distinct tools, such as editing tools, programming tools, verification and validation tools, configuration management tools, metrics and
measurement tools, project management tools, housekeeping tools, reengineering tools, and miscellaneous tools.3 These tools are linked via the central repository.
.1 Editing tools Editing tools include traditional tools (such as word-processing and programming editors) that help in creating documentation and diagramming tools that provide graphical capabilities such as drawing a data flow diagram (# 24), entity-relationship diagram (# 26), or class-structure diagram (# 29).
5.4.1.2 Programming tools Coding and debugging tools are the standard tools used to compile (or interpret), run, and debug a program. Code generators are tools that write code from a high-level specification of an application. For example, in an object-oriented application a code generator might write the code for the class given the object-class diagrams. In a visual programming environment, a code generator might write the code for the underlying interface given a user interface. Restructuring tools help in analyzing and reformatting existing code by removing unnecessary go-to statements or other unreachable portions of code.
5.4.1.3 Verification and validation tools Verifiers ensure that the syntax is correct. Validation tools ensure that the requirements are correct and the product functions are the functions desired or requested by the customer.
Within this classification is a variety of tools. Static analyzers generate cross-references, check for syntax, and enforce standards on a program without executing the code. Dynamic analyzers, such as tracers and profilers, monitor program execution. Comparators check for differences or similarities between files; they are used for checking test output and expected program results
5.4.1.4 Configuration management tools Configuration management tools help coordinate and manage software development. Version management tools help maintain the various versions of code and ensure that the correct copy of the code is incorporated in subsequent work. Librarians control the checkin and checkout of software from the repository.
Building an application involves preprocessing, compiling, and linking a variety of software components. Configuration builders ensure that the correct version of each component or piece of software is included in the finished product. These tools become critical when the same product is being built for different target platforms such as Unix or Windows because they keep track of the components used for each target platform.
When changes are made to one software component, other components are affected. If a given component is used in multiple software projects or by multiple designers or developers, then the changes must be synchronized across all developers and projects to ensure that all products continue to work correctly. Change control monitors help with this synchronization.
5.4.1.5 Project estimation and management Developers and planners have expressed concern over their inability to accurately predict costs and estimate efforts, human resource requirements, and project duration. CASE provides modules that can help in the estimation process. For example, the COCOMO model (constructive cost model)1 is integrated into some CASE software. Function point models are common, too. The scope of the necessary effort can be estimated by counting the number of business activities called function points. The basic idea is to determine problem complexity, code complexity, and data complexity so that a reasonable estimate can be derived.
5.4.1.6 Reengineering tools
Legacy code (for example, old programs that must be modified for Year 2000 compliance) often lack structure, and in some cases, the source code may not even exist. Reengineering is the process of revising application software using a CASE tool. With reverse engineering, the existing application software is studied to understand its design. Forward engineering involves a complete redesign of the system to take advantage of new technologies such as client server computing.
5.4.1.7 Metric tools
Metric tools collect data on programs and program execution; for example, evaluating a set of code based on such metrics as McCabe statistics. Other tools are used to gather program run-time statistics.
5.4.1.8 Housekeeping tools Housekeeping tools generate user accounts, generate and control repository access privileges, implement backup and recovery, and perform other housekeeping functions.
5.4.1.9 The repository All the tools are integrated via the repository. The repository is a holding area for storing and integrating diagrams, descriptions, specifications, test data, and other items relevant to the development process. The repository allows users and developers to share information, supports team-based developmental activities, provides a mechanism for integrating a diverse set of CASE tools, and maintains a secure source of storage for software resources.
CASE can be broadly defined as a set of automated tools that assist in the entire software engineering process. Properly used, CASE tools help improve productivity during the development process and the quality of the resulting system.
5.2 Strengths, weaknesses, and limitations The major benefit attributed to CASE is improved productivity. When used properly, CASE significantly reduces development time. A major reason is automation. CASE replaces many tedious manual procedures with automated tools.
Another major benefit of CASE is improved quality. CASE tools help enforce style conventions, validate syntax, perform consistency checks across models, generate highly maintainable code, and improve quality. CASE can also be used to track the progress of a project and maintain traceability from analysis, through design and implementation.
CASE aids in managing the ripple effects that result from a change to a model. In response to a change, CASE makes the necessary changes in all affected models, so the analyst does not have to redraw the diagrams. Consequently, the analyst is more likely to try more alternatives and develop better solutions.
A secondary benefit of CASE is better documentation because the system makes it easy to create, assemble, and maintain high quality documentation. Because of improved system quality and better documentation, using CASE often results in reduced software maintenance costs. Also, CASE documentation provides a new form of corporate memory that survives staff changes and the limits of paper documentation.
Some CASE tools are based on a specific methodology or do not support the modeling conventions required by a given project. As a result, they sometimes force the users to adopt and use the approach imposed by the CASE tool. It is the analyst’s responsibility to choose the right tool for the application. The application should not be forced to fit the tool.
CASE ARCHTECTURE
CASE is an environment that supports the software engineering process. The environment usually consists of distinct tools, such as editing tools, programming tools, verification and validation tools, configuration management tools, metrics and
measurement tools, project management tools, housekeeping tools, reengineering tools, and miscellaneous tools.3 These tools are linked via the central repository.
.1 Editing tools Editing tools include traditional tools (such as word-processing and programming editors) that help in creating documentation and diagramming tools that provide graphical capabilities such as drawing a data flow diagram (# 24), entity-relationship diagram (# 26), or class-structure diagram (# 29).
5.4.1.2 Programming tools Coding and debugging tools are the standard tools used to compile (or interpret), run, and debug a program. Code generators are tools that write code from a high-level specification of an application. For example, in an object-oriented application a code generator might write the code for the class given the object-class diagrams. In a visual programming environment, a code generator might write the code for the underlying interface given a user interface. Restructuring tools help in analyzing and reformatting existing code by removing unnecessary go-to statements or other unreachable portions of code.
5.4.1.3 Verification and validation tools Verifiers ensure that the syntax is correct. Validation tools ensure that the requirements are correct and the product functions are the functions desired or requested by the customer.
Within this classification is a variety of tools. Static analyzers generate cross-references, check for syntax, and enforce standards on a program without executing the code. Dynamic analyzers, such as tracers and profilers, monitor program execution. Comparators check for differences or similarities between files; they are used for checking test output and expected program results
5.4.1.4 Configuration management tools Configuration management tools help coordinate and manage software development. Version management tools help maintain the various versions of code and ensure that the correct copy of the code is incorporated in subsequent work. Librarians control the checkin and checkout of software from the repository.
Building an application involves preprocessing, compiling, and linking a variety of software components. Configuration builders ensure that the correct version of each component or piece of software is included in the finished product. These tools become critical when the same product is being built for different target platforms such as Unix or Windows because they keep track of the components used for each target platform.
When changes are made to one software component, other components are affected. If a given component is used in multiple software projects or by multiple designers or developers, then the changes must be synchronized across all developers and projects to ensure that all products continue to work correctly. Change control monitors help with this synchronization.
5.4.1.5 Project estimation and management Developers and planners have expressed concern over their inability to accurately predict costs and estimate efforts, human resource requirements, and project duration. CASE provides modules that can help in the estimation process. For example, the COCOMO model (constructive cost model)1 is integrated into some CASE software. Function point models are common, too. The scope of the necessary effort can be estimated by counting the number of business activities called function points. The basic idea is to determine problem complexity, code complexity, and data complexity so that a reasonable estimate can be derived.
5.4.1.6 Reengineering tools
Legacy code (for example, old programs that must be modified for Year 2000 compliance) often lack structure, and in some cases, the source code may not even exist. Reengineering is the process of revising application software using a CASE tool. With reverse engineering, the existing application software is studied to understand its design. Forward engineering involves a complete redesign of the system to take advantage of new technologies such as client server computing.
5.4.1.7 Metric tools
Metric tools collect data on programs and program execution; for example, evaluating a set of code based on such metrics as McCabe statistics. Other tools are used to gather program run-time statistics.
5.4.1.8 Housekeeping tools Housekeeping tools generate user accounts, generate and control repository access privileges, implement backup and recovery, and perform other housekeeping functions.
5.4.1.9 The repository All the tools are integrated via the repository. The repository is a holding area for storing and integrating diagrams, descriptions, specifications, test data, and other items relevant to the development process. The repository allows users and developers to share information, supports team-based developmental activities, provides a mechanism for integrating a diverse set of CASE tools, and maintains a secure source of storage for software resources.