SlideShare a Scribd company logo
1 of 54
Download to read offline
Reverse Engineering



Tudor Gîrba
www.tudorgirba.com
Reverse engineering is analyzing a subject system to:

 identify components and their relationships, and
 create more abstract representations.




                                                          0
                                               & Cross, 9
                                     C hikofky
Why reverse engineer?
B29 b omber
The
ussia
                       d to la nd in R
       4, 3 B 29s ha
In 194
rything, fast!
            : Co py eve
R equirement
Disas semble
Disas semble   Run
Disas semble           Run




       a nd co mpare
Test
d in 2 years
                               es assemble
                   000 pi   ec
      v TU-4: 105,
Tupole
Why reverse engineer software?
fo
                                            rw
                                              ar
                                                d
                                                 en
                                                     gin
                                                      ee
                                                       rin
                                                           g
{               {
    {                   {                                      {               {
                            }                                      {               {
        }
        }                       actual development                     }               }
            }       {       }                                              }               }
fo
                                                              rw
                                              g
                                            rin




                                                                ar
                                         ee




                                                                  d
                                        gin




                                                                   en
                                                                       gin
                                       en




                                                                        ee
                                   se




                                                                         rin
                                 erv




                                                                             g
                                re




{               {
    {                   {                                                        {               {
                            }                                                        {               {
        }
        }                                         actual development                     }               }
            }       {       }                                                                }               }
fo
                                                          rw
                                              g
                                            rin




                                                            ar
                                         ee




                                                              d
                                        gin




                                                                 en
                                                                  gin
                                       en




                                                                   ee
                                   se




                                                                      rin
                                 erv




                                                                        g
                                re




{               {
    {                   {                                                   {               {
                            }                                                   {               {
        }
        }                               program transformation                      }               }
            }       {       }                                                           }               }
cycle
     ginee ring life
Reen




                                                         fo
                                                          rw
                                              g
                                            rin




                                                            ar
                                         ee




                                                              d
                                        gin




                                                                 en
                                                                  gin
                                       en




                                                                   ee
                                   se




                                                                      rin
                                 erv




                                                                        g
                                re




{               {
    {                   {                                                   {               {
                            }                                                   {               {
        }
        }                               program transformation                      }               }
            }       {       }                                                           }               }
Setting direction
                                                  First contact
                                                  Initial understanding



                                              g
                                                  Detailed model capture
                                            rin
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
Setting direction patterns
                                                  First contact patterns
                                                  Initial understanding patterns



                                              g
                                                  Detailed model capture patterns
                                            rin
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
short in
                             termezz
                                    o




What are patterns?
Setting direction
                                                  First contact
                                                  Initial understanding


                                              g
                                            rin
                                                  Detailed model capture
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
You got to be careful if you don't know where you're
going, because you might not get there.




                                                 ra
                                         Yogi Ber
Setting direction patterns
           Set                                       Where
        direction                                    to start

         Agree                              Most valuable
       on maxims                                first
Maintain            Coordinate       What not                   What
direction            direction        to do                     to do

 Appoint      Speak to the       If it ain’t broke      Fix problems
a navigator   round table           don’t fix it        not symptoms

                                                 How to do

                                                       Keep it simple
Setting direction
                                                  First contact
                                                  Initial understanding


                                              g
                                            rin
                                                  Detailed model capture
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
Interview during demo      Chat with maintainers

      What is the usage?   What is the history?
      What are the bugs?   What is the process?
       What do you like?   What are the problems?
Interview during demo          Chat with maintainers

      What is the usage?       What is the history?
      What are the bugs?       What is the process?
       What do you like?       What are the problems?

                                        all humans:
                         that th ey are
                    mber
             Reme plain
              h
              t ey com        usiastic
               they are enth eir jobs
                         tect th
                they pro
Read all code in one hour
Read all code in one hour   ?
Read all code in one hour     ?
      100’000 lines of code
Read all code in one hour     ?
      100’000 lines of code
     * 2 = 200’000 seconds
Read all code in one hour     ?
      100’000 lines of code
     * 2 = 200’000 seconds
       / 3600 = 56 hours
