Automated Software Transplantation
Alexandru Marginean — Automated Software Transplantation
Earl T. Barr Mark Harman Yue Jia Justyna Petke Alexandru Marginean CREST, University College London
Automated Software Transplantation Earl T. Mark Yue Alexandru - - PowerPoint PPT Presentation
Automated Software Transplantation Earl T. Mark Yue Alexandru Justyna Barr Harman Jia Marginean Petke CREST, University College London Alexandru Marginean Automated Software Transplantation Why Autotransplantation? ~100 players
Alexandru Marginean — Automated Software Transplantation
Earl T. Barr Mark Harman Yue Jia Justyna Petke Alexandru Marginean CREST, University College London
Video Player Start from scratch
Check open source repositories
Alexandru Marginean — Automated Software Transplantation
Why not handle H.264? ~100 players
Autotransplantation Automatic Error Fixing In-Situ Code Reusal Manual Code Transplants
Alexandru Marginean — Automated Software Transplantation
Clone Detection Code Migration Dependence Analysis Feature Location Code Salvaging Feature Extraction In-Situ Code Reuse Synchronising Manual Transplants Automatic Replay Copy- Paste
Autotransplantation Automatic Error Fixing
Manual Code Transplants
Alexandru Marginean — Automated Software Transplantation
Running Program Debugger
Binary Organ
Miles et al.: In situ reuse of logically extracted functional components
Autotransplantation Manual Code Transplants In-Situ Code Reusal
Host Donors
Alexandru Marginean — Automated Software Transplantation
Sidiroglou-Douskos et al.: Automatic Error Elimination by Multi-Application Code Transfer
Manual Code Transplants In-Situ Code Reusal Automatic Error Fixing
Alexandru Marginean — Automated Software Transplantation
Alexandru Marginean — Automated Software Transplantation
Host Donor O Organ ENTRY
V
Organ’s Test Suite
Manual Work:
Organ Entry Organ’s Test Suite Implantation Point
Alexandru Marginean — Automated Software Transplantation
Alexandru Marginean — Automated Software Transplantation
Host Donor Stage 1: Static Analysis Host Beneficiary Stage 2: Genetic Programming Stage 3: Organ Implantation Organ’s Test Suite
Donor OE ENTRY
Vein Organ
Matching Table Dependency Graph
Alexandru Marginean — Automated Software Transplantation
H Implantation Point Stm: x = 10; -> Decl: int x; Donor: int X -> Host: int A, B, C
Strong Proxies: Does it produce the correct output?
S1 S2 S3 S4 S5 … Sn
Matching Table V3H V4H
Donor Variable ID Host Variable ID (set)
V1D V2D … V1H V2H V5H Individual
Var Matching Stateme nts
V1D V1H V2D V4H S1 S7 S73 M1: M2: … Genetic Programming
fitness(i) = (
1 3(1 + |T Xi| |T |
+ |T Pi|
|T | )
i ∈ IC i / ∈ IC
Does it compile? Weak Proxies: Does it execute test cases without crashing?
Alexandru Marginean — Automated Software Transplantation
Host Organ Donor RQ1: Do we break the initial functionality? RQ2: Have we really added new functionality? RQ3: How about the computational effort? RQ4: Is autotransplantation useful?
Regression Tests Acceptance Tests
Alexandru Marginean — Automated Software Transplantation
RQ1: Do we break the initial functionality? RQ3: How about the computational effort? RQ4: Is autotransplantation useful? RQ2: Have we really added new functionality? Empirical Study 15 Transplantations 300 Runs 5 Donors 3 Hosts Case Study: H.264 Encoding Transplantation
Alexandru Marginean — Automated Software Transplantation
Alexandru Marginean — Automated Software Transplantation
Regression Tests Augmented Regression Tests Host Beneficiary Donor Acceptance Tests Acceptance Tests Manual Validation RQ1.1 RQ1.2 RQ2
Subjects Type Size KLOC Reg. Tests Organ Test Suite Idct Donor 2.3
Mytar Donor 0.4
Cflow Donor 25
Webserver Donor 1.7
TuxCrypt Donor 2.7
Pidgin Host 363 88
Host 25 21
Host 43 157
x264 Donor 63
VLC Host 422 27
0.4k;
16k;
213k;
C*
E v a l u a t e d
* I S S T A *
A r t i f a c t
* A E C
Alexandru Marginean — Automated Software Transplantation
μSCALPEL Host Implantation Point Donor OE Organ’s Test Suite
Host Beneficiary
Implantation Point OrganCount LOC — CLOC Count LOC CLOC
x 20 GNU Time
Validation Test Suites Coverage Information: Gcov
Alexandru Marginean — Automated Software Transplantation
Ubuntu 14.10, 16 GB Ram 8 threads
All Test Suites Donor Host Passed Regression Regression++ Acceptance Idct Pidgin 16 20 17 16 Mytar Pidgin 16 20 18 20 Web Pidgin 20 18 Cflow Pidgin 15 20 15 16 Tux Pidgin 15 20 17 16 Idct Cflow 16 17 16 16 Mytar Cflow 17 17 17 20 Web Cflow 17 Cflow Cflow 20 20 20 20 Tux Cflow 14 15 14 16 Idct SoX 15 18 17 16 Mytar SoX 17 17 17 20 Web SoX 17 Cflow SoX 14 16 15 14 Tux SoX 13 13 13 14 TOTAL 188/300 233/300 196/300 256/300 RQ1.1 RQ1.2 RQ2
*
E v a l u a t e d
* I S S T A *
A r t i f a c t
* A E C
Alexandru Marginean — Automated Software Transplantation
Passed All 188/300 Regression 233/300 RQ1.1 Regression++ 196/300 RQ1.2 Acceptance 256/300 RQ2
Timing Information
Execution Time (minutes) Donor Host Idct Pidgin 5 7 97 Mytar Pidgin 3 1 65 Web Pidgin 8 5 160 Cflow Pidgin 58 16 1151 Tux Pidgin 29 10 574 Idct Cflow 3 5 59 Mytar Cflow 3 1 53 Web Cflow 5 2 102 Cflow Cflow 44 9 872 Tux Cflow 31 11 623 Idct SoX 12 17 233 Mytar SoX 3 1 60 Web SoX 7 3 132 Cflow SoX 89 53 74 Tux SoX 34 13 94 Total RQ3
*
E v a l u a t e d
* I S S T A *
A r t i f a c t
* A E C
Alexandru Marginean — Automated Software Transplantation
Average 334 (min)
10 (Average) Total 72 (hours)
Transplant Time & Test Suites Time (hours) Regression Regression++ Acceptance H.264 26 100% 100% 100%
C*
E v a l u a t e d
* I S S T A *
A r t i f a c t
* A E C
Alexandru Marginean — Automated Software Transplantation
MSU Sixth MPEG-4 AVC/H.264 Video Codecs Comparison, with ~24% better encoding than second place. Second Annual MSU MPEG-4 AVC/ H.264 Codecs Comparison Doom9's 2005 Codec Shoot-Out
Automated Software Transplantation
H D O ENTRY
V
Organ’s Test Suite
Manual Work:
Organ Entry Organ’s Test Suite Implantation Point
Alexandru Marginean — Automated Software Transplantation
Alexandru Marginean — Automated Software Transplantation
Host Donor Stage 1: Static Analysis Host Beneficiary Stage 2: Genetic Programming Stage 3: Organ Implantation Organ’s Test Suite
Alexandru Marginean — Automated Software Transplantation
Regression Tests Augmented Regression Tests Host Beneficiary Donor Acceptance Tests Acceptance Tests Manual Validation RQ1.a RQ1.b RQ2 Subjects Type Size KLOC Reg. Tests Organ Test Suite Idct Donor 2.3
Mytar Donor 0.4
Cflow Donor 25
Webserver Donor 1.7
TuxCrypt Donor 2.7
Pidgin Host 363 88
Host 25 21
Host 43 157
x264 Donor 63
VLC Host 422 27
0.4k;
16k;
213k;
CE v a l u a t e d
* I S S T A *A r t i f a c t
* A E CAlexandru Marginean — Automated Software Transplantation