Automa'c, Efficient, and General Repair of So8ware Defects - - PowerPoint PPT Presentation

automa c efficient and general repair of so8ware defects
SMART_READER_LITE
LIVE PREVIEW

Automa'c, Efficient, and General Repair of So8ware Defects - - PowerPoint PPT Presentation

Automa'c, Efficient, and General Repair of So8ware Defects using Lightweight Program Analyses Disserta'on Proposal Claire Le Goues September 22, 2010 So8ware


slide-1
SLIDE 1

Automa'c, ¡Efficient, ¡and ¡General ¡ Repair ¡of ¡So8ware ¡Defects ¡using ¡ Lightweight ¡Program ¡Analyses ¡

Disserta'on ¡Proposal ¡ Claire ¡Le ¡Goues ¡ September ¡22, ¡2010 ¡

slide-2
SLIDE 2
  • Even ¡security-­‑cri'cal ¡errors ¡take ¡28 ¡days ¡to ¡fix.2 ¡
  • So8ware ¡errors ¡in ¡the ¡US ¡cost ¡$59.5 ¡billion ¡

annually ¡(0.6% ¡of ¡GDP)3. ¡

So8ware ¡Errors ¡Are ¡Expensive ¡

9/21/10 ¡ 2 ¡

“Everyday, ¡almost ¡300 ¡bugs ¡appear ¡ […] ¡far ¡too ¡many ¡for ¡only ¡the ¡Mozilla ¡ programmers ¡to ¡handle.” ¡ ¡ ¡ ¡ ¡ ¡– ¡Mozilla ¡Developer, ¡20051 ¡

  • 1. J. ¡Anvik, ¡L. ¡Hiew, ¡and ¡G. ¡C. ¡Murphy. ¡Who ¡should ¡fix ¡this ¡bug? ¡In ¡Interna'onal ¡Conference ¡on ¡So/ware ¡Engineering, ¡pages ¡361–370, ¡2006. ¡
  • 2. P. ¡Hooimeijer ¡and ¡W. ¡Weimer. ¡Modeling ¡bug ¡report ¡quality. ¡In ¡Automated ¡so/ware ¡engineering, ¡pages ¡34–43, ¡2007. ¡
  • 3. NIST. ¡The ¡economic ¡impacts ¡of ¡inadequate ¡infrastructure ¡for ¡so8ware ¡tes'ng. ¡Technical ¡Report ¡NIST ¡Planning ¡Report ¡02-­‑3, ¡NIST, ¡May ¡2002. ¡
slide-3
SLIDE 3

Proposed ¡Solu'on ¡

Automa'c ¡Error ¡Repair ¡

9/21/10 ¡ 3 ¡

slide-4
SLIDE 4

Previous ¡Work ¡

  • Run'me ¡monitors ¡+ ¡repair ¡strategies ¡[Rinard, ¡

Demsky, ¡Smirnov, ¡Keromy's]. ¡

– Increases ¡code ¡size, ¡or ¡run ¡'me, ¡or ¡both. ¡ – Predefined ¡set ¡of ¡error ¡and ¡repair ¡types. ¡

  • Gene'c ¡programming ¡[Arcuri]. ¡ ¡

– Proof-­‑of-­‑concept, ¡limited ¡to ¡small, ¡hand-­‑coded ¡

  • examples. ¡
  • Lack ¡of ¡scalability ¡and ¡generality. ¡

9/21/10 ¡ 4 ¡

slide-5
SLIDE 5

Insights ¡

  • 1. Exis'ng ¡program ¡code ¡and ¡behavior ¡

contains ¡the ¡seeds ¡of ¡many ¡repairs. ¡

  • 2. Test ¡cases ¡scalably ¡provide ¡access ¡

to ¡informa'on ¡about ¡exis'ng ¡ program ¡behavior. ¡

9/21/10 ¡ 5 ¡

slide-6
SLIDE 6

Proposal ¡