Read all code in one hour     ?
      100’000 lines of code
     * 2 = 200’000 seconds
       / 3600 = 56 hours
          / 8 = 7 days
A rgoUML
Moose
I took a course in speed reading and read “War and
Peace” in twenty minutes.

It’s about Russia.




                                                 n
                                      Woody Alle
First contact patterns

 Talk with        Talk with
developers          users
                                         Talk
Chat with    Interview                 about it
maintainers during demo



  Verify what           Read      Read about            Compile
   you hear           the code     the code             the code

                      Read all code       Skim        Do a mock
                       in one hour    documentation   installation
Setting direction
                                                  First contact
                                                  Initial understanding

                                              g
                                            rin
                                                  Detailed model capture
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
Speculate about design


        Layout      Abstract
                      Item



Graph            Node          Edge
Identify exceptional entities
Identify exceptional entities



for i in $( ls ); do
   echo `wc -l $i` >> temp
done
sort -nr temp | head -10
Initial understanding patterns
                   Top down
                         Recover
                          design

                   Speculate
                  about design
                    Iteration
   Analyze                             Study
persistent data                  exceptional entities

 Recover                               Identify
 database                             problems
                   Bottom up
Setting direction
                                                  First contact
                                                  Initial understanding


                                              g
                                                  Detailed model capture
                                            rin
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
To understand: refactor
To understand: refactor
               write tests
To understand: refactor
               write tests
               step through execution
Learn from the past
Detailed model capture patterns
                     Tie code and
                      questions
            Track your           Expose
           understanding         design

                        Refactor
                     to understand
        Expose                              Encode
    collaborations                        assumptions

Step through                                Write tests
  execution                                to understand
    Expose
   contracts                Expose
                           evolution
           Look for                    Learn from
         the contracts                  the past
Setting direction
                                                  First contact
                                                  Initial understanding


                                              g
                                                  Detailed model capture
                                            rin
                                         ee
                                        gin
                                       en
                                   se
                                 erv
                                re




{               {
    {                   {
                            }
        }
        }
            }       {       }
Tudor Gîrba
       www.tudorgirba.com




creativecommons.org/licenses/by/3.0/

More Related Content

Viewers also liked

Reverse engineering
Reverse  engineeringReverse  engineering
Reverse engineeringYuffie Valen
 
Reverse Engineering
Reverse EngineeringReverse Engineering
Reverse Engineeringdswanson
 
Introduction to Reverse Engineering
Introduction to Reverse EngineeringIntroduction to Reverse Engineering
Introduction to Reverse EngineeringGopinath Chintala
 
Mi 291 chapter 3 (reverse engineering)(1)
Mi 291 chapter 3 (reverse engineering)(1)Mi 291 chapter 3 (reverse engineering)(1)
Mi 291 chapter 3 (reverse engineering)(1)varun teja G.V.V
 
Reverse Engineering 안드로이드 학습
Reverse Engineering 안드로이드 학습Reverse Engineering 안드로이드 학습
Reverse Engineering 안드로이드 학습Sungju Jin
 
Introduction to Reverse Engineering
Introduction to Reverse EngineeringIntroduction to Reverse Engineering
Introduction to Reverse EngineeringDobromir Enchev
 
Reverse engineering
Reverse engineeringReverse engineering
Reverse engineeringSaswat Padhi
 
Reverse engineering project
Reverse engineering projectReverse engineering project
Reverse engineering projectthomasthetrain
 
Reverse engineering presentation - Digital Alarm Clock
Reverse engineering presentation - Digital Alarm ClockReverse engineering presentation - Digital Alarm Clock
Reverse engineering presentation - Digital Alarm ClockDylan Menezes
 
Elementary µprocessor tutorial
Elementary µprocessor tutorial Elementary µprocessor tutorial
Elementary µprocessor tutorial Nabil Chouba
 
Reverse engineering
Reverse engineeringReverse engineering
Reverse engineeringdspokale25
 
Reverse engineering power point!
Reverse engineering power point!Reverse engineering power point!
Reverse engineering power point!foy8447
 
