Unit 5
Unit 5
Unit 5
UNIT-5
• The mention of the word maintenance brings up the image of a screw driver, wielding
mechanic with soiled hands holding onto a bagful of spare parts.
• It would be the objective of this chapter to give idea of the software maintenance
projects, and to familiarise you with the latest techniques in software maintenance.
• Software maintenance denotes any changes made to a software product after it has been
delivered to the customer. Maintenance is necessity for almost any kind of product.
• However, most products need maintenance due to the wear and tear caused by use.
• On the other hand, software products do not need maintenance on this count, but need
maintenance to correct errors, enhance features, port to new platforms, etc.
• A way to carry out these cosmetic changes is shown schematically in Figure 13.1.
• After the cosmetic changes have been carried out on a legacy software, the proces of
extracting the code, design, and the requirements specification can begin.
• These activities are schematically shown in Figure 13.2. In order to extract the design, a
full understanding of the code is needed. Some automatic tools can be used to derive the
data flow and control flow diagram from the code.
• The structure chart (module invocation sequence and data interchange among modules)
should also be extracted. The SRS document can be written once the full code has been
thoroughly understood and the design extracted.
2. SOFTWARE MAINTENANCE PROCESS MODELS
• In this approach, 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.
• The availability of a working old system to the maintenance engineers at the
maintenance site greatly facilitates the task of the maintenance team as they get a
good insight into the working of the old system and also can compare the working of
their modified system with the old system.
• Also, 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 aforward
engineering cycle. Such an approach is also known as software re- engineering. This
process model is depicted in Figure 13.4.
5. SOFTWARE REUSE
• Software products are expensive. Therefore, software project managers are always
worried about the high cost of software development .
• 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 highquality.
• A reuse approach that is of late gaining prominence is component-based development.
Component-based software development is different from the traditional software
development in the sense that software is developed by assembling software from off-
the-shelf components.
• Software development with reuse is very similar to a modern hardware engineer
building an electronic circuit by using standard types of ICs and other components.
Component creation:
• For component creation, the reusable components have to be first identified. Selection
of the right kind of components having potential for reuse is important.
Component indexing and storing
• Indexing requires classification of the reusable components so that they can be easily
searched when we look for a component for reuse.
• The components need to be stored in a relational database management system
(RDBMS) or an object-oriented database system (ODBMS) for efficient access when
the number of components becomes large.
Component searching
• The programmers need to search for right components matching their requirements in
a database of components. To be able to search components efficiently, the
programmers require a proper method to describe the components that they are
looking for.
Component understanding
• The programmers need a precise and sufficiently complete understanding of what the
component does to be able to decide whether they can reuse the component.
• To facilitate understanding, the components should be well documented and should
do something simple.
Component adaptation
• Often, the components may need adaptation before they can be reused, since a
selected component may not exactly fit the problem at hand.
• However, tinkering with the code is also not a satisfactory solution because this is
very likely to be a source of bugs.
Repository maintenance
• A component repository once is created requires continuous maintenance.
• New components, as and when created have to be entered into the repository.
• The faulty components have to be tracked.
• Further, when new applications emerge, the older applications become . In this case,
the obsolete components might have to be removed from the repository.
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 is a promising approach to identify reusable components.
• The domain analysis approach to create 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.
Evolution of a reuse domain
• The ultimate results of domain analysis is development of problem oriented
languages. The problem-oriented languages are also known as application generators.
Component Classification
• Components need to be properly classified in order to develop an effective indexing
and storage scheme. We have already remarked that hardware reuse has been very
successful.
Searching
• The domain repository may contain thousands of reuse items. In such large domains,
what is the most efficient way to search an item that one is looking for?
Repository Maintenance
• Repository maintenance involves entering new items, retiring those items which are
no more necessary, and modifying the search attributes of items to improve the
effectiveness of search.
• The portability solution suggests that rather than call the operating system and I/O
procedures directly, abstract versions of these should be called by the application
program.
• Also, all platform-related calls should be routed through the portability interface.