DocumentCode :
2442795
Title :
Development of auxiliary functions: Should you be agile? An empirical assessment of pair programming and test-first programming
Author :
Lemos, Otávio Augusto Lazzarini ; Ferrari, Fabiano Cutigi ; Silveira, Fábio Fagundes ; Garcia, Alessandro
Author_Institution :
Sci. & Technol. Dept., Fed. Univ. of Sao Paulo, São José dos Campos, Brazil
fYear :
2012
fDate :
2-9 June 2012
Firstpage :
529
Lastpage :
539
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.
Keywords :
program testing; software prototyping; software reliability; time to market; agile practices; array manipulation; auxiliary function development; coverage test sets; critical modules; empirical assessment; math computation; pair programming; software systems; solo programming; string manipulation; system overall reliability; test-first experiment; test-first programming; test-last programming; time-to-market; Arrays; Measurement; Programming profession; Reliability; Software testing; TDD; agile methods; experimental software engineering; pair programming; test-first programming;
fLanguage :
English
Publisher :
ieee
Conference_Titel :
Software Engineering (ICSE), 2012 34th International Conference on
Conference_Location :
Zurich
ISSN :
0270-5257
Print_ISBN :
978-1-4673-1066-6
Electronic_ISBN :
0270-5257
Type :
conf
DOI :
10.1109/ICSE.2012.6227163
Filename :
6227163
Link To Document :
بازگشت