DocumentCode :
1605462
Title :
Automated Decomposition of Build Targets
Author :
Vakilian, Mohsen ; Sauciuc, Raluca ; Morgenthaler, J. David ; Mirrokni, Vahab
Author_Institution :
Google Inc., Mountain View, CA, USA
Volume :
1
fYear :
2015
Firstpage :
123
Lastpage :
133
Abstract :
A (build) target specifies the information that is needed to automatically build a software artifact. This paper focuses on underutilized targets - an important dependency problem that we identified at Google. An underutilized target is one with files not needed by some of its dependents. Underutilized targets result in less modular code, overly large artifacts, slow builds, and unnecessary build and test triggers. To mitigate these problems, programmers decompose underutilized targets into smaller targets. However, manually decomposing a target is tedious and error-prone. Although we prove that finding the best target decomposition is NP-hard, we introduce a greedy algorithm that proposes a decomposition through iterative unification of the strongly connected components of the target. Our tool found that 19,994 of 40,000 Java library targets at Google can be decomposed to at least two targets. The results show that our tool is (1) efficient because it analyzes a target in two minutes on average and (2) effective because for each of 1,010 targets, it would save at least 50% of the total execution time of the tests triggered by the target.
Keywords :
Java; graph theory; greedy algorithms; program testing; software libraries; Google; Java library targets; NP-hard problem; automated build target decomposition; build trigger; dependency problem; greedy algorithm; iterative unification; manual target decomposition; modular code; software artifact; strongly-connected components; test trigger; total execution time; underutilized targets; Google; Greedy algorithms; Java; Libraries; Servers; Software; Target tracking; build; continuous integration; empirical; modularity; refactoring; regression testing; software evolution;
fLanguage :
English
Publisher :
ieee
Conference_Titel :
Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on
Conference_Location :
Florence
Type :
conf
DOI :
10.1109/ICSE.2015.34
Filename :
7194567
Link To Document :
بازگشت