Computer Aided Software Engineering (Case)
Computer Aided Software Engineering (Case)
A CASE tool is a generic term used to denote any form of automated support for
software engineering, In a more restrictive sense a CASE tool can mean any tool
used to automate some activity associated with software development. Many
CASE tools are now available. Some of these tools assist in phase-related tasks
such as specification, structured analysis, design, coding, testing, etc. and others
to non-phase activities such as project management and configuration
management. The primary objectives in using any CASE tool are:
1. To increase productivity.
2. To help produce better quality software at lower cost.
CASE ENVIRONMENT
CASE tools are characterised by the stage or stages of software development life
cycle on which they focus. Since different tools covering different stages share
common information, it is required that they integrate through some central
repository to have a consistent view of information associated with the software.
This central repository is usually a data dictionary containing the definition of all
composite and elementary data items. Through the central repository all the CASE
tools in a CASE environment share common information among themselves.
Benefits of CASE
Several benefits accrue from the use of a CASE environment or even isolated CASE
tools.
1. A key benefit arising out of the use of a CASE environment is cost saving
through all developmental phases. Different studies carry out to measure
the impact of CASE, put the effort reduction between 30 per cent and 40
per cent.
2. Use of CASE tools leads to considerable improvements in quality. This is
mainly due to the facts that one can effortlessly iterate through the
different phases of software development, and the chances of human error
is considerably reduced.
3. CASE tools help produce high quality and consistent documents. Since the
important data relating to a software product are maintained in a central
repository, redundancy in the stored data is reduced, and therefore,
chances of inconsistent documentation is reduced to a great extent.
4. CASE tools take out most of the drudgery in a software engineers work. For
example, they need not check meticulously the balancing of the DFDs, but
can do it effortlessly through the press of a button.
5. CASE tools have led to revolutionary cost saving in software maintenance
efforts.
Code Generation
code generation is concerned, the general expectation from a CASE tool is
quite low. A reasonable requirement is traceability from source file to
design data. More pragmatic support expected from a CASE tool during
code generation phase are the following:
software maintenance project are not unique and depend on several factors
such as: (i) the extent of modification to the product required, (ii) the
resources available to the maintenance team, (iii) the conditions of the
existing product (e.g., how structured it is, how well documented it is, etc.),
(iii) the expected project risks, etc. When the changes needed to a software
product are minor and straightforward, the code can be directly modified
and the changes appropriately reflected in all the documents.
r, two broad categories of process models can be proposed.
First model
The first model is preferred for projects involving small reworks where the
code is changed directly and the changes are reflected in the relevant
documents later. ch, the project starts by gathering the requirements for
changes. The requirements are next analysed to formulate the strategies to
be adopted for code change. At this stage, the association of at least a few
members of the original development team goes a long way in reducing the
cycle time, especially for projects involving unstructured and inadequately
documented code. debugging of the reengineered system becomes easier
as the program traces of both the systems can be compared to localise the
bugs.
Second model The second model is preferred for projects where the amount of rework
required is significant. This approach can be represented by a reverse engineering cycle
followed by a forward engineering cycle. Such an approach is also known as software re-
engineering. The reverse engineering cycle is required for legacy products. During the
reverse engineering, the old code is analysed (abstracted) to extract the module
specifications. The module specifications are then analysed to produce the design. The
design is analysed (abstracted) to produce the original requirements specification. The
change requests are then applied to this requirements specification to arrive at the new
requirements specification. At this point a forward engineering is carried out to produce
the new code. At the design, module specification, and coding a substantial reuse is
made from the reverse engineered products. An important advantage of this approach is
that it produces a more structured design compared to what the original product had,
produces good documentation, and very often results in increased efficiency.
ESTIMATION OF MAINTENANCE COST
Boehm [1981] proposed a formula for estimating maintenance costs as part of his
COCOMO cost estimation model. Boehm’s maintenance cost estimation is made in terms
of a quantity called the annual change traffic (ACT). Boehm defined ACT as the fraction
of a software product’s source instructions which undergo change during a typical year
either through addition or deletion. where, KLOCadded is the total kilo lines of source
code added during maintenance. KLOCdeleted is the total KLOC deleted during
maintenance. Thus, the code that is changed, should be counted in both the code added
and code deleted. The annual change traffic (ACT) is multiplied with the total
development cost to arrive at the maintenance cost: Maintenance cost = ACT ×
Development cost Most maintenance cost estimation models, however, give only
approximate results because they do not take into account several factors such as
experience level of the engineers, and familiarity of the eng ineers with the product,
hardware requirements, software complexity, etc.
SOFTWARE REUSE
Software products are expensive. Therefore, software project managers are always
worried about the high cost of software development and are desperately looking for
ways to cut development cost. A possible way to reduce development cost is to reuse
parts from previously developed software. In addition to reduced development cost and
time, reuse also leads to higher quality of the developed products since the reusable
components are ensured to have high quality.
A REUSE APPROACH
A promising approach that is being adopted by many organisations is to introduce a
building block approach into the software development process. For this, the reusable
components need to be identified after every development project is completed. The
reusability of the identified components has to be enhanced and these have to be
cataloged into a component library. It must be clearly understood that an issue crucial to
every reuse effort is the identification of reusable components.
Domain Analysis
The aim of domain analysis is to identify the reusable components for a problem
domain.
Reuse domain A reuse domain is a technically related set of application areas. A body of
information is considered to be a problem domain for reuse, if a deep and
comprehensive relationship exists among the information items as characterised by
patterns of similarity among the development components of the software product. A
reuse domain is a shared understanding of some community, characterised by concepts,
techniques, and terminologies that show some coherence. Examples of domains are
accounting software domain, banking software domain, business software domain,
manufacturing automation software domain, telecommunication software domain, etc