بسم الله الرحمن الرحيم يرفع الله الذين امنوا منكم والذين أوتوا العلم درجات و الله بما تعملون خبير
Reverse Engineering Dr. Kamel Soliman [email_address]
Contents <ul><li>Introduction </li></ul><ul><li>What is Reverse Engineering (RE)?  </li></ul><ul><li>Why do we need Revers...
Introduction <ul><li>&quot;Reverse engineering is the process of analyzing a subject system to create representations of t...
Introduction <ul><li>Reverse Engineering is an Art </li></ul><ul><li>Reverse Engineering is a Science </li></ul><ul><li>Re...
What is Reverse Engineering ? <ul><li>You have an unexpected case: </li></ul><ul><ul><li>You finished one course project u...
What is Reverse Engineering ? <ul><li>You have an unexpected case: </li></ul><ul><ul><li>You finished one course project u...
What is Reverse Engineering ? Waterfall (Typical) Model of software development Requirement analysis design Implementation...
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 Engin...
What is Reverse Engineering? <ul><li>RE encompasses (includes) any activity that is done to determine how a product works,...
The Early Days of RE <ul><li>Law of Software Revolution (cycle) (Lehman, 1980) </li></ul><ul><li>Fundamental strategies fo...
Why do we need RE ? <ul><li>Recovery of lost information </li></ul><ul><ul><li>providing proper system documentation </li>...
Why do we need RE ? <ul><li>Benefits </li></ul><ul><ul><li>Maintenance cost savings </li></ul></ul><ul><ul><li>Quality imp...
Difficulties of Reverse Engineering <ul><li>Gap between problem </li></ul><ul><li>/solution domain (field) </li></ul><ul><...
Scope and Task of Reverse Engineering <ul><li>program understanding </li></ul>Problem/Application Domain (field) Program/I...
Scope and Task of Reverse Engineering <ul><li>Re-documentation and/or document generation </li></ul><ul><li>Recovery of de...
Discovery of Abstraction (conclusion) <ul><li>Discovery of abstraction  in large system </li></ul><ul><ul><li>Maintenance ...
Levels of abstractions <ul><li>Application </li></ul><ul><ul><li>Application concepts, business rule, policies (bases) </l...
Different Approaches <ul><li>Restructuring  </li></ul><ul><ul><li>Transformation from one representation to another at the...
Different Approaches <ul><li>Reverse Engineering </li></ul><ul><ul><li>Design Recovery </li></ul></ul><ul><ul><ul><li>repr...
Different Approaches Abstraction System Old system New System Forward Engineering Re-Implementation Reverse Engineering Ab...
Reverse Engineering Tools <ul><li>Analysis Tools </li></ul><ul><li>Browsers (SW inter  & display files) </li></ul><ul><li>...
Conclusions <ul><li>Reverse Engineering is a new research area among (with) software maintenance </li></ul><ul><li>RE incl...
Questions ?
<ul><li>Thank You </li></ul><ul><li>Thank You </li></ul>
THE END
Upcoming SlideShare
Loading in …5
×

reverse(1)

475 views

Published on