Use ¡search ¡strategies, ¡test ¡cases, ¡and ¡ lightweight ¡program ¡analyses ¡to ¡ quickly ¡find ¡a ¡version ¡of ¡a ¡program ¡ that ¡doesn’t ¡contain ¡a ¡par'cular ¡ error, ¡but ¡s'll ¡implements ¡required ¡ func'onality. ¡

9/21/10 ¡ 6 ¡

slide-7
SLIDE 7

Outline ¡

  • Repair ¡technique ¡metrics ¡
  • System ¡overview ¡
  • Four ¡research ¡contribu'ons, ¡including ¡

preliminary ¡results ¡

  • Schedule ¡ ¡
  • Conclusions ¡

9/21/10 ¡ 7 ¡

slide-8
SLIDE 8

Overall ¡Metrics ¡

  • Scalability ¡

– Lines ¡of ¡code. ¡Success: ¡hundreds ¡of ¡thousands ¡of ¡lines. ¡ – Time. ¡Success: ¡minutes. ¡

  • Generality ¡

– Varied ¡benchmark ¡set. ¡ – As ¡much ¡as ¡possible, ¡real ¡programs ¡(open ¡source) ¡with ¡ real ¡vulnerabili'es ¡(public ¡vulnerability ¡reports). ¡

  • Correctness ¡

– Large, ¡held-­‑out ¡test ¡suites. ¡ ¡ – Performance ¡on ¡workloads. ¡ ¡

9/21/10 ¡ 8 ¡

slide-9
SLIDE 9

FAR ¡FROM ¡GOAL: ¡ DISCARD ¡ INPUT ¡ OUTPUT ¡ EVALUATE ¡DISTANCE ¡ BETWEEN ¡EACH ¡VARIANT ¡ AND ¡GOAL ¡ MUTATE ¡TO ¡CREATE ¡NEARBY ¡VARIANTS ¡ CLOSER ¡ TO ¡GOAL: ¡ KEEP ¡ TRYING ¡

9 ¡

slide-10
SLIDE 10

9/21/10 ¡ 10 ¡

Four ¡Proposed ¡Contribu'ons ¡

  • 1. IniBal ¡prototype, ¡with ¡baseline ¡representa'on, ¡

localiza'on, ¡and ¡variant ¡evalua'on ¡choices. ¡ ¡

  • 2. Fault ¡and ¡fix ¡localizaBon: ¡Iden'fy ¡code ¡

implicated ¡in ¡the ¡error ¡(that ¡might ¡profitably ¡be ¡ changed), ¡and ¡code ¡to ¡use ¡to ¡make ¡changes. ¡ ¡

  • 3. Repair ¡templates: ¡Generalize ¡previous ¡work ¡by ¡

mining ¡and ¡using ¡repair ¡templates, ¡or ¡pieces ¡of ¡ code ¡with ¡“holes” ¡for ¡local ¡variables. ¡ ¡

  • 4. Precise ¡objecBve ¡funcBon: ¡Develop ¡a ¡precise ¡

way ¡to ¡es'mate ¡the ¡distance ¡between ¡a ¡variant ¡ and ¡a ¡program ¡that ¡passes ¡all ¡test ¡cases. ¡

slide-11
SLIDE 11

9/21/10 ¡ 11 ¡

Preliminary ¡Results ¡

Program ¡ DescripBon ¡ Size ¡(loc) ¡ Fault ¡ Time ¡(s) ¡ gcd ¡ example ¡ 22 ¡ Infinite ¡loop ¡ 149 ¡s ¡ zune ¡ example ¡ 28 ¡ Infinite ¡loop ¡ 42 ¡s ¡ uniq ¡ Text ¡processing ¡ 1146 ¡ Segmenta'on ¡fault ¡ 32 ¡s ¡ look-­‑ultrix ¡ Dic'onary ¡lookup ¡ 1169 ¡ Segmenta'on ¡fault ¡ 42 ¡s ¡ look-­‑svr4 ¡ Dic'onary ¡lookup ¡ 1363 ¡ Infinite ¡loop ¡ 51 ¡s ¡ units ¡ Metric ¡conversion ¡ 1504 ¡ Segmenta'on ¡fault ¡ 107 ¡s ¡ deroff ¡ Document ¡processing ¡ 2236 ¡ Segmenta'on ¡fault ¡ 129 ¡s ¡ nullhspd ¡ webserver ¡ 5575 ¡ Remote ¡heap ¡overflow ¡ 502 ¡s ¡ indent ¡ Code ¡processing ¡ 9906 ¡ Infinite ¡loop ¡ 533 ¡s ¡ flex ¡ Lexer ¡generator ¡ 18775 ¡ Segmenta'on ¡fault ¡ 233 ¡s ¡ atris ¡ Graphical ¡tetris ¡game ¡ 21553 ¡ Local ¡stack ¡overflow ¡ 69 ¡s ¡ Total/Avg ¡ 63K ¡ 171.7 ¡s ¡