ravi reverseengineeringitsapplication01 121101044845-phpapp02
ravi reverseengineeringitsapplication01 121101044845-phpapp02ravi reverseengineeringitsapplication01 121101044845-phpapp02
ravi reverseengineeringitsapplication01 121101044845-phpapp02Akash Maurya
 
How Reverse Engineering Can Drive Innovation in Developing Mechanical Components
How Reverse Engineering Can Drive Innovation in Developing Mechanical ComponentsHow Reverse Engineering Can Drive Innovation in Developing Mechanical Components
How Reverse Engineering Can Drive Innovation in Developing Mechanical ComponentsAutocad Drafting India
 
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat DasNull Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat Dasnullowaspmumbai
 
Reengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringReengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringMuhammad Chaudhry
 
Software reverse engineering
Software reverse engineeringSoftware reverse engineering
Software reverse engineeringParminder Singh
 

Viewers also liked (20)

Reverse engineering
Reverse  engineeringReverse  engineering
Reverse engineering
 
Reverse Engineering
Reverse EngineeringReverse Engineering
Reverse Engineering
 
Introduction to Reverse Engineering
Introduction to Reverse EngineeringIntroduction to Reverse Engineering
Introduction to Reverse Engineering
 
Mi 291 chapter 3 (reverse engineering)(1)
Mi 291 chapter 3 (reverse engineering)(1)Mi 291 chapter 3 (reverse engineering)(1)
Mi 291 chapter 3 (reverse engineering)(1)
 
Reverse Engineering 안드로이드 학습
Reverse Engineering 안드로이드 학습Reverse Engineering 안드로이드 학습
Reverse Engineering 안드로이드 학습
 
Introduction to Reverse Engineering
Introduction to Reverse EngineeringIntroduction to Reverse Engineering
Introduction to Reverse Engineering
 
Reverse engineering
Reverse engineeringReverse engineering
Reverse engineering
 
Reverse engineering project
Reverse engineering projectReverse engineering project
Reverse engineering project
 
Closest pizza
Closest pizzaClosest pizza
Closest pizza
 
Reverse engineering presentation - Digital Alarm Clock
Reverse engineering presentation - Digital Alarm ClockReverse engineering presentation - Digital Alarm Clock
Reverse engineering presentation - Digital Alarm Clock
 
Elementary µprocessor tutorial
Elementary µprocessor tutorial Elementary µprocessor tutorial
Elementary µprocessor tutorial
 
Reverse engineering
Reverse engineeringReverse engineering
Reverse engineering
 
Reverse engineering power point!
Reverse engineering power point!Reverse engineering power point!
Reverse engineering power point!
 
Faircrete w (spl)
Faircrete w (spl)Faircrete w (spl)
Faircrete w (spl)
 
ravi reverseengineeringitsapplication01 121101044845-phpapp02
ravi reverseengineeringitsapplication01 121101044845-phpapp02ravi reverseengineeringitsapplication01 121101044845-phpapp02
ravi reverseengineeringitsapplication01 121101044845-phpapp02
 
How Reverse Engineering Can Drive Innovation in Developing Mechanical Components
How Reverse Engineering Can Drive Innovation in Developing Mechanical ComponentsHow Reverse Engineering Can Drive Innovation in Developing Mechanical Components
How Reverse Engineering Can Drive Innovation in Developing Mechanical Components
 
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat DasNull Mumbai Meet_Android Reverse Engineering by Samrat Das
Null Mumbai Meet_Android Reverse Engineering by Samrat Das
 
Reengineering including reverse & forward Engineering
Reengineering including reverse & forward EngineeringReengineering including reverse & forward Engineering
Reengineering including reverse & forward Engineering
 
Practice of Android Reverse Engineering
Practice of Android Reverse EngineeringPractice of Android Reverse Engineering
Practice of Android Reverse Engineering
 
Software reverse engineering
Software reverse engineeringSoftware reverse engineering
Software reverse engineering
 

Similar to Reverse Engineering (EVO 2008)

Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12Tudor Girba
 
Restructuring (EVO 2008)
Restructuring (EVO 2008)Restructuring (EVO 2008)
Restructuring (EVO 2008)Tudor Girba
 
Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Tudor Girba
 
Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Tudor Girba
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem DetectionJorge Ressia
 
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)Tudor Girba
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Tudor Girba
 