reverse(1)

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
475
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • <number><number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • <number>
  • 27
  • 27
  • reverse(1)

    1. 1. بسم الله الرحمن الرحيم يرفع الله الذين امنوا منكم والذين أوتوا العلم درجات و الله بما تعملون خبير
    2. 2. Reverse Engineering Dr. Kamel Soliman [email_address]
    3. 3. Contents <ul><li>Introduction </li></ul><ul><li>What is Reverse Engineering (RE)? </li></ul><ul><li>Why do we need Reverse Engineering? </li></ul><ul><li>Scope and Tasks of Reverse Engineering </li></ul><ul><li>Different Approaches </li></ul><ul><li>RE tools </li></ul><ul><li>Conclusions </li></ul>
    4. 4. Introduction <ul><li>&quot;Reverse engineering is the process of analyzing a subject system to create representations of the system at a higher level of abstraction.“ </li></ul>
    5. 5. Introduction <ul><li>Reverse Engineering is an Art </li></ul><ul><li>Reverse Engineering is a Science </li></ul><ul><li>Reverse Engineering is Fun! </li></ul><ul><li>Principal: How does that work? Challenge. </li></ul><ul><li>Remove the black magic, find bugs (defaults), crack (break) protection schemes [only unjust (not proposed) ones of course] </li></ul><ul><li>Get Closer to your machine… </li></ul><ul><li>Very Complex but Rewarding (Puzzles (demonstrate) </li></ul>
    6. 6. What is Reverse Engineering ? <ul><li>You have an unexpected case: </li></ul><ul><ul><li>You finished one course project using Java </li></ul></ul><ul><ul><li>Your program runs OK </li></ul></ul><ul><ul><li>But, by accident (suddenly), you delete the java file </li></ul></ul><ul><ul><li>How to hand (continue) in your project? </li></ul></ul>
    7. 7. What is Reverse Engineering ? <ul><li>You have an unexpected case: </li></ul><ul><ul><li>You finished one course project using Java </li></ul></ul><ul><ul><li>Your program runs OK </li></ul></ul><ul><ul><li>But, by accident (suddenly), you delete the java file </li></ul></ul><ul><ul><li>How to hand (continue) in your </li></ul></ul><ul><ul><li>project? </li></ul></ul><ul><li>Reverse Engineering </li></ul>
    8. 8. What is Reverse Engineering ? Waterfall (Typical) Model of software development Requirement analysis design Implementation Testing and Maintenance
    9. 9. What is Reverse Engineering ? Forward Engineering Requirements Design Source Code Behavior
    10. 10. What is Reverse Engineering ? Forward Engineering Reverse Engineering Requirements Design Source Code Behavior
    11. 11. What is Reverse Engineering ? Abstraction System Old system New System Forward Engineering Re-Implementation Reverse Engineering Abstraction
    12. 12. What is Reverse Engineering? <ul><li>RE encompasses (includes) any activity that is done to determine how a product works, to learn the ideas and technology that were used in developing that product. </li></ul><ul><li>RE can be done at many levels </li></ul><ul><li>RE generally belongs to Software Maintenance </li></ul>
    13. 13. The Early Days of RE <ul><li>Law of Software Revolution (cycle) (Lehman, 1980) </li></ul><ul><li>Fundamental strategies for program comprehension (understanding) (Brooks, 1983) </li></ul><ul><li>Classifying of Reverse Engineering (Chik of sky &Cross, 1990) </li></ul><ul><li>WCRE (Working Conference on R.E., 1990) </li></ul><ul><li>IWPC (International Workshop on Program Comprehension) </li></ul>
    14. 14. Why do we need RE ? <ul><li>Recovery of lost information </li></ul><ul><ul><li>providing proper system documentation </li></ul></ul><ul><li>Assisting with maintenance </li></ul><ul><ul><li>identification of side effects and anomalies (deflection) </li></ul></ul><ul><li>Migration to another Hw/Sw platform </li></ul><ul><li>Facilitating (simplifying) software reuse </li></ul>
    15. 15. Why do we need RE ? <ul><li>Benefits </li></ul><ul><ul><li>Maintenance cost savings </li></ul></ul><ul><ul><li>Quality improvements </li></ul></ul><ul><ul><li>Competitive advantages </li></ul></ul><ul><ul><li>Software reuse facilitation (simplification) </li></ul></ul>
    16. 16. Difficulties of Reverse Engineering <ul><li>Gap between problem </li></ul><ul><li>/solution domain (field) </li></ul><ul><li>Gap between concrete </li></ul><ul><li>(real) and abstract </li></ul><ul><li>Gap between coherency/disintegration </li></ul><ul><li>Gap between hierarchical (gradual) /associational (grouped) </li></ul>
    17. 17. Scope and Task of Reverse Engineering <ul><li>program understanding </li></ul>Problem/Application Domain (field) Program/Implemen. domain Mapping (symmetry)
    18. 18. Scope and Task of Reverse Engineering <ul><li>Re-documentation and/or document generation </li></ul><ul><li>Recovery of design approach and design details at any level of abstraction </li></ul><ul><li>Identifying reusable (used again) components and components that need restructuring (rearrangement) </li></ul><ul><li>Recovering (protecting) business rules </li></ul><ul><li>Understanding high-level system description. </li></ul>
    19. 19. Discovery of Abstraction (conclusion) <ul><li>Discovery of abstraction in large system </li></ul><ul><ul><li>Maintenance purpose </li></ul></ul><ul><ul><li>Evolution (gradual development) purpose </li></ul></ul><ul><ul><li>Reengineering purpose </li></ul></ul>
    20. 20. Levels of abstractions <ul><li>Application </li></ul><ul><ul><li>Application concepts, business rule, policies (bases) </li></ul></ul><ul><li>Function </li></ul><ul><ul><li>Logical and functional specification, non-functional requirement </li></ul></ul><ul><li>Structure </li></ul><ul><ul><li>Data and control flow, dependency graphs </li></ul></ul><ul><ul><li>Structure and subsystem charts (plans) </li></ul></ul><ul><ul><li>Architectures (art of building) </li></ul></ul><ul><li>Implementation </li></ul><ul><ul><li>Symbol tables, source text </li></ul></ul>
    21. 21. Different Approaches <ul><li>Restructuring </li></ul><ul><ul><li>Transformation from one representation to another at the same level, </li></ul></ul>Requirements Design Source code Behavior
    22. 22. Different Approaches <ul><li>Reverse Engineering </li></ul><ul><ul><li>Design Recovery </li></ul></ul><ul><ul><ul><li>reproduce all the info for understanding the system </li></ul></ul></ul><ul><ul><li>Re-documentation </li></ul></ul><ul><ul><ul><li>provide different views of the system </li></ul></ul></ul><ul><li>Re-Engineering </li></ul><ul><ul><li>first phase --understanding the system </li></ul></ul><ul><ul><li>second phase--forward (advanced) engineering </li></ul></ul>
    23. 23. Different Approaches Abstraction System Old system New System Forward Engineering Re-Implementation Reverse Engineering Abstraction
    24. 24. Reverse Engineering Tools <ul><li>Analysis Tools </li></ul><ul><li>Browsers (SW inter & display files) </li></ul><ul><li>Object Server ( pc or sw controls </li></ul><ul><li>stores informations) </li></ul><ul><li>Task Oriented (glowing) Tools </li></ul>
    25. 25. Conclusions <ul><li>Reverse Engineering is a new research area among (with) software maintenance </li></ul><ul><li>RE includes activities of understanding the system and recovery information from system </li></ul><ul><li>Program understanding is the most important subset of Reverse Engineering </li></ul><ul><li>Discovery of abstraction is key issue </li></ul>
    26. 26. Questions ?
    27. 27. <ul><li>Thank You </li></ul><ul><li>Thank You </li></ul>
    28. 28. THE END

    ×