slide-12
SLIDE 12

FAR ¡FROM ¡GOAL: ¡ DISCARD ¡ INPUT ¡ OUTPUT ¡ EVALUATE ¡DISTANCE ¡ BETWEEN ¡EACH ¡VARIANT ¡ AND ¡GOAL ¡ MUTATE ¡TO ¡CREATE ¡NEARBY ¡VARIANTS ¡ CLOSER ¡ TO ¡GOAL: ¡ KEEP ¡ TRYING ¡

12 ¡

slide-13
SLIDE 13

13 ¡

Four ¡Proposed ¡Contribu'ons ¡

  • 1. IniBal ¡prototype, ¡with ¡baseline ¡representa'on, ¡

localiza'on, ¡and ¡variant ¡evalua'on ¡choices. ¡ ¡

  • 2. Fault ¡and ¡fix ¡localizaBon: ¡Iden'fy ¡code ¡

implicated ¡in ¡the ¡error ¡(that ¡might ¡profitably ¡be ¡ changed), ¡and ¡code ¡to ¡use ¡to ¡make ¡changes. ¡ ¡

  • 3. Repair ¡templates: ¡Generalize ¡previous ¡work ¡by ¡

mining ¡and ¡using ¡repair ¡templates, ¡or ¡pieces ¡of ¡ code ¡with ¡“holes” ¡for ¡local ¡variables. ¡ ¡

  • 4. Precise ¡objecBve ¡funcBon: ¡Develop ¡a ¡precise ¡

way ¡to ¡es'mate ¡the ¡distance ¡between ¡a ¡variant ¡ and ¡a ¡program ¡that ¡passes ¡all ¡test ¡cases. ¡

9/21/10 ¡

13 ¡

slide-14
SLIDE 14

14 ¡

Muta'ng ¡a ¡Program ¡

  • Given ¡program ¡A1: ¡

– With ¡some ¡probability, ¡ choose ¡code ¡at ¡a ¡ loca'on. ¡ – Insert ¡code ¡before ¡it, ¡or ¡ replace ¡it ¡en'rely, ¡by ¡ copying ¡code ¡from ¡ elsewhere ¡in ¡the ¡same ¡ program, ¡chosen ¡with ¡ some ¡probability. ¡

  • Result: ¡program ¡A2 ¡

Fault ¡localizaBon ¡defines ¡probability ¡ that ¡code ¡at ¡a ¡loca'on ¡is ¡modified. ¡

  • Goal: ¡Code ¡likely ¡to ¡affect ¡bad ¡

behavior ¡without ¡affec'ng ¡good ¡ behavior ¡= ¡high ¡change ¡probability ¡ Fix ¡localizaBon ¡defines ¡probability ¡ that ¡code ¡is ¡selected ¡for ¡inser'on. ¡ ¡ ¡

  • Goal: ¡code ¡likely ¡to ¡affect ¡repair ¡= ¡

high ¡probability ¡of ¡selec'on. ¡

Search ¡space ¡size ¡is ¡approximated ¡by ¡combining ¡these ¡probabili'es ¡over ¡the ¡ en're ¡program ¡(how ¡much ¡we ¡can ¡change ¡* ¡how ¡many ¡ways ¡we ¡can ¡change ¡it). ¡ ¡

9/21/10 ¡

14 ¡

slide-15
SLIDE 15

