Development of auxiliary functions: Should you be agile? An empirical assessment of pair programming and test-first programming

Otávio Augusto Lazzarini Lemos, F. Ferrari, Fábio Fagundes Silveira, Alessandro F. Garcia
{"title":"Development of auxiliary functions: Should you be agile? An empirical assessment of pair programming and test-first programming","authors":"Otávio Augusto Lazzarini Lemos, F. Ferrari, Fábio Fagundes Silveira, Alessandro F. Garcia","doi":"10.1109/ICSE.2012.6227163","DOIUrl":null,"url":null,"abstract":"A considerable part of software systems is comprised of functions that support the main modules, such as array or string manipulation and basic math computation. These auxiliary functions are usually considered less complex, and thus tend to receive less attention from developers. However, failures in these functions might propagate to more critical modules, thereby affecting the system's overall reliability. Given the complementary role of auxiliary functions, a question that arises is whether agile practices, such as pair programming and test-first programming, can improve their correctness without affecting time-to-market. This paper presents an empirical assessment comparing the application of these agile practices with more traditional approaches. Our study comprises independent experiments of pair versus solo programming, and test-first versus test-last programming. The first study involved 85 novice programmers who applied both traditional and agile approaches in the development of six auxiliary functions within three different domains. Our results suggest that the agile practices might bring benefits in this context. In particular, pair programmers delivered correct implementations much more often, and test-first programming encouraged the production of larger and higher coverage test sets. On the downside, the main experiment showed that both practices significantly increase total development time. A replication of the test-first experiment with professional developers shows similar results.","PeriodicalId":420187,"journal":{"name":"2012 34th International Conference on Software Engineering (ICSE)","volume":"81 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2012-06-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"26","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2012 34th International Conference on Software Engineering (ICSE)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICSE.2012.6227163","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 26

Abstract

A considerable part of software systems is comprised of functions that support the main modules, such as array or string manipulation and basic math computation. These auxiliary functions are usually considered less complex, and thus tend to receive less attention from developers. However, failures in these functions might propagate to more critical modules, thereby affecting the system's overall reliability. Given the complementary role of auxiliary functions, a question that arises is whether agile practices, such as pair programming and test-first programming, can improve their correctness without affecting time-to-market. This paper presents an empirical assessment comparing the application of these agile practices with more traditional approaches. Our study comprises independent experiments of pair versus solo programming, and test-first versus test-last programming. The first study involved 85 novice programmers who applied both traditional and agile approaches in the development of six auxiliary functions within three different domains. Our results suggest that the agile practices might bring benefits in this context. In particular, pair programmers delivered correct implementations much more often, and test-first programming encouraged the production of larger and higher coverage test sets. On the downside, the main experiment showed that both practices significantly increase total development time. A replication of the test-first experiment with professional developers shows similar results.
辅助功能的开发:你应该敏捷吗?对结对编程和测试优先编程的经验评估
相当一部分软件系统是由支持主要模块的函数组成的,例如数组或字符串操作以及基本的数学计算。这些辅助功能通常被认为不太复杂,因此往往较少受到开发人员的关注。然而,这些功能中的故障可能会传播到更关键的模块,从而影响系统的整体可靠性。考虑到辅助功能的补充作用,出现的问题是敏捷实践,如结对编程和测试优先编程,是否可以在不影响上市时间的情况下提高它们的正确性。本文对这些敏捷实践与传统方法的应用进行了实证评估。我们的研究包括结对编程与单独编程、先测试与后测试编程的独立实验。第一项研究涉及85名新手程序员,他们在三个不同领域中应用传统和敏捷方法开发六个辅助功能。我们的结果表明,敏捷实践可能会在这种情况下带来好处。特别是,结对程序员更经常地交付正确的实现,并且测试优先编程鼓励生产更大、更高覆盖率的测试集。在缺点方面,主要实验表明这两种实践都显著地增加了总开发时间。专业开发人员对测试优先实验的复制显示了类似的结果。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信