• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Reverse Engineering (EVO 2008)
 

Reverse Engineering (EVO 2008)

on

  • 3,580 views

This set of slides accompanied my lecture on reverse engineering held at the University of Bern. More information at: scglectures.unibe.ch/evo2008

This set of slides accompanied my lecture on reverse engineering held at the University of Bern. More information at: scglectures.unibe.ch/evo2008

Statistics

Views

Total Views
3,580
Views on SlideShare
3,509
Embed Views
71

Actions

Likes
2
Downloads
248
Comments
0

8 Embeds 71

http://scglectures.unibe.ch 49
http://www.slideshare.net 11
http://www.tudorgirba.com 6
http://blog.slideshare.net 1
http://209.85.135.104 1
https://test1.wizfolio.com 1
https://local-l.wizfolio.com 1
https://disciplinas.dcc.ufba.br 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Reverse Engineering (EVO 2008) Reverse Engineering (EVO 2008) Presentation Transcript

    • 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/