15 ¡

Fault ¡and ¡Fix ¡Localiza'on: ¡Idea ¡

  • Plan: ¡use ¡machine ¡learning ¡to ¡relate ¡

lightweight ¡features ¡to ¡fault/fix ¡probability. ¡ ¡

– Sta's'cs ¡rela'ng ¡statements ¡and ¡dynamic ¡data ¡ values ¡to ¡important ¡events, ¡like ¡failure. ¡ ¡ – Sta'c ¡features ¡shown ¡by ¡previous ¡work ¡to ¡ correlate ¡with ¡quality. ¡

  • Iden'fy ¡code ¡that ¡might ¡affect ¡variables ¡

implicated ¡in ¡failure, ¡or ¡code ¡that ¡is ¡similar, ¡ but ¡not ¡iden'cal, ¡to ¡likely-­‑faulty ¡code ¡(the ¡ same, ¡but ¡includes ¡a ¡null-­‑check, ¡for ¡example). ¡

9/21/10 ¡

15 ¡

slide-16
SLIDE 16

16 ¡

Fault ¡and ¡Fix ¡Localiza'on: ¡Evalua'on ¡

  • Effect ¡on ¡search ¡space ¡size ¡(scalability): ¡ ¡

– Score ¡metric: ¡propor'on ¡of ¡code ¡eliminated ¡from ¡ considera'on ¡(higher ¡is ¡beser). ¡ – Measure ¡space ¡size ¡by ¡summing ¡returned ¡ probability ¡over ¡the ¡en're ¡program ¡(lower ¡is ¡ beser) ¡

  • Find/create ¡benchmarks ¡with ¡difficult-­‑to-­‑

localize ¡errors, ¡like ¡SQL ¡injec'on ¡asacks ¡ (generality). ¡

9/21/10 ¡

16 ¡

slide-17
SLIDE 17

Four ¡Proposed ¡Contribu'ons ¡

  • 1. IniBal ¡prototype, ¡with ¡baseline ¡representa'on, ¡

localiza'on, ¡and ¡variant ¡evalua'on ¡choices. ¡ ¡

  • 2. Fault ¡and ¡fix ¡localizaBon: ¡Iden'fy ¡code ¡

implicated ¡in ¡the ¡error ¡(that ¡might ¡profitably ¡be ¡ changed), ¡and ¡code ¡to ¡use ¡to ¡make ¡changes. ¡ ¡

  • 3. Repair ¡templates: ¡Generalize ¡previous ¡work ¡by ¡

mining ¡and ¡using ¡repair ¡templates, ¡or ¡pieces ¡of ¡ code ¡with ¡“holes” ¡for ¡local ¡variables. ¡ ¡

  • 4. Precise ¡objecBve ¡funcBon: ¡Develop ¡a ¡precise ¡

way ¡to ¡es'mate ¡the ¡distance ¡between ¡a ¡variant ¡ and ¡a ¡program ¡that ¡passes ¡all ¡test ¡cases. ¡

9/21/10 ¡ 17 ¡

slide-18
SLIDE 18
  • 1. void gcd(int a, int b) {
  • 2. if (a == 0)
  • 3. printf(“%d”, b);
  • 4. while (b > 0) {
  • 5. if (a > b)
  • 6. a = a – b;
  • 7. else
  • 8. b = b – a;
  • 9. }
  • 10. printf(“%d”, a);
  • 11. return;
  • 12. }
  • 1. void gcd(int a, int b) {
  • 2. if (a == 0)
  • 3. printf(“%d”, b);
  • 4. return;
  • 5. while (b > 0) {
  • 6. if (a > b)
  • 7. a = a – b;
  • 8. else
  • 9. b = b – a;
  • 10. }
  • 11. printf(“%d”, a);
  • 12. return;
  • 13. }

Moving ¡Code: ¡Baseline ¡

9/21/10 ¡ 18 ¡

slide-19
SLIDE 19

Repair ¡Templates: ¡Idea ¡

