Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.

Slides:



Advertisements
Similar presentations
Major Influences on the Design of ODM Dan Chang (IBM) Elisa Kendall (Sandpiper) MDSW 2004.
Advertisements

Reverse Engineering Computer Science Computer Science University of Windsor University of Windsor Shaochun Xu.
Chapter 11 Software Evolution
2 Software life span models Stages through which software goes, from conception to death Stages may be very different Software = product –stages are similar.
CMMI – Continuous as well as staged model CMMI capability levels – Incomplete, performed, managed, defined, quantitatively managed, optimized Example.
© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 2. Reverse Engineering What and Why Setting Direction  Most Valuable First First Contact.
Reverse Engineering: Legacy Systems Alexander Endert.
Software Evolution Managing the processes of software system change
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer.
Reverse Engineering Valeriya Perelman 12/10/04. Outline Motivation Terminology Related work Approach discussion Challenges References.
Automatically Extracting and Verifying Design Patterns in Java Code James Norris Ruchika Agrawal Computer Science Department Stanford University {jcn,
1 Software Maintenance and Evolution CSSE 575: Session 5, Part 1 Reverse Engineering and Reengineering Approaches Steve Chenoweth Office Phone: (812)
Software Evolution and Reverse Engineering Founded in 2004 Main aims: Analyze and define approaches, methodologies, techniques, tools able to support software.
CS189A/172 - Winter 2008 Lecture 15: Software Maintenance.
Planning for Middleware Rose Gamble Leigh Davis Jamie Payton University of Tulsa.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
SOFTWARE REVERSE ENGINEERING
The Re-engineering and Reuse of Software
Software Construction and Evolution - CSSE 375 Reverse Engineering and Reengineering Approaches Shawn & Steve In long-term software developments, the “elephant.
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
Appendix 2 Automated Tools for Systems Development © 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 2 Slide 1.
Object-oriented Software Engineering with Reuse Contracts Koen De Hondt, Carine Lucas, Kim Mens, Tom Mens, Patrick Steyaert, Roel Wuyts Programming Technology.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
Karolina Muszyńska. Reverse engineering - looking at the solution to figure out how it works Reverse engineering - breaking something down in order to.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
Software Engineering Lecture 20 Software Maintenance.
ESA/ESTEC, TEC-QQS August 8, 2005 SAS_05_ESA SW PA R&D_Winzer,Prades Slide 1 Software Product Assurance (PA) R&D Road mapping Activities ESA/ESTEC TEC-QQS.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Instructor Kostas Kontogiannis.
CBD Papers Alexandre Alvaro. Lessons Learned through Six Years of Component-based Development Six years of component-based application development Using.
A Novel Approach to Architectural Recovery in Evolving Object- Oriented Systems PhD thesis Koen De Hondt December 11, 1998.
Lucian Voinea Visualizing the Evolution of Code The Visual Code Navigator (VCN) Nunspeet,
Tori Bowman CSSE 375, Rose-Hulman September 11, 2007.
Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
RE-ENGINEERING AND DOMAIN ANALYSIS BY- NISHANTH TIRUVAIPATI.
Software Architecture in the Future 1960s. Assembly languages, subroutines, semicolon as connectors 1970s. Structuring of programs to achieve qualities.
Diagnosing Design Problems in Object Oriented Systems Adrian Trifu, Radu Marinescu Proceedings of the 12th IEEE Working Conference on Reverse Engineering.
1 Predicting Classes in Need of Refactoring – An Application of Static Metrics Liming Zhao Jane Hayes 23 September 2006.
Reuse Contracts A Historic Overview Dr. Tom Mens Programming Technology Lab Vrije Universiteit Brussel Course OOSE.RC EMOOSE
+ Informatics 122 Software Design II Lecture 13 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
CS223: Software Engineering Lecture 32: Software Maintenance.
Contents What is Reverse Engineering (RE)? Why do we need Reverse Engineering? Scope and Tasks of Reverse Engineering Reverse Engineering Tools Reverse.
CASE Tools and their Effect on Software Quality
TK2023 Object-Oriented Software Engineering
Software Maintenance Improvement Using Reverse Engineering By Falguni Patel Submitted To: - Dr. Chang- Hyun Jo CPSC 589: Seminar California State University,
Maintenance Issues in Software Engineering
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Modern Systems Analysis and Design Third Edition
Introduction to Software Evolution and Maintenance
Software Maintenance.
Software Maintenance Hiren Variava SE682 4/26/04.
Software Maintenance
Software Maintenance PPT By :Dr. R. Mall.
Automation – “A Critical Component of Agile testing”
Reverse Engineering: A Roadmap
Chapter 4 Automated Tools for Systems Development
Need for the subject.
Software Maintenance Main issues: why maintenance is such an issue
Software Maintenance Main issues: why maintenance is such an issue
Chapter 8 Software Evolution.
Chapter 8, Design Patterns Introduction
Recommending Adaptive Changes for Framework Evolution
Chapter 8, DesignPatterns Facade
Introduction Software maintenance:
Modern Systems Analysis and Design Third Edition
Informatics 122 Alex Baker
Presentation transcript:

Object Oriented Reverse Engineering JATAN PATEL

What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s components and their interrelationships and create representations of the system in another form or at a higher level of abstraction. Goals Cope with complexity Generate alternative views Recover lost information Detect side effects Synthesize higher abstraction Facilitate reuse

Why Reverse Engineering? Object Oriented Software Systems require : Maintenance Reengineering Evolution Most systems with time tend to gradually decay in quality, unless the systems are maintained and adapted to the evolving requirements Adaption to new requirements Extension of lifetime To increase the return of investment

Maintain Enhance High Low High Reengineer Discard Decision Making Modifiability Business Value

Challenges Sheer size of the systems Complexity Domain Specificity Bad state – decreased quality

Different Approaches to Reverse Engineering Program Comprehension Extracting Design Patterns Knowledge Based Domain Analysis Program Slicing Other Automated Approaches Like GRASPR – Graph based System for Program Recognition

Design Pattern Extraction Two phases for extracting structural design patterns: 1) Extract structural metrics from the source code 2) Aggregations and Associations are identified

Sample Program

Metrics Calculation

UML Notations

Results Detected Patterns: 1) Bridge Pattern 2) Composite Pattern

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

Thank You