© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 2. Reverse Engineering What and Why Setting Direction  Most Valuable First First Contact.

Slides:



Advertisements
Similar presentations
Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Advertisements

© S. Demeyer, S. Ducasse, O. Nierstrasz Migration Testing and Migration What and Why  Reengineering Life-Cycle Tests: Your Life Insurance !  Grow.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
May 2, May 2, 2015May 2, 2015May 2, 2015 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific University, Azusa, CA.
1 Object-Oriented Reengineering © S. Demeyer, S.Ducasse, O. Nierstrasz Lecture 2 Radu Marinescu Reverse Engineering.
© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 4. Reverse Engineering JEdit Experience What and Why Setting Direction  Most Valuable First.
Agile Project Management with Scrum
Free Mini Course: Applying UML 2.0 with MagicDraw.
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
Requirements Engineering n Elicit requirements from customer  Information and control needs, product function and behavior, overall product performance,
Gu & Maher University of Sydney, October 2004 DECO2005 Monitoring Team Process.
OORPT Object-Oriented Reengineering Patterns and Techniques 4. Reverse Engineering Prof. O. Nierstrasz.
Introduction to Software Engineering 13. Software Evolution.
© S. Demeyer, S. Ducasse, O. Nierstrasz Migration.1 5. Testing and Migration What and Why  Reengineering Life-Cycle Tests: Your Life Insurance !  Grow.
Object-Oriented Reengineering Oscar Nierstrasz Software Composition Group University of Bern.
Extreme Programming Collaboration in Software Development Process.
Active Review for Intermediate Designs [Clements, 2000]
© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 3. Reverse Engineering What and Why Setting Direction  Most Valuable First First Contact.
© S. Demeyer, S. Ducasse, O. Nierstrasz Migration.1 5. Testing and Migration What and Why  Reengineering Life-Cycle Tests: Your Life Insurance !  Grow.
Overview of Software Requirements
COMP 350: Object Oriented Analysis and Design Lecture 2
IS550: Software requirements engineering Dr. Azeddine Chikh 4. Validation and management.
Mastering OOA/OOD with UML. Contents Introduction Requirements Overview OOAOOD.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
Chapter 6– Artifacts of the process
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Requirements Analysis
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.
Demystifying the Business Analysis Body of Knowledge Central Iowa IIBA Chapter December 7, 2005.
Business Analysis and Essential Competencies
Name Class.  Review of Implementation Process  Identify Critical Success Factors  Define Change Management (big picture)  Define Role of Corporate.
1 SYS366 Lecture 1: Introduction to Systems. 2 What is Software Development? Software Development implies developing some software – but it does not involve.
© S. Demeyer, S. Ducasse, O. Nierstrasz Intro.1 1. Introduction Goals Why Reengineering ?  Lehman's Laws  Object-Oriented Legacy Typical Problems  common.
Team Skill 2 Understanding User and Stakeholder Needs Requirements Workshop (11)
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
CS 8532: Adv. Software Eng. – Spring 2009 Dr. Hisham Haddad Chapter 5 CS 8532: Advanced Software Engineering Dr. Hisham Haddad Class will start momentarily.
Systems Design Approaches The Waterfall vs. Iterative Methodologies.
Copyright 2002 Prentice-Hall, Inc. Chapter 2 Object-Oriented Analysis and Design Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey.
Software Engineering Saeed Akhtar The University of Lahore Lecture 7 Originally shared for: mashhoood.webs.com.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
IS2210: Systems Analysis and Systems Design and Change Twitter:
1 Introduction to Software Engineering Lecture 1.
The Systems Development Life Cycle
Lucian Voinea Visualizing the Evolution of Code The Visual Code Navigator (VCN) Nunspeet,
Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
System Context and Domain Analysis Abbas Rasoolzadegan.
CS 772: Global Knowledge Networks V. “Juggy” Jagannathan CSEE, West Virginia University.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6/e Chapter.
The Software Development Process
1 Object-Oriented Reengineering © S. Demeyer, S.Ducasse, O. Nierstrasz Lecture 3 Radu Marinescu Detailed Model Capture  Details matter  Pay attention.
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.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Software Engineering Prof. Dr. Bertrand Meyer Dr. Manuel Oriol Dr. Bernd Schoeller Chair of Software Engineering Lectures 22: Legacy Software.
Requirements Engineering Processes. Syllabus l Definition of Requirement engineering process (REP) l Phases of Requirements Engineering Process: Requirements.
Requirement Engineering
Rational Unified Process Fundamentals Best Practices of Software Engineering Rational Unified Process Fundamentals Best Practices of Software Engineering.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
1 SYS366 Week 1 - Lecture 1 Introduction to Systems.
Chapter 6 Guidelines for Modelling. 1. The Modelling Process 1. Modelling as a Transformation Process 2. Basic Modelling Activities 3. Types of Modelling.
RATIONAL UNIFIED PROCESS PROCESS FRAMEWORK OVERVIEW.
Unified Modeling Language
For University Use Only
Software Engineering Practice: A Generic View
Presentation transcript:

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.1 2. Reverse Engineering What and Why Setting Direction  Most Valuable First First Contact  Interview during Demo Initial Understanding  Study Exceptional Entities Detailed Model Capture  Tie Code and Questions Conclusion

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.2 What and Why ? Definition Reverse Engineering is the process of analysing 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.— Chikofsky & Cross, ’90 Motivation Understanding other people’s code (cfr. newcomers in the team, code reviewing, original developers left,...) Generating UML diagrams is NOT reverse engineering... but it is a valuable support tool

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.3 The Reengineering Life-Cycle (0) req. analysis (1) model capture issues scale speed accuracy politics Requirements Designs Code (0) requirement analysis (1) model capture (2) problem detection (3) problem resolution (4) program transformation

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.4 Forces — Setting Direction Conflicting interests (technical, ergonomic, economic, political) Presence/absence original developers Legacy architecture Which problems to tackle?  Interesting vs important problems?  Wrap, refactor or rewrite?

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.5 Setting Direction Agree on Maxims Set direction Appoint a Navigator Speak to the Round Table Maintain direction Coordinate direction Most Valuable First Where to start Fix Problems, Not Symptoms If It Ain't Broke Don't Fix It What not to do What to do Keep it Simple How to do it Principles & Guidelines for Software project management especially relevant for reengineering projects

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.6 Most Valuable First Problem: Which problems should you focus on first? Solution: Work on aspects that are most valuable to your customer Maximize commitment, early results; build confidence Difficulties and hints:  Which stakeholder do you listen to?  What measurable goal to aim for?  Consult change logs for high activity  Play the Planning Game  Wrap, refactor or rewrite? — Fix Problems, not Symptoms

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.7 Forces — First Contact Legacy systems are large and complex  Split the system into manageable pieces Time is scarce  Apply lightweight techniques to assess feasibility and risks First impressions are dangerous  Always double-check your sources People have different agendas  Build confidence; be wary of skeptics

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.8 First Contact System experts Chat with the Maintainers Interview during Demo Talk with developers Talk with end users Talk about it Verify what you hear feasibility assessment (one week time) Software System Read All the Code in One Hour Do a Mock Installation Read itCompile it Skim the Documentation Read about it

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.9 Solution: interview during demo -select several users -demo puts a user in a positive mindset -demo steers the interview Interview during Demo Problem: What are the typical usage scenarios? Solution: Ask the user!... however  Which user ?  Users complain  What should you ask ?

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.10 Forces — Initial Understanding Data is deceptive  Always double-check your sources Understanding entails iteration  Plan iteration and feedback loops Knowledge must be shared  “Put the map on the wall” Teams need to communicate  “Use their language”

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.11 Initial Understanding understand  higher-level model Top down Speculate about Design Recover design Analyze the Persistent Data Study the Exceptional Entities Recover database Bottom up Identify problems

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.12 Study the Exceptional Entities Problem: How can you quickly identify design problems? Solution: Measure software entities and study the anomalous ones Use simple metrics Visualize metrics to get an overview Browse the code to get insight into the anomalies

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.13 Visualizing Metrics (x,y) width height colour Use simple metrics and layout algorithms Visualise up to 5 metrics per node

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.14 Forces — Detailed Model Capture Details matter  Pay attention to the details! Design remains implicit  Record design rationale when you discover it! Design evolves  Important issues are reflected in changes to the code! Code only exposes static structure  Study dynamic behaviour to extract detailed design

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.15 Detailed Model Capture Expose the design & make sure it stays exposed Tie Code and Questions Refactor to Understand Keep track of your understanding Expose design Step through the Execution Expose collaborations Use Your Tools Look for Key Methods Look for Constructor Calls Look for Template/Hook Methods Look for Super Calls Look for the Contracts Expose contracts Learn from the Past Expose evolution Write Tests to Understand

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.16 Tie Code and Questions Problem: How do you keep track of your understanding? Solution: Annotate the code List questions, hypotheses, tasks and observations. Identify yourself! Use conventions to locate/extract annotations. Annotate as comments, or as methods

© S. Demeyer, S. Ducasse, O. Nierstrasz Reverse Engineering.17 Conclusion Setting Direction + First Contact  First Project Plan Initial Understanding + Detailed Model Capture  Plan the work … and Work the plan  Frequent and Short Iterations Issues  scale  speed vs. accuracy  politics