9/21/10 ¡ 19 ¡

  • 1. int gcd2(int a, int b) {
  • 2. if (a == 0)
  • 3. printf(“%d”, b);
  • 4. while (b > 0) {
  • 5. if (a > b)
  • 6. a = a – b;
  • 7. else
  • 8. b = b – a;
  • 9. }
  • 10. printf(“%d”, a);
  • 11. return a;
  • 12. }
  • 1. Mine ¡promising ¡template ¡

candidates ¡from ¡exis'ng ¡ source ¡code ¡or ¡the ¡source ¡ control ¡repository. ¡ ¡

  • 2. Synthesize ¡templates ¡from ¡

candidates, ¡genera'ng ¡code ¡ with ¡annotated ¡“holes.” ¡

  • 3. Use ¡a ¡template ¡to ¡do ¡

muta'on, ¡as ¡in ¡previous ¡ work ¡in ¡error ¡repair ¡or ¡ dynamic ¡compila'on ¡

  • techniques. ¡ ¡

? ¡

slide-20
SLIDE 20

Repair ¡Templates: ¡Evalua'on ¡

  • Measure ¡propor'on ¡of ¡intermediate ¡variants ¡

that ¡compile ¡(more ¡is ¡beser). ¡

  • Formalize: ¡small-­‑step ¡contextual ¡seman'cs ¡

(op'onal). ¡

  • Find/create ¡benchmarks ¡with ¡errors ¡amenable ¡

to ¡templated ¡repairs ¡(i.e.: ¡errors ¡handled ¡in ¡ previous ¡error ¡repair ¡work ¡or ¡repaired ¡in ¡the ¡ source ¡code ¡history). ¡ ¡

9/21/10 ¡ 20 ¡

slide-21
SLIDE 21

FAR ¡FROM ¡GOAL: ¡ DISCARD ¡ INPUT ¡ OUTPUT ¡ EVALUATE ¡DISTANCE ¡ BETWEEN ¡EACH ¡VARIANT ¡ AND ¡GOAL ¡ MUTATE ¡TO ¡CREATE ¡NEARBY ¡VARIANTS ¡ CLOSER ¡ TO ¡GOAL: ¡ KEEP ¡ TRYING ¡

21 ¡

slide-22
SLIDE 22

Four ¡Proposed ¡Contribu'ons ¡

  • 1. IniBal ¡prototype, ¡with ¡baseline ¡representa'on, ¡

localiza'on, ¡and ¡variant ¡evalua'on ¡choices. ¡ ¡

  • 2. Fault ¡and ¡fix ¡localizaBon: ¡Iden'fy ¡code ¡

implicated ¡in ¡the ¡error ¡(that ¡might ¡profitably ¡be ¡ changed), ¡and ¡code ¡to ¡use ¡to ¡make ¡changes. ¡ ¡

  • 3. Repair ¡templates: ¡Generalize ¡previous ¡work ¡by ¡

mining ¡and ¡using ¡repair ¡templates, ¡or ¡pieces ¡of ¡ code ¡with ¡“holes” ¡for ¡local ¡variables. ¡ ¡

  • 4. Precise ¡objecBve ¡funcBon: ¡Develop ¡a ¡precise ¡

way ¡to ¡es'mate ¡the ¡distance ¡between ¡a ¡variant ¡ and ¡a ¡program ¡that ¡passes ¡all ¡test ¡cases. ¡

9/21/10 ¡ 22 ¡

slide-23
SLIDE 23

Evalua'ng ¡Intermediate ¡Variants ¡

  • The ¡objecBve ¡funcBon ¡es'mates ¡the ¡distance ¡

between ¡an ¡intermediate ¡variant ¡and ¡the ¡goal ¡ (i.e., ¡to ¡pass ¡all ¡test ¡cases); ¡variants ¡closer ¡to ¡ goal ¡are ¡used ¡in ¡the ¡next ¡muta'on ¡round. ¡

  • Natural ¡baseline: ¡how ¡many ¡test ¡cases ¡does ¡a ¡

variant ¡pass? ¡

9/21/10 ¡ 23 ¡

slide-24
SLIDE 24

A ¡Buffer ¡Underflow ¡Vulnerability ¡

9/21/10 ¡ 24 ¡

  • 1. void broken(int sock) {
  • 2. char* line, buff=NULL;
  • 3. int len;
  • 4. sgets(line,socket);
  • 5. len = atoi(line);
  • 6. // no bounds check
  • 7. buff=calloc(len * 2);
  • 8. // vulnerable recv
  • 9. recv(sock,buff,len);
  • 10. return buff;
  • 11. }
  • 1. void fixed(int sock) {
  • 2. char* line, ff=NULL;
  • 3. int len;
  • 4. sgets(line,socket);
  • 5. len = atoi(line);
  • 6. if(len>0 && len<MAX){
  • 7. buff=calloc(len * 2);
  • 8. recv(sock,buff,len);
  • 9. }
  • 10. return buff;
  • 11. }
slide-25
SLIDE 25

Objec've ¡Func'on: ¡Idea ¡

9/21/10 ¡ 25 ¡

  • Func'on ¡should ¡be ¡precise, ¡

correla'ng ¡well ¡with ¡actual ¡ distance; ¡coun'ng ¡test ¡cases ¡ is ¡imprecise ¡because ¡it ¡ throws ¡away ¡intermediate ¡ informa'on. ¡

  • Plan: ¡use ¡machine ¡learning ¡

to ¡relate ¡differences ¡in ¡ dynamic ¡behavior ¡between ¡ broken ¡program ¡and ¡ intermediate ¡program ¡to ¡

  • distance. ¡ ¡
  • 1. void almost(int sock) {
  • 2. char* line, ff=NULL;
  • 3. int len;
  • 4. sgets(line,socket);
  • 5. len = atoi(line);
  • 6. if(len>0 && len<MAX){
  • 7. buff=calloc(len * 2);
  • 8. recv(sock,buff,len);
  • 9. }
  • 10. len = 5 / 0;
  • 11. return buff;
  • 12. }
slide-26
SLIDE 26

Objec've ¡Func'on: ¡Evalua'on ¡

  • Star'ng ¡points ¡for ¡“actual” ¡distance: ¡tree-­‑

structured ¡differencing, ¡profiles ¡of ¡dynamic ¡

  • behavior. ¡
  • Es'mate ¡the ¡func'on’s ¡fitness ¡distance ¡

correlaBon, ¡or ¡the ¡correla'on ¡between ¡it ¡and ¡ the ¡“ground ¡truth”. ¡ ¡ ¡

  • Find/create ¡benchmarks ¡that ¡require ¡more ¡

than ¡one ¡change ¡to ¡repair. ¡

9/21/10 ¡ 26 ¡

slide-27
SLIDE 27

Schedule ¡

9/21/10 ¡ 27 ¡

  • Graduate ¡May ¡2013 ¡(3 ¡more ¡years). ¡
  • Journal ¡ar'cle ¡on ¡contribu'on ¡1 ¡under ¡revision. ¡
  • Slack ¡in ¡schedule: ¡another ¡internship, ¡collabora've ¡

project ¡on ¡safety-­‑cri'cal ¡medical ¡equipment ¡so8ware, ¡ new ¡ideas ¡that ¡arise ¡from ¡proposed ¡research. ¡

!"#$%&#"&%'&()#*+,(-& .(/012.-3#4%5(0-6(7%8 "&+5-9+#.-18+99#./857%89 *+,(-&#:+),0(1+9 ;%/&8(0#"(,+&#<%,7%8(0= >(?#@AAB >(?#@AAC >(?#@ADA >(?#@ADD >(?#@AD@ >(?#@ADE

slide-28
SLIDE 28

Conclusions ¡

  • Goal: ¡scalable, ¡general, ¡correct ¡automa'c ¡error ¡
  • repair. ¡
  • Approach: ¡search ¡closely-­‑related ¡programs ¡for ¡a ¡

version ¡that ¡passes ¡all ¡of ¡the ¡test ¡cases. ¡

  • Ques'ons ¡to ¡be ¡answered: ¡ ¡

– What ¡representa'on ¡choices ¡are ¡necessary ¡to ¡make ¡ this ¡possible? ¡(Ini2al ¡Prototype) ¡ – How ¡should ¡intermediate ¡variants ¡be ¡created ¡from ¡ nearby ¡programs? ¡(localiza2on, ¡templates) ¡ – How ¡should ¡intermediate ¡variants ¡be ¡evaluated, ¡to ¡ effec'vely ¡guide ¡the ¡search? ¡(Precise ¡objec2ve ¡ func2ons) ¡

9/21/10 ¡ 28 ¡

slide-29
SLIDE 29

Journal ¡

  • 1. C. ¡Le ¡Goues ¡and ¡W. ¡Weimer. ¡Measuring ¡code ¡quality ¡to ¡improve ¡specificaBon ¡mining. ¡

IEEE ¡Trans. ¡So/ware ¡Engineering ¡(to ¡appear), ¡2010. ¡

  • 2. W. ¡Weimer, ¡S. ¡Forrest, ¡C. ¡Le ¡Goues, ¡and ¡T. ¡Nguyen. ¡AutomaBc ¡Repair ¡with ¡EvoluBonary ¡
  • ComputaBon. ¡Communica'ons ¡of ¡the ¡ACM. ¡Vol ¡53 ¡No. ¡5, ¡May, ¡2010, ¡pp. ¡109-­‑116. ¡ ¡

Conference ¡

  • 3. E. ¡Fast, ¡C. ¡Le ¡Goues, ¡S. ¡Forrest ¡and ¡W. ¡Weimer. ¡Designing ¡Be]er ¡Fitness ¡FuncBons ¡for ¡

Automated ¡Program ¡Repair. ¡Gene'c ¡and ¡Evolu'onary ¡Computa'on ¡Conference ¡(GECCO) ¡ 2010: ¡965-­‑972. ¡ ¡

  • 4. S. ¡Forrest, ¡W. ¡Weimer, ¡T. ¡Nguyen ¡and ¡C. ¡Le ¡Goues. ¡A ¡GeneBc ¡Programming ¡Approach ¡to ¡

AutomaBc ¡Program ¡Repair. ¡Gene'c ¡and ¡Evolu'onary ¡Computa'on ¡Conference ¡(GECCO) ¡ 2009: ¡947-­‑954. ¡ ¡

  • 5. W. ¡Weimer, ¡T. ¡Nguyen, ¡C. ¡Le ¡Goues ¡and ¡S. ¡Forrest. ¡AutomaBcally ¡Finding ¡Patches ¡Using ¡

GeneBc ¡Programming. ¡Interna'onal ¡Conference ¡on ¡So/ware ¡Engineering ¡(ICSE) ¡ 2009:364-­‑374. ¡

  • 6. C. ¡Le ¡Goues ¡and ¡W. ¡Weimer. ¡SpecificaBon ¡Mining ¡With ¡Few ¡False ¡PosiBves. ¡Tools ¡and ¡

Algorithms ¡for ¡the ¡Construc'on ¡and ¡Analysis ¡of ¡Systems ¡(TACAS) ¡2009: ¡292-­‑306 ¡

Workshop ¡

  • 7. C. ¡Le ¡Goues, ¡S. ¡Forrest ¡and ¡W. ¡Weimer. ¡The ¡Case ¡for ¡So`ware ¡EvoluBon. ¡ ¡FSE/SDB ¡

Workshop ¡on ¡the ¡Future ¡of ¡So/ware ¡Engineering ¡Research ¡(to ¡appear), ¡2010. ¡

  • 8. T. ¡Nguyen, ¡W. ¡Weimer, ¡C. ¡Le ¡Goues ¡and ¡S. ¡Forrest, ¡Extended ¡Abstract: ¡Using ¡ExecuBon ¡

Paths ¡to ¡Evolve ¡So`ware ¡Patches. ¡Search-­‑Based ¡So/ware ¡Tes'ng ¡(SBST) ¡2009. ¡

29 ¡

slide-30
SLIDE 30

Please ¡ask ¡difficult ¡ques'ons. ¡