Pragmatic source code reuse via execution record and replay

A key problem during copy–paste source code reuse is that, to reuse even a small section of code from a program as opposed to an API, a programmer must include a huge amount of additional source code from elsewhere in the same program. This additional code is notoriously large and complex, and porti...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Journal of software : evolution and process 2016-08, Vol.28 (8), p.642-664
Hauptverfasser: Armaly, Ameer, McMillan, Collin
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 664
container_issue 8
container_start_page 642
container_title Journal of software : evolution and process
container_volume 28
creator Armaly, Ameer
McMillan, Collin
description A key problem during copy–paste source code reuse is that, to reuse even a small section of code from a program as opposed to an API, a programmer must include a huge amount of additional source code from elsewhere in the same program. This additional code is notoriously large and complex, and portions can only be identified at runtime. In this paper, we propose execution record/replay as a solution to this problem. We describe a novel reuse technique that allows programmers to reuse functions from a C or C++ program, by recording the execution of the program and selectively modifying how its functions are replayed. We have implemented our technique and evaluated it in an empirical study in which eight programmers used our tool to complete four tasks over four hours each. The participants found our technique to be easier than manually reusing the code as part of their project. We also found that the resulting code was smaller and less complex than it would have been had the participants manually reused the code. Copyright © 2016 John Wiley & Sons, Ltd. Instead of copy‐pasting code into a new program, \texttt{Flashback} makes it possible to reuse functions from previously recorded executions. The two main advantages are (i) the new program can be made much smaller; and (ii) there is no need to port legacy code during reuse.
doi_str_mv 10.1002/smr.1790
format Article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_journals_1811847538</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>4149381271</sourcerecordid><originalsourceid>FETCH-LOGICAL-c3310-8289780833abe3d7fb433a05d6762bb3c4ce6a64ece463b12db57b6ffee38be63</originalsourceid><addsrcrecordid>eNp1kE1LAzEQhoMoWGrBn7DgxcvWfG2S4kmKrUKtWhXBS0iys7J1263Jrrb_3pRKwYNzmYfhYWZ4EToluE8wphdh4ftEDvAB6lDMZSq5Iod7luwY9UKY41iC4oxnHXT54M37wjSlS0LdegeJq3NIPLQBkq_SJLAG1zZlvYwzV_s8Mcs84qoymxN0VJgqQO-3d9HL6Pp5eJNO7se3w6tJ6hgjOFVUDaTCijFjgeWysDwiznIhBbWWOe5AGMHBARfMEprbTFpRFABMWRCsi852e1e-_mwhNHoeX13Gk5ooQhSXGVPROt9ZztcheCj0ypcL4zeaYL1NR8d09DadqKY79busYPOvp5_uZn_9MjSw3vvGf2ghmcz063SsH9UbHc7wSE_ZDyoEdDU</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>1811847538</pqid></control><display><type>article</type><title>Pragmatic source code reuse via execution record and replay</title><source>Wiley Online Library Journals Frontfile Complete</source><creator>Armaly, Ameer ; McMillan, Collin</creator><creatorcontrib>Armaly, Ameer ; McMillan, Collin</creatorcontrib><description>A key problem during copy–paste source code reuse is that, to reuse even a small section of code from a program as opposed to an API, a programmer must include a huge amount of additional source code from elsewhere in the same program. This additional code is notoriously large and complex, and portions can only be identified at runtime. In this paper, we propose execution record/replay as a solution to this problem. We describe a novel reuse technique that allows programmers to reuse functions from a C or C++ program, by recording the execution of the program and selectively modifying how its functions are replayed. We have implemented our technique and evaluated it in an empirical study in which eight programmers used our tool to complete four tasks over four hours each. The participants found our technique to be easier than manually reusing the code as part of their project. We also found that the resulting code was smaller and less complex than it would have been had the participants manually reused the code. Copyright © 2016 John Wiley &amp; Sons, Ltd. Instead of copy‐pasting code into a new program, \texttt{Flashback} makes it possible to reuse functions from previously recorded executions. The two main advantages are (i) the new program can be made much smaller; and (ii) there is no need to port legacy code during reuse.</description><identifier>ISSN: 2047-7473</identifier><identifier>EISSN: 2047-7481</identifier><identifier>DOI: 10.1002/smr.1790</identifier><language>eng</language><publisher>Chichester: Blackwell Publishing Ltd</publisher><subject>execution record and replay ; reusable execution ; source code reuse</subject><ispartof>Journal of software : evolution and process, 2016-08, Vol.28 (8), p.642-664</ispartof><rights>Copyright © 2016 John Wiley &amp; Sons, Ltd.</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c3310-8289780833abe3d7fb433a05d6762bb3c4ce6a64ece463b12db57b6ffee38be63</citedby><cites>FETCH-LOGICAL-c3310-8289780833abe3d7fb433a05d6762bb3c4ce6a64ece463b12db57b6ffee38be63</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://onlinelibrary.wiley.com/doi/pdf/10.1002%2Fsmr.1790$$EPDF$$P50$$Gwiley$$H</linktopdf><linktohtml>$$Uhttps://onlinelibrary.wiley.com/doi/full/10.1002%2Fsmr.1790$$EHTML$$P50$$Gwiley$$H</linktohtml><link.rule.ids>314,776,780,1411,27903,27904,45553,45554</link.rule.ids></links><search><creatorcontrib>Armaly, Ameer</creatorcontrib><creatorcontrib>McMillan, Collin</creatorcontrib><title>Pragmatic source code reuse via execution record and replay</title><title>Journal of software : evolution and process</title><addtitle>J. Softw. Evol. and Proc</addtitle><description>A key problem during copy–paste source code reuse is that, to reuse even a small section of code from a program as opposed to an API, a programmer must include a huge amount of additional source code from elsewhere in the same program. This additional code is notoriously large and complex, and portions can only be identified at runtime. In this paper, we propose execution record/replay as a solution to this problem. We describe a novel reuse technique that allows programmers to reuse functions from a C or C++ program, by recording the execution of the program and selectively modifying how its functions are replayed. We have implemented our technique and evaluated it in an empirical study in which eight programmers used our tool to complete four tasks over four hours each. The participants found our technique to be easier than manually reusing the code as part of their project. We also found that the resulting code was smaller and less complex than it would have been had the participants manually reused the code. Copyright © 2016 John Wiley &amp; Sons, Ltd. Instead of copy‐pasting code into a new program, \texttt{Flashback} makes it possible to reuse functions from previously recorded executions. The two main advantages are (i) the new program can be made much smaller; and (ii) there is no need to port legacy code during reuse.</description><subject>execution record and replay</subject><subject>reusable execution</subject><subject>source code reuse</subject><issn>2047-7473</issn><issn>2047-7481</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2016</creationdate><recordtype>article</recordtype><recordid>eNp1kE1LAzEQhoMoWGrBn7DgxcvWfG2S4kmKrUKtWhXBS0iys7J1263Jrrb_3pRKwYNzmYfhYWZ4EToluE8wphdh4ftEDvAB6lDMZSq5Iod7luwY9UKY41iC4oxnHXT54M37wjSlS0LdegeJq3NIPLQBkq_SJLAG1zZlvYwzV_s8Mcs84qoymxN0VJgqQO-3d9HL6Pp5eJNO7se3w6tJ6hgjOFVUDaTCijFjgeWysDwiznIhBbWWOe5AGMHBARfMEprbTFpRFABMWRCsi852e1e-_mwhNHoeX13Gk5ooQhSXGVPROt9ZztcheCj0ypcL4zeaYL1NR8d09DadqKY79busYPOvp5_uZn_9MjSw3vvGf2ghmcz063SsH9UbHc7wSE_ZDyoEdDU</recordid><startdate>201608</startdate><enddate>201608</enddate><creator>Armaly, Ameer</creator><creator>McMillan, Collin</creator><general>Blackwell Publishing Ltd</general><general>Wiley Subscription Services, Inc</general><scope>BSCLL</scope><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>JQ2</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope></search><sort><creationdate>201608</creationdate><title>Pragmatic source code reuse via execution record and replay</title><author>Armaly, Ameer ; McMillan, Collin</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c3310-8289780833abe3d7fb433a05d6762bb3c4ce6a64ece463b12db57b6ffee38be63</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2016</creationdate><topic>execution record and replay</topic><topic>reusable execution</topic><topic>source code reuse</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Armaly, Ameer</creatorcontrib><creatorcontrib>McMillan, Collin</creatorcontrib><collection>Istex</collection><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest Computer Science Collection</collection><collection>Advanced Technologies Database with Aerospace</collection><collection>Computer and Information Systems Abstracts – Academic</collection><collection>Computer and Information Systems Abstracts Professional</collection><jtitle>Journal of software : evolution and process</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Armaly, Ameer</au><au>McMillan, Collin</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Pragmatic source code reuse via execution record and replay</atitle><jtitle>Journal of software : evolution and process</jtitle><addtitle>J. Softw. Evol. and Proc</addtitle><date>2016-08</date><risdate>2016</risdate><volume>28</volume><issue>8</issue><spage>642</spage><epage>664</epage><pages>642-664</pages><issn>2047-7473</issn><eissn>2047-7481</eissn><abstract>A key problem during copy–paste source code reuse is that, to reuse even a small section of code from a program as opposed to an API, a programmer must include a huge amount of additional source code from elsewhere in the same program. This additional code is notoriously large and complex, and portions can only be identified at runtime. In this paper, we propose execution record/replay as a solution to this problem. We describe a novel reuse technique that allows programmers to reuse functions from a C or C++ program, by recording the execution of the program and selectively modifying how its functions are replayed. We have implemented our technique and evaluated it in an empirical study in which eight programmers used our tool to complete four tasks over four hours each. The participants found our technique to be easier than manually reusing the code as part of their project. We also found that the resulting code was smaller and less complex than it would have been had the participants manually reused the code. Copyright © 2016 John Wiley &amp; Sons, Ltd. Instead of copy‐pasting code into a new program, \texttt{Flashback} makes it possible to reuse functions from previously recorded executions. The two main advantages are (i) the new program can be made much smaller; and (ii) there is no need to port legacy code during reuse.</abstract><cop>Chichester</cop><pub>Blackwell Publishing Ltd</pub><doi>10.1002/smr.1790</doi><tpages>23</tpages></addata></record>
fulltext fulltext
identifier ISSN: 2047-7473
ispartof Journal of software : evolution and process, 2016-08, Vol.28 (8), p.642-664
issn 2047-7473
2047-7481
language eng
recordid cdi_proquest_journals_1811847538
source Wiley Online Library Journals Frontfile Complete
subjects execution record and replay
reusable execution
source code reuse
title Pragmatic source code reuse via execution record and replay
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-21T17%3A52%3A54IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Pragmatic%20source%20code%20reuse%20via%20execution%20record%20and%20replay&rft.jtitle=Journal%20of%20software%20:%20evolution%20and%20process&rft.au=Armaly,%20Ameer&rft.date=2016-08&rft.volume=28&rft.issue=8&rft.spage=642&rft.epage=664&rft.pages=642-664&rft.issn=2047-7473&rft.eissn=2047-7481&rft_id=info:doi/10.1002/smr.1790&rft_dat=%3Cproquest_cross%3E4149381271%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=1811847538&rft_id=info:pmid/&rfr_iscdi=true