Reverse Engineering
Contents
• What is Reverse Engineering (RE)?
• Why do we need Reverse Engineering?
• Scope and Tasks of Reverse Engineering
• Different Approaches
• RE tools
• Conclusions
What is Reverse Engineering ?
• You have an unexpected case:
– You finished one course project using Java
– Your program runs OK
– But, by accident, you delete the java file
– How to hand in your project?
What is Reverse Engineering ?
• You have an unexpected case:
– You finished one course project using Java
– Your program runs OK
– But, by accident, you delete the java file
– How to hand in your project?
• Reverse Engineering
What is Reverse Engineering ?
Waterfall Model of software development
Requirement
analysis
design
Implementation
Testing and
Maintenance
What is Reverse Engineering ?
Forward Engineering
Requirements
Design
Source Code
Behavior
What is Reverse Engineering ?
Forward Engineering Reverse Engineering
Requirements
Design
Source Code
Behavior
What is Reverse Engineering ?
Abstraction System
Old system New System
Forward Engineering
Re-Implementation
Reverse Engineering
Abstraction
What is Reverse Engineering?
• RE encompasses any activity that is done to
determine how a product works, to learn the
ideas and technology that were used in
developing that product.
• RE can be done at many levels
• RE generally belongs to Software
Maintenance
The Early Days of RE
• Law of Software Revolution (Lehman, 1980)
• Fundamental strategies for program
comprehension (Brooks, 1983)
• Taxonomy of Reverse Engineering
(Chikofsky&Cross, 1990)
• WCRE (Working Conference on R.E., 1990)
• IWPC (Int. Workshop on Program
Comprehension)
Why do we need RE ?
• Recovery of lost information
– providing proper system documentation
• Assisting with maintenance
– identification of side effects and anomalies
• Migration to another hw/sw platform
• Facilitating software reuse
Why do we need RE ?
• Benefits
– maintenance cost savings
– quality improvements
– competitive advantages
– software reuse facilitation
Difficulties of Reverse Engineering
• Gap between problem
/solution domain
• Gap between concrete
and abstract
• Gap between coherency/disintegration
• Gap between hierarchical/associational
Scope and Task of Reverse Engineering
• program understanding
Problem/Application
domain
Program/Implemen.
domain
Mapping
Scope and Task of Reverse Engineering
• Redocumentation and/or document
generation
• Recovery of design approach and design
details at any level of abstraction
• Identifying reusable components and
components that need restructuring
• Recovering business rules
• Understanding high-level system description.
Discovery of Abstraction
• Discovery of abstraction in large system
– maintenance purpose
– evolution purpose
– reengineering purpose
Levels of abstractions
• Application
– Application concepts, business rule, policies
• Function
– Logical and functional specification, non-functional requirement
• Structure
– Data and control flow, dependency graphs
– Structure and subsystem charts
– Architectures
• Implementation
– Symbol tables, source text
Different Approaches
• Restructuring
– Transformation from one representation to
another at the same level,
Requirements
Design
Source code
Behavior
Different Approaches
• Reverse Engineering
– Design Recovery
• reproduce all the info for understanding the system
– Re-documentation
• provide different views of the system
• Re-Engineering
– first phase --understanding the system
– second phase--forward engineering
Reverse Engineering Tools
• Analysis Tools
• Browsers
• Object Server
• Task Oriented Tools
Conclusions
• Reverse Engineering is a new research area
among software maintenance
• RE includes activities of understanding the
system and recovery info from system
• Program understanding is the most important
subset of Reverse Engineering
• Discovery of abstraction is key issue

Re ppt1

  • 1.
  • 2.
    Contents • What isReverse Engineering (RE)? • Why do we need Reverse Engineering? • Scope and Tasks of Reverse Engineering • Different Approaches • RE tools • Conclusions
  • 3.
    What is ReverseEngineering ? • You have an unexpected case: – You finished one course project using Java – Your program runs OK – But, by accident, you delete the java file – How to hand in your project?
  • 4.
    What is ReverseEngineering ? • You have an unexpected case: – You finished one course project using Java – Your program runs OK – But, by accident, you delete the java file – How to hand in your project? • Reverse Engineering
  • 5.
    What is ReverseEngineering ? Waterfall Model of software development Requirement analysis design Implementation Testing and Maintenance
  • 6.
    What is ReverseEngineering ? Forward Engineering Requirements Design Source Code Behavior
  • 7.
    What is ReverseEngineering ? Forward Engineering Reverse Engineering Requirements Design Source Code Behavior
  • 8.
    What is ReverseEngineering ? Abstraction System Old system New System Forward Engineering Re-Implementation Reverse Engineering Abstraction
  • 9.
    What is ReverseEngineering? • RE encompasses any activity that is done to determine how a product works, to learn the ideas and technology that were used in developing that product. • RE can be done at many levels • RE generally belongs to Software Maintenance
  • 10.
    The Early Daysof RE • Law of Software Revolution (Lehman, 1980) • Fundamental strategies for program comprehension (Brooks, 1983) • Taxonomy of Reverse Engineering (Chikofsky&Cross, 1990) • WCRE (Working Conference on R.E., 1990) • IWPC (Int. Workshop on Program Comprehension)
  • 11.
    Why do weneed RE ? • Recovery of lost information – providing proper system documentation • Assisting with maintenance – identification of side effects and anomalies • Migration to another hw/sw platform • Facilitating software reuse
  • 12.
    Why do weneed RE ? • Benefits – maintenance cost savings – quality improvements – competitive advantages – software reuse facilitation
  • 13.
    Difficulties of ReverseEngineering • Gap between problem /solution domain • Gap between concrete and abstract • Gap between coherency/disintegration • Gap between hierarchical/associational
  • 14.
    Scope and Taskof Reverse Engineering • program understanding Problem/Application domain Program/Implemen. domain Mapping
  • 15.
    Scope and Taskof Reverse Engineering • Redocumentation and/or document generation • Recovery of design approach and design details at any level of abstraction • Identifying reusable components and components that need restructuring • Recovering business rules • Understanding high-level system description.
  • 16.
    Discovery of Abstraction •Discovery of abstraction in large system – maintenance purpose – evolution purpose – reengineering purpose
  • 17.
    Levels of abstractions •Application – Application concepts, business rule, policies • Function – Logical and functional specification, non-functional requirement • Structure – Data and control flow, dependency graphs – Structure and subsystem charts – Architectures • Implementation – Symbol tables, source text
  • 18.
    Different Approaches • Restructuring –Transformation from one representation to another at the same level, Requirements Design Source code Behavior
  • 19.
    Different Approaches • ReverseEngineering – Design Recovery • reproduce all the info for understanding the system – Re-documentation • provide different views of the system • Re-Engineering – first phase --understanding the system – second phase--forward engineering
  • 20.
    Reverse Engineering Tools •Analysis Tools • Browsers • Object Server • Task Oriented Tools
  • 21.
    Conclusions • Reverse Engineeringis a new research area among software maintenance • RE includes activities of understanding the system and recovery info from system • Program understanding is the most important subset of Reverse Engineering • Discovery of abstraction is key issue