Assessing software systems
Assessing software systemsAssessing software systems
Assessing software systemsTudor Girba
 
Holistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichHolistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichTudor Girba
 
What history can tell us
What history can tell usWhat history can tell us
What history can tell usTudor Girba
 
Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Tudor Girba
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacyStéphane Ducasse
 
A Moose Slideshow
A Moose SlideshowA Moose Slideshow
A Moose SlideshowTudor Girba
 

Similar to Reverse Engineering (EVO 2008) (13)

Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12Modeling History to Understand Software Evolution with Hismo 2008-03-12
Modeling History to Understand Software Evolution with Hismo 2008-03-12
 
Restructuring (EVO 2008)
Restructuring (EVO 2008)Restructuring (EVO 2008)
Restructuring (EVO 2008)
 
Problem Detection (EVO 2008)
Problem Detection (EVO 2008)Problem Detection (EVO 2008)
Problem Detection (EVO 2008)
 
Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)Software understanding in the large (EVO 2008)
Software understanding in the large (EVO 2008)
 
05 Problem Detection
05 Problem Detection05 Problem Detection
05 Problem Detection
 
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
Pragmatic Design Quality Assessment - (Tutorial at ICSE 2008)
 
Humane assessment at ICSM 2010
Humane assessment at ICSM 2010Humane assessment at ICSM 2010
Humane assessment at ICSM 2010
 
Assessing software systems
Assessing software systemsAssessing software systems
Assessing software systems
 
Holistic software assessment at the University of Zurich
Holistic software assessment at the University of ZurichHolistic software assessment at the University of Zurich
Holistic software assessment at the University of Zurich
 
What history can tell us
What history can tell usWhat history can tell us
What history can tell us
 
Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010Humane assessment with Moose at Benevol 2010
Humane assessment with Moose at Benevol 2010
 
Helping you reengineering your legacy
Helping you reengineering your legacyHelping you reengineering your legacy
Helping you reengineering your legacy
 
A Moose Slideshow
A Moose SlideshowA Moose Slideshow
A Moose Slideshow
 

More from Tudor Girba

Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismTudor Girba
 
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Tudor Girba
 
Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Tudor Girba
 
Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Tudor Girba
 
Humane assessment on cards
Humane assessment on cardsHumane assessment on cards
Humane assessment on cardsTudor Girba
 
Underneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingUnderneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingTudor Girba
 
1800+ TED talks later
1800+ TED talks later1800+ TED talks later
1800+ TED talks laterTudor Girba
 
Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Tudor Girba
 
Humane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomHumane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomTudor Girba
 
Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeTudor Girba
 
Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Tudor Girba
 
The emergent nature of software systems
The emergent nature of software systemsThe emergent nature of software systems
The emergent nature of software systemsTudor Girba
 
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Tudor Girba
 
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Tudor Girba
 
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Tudor Girba
 
Demo-driven innovation teaser
Demo-driven innovation teaserDemo-driven innovation teaser
Demo-driven innovation teaserTudor Girba
 
Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Tudor Girba
 
Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Tudor Girba
 
Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Tudor Girba
 

More from Tudor Girba (20)

Beyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalismBeyond software evolution: Software environmentalism
Beyond software evolution: Software environmentalism
 
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
Software craftsmanship meetup (Zurich 2015) on solving real problems without ...
 
GT Spotter
GT SpotterGT Spotter
GT Spotter
 
Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)Don't demo facts. Demo stories! (handouts)
Don't demo facts. Demo stories! (handouts)
 
Don't demo facts. Demo stories!
Don't demo facts. Demo stories!Don't demo facts. Demo stories!
Don't demo facts. Demo stories!
 
Humane assessment on cards
Humane assessment on cardsHumane assessment on cards
Humane assessment on cards
 
Underneath Scrum: Reflective Thinking
Underneath Scrum: Reflective ThinkingUnderneath Scrum: Reflective Thinking
Underneath Scrum: Reflective Thinking
 
1800+ TED talks later
1800+ TED talks later1800+ TED talks later
1800+ TED talks later
 
Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)Software assessment by example (lecture at the University of Bern)
Software assessment by example (lecture at the University of Bern)
 
Humane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development roomHumane assessment: Taming the elephant from the development room
Humane assessment: Taming the elephant from the development room
 
Moose: how to solve real problems without reading code
Moose: how to solve real problems without reading codeMoose: how to solve real problems without reading code
Moose: how to solve real problems without reading code
 
Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)Software Environmentalism (ECOOP 2014 Keynote)
Software Environmentalism (ECOOP 2014 Keynote)
 
The emergent nature of software systems
The emergent nature of software systemsThe emergent nature of software systems
The emergent nature of software systems
 
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)Presenting is storytelling at Uni Zurich - slides (2014-03-05)
Presenting is storytelling at Uni Zurich - slides (2014-03-05)
 
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
Presenting is storytelling at Uni Zurich - handouts (2014-03-05)
 
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
Underneath Scrum: Reflective Thinking (talk at Scrum Breakfast Bern, 2013)
 
Demo-driven innovation teaser
Demo-driven innovation teaserDemo-driven innovation teaser
Demo-driven innovation teaser
 
Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)Software assessment essentials (lecture at the University of Bern 2013)
Software assessment essentials (lecture at the University of Bern 2013)
 
Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)Demo-driven innovation (University of Zurich, June 2013)
Demo-driven innovation (University of Zurich, June 2013)
 
Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011Humane assessment with Moose at GOTO Aarhus 2011
Humane assessment with Moose at GOTO Aarhus 2011
 

Recently uploaded

Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxiammrhaywood
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Celine George
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Celine George
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxAvyJaneVismanos
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdfssuser54595a
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17Celine George
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxJiesonDelaCerna
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
MARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized GroupMARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized GroupJonathanParaisoCruz
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Jisc
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfSumit Tiwari
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentInMediaRes1
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...jaredbarbolino94
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfFraming an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfUjwalaBharambe
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptxECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
ECONOMIC CONTEXT - PAPER 1 Q3: NEWSPAPERS.pptx
 
Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17Difference Between Search & Browse Methods in Odoo 17
Difference Between Search & Browse Methods in Odoo 17
 
Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17Computed Fields and api Depends in the Odoo 17
Computed Fields and api Depends in the Odoo 17
 
Final demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptxFinal demo Grade 9 for demo Plan dessert.pptx
Final demo Grade 9 for demo Plan dessert.pptx
 
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Bikash Puri  Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Bikash Puri Delhi reach out to us at 🔝9953056974🔝
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
18-04-UA_REPORT_MEDIALITERAСY_INDEX-DM_23-1-final-eng.pdf
 
How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17How to Configure Email Server in Odoo 17
How to Configure Email Server in Odoo 17
 
CELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptxCELL CYCLE Division Science 8 quarter IV.pptx
CELL CYCLE Division Science 8 quarter IV.pptx
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
MARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized GroupMARGINALIZATION (Different learners in Marginalized Group
MARGINALIZATION (Different learners in Marginalized Group
 
Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...Procuring digital preservation CAN be quick and painless with our new dynamic...
Procuring digital preservation CAN be quick and painless with our new dynamic...
 
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdfEnzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
Enzyme, Pharmaceutical Aids, Miscellaneous Last Part of Chapter no 5th.pdf
 
Meghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media ComponentMeghan Sutherland In Media Res Media Component
Meghan Sutherland In Media Res Media Component
 
Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...Historical philosophical, theoretical, and legal foundations of special and i...
Historical philosophical, theoretical, and legal foundations of special and i...
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdfFraming an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
Framing an Appropriate Research Question 6b9b26d93da94caf993c038d9efcdedb.pdf
 
ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)ESSENTIAL of (CS/IT/IS) class 06 (database)
ESSENTIAL of (CS/IT/IS) class 06 (database)
 
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
call girls in Kamla Market (DELHI) 🔝 >༒9953330565🔝 genuine Escort Service 🔝✔️✔️
 

Reverse Engineering (EVO 2008)

  • 2. Reverse engineering is analyzing a subject system to: identify components and their relationships, and create more abstract representations. 0 & Cross, 9 C hikofky
  • 5. ussia d to la nd in R 4, 3 B 29s ha In 194
  • 6. rything, fast! : Co py eve R equirement
  • 7.
  • 8.
  • 9.
  • 10.
  • 13. Disas semble Run a nd co mpare Test
  • 14.
  • 15. d in 2 years es assemble 000 pi ec v TU-4: 105, Tupole
  • 17. fo rw ar d en gin ee rin g { { { { { { } { { } } actual development } } } { } } }
  • 18. fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } actual development } } } { } } }
  • 19. fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } program transformation } } } { } } }
  • 20. cycle ginee ring life Reen fo rw g rin ar ee d gin en gin en ee se rin erv g re { { { { { { } { { } } program transformation } } } { } } }
  • 21. Setting direction First contact Initial understanding g Detailed model capture rin ee gin en se erv re { { { { } } } } { }
  • 22. Setting direction patterns First contact patterns Initial understanding patterns g Detailed model capture patterns rin ee gin en se erv re { { { { } } } } { }
  • 23. short in termezz o What are patterns?
  • 24. Setting direction First contact Initial understanding g rin Detailed model capture ee gin en se erv re { { { { } } } } { }
  • 25. You got to be careful if you don't know where you're going, because you might not get there. ra Yogi Ber
  • 26. Setting direction patterns Set Where direction to start Agree Most valuable on maxims first Maintain Coordinate What not What direction direction to do to do Appoint Speak to the If it ain’t broke Fix problems a navigator round table don’t fix it not symptoms How to do Keep it simple
  • 27. Setting direction First contact Initial understanding g rin Detailed model capture ee gin en se erv re { { { { } } } } { }
  • 28. Interview during demo Chat with maintainers What is the usage? What is the history? What are the bugs? What is the process? What do you like? What are the problems?
  • 29. Interview during demo Chat with maintainers What is the usage? What is the history? What are the bugs? What is the process? What do you like? What are the problems? all humans: that th ey are mber Reme plain h t ey com usiastic they are enth eir jobs tect th they pro
  • 30.
  • 31. Read all code in one hour
  • 32. Read all code in one hour ?
  • 33. Read all code in one hour ? 100’000 lines of code
  • 34. Read all code in one hour ? 100’000 lines of code * 2 = 200’000 seconds
  • 35. Read all code in one hour ? 100’000 lines of code * 2 = 200’000 seconds / 3600 = 56 hours
  • 36. Read all code in one hour ? 100’000 lines of code * 2 = 200’000 seconds / 3600 = 56 hours / 8 = 7 days
  • 38. Moose
  • 39. I took a course in speed reading and read “War and Peace” in twenty minutes. It’s about Russia. n Woody Alle
  • 40.
  • 41. First contact patterns Talk with Talk with developers users Talk Chat with Interview about it maintainers during demo Verify what Read Read about Compile you hear the code the code the code Read all code Skim Do a mock in one hour documentation installation
  • 42. Setting direction First contact Initial understanding g rin Detailed model capture ee gin en se erv re { { { { } } } } { }
  • 43. Speculate about design Layout Abstract Item Graph Node Edge
  • 45. Identify exceptional entities for i in $( ls ); do echo `wc -l $i` >> temp done sort -nr temp | head -10
  • 46. Initial understanding patterns Top down Recover design Speculate about design Iteration Analyze Study persistent data exceptional entities Recover Identify database problems Bottom up
  • 47. Setting direction First contact Initial understanding g Detailed model capture rin ee gin en se erv re { { { { } } } } { }
  • 50. To understand: refactor write tests step through execution
  • 52. Detailed model capture patterns Tie code and questions Track your Expose understanding design Refactor to understand Expose Encode collaborations assumptions Step through Write tests execution to understand Expose contracts Expose evolution Look for Learn from the contracts the past
  • 53. Setting direction First contact Initial understanding g Detailed model capture rin ee gin en se erv re { { { { } } } } { }
  • 54. Tudor Gîrba www.tudorgirba.com creativecommons.org/licenses/by/3.0/