Software Re-Engineering
Lecture: 01
Instructor: Dr. Faria Nazir
Email : [email protected]
Your Background
• Name & Fathers Name
• City
• Last attended college with obtained marks
Optional: Any thing else
CODE OF ETHICS
• All students must come to class on time
(Attendance will be taken in first 5 to 10 mins)
• Students should remain attentive during class and
avoid use of Mobile phone, Laptops or any gadgets
• Respect faculty and staff through actions and
speech
• Class participation is encouraged
Evaluation Criteria
• Quizzes 20%
• Assignments 10%
• Mid Exam 25%
• Class Participation 5%
• Final Exam 40%
5
Course Introduction
• Course Objectives:
• This course helps students to understand and practice different
software reengineering techniques. The participants of this course
will learn how to apply reengineering techniques to maintain and
modify software systems.
• Prerequisites:
• Software Construction and Development (SE-3512)
• Mode
• Mix of lectures, demonstrations, discussions, exams
Text Book
• Primary
• Re-Engineering legacy software, David Lorge Parnas, Chris
Birchall, Safari Books, Shelter Island, NY, 2016.
• S. Demeyer, S. Ducasse, and O. Nierstrasz. Object-Oriented
Reengineering Patterns. Morgan Kaufmann, 2002.
• Reference
• Application Software Reengineering, Afshar alam, Tendai
Patenga, Dorling Kindersley Pvt. Ltd, Pearson Education in
South Asia, 2010.
• Software Maintenance and Evolution: a Roadmap,
K.H.Bennett and V.T Rajlich, The Future of Software
Engineering, ACM Press 2000.
Sequence [Todays Agenda]
Content of Lecture
•Introduction, Context and Strategies
•State-of-the-art definitions
•Why Reengineering
•Reengineering Advantages
•Reengineering difficulties and challenges
Traditional SDLC
Context: Software Life Cycle
Reengineering – Definitions -
1
Several definitions of reengineering:
•Reorganising and modifying existing software systems to
make them more maintainable
•"the examination of a subject system to reconstitute it in
a new form and the subsequent implementation of the
new form.
Reengineering – Definitions -
2
• Reengineering is the systematic transformation of an existing
system into a new form to realize quality improvements in
operation, system capability, functionality, performance, or
evolvability at a lower cost, schedule, or risk to the customer.
S. Tilley and D. Smith, Perspectives on Legacy System Reengineering, SEI White
Paper, 1995
Forward Engineering and Re-
Engineering
System Design and Ne w
specification implementation system
Forward engineering
Existing Understanding and Re-engineered
software system transformation system
Software re-engineering
13
When to Re-Engineer
• When system changes are mostly confined to part of the
system then re-engineer that part
• When hardware or software support becomes obsolete
• When new ways of accessing are needed, but its functionality
remains.
• When tool support is available.
14
Why Reengineer?
Why does an organization decide to reengineer one or more of
their systems:
•Software system is an integral part of the organization.
•System must be regularly maintained and maintenance is
becoming a large cost factor.
•Less risk and cost than redevelopment.
Re-Engineering Advantages
• Reduced risk
• There is a high risk in new software development. There may be
development problems, staffing problems and specification
problems
• Reduced cost
• The cost of re-engineering is often significantly less than the costs
of developing new software
16
Reengineering – Related Topics
-1
Restructuring:
•Restructuring is the transformation from one representation
form to another at the same relative abstraction level, while
preserving the subject system’s external behavior
Refactoring:
•Refactoring is the process of changing a software system in
such a way that it does not alter the external behavior of the
code yet improves its internal structure.
Reengineering – Related Topics
-2
Business Process Reengineering (BPR):
•concerned with the conversion of business process and not of
computer processes
Data Reengineering:
•concerned with conversion of data format and not its content
Unstructured Code
• START:
• GOTO MAMMALS
• DOG:
• WALK THE DOG
• GOTO CAT
• MAMMALS:
• GOTO DOG
• FISH:
• FEED THE FISH
• COVER THE BIRD
• GOTO FROG
• CAT:
• PUT OUT THE CAT
• GOTO FISH-AND-FOWL
• FISH-AND-FOWL:
• GOTO FISH
• FROG: 19
• SING TO THE FROG
• EXIT.
Structured Code
START:
CALL FUNCTION DOG
CALL FUNCTION CAT
CALL FUNCTION FISH
CALL FUNCTION BIRD
CALL FUNCTION FROG
EXIT.
DOG:
WALK THE DOG
RETURN
CAT:
PUT OUT THE CAT
RETURN
FISH:
FEED THE FISH
RETURN
BIRD:
COVER BIRD CAGE
RETURN
FROG:
SING TO THE FROG
RETURN
20
Reengineering difficulties
and challenges
•Short life expectancy – not anticipated to last decades when
first developed.
•Failure of process models and software engineering culture to
treat evolution as a first class activity – future requirements
ignored.
22