Charting the API minefield using software telemetry data

Programs draw significant parts of their functionality through the use of Application Programming Interfaces ( API s). Apart from the way developers incorporate API s in their software, the stability of these programs depends on the design and implementation of the API s. In this work, we report how...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Empirical software engineering : an international journal 2015-12, Vol.20 (6), p.1785-1830
Hauptverfasser: Kechagia, Maria, Mitropoulos, Dimitris, Spinellis, Diomidis
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 1830
container_issue 6
container_start_page 1785
container_title Empirical software engineering : an international journal
container_volume 20
creator Kechagia, Maria
Mitropoulos, Dimitris
Spinellis, Diomidis
description Programs draw significant parts of their functionality through the use of Application Programming Interfaces ( API s). Apart from the way developers incorporate API s in their software, the stability of these programs depends on the design and implementation of the API s. In this work, we report how we used software telemetry data to analyze the causes of API failures in Android applications. Specifically, we got 4.9 gb worth of crash data that thousands of applications sent to a centralized crash report management service. We processed that data to extract approximately a million stack traces, stitching together parts of chained exceptions, and established heuristic rules to draw the border between applications and the API calls. We examined a set of more than a half million stack traces associated with risky API calls to map the space of the most common application failure reasons. Our findings show that the top ones can be attributed to memory exhaustion, race conditions or deadlocks, and missing or corrupt resources. Given the classes of the crash causes we identified, we recommend API design and implementation choices, such as specific exceptions, default resources, and non-blocking algorithms, that can eliminate common failures. In addition, we argue that development tools like memory analyzers, thread debuggers, and static analyzers can prevent crashes through early code testing and analysis. Finally, some execution platform and framework designs for process and memory management can also eliminate some application crashes.
doi_str_mv 10.1007/s10664-014-9343-7
format Article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_journals_2564698477</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>2564698477</sourcerecordid><originalsourceid>FETCH-LOGICAL-c429t-82b589ca2d0d86a869a4c0a9256ff2a0131f01cc718e0530a450fc7b8ed2ca973</originalsourceid><addsrcrecordid>eNp1kEtLAzEUhYMoWKs_wN2A6-jNY_JYlqK2UNCFrkOaSdop7UxNUqT_3gwjuHJ1D5dzzr18CN0TeCQA8ikREIJjIBxrxhmWF2hCalmEIOKyaKYoZrQW1-gmpR0AaMnrCVLzrY257TZV3vpq9r6sDm3nQ-v3TXVKwz71IX_b6Kvs9_7gczxXjc32Fl0Fu0_-7ndO0efL88d8gVdvr8v5bIUdpzpjRde10s7SBholrBLacgdWl09CoBYIIwGIc5IoDzUDy2sITq6Vb6izWrIpehh7j7H_OvmUza4_xa6cNKWDC624HFxkdLnYpxR9MMfYHmw8GwJmAGRGQKYAMgMgM2TomEnF2218_Gv-P_QDbvhnNw</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>2564698477</pqid></control><display><type>article</type><title>Charting the API minefield using software telemetry data</title><source>SpringerNature Journals</source><creator>Kechagia, Maria ; Mitropoulos, Dimitris ; Spinellis, Diomidis</creator><creatorcontrib>Kechagia, Maria ; Mitropoulos, Dimitris ; Spinellis, Diomidis</creatorcontrib><description>Programs draw significant parts of their functionality through the use of Application Programming Interfaces ( API s). Apart from the way developers incorporate API s in their software, the stability of these programs depends on the design and implementation of the API s. In this work, we report how we used software telemetry data to analyze the causes of API failures in Android applications. Specifically, we got 4.9 gb worth of crash data that thousands of applications sent to a centralized crash report management service. We processed that data to extract approximately a million stack traces, stitching together parts of chained exceptions, and established heuristic rules to draw the border between applications and the API calls. We examined a set of more than a half million stack traces associated with risky API calls to map the space of the most common application failure reasons. Our findings show that the top ones can be attributed to memory exhaustion, race conditions or deadlocks, and missing or corrupt resources. Given the classes of the crash causes we identified, we recommend API design and implementation choices, such as specific exceptions, default resources, and non-blocking algorithms, that can eliminate common failures. In addition, we argue that development tools like memory analyzers, thread debuggers, and static analyzers can prevent crashes through early code testing and analysis. Finally, some execution platform and framework designs for process and memory management can also eliminate some application crashes.</description><identifier>ISSN: 1382-3256</identifier><identifier>EISSN: 1573-7616</identifier><identifier>DOI: 10.1007/s10664-014-9343-7</identifier><language>eng</language><publisher>New York: Springer US</publisher><subject>Algorithms ; Analyzers ; Application programming interface ; Compilers ; Computer Science ; Crashes ; Interpreters ; Memory management ; Programming Languages ; Software ; Software Engineering/Programming and Operating Systems ; Stitching ; Telemetry</subject><ispartof>Empirical software engineering : an international journal, 2015-12, Vol.20 (6), p.1785-1830</ispartof><rights>Springer Science+Business Media New York 2014</rights><rights>Springer Science+Business Media New York 2014.</rights><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c429t-82b589ca2d0d86a869a4c0a9256ff2a0131f01cc718e0530a450fc7b8ed2ca973</citedby><cites>FETCH-LOGICAL-c429t-82b589ca2d0d86a869a4c0a9256ff2a0131f01cc718e0530a450fc7b8ed2ca973</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1007/s10664-014-9343-7$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1007/s10664-014-9343-7$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>314,780,784,27924,27925,41488,42557,51319</link.rule.ids></links><search><creatorcontrib>Kechagia, Maria</creatorcontrib><creatorcontrib>Mitropoulos, Dimitris</creatorcontrib><creatorcontrib>Spinellis, Diomidis</creatorcontrib><title>Charting the API minefield using software telemetry data</title><title>Empirical software engineering : an international journal</title><addtitle>Empir Software Eng</addtitle><description>Programs draw significant parts of their functionality through the use of Application Programming Interfaces ( API s). Apart from the way developers incorporate API s in their software, the stability of these programs depends on the design and implementation of the API s. In this work, we report how we used software telemetry data to analyze the causes of API failures in Android applications. Specifically, we got 4.9 gb worth of crash data that thousands of applications sent to a centralized crash report management service. We processed that data to extract approximately a million stack traces, stitching together parts of chained exceptions, and established heuristic rules to draw the border between applications and the API calls. We examined a set of more than a half million stack traces associated with risky API calls to map the space of the most common application failure reasons. Our findings show that the top ones can be attributed to memory exhaustion, race conditions or deadlocks, and missing or corrupt resources. Given the classes of the crash causes we identified, we recommend API design and implementation choices, such as specific exceptions, default resources, and non-blocking algorithms, that can eliminate common failures. In addition, we argue that development tools like memory analyzers, thread debuggers, and static analyzers can prevent crashes through early code testing and analysis. Finally, some execution platform and framework designs for process and memory management can also eliminate some application crashes.</description><subject>Algorithms</subject><subject>Analyzers</subject><subject>Application programming interface</subject><subject>Compilers</subject><subject>Computer Science</subject><subject>Crashes</subject><subject>Interpreters</subject><subject>Memory management</subject><subject>Programming Languages</subject><subject>Software</subject><subject>Software Engineering/Programming and Operating Systems</subject><subject>Stitching</subject><subject>Telemetry</subject><issn>1382-3256</issn><issn>1573-7616</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2015</creationdate><recordtype>article</recordtype><sourceid>AFKRA</sourceid><sourceid>BENPR</sourceid><sourceid>CCPQU</sourceid><sourceid>DWQXO</sourceid><recordid>eNp1kEtLAzEUhYMoWKs_wN2A6-jNY_JYlqK2UNCFrkOaSdop7UxNUqT_3gwjuHJ1D5dzzr18CN0TeCQA8ikREIJjIBxrxhmWF2hCalmEIOKyaKYoZrQW1-gmpR0AaMnrCVLzrY257TZV3vpq9r6sDm3nQ-v3TXVKwz71IX_b6Kvs9_7gczxXjc32Fl0Fu0_-7ndO0efL88d8gVdvr8v5bIUdpzpjRde10s7SBholrBLacgdWl09CoBYIIwGIc5IoDzUDy2sITq6Vb6izWrIpehh7j7H_OvmUza4_xa6cNKWDC624HFxkdLnYpxR9MMfYHmw8GwJmAGRGQKYAMgMgM2TomEnF2218_Gv-P_QDbvhnNw</recordid><startdate>20151201</startdate><enddate>20151201</enddate><creator>Kechagia, Maria</creator><creator>Mitropoulos, Dimitris</creator><creator>Spinellis, Diomidis</creator><general>Springer US</general><general>Springer Nature B.V</general><scope>AAYXX</scope><scope>CITATION</scope><scope>7SC</scope><scope>8FD</scope><scope>8FE</scope><scope>8FG</scope><scope>ABJCF</scope><scope>AFKRA</scope><scope>ARAPS</scope><scope>BENPR</scope><scope>BGLVJ</scope><scope>CCPQU</scope><scope>DWQXO</scope><scope>HCIFZ</scope><scope>JQ2</scope><scope>L6V</scope><scope>L7M</scope><scope>L~C</scope><scope>L~D</scope><scope>M7S</scope><scope>P5Z</scope><scope>P62</scope><scope>PQEST</scope><scope>PQQKQ</scope><scope>PQUKI</scope><scope>PRINS</scope><scope>PTHSS</scope><scope>S0W</scope></search><sort><creationdate>20151201</creationdate><title>Charting the API minefield using software telemetry data</title><author>Kechagia, Maria ; Mitropoulos, Dimitris ; Spinellis, Diomidis</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c429t-82b589ca2d0d86a869a4c0a9256ff2a0131f01cc718e0530a450fc7b8ed2ca973</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2015</creationdate><topic>Algorithms</topic><topic>Analyzers</topic><topic>Application programming interface</topic><topic>Compilers</topic><topic>Computer Science</topic><topic>Crashes</topic><topic>Interpreters</topic><topic>Memory management</topic><topic>Programming Languages</topic><topic>Software</topic><topic>Software Engineering/Programming and Operating Systems</topic><topic>Stitching</topic><topic>Telemetry</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Kechagia, Maria</creatorcontrib><creatorcontrib>Mitropoulos, Dimitris</creatorcontrib><creatorcontrib>Spinellis, Diomidis</creatorcontrib><collection>CrossRef</collection><collection>Computer and Information Systems Abstracts</collection><collection>Technology Research Database</collection><collection>ProQuest SciTech Collection</collection><collection>ProQuest Technology Collection</collection><collection>Materials Science &amp; Engineering Collection</collection><collection>ProQuest Central UK/Ireland</collection><collection>Advanced Technologies &amp; Aerospace Collection</collection><collection>ProQuest Central</collection><collection>Technology Collection</collection><collection>ProQuest One Community College</collection><collection>ProQuest Central Korea</collection><collection>SciTech Premium Collection</collection><collection>ProQuest Computer Science Collection</collection><collection>ProQuest Engineering 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><collection>Engineering Database</collection><collection>Advanced Technologies &amp; Aerospace Database</collection><collection>ProQuest Advanced Technologies &amp; Aerospace Collection</collection><collection>ProQuest One Academic Eastern Edition (DO NOT USE)</collection><collection>ProQuest One Academic</collection><collection>ProQuest One Academic UKI Edition</collection><collection>ProQuest Central China</collection><collection>Engineering Collection</collection><collection>DELNET Engineering &amp; Technology Collection</collection><jtitle>Empirical software engineering : an international journal</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Kechagia, Maria</au><au>Mitropoulos, Dimitris</au><au>Spinellis, Diomidis</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Charting the API minefield using software telemetry data</atitle><jtitle>Empirical software engineering : an international journal</jtitle><stitle>Empir Software Eng</stitle><date>2015-12-01</date><risdate>2015</risdate><volume>20</volume><issue>6</issue><spage>1785</spage><epage>1830</epage><pages>1785-1830</pages><issn>1382-3256</issn><eissn>1573-7616</eissn><abstract>Programs draw significant parts of their functionality through the use of Application Programming Interfaces ( API s). Apart from the way developers incorporate API s in their software, the stability of these programs depends on the design and implementation of the API s. In this work, we report how we used software telemetry data to analyze the causes of API failures in Android applications. Specifically, we got 4.9 gb worth of crash data that thousands of applications sent to a centralized crash report management service. We processed that data to extract approximately a million stack traces, stitching together parts of chained exceptions, and established heuristic rules to draw the border between applications and the API calls. We examined a set of more than a half million stack traces associated with risky API calls to map the space of the most common application failure reasons. Our findings show that the top ones can be attributed to memory exhaustion, race conditions or deadlocks, and missing or corrupt resources. Given the classes of the crash causes we identified, we recommend API design and implementation choices, such as specific exceptions, default resources, and non-blocking algorithms, that can eliminate common failures. In addition, we argue that development tools like memory analyzers, thread debuggers, and static analyzers can prevent crashes through early code testing and analysis. Finally, some execution platform and framework designs for process and memory management can also eliminate some application crashes.</abstract><cop>New York</cop><pub>Springer US</pub><doi>10.1007/s10664-014-9343-7</doi><tpages>46</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 1382-3256
ispartof Empirical software engineering : an international journal, 2015-12, Vol.20 (6), p.1785-1830
issn 1382-3256
1573-7616
language eng
recordid cdi_proquest_journals_2564698477
source SpringerNature Journals
subjects Algorithms
Analyzers
Application programming interface
Compilers
Computer Science
Crashes
Interpreters
Memory management
Programming Languages
Software
Software Engineering/Programming and Operating Systems
Stitching
Telemetry
title Charting the API minefield using software telemetry data
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-18T17%3A39%3A13IST&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=Charting%20the%20API%20minefield%20using%20software%20telemetry%20data&rft.jtitle=Empirical%20software%20engineering%20:%20an%20international%20journal&rft.au=Kechagia,%20Maria&rft.date=2015-12-01&rft.volume=20&rft.issue=6&rft.spage=1785&rft.epage=1830&rft.pages=1785-1830&rft.issn=1382-3256&rft.eissn=1573-7616&rft_id=info:doi/10.1007/s10664-014-9343-7&rft_dat=%3Cproquest_cross%3E2564698477%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=2564698477&rft_id=info:pmid/&rfr_iscdi=true