CH-7 Software Maintenance and Re-Engineering-2
CH-7 Software Maintenance and Re-Engineering-2
CHAPTER 7
SOFTWARE MAINTENANCE AND RE-ENGINEERING
ere n ce
f
e inter must
by th a t ion
r
l tered at alte
n b e a
d , th tt o me
ca tere sB o
p l e al y ll i
o r peo to be Ph
at ion n hey are
e r situ r. If t
h e
Neit outsid ithin.
n
of a from w
e
com
It begins immediately when software is released to end users, and bug
reports back to the software engineering organization.
The challenge of software maintenance are queue of bug fixes,
adaptation requests and enhancements that must be planned,
scheduled, and ultimately accomplished.
Organization finds that it’s spending more money and time
maintaining existing programs than it is engineering new applications.
It is not unusual for a software organization to expend as much as 60
to 70 percent of all resources on software maintenance.
SOFTWARE MAINTENANCE CON’T …
Even programs created using the best design and coding techniques
known at the time ,they were then migrated to new platforms, adapted
to Hardware & OS technology and enhanced to meet new user needs
—all without enough regard to overall architecture.
The result is the poorly designed structures, coding, logic, and
documentation of the software systems
Maintainability is a qualitative indication of existing software can be
corrected, adapted, or enhanced.
Hence software Engineering is building systems that exhibit high
maintainability.
MAINTAINABILITY
Maintainable software exhibits effective modularity .
It makes use of design patterns that allow ease of understanding.
It has been constructed using well-defined coding standards and
conventions, leading to source code that is self-documenting and
understandable.
It has undergone a variety of quality assurance techniques that
uncovered potential maintenance problems before the software is
released.
It has been created by software engineers who recognize that they
may not been around when changes must be made.
Therefore, the design and implementation of the software must
“assist” the person who make a changes.
SOFTWARE SUPPORTABILITY
The capability of supporting a software system over its whole product
life.
This implies satisfying any necessary needs or requirements, but
also the provision of equipment, support infrastructure, additional
software, facilities, manpower, or any other resource required to
maintain the software operational and capable of satisfying its
function.
The software should contain facilities to assist support personnel
when a defect is encountered in the operational. In addition, support
personnel should have access to a database that contains records of all
defects that have already been encountered—their characteristics,
cause, and cure.
REENGINEERING
Business Processes
When Use the power of modern information technology to radically redesign our
business processes in order to achieve dramatic improvements in their performance.
REENGINEERING CON’T
I. Inventory analysis:
Build a table that contains all applications
Establish a list of criteria, e.g.
• Name of the application
• Year it was originally created
• Number of substantive changes made to it
• Total effort applied to make these changes
• Date of last substantive changes
• Effort applied to make the last change
• Systems in which it resides
• Applications to which it interfaces, …
Analyze and prioritize to select candidates for reengineering
SOFTWARE REENGINEERING
Restructure
code
Extract
abstractions Interface
Initial specification
Database
Refine &
simplify
Final specification
SOFTWARE REENGINEERING
IV. Code restructuring. Some legacy systems have a relatively solid program
architecture, but individual modules were coded in a way that makes them
difficult to understand, test, and maintain.
In such cases, the code within the suspect modules can be restructured.
The source code is analyzed using a restructuring tool.
Violations of structured programming constructs are noted and code is then
restructured (this can be done automatically).
The resultant restructured code is reviewed and tested to ensure that no anomalies
have been introduced. Internal code documentation is updated.
SOFTWARE REENGINEERING
V. Data restructuring:
for many applications, information architecture has more to do with the long-term
viability of a program than the source code itself.
Unlike code restructuring, which occurs at a relatively low level of abstraction, data
restructuring is a full-scale reengineering activity.
In most cases, data restructuring begins with a reverse engineering activity.
• Current data architecture is dissected and necessary data models are defined.
• Data objects and attributes are identified, and existing data structures are
reviewed for quality.
• When data structure is weak the data are reengineered.
Because data architecture has a strong influence on program architecture and the
algorithms that populate it, changes to the data will invariably result in either
architectural or code-level changes.
SOFTWARE REENGINEERING
VI. Forward engineering.
1. The cost to maintain one line of source code may be 20 to 40 times the cost of
initial development of that line.
2. Redesign of the software architecture (program and/or data structure), using
modern design concepts, can greatly facilitate future maintenance.
3. Because a prototype of the software already exists, development productivity
should be much higher than average.
4. The user now has experience with the software. Therefore, new requirements and
the direction of change can be ascertained with greater ease.
5. Automated tools for reengineering will facilitate some parts of the job.
6. A complete software configuration (documents, programs, and data) will exist
upon completion of preventive maintenance.
The forward engineering process applies software engineering principles, concepts,
and methods to re-create an existing application.
THE ECONOMICS OF REENGINEERING