Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2897695.2897703acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

On the maintenance complexity of makefiles

Published: 14 May 2016 Publication History
  • Get Citation Alerts
  • Abstract

    Build systems, the tools responsible for compiling, testing, and packaging software systems, play a vital role in the software development process. It is therefore important that they be maintained and kept up-to-date, which has been shown to be required for up to 27% of source code changes. Make, one such build tool, uses a declarative language based on Makefiles to specify the build and thus is not amenable to traditional complexity metrics. Because of this, most research into the complexity of Makefiles has focused on simple measures such as the number of lines, targets, or dependencies. In this paper, we take a different approach and observe that a large component of software maintenance is about understanding. Since the understanding task is dominated by following links and searching for related parts, we propose a new complexity metric based on the number of indirections (i.e. instances of features that require the reader to look somewhere else). We present an empirical study of the indirection complexity of a set of almost 20,000 Makefiles from more than 150 open source projects.

    References

    [1]
    CMake FAQ, http://www.cmake.org/wiki/cmake_faq.
    [2]
    GNU make, www.gnu.org/software/make/manual/make.html.
    [3]
    Adams, B., De Schutter, K., Tromp, H., and De Meuter, W. The evolution of the linux build system. Electronic Comm. EASST 8, 0 (Oct. 2008).
    [4]
    Adams, B., Tromp, H., De Schutter, K., and De Meuter, W. Design recovery and maintenance of build systems. In IEEE Intl. Conf. on Software Maint. (2007), pp. 114--123.
    [5]
    Ahn, Y., Suh, J., Kim, S., and Kim, H. The software maintenance project effort estimation model based on function points. J. Software Maintenance and Evolution: Research and Practice 15, 2 (2003), 71--85.
    [6]
    Albrecht, A. J. Measuring application development productivity. In Joint SHARE/GUIDE/IBM Application Devel. Sympos. (1979), pp. 83--92.
    [7]
    Apache Software Foundation. Apache ant, http://ant.apache.org, 2000.
    [8]
    Cordy, J. R. The TXL source transformation language. Sci. Comput. Program. 61, 3 (Aug. 2006), 190--210.
    [9]
    Cubranic, D., Murphy, G. C., Singer, J., and Booth, K. S. Hipikat: A project memory for software development. IEEE Trans. Software Eng. 31, 6 (2005), 446--465.
    [10]
    Feldman, S. I. Make - a program for maintaining computer programs. Software: Practice and Experience 9, 4 (1979), 255--265.
    [11]
    Halstead, M. H. Elements of Software Science. Elsevier Science Inc., 1977.
    [12]
    Iio, K., Furuyama, T., and Arai, Y. Experimental analysis of the cognitive processes of program maintainers during software maintenance. In IEEE Intl. Conf. on Software Maint. (1997), pp. 242--249.
    [13]
    Kersten, M., and Murphy, G. C. Mylar: a degree-of-interest model for ides. In 4th Intl. Conf. on Aspect-Oriented Software Devel. (2005), pp. 159--168.
    [14]
    Ko, A. J., Myers, B. A., Coblenz, M. J., and Aung, H. H. An exploratory study of how developers seek, relate, and collect relevant information during software maintenance tasks. IEEE Trans. Software Eng. 32, 12 (2006), 971--987.
    [15]
    Martin, D., Cordy, J., Adams, B., and Antoniol, G. Make it simple - an empirical analysis of gnu make feature use in open source projects. In IEEE 23rd Intl. Conf. on Program Compreh. (May 2015), pp. 207--217.
    [16]
    McCabe, T. A complexity measure. IEEE Trans. Software Eng. SE-2, 4 (Dec 1976), 308--320.
    [17]
    McIntosh, S., Adams, B., and Hassan, A. The evolution of ANT build systems. In 7th IEEE Working Conf. on Mining Software Repositories (2010), pp. 42--51.
    [18]
    McIntosh, S., Adams, B., Nguyen, T. H., Kamei, Y., and Hassan, A. E. An empirical study of build maintenance effort. In 33rd Intl. Conf. on Software Eng. (2011), ACM, pp. 141--150.
    [19]
    Miller, P. Recursive make considered harmful. Australian UNIX and Open Systems User Group Newsletter 19, 1 (1997), 14--25.
    [20]
    Singer, J. Practices of software maintenance. In IEEE Intl. Conf. on Software Maint. (1998), pp. 139--145.
    [21]
    Singer, J., Lethbridge, T. C., Vinson, N. G., and Anquetil, N. An examination of software engineering work practices. In IBM Centre for Advanced Studies Intl. Conf. on Computer Science and Software Eng. (1997), p. 21.
    [22]
    Soh, Z., Khomh, F., Gueheneuc, Y.-G., and Antoniol, G. Towards understanding how developers spend their effort during maintenance activities. In 20th Working Conf. on Reverse Eng. (2013), pp. 152--161.
    [23]
    Tamrawi, A., Nguyen, H. A., Nguyen, H. V., and Nguyen, T. Build code analysis with symbolic evaluation. In 34th Intl. Conf. on Software Eng. (2012), pp. 650--660.
    [24]
    Tasktop Technologies Inc. Mylyn, http://www.tasktop.com/mylyn, 2007.

    Cited By

    View all
    • (2019)Analysis of Open Source Operating System Evolution: A Perspective from Package Dependency Network MotifSymmetry10.3390/sym1103029811:3(298)Online publication date: 27-Feb-2019
    • (2017)Four languages and lots of macros: analyzing autotools build systemsACM SIGPLAN Notices10.1145/3170492.313605152:12(176-186)Online publication date: 23-Oct-2017
    • (2017)Four languages and lots of macros: analyzing autotools build systemsProceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3136040.3136051(176-186)Online publication date: 23-Oct-2017
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    WETSoM '16: Proceedings of the 7th International Workshop on Emerging Trends in Software Metrics
    May 2016
    76 pages
    ISBN:9781450341776
    DOI:10.1145/2897695
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 14 May 2016

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. build systems
    2. software maintenance
    3. software metrics

    Qualifiers

    • Research-article

    Funding Sources

    • NSERC

    Conference

    ICSE '16
    Sponsor:

    Upcoming Conference

    ICSE 2025

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)8
    • Downloads (Last 6 weeks)2

    Other Metrics

    Citations

    Cited By

    View all
    • (2019)Analysis of Open Source Operating System Evolution: A Perspective from Package Dependency Network MotifSymmetry10.3390/sym1103029811:3(298)Online publication date: 27-Feb-2019
    • (2017)Four languages and lots of macros: analyzing autotools build systemsACM SIGPLAN Notices10.1145/3170492.313605152:12(176-186)Online publication date: 23-Oct-2017
    • (2017)Four languages and lots of macros: analyzing autotools build systemsProceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences10.1145/3136040.3136051(176-186)Online publication date: 23-Oct-2017
    • (2016)Non-recursive make considered harmful: build systems at scaleACM SIGPLAN Notices10.1145/3241625.297601151:12(170-181)Online publication date: 8-Sep-2016
    • (2016)Non-recursive make considered harmful: build systems at scaleProceedings of the 9th International Symposium on Haskell10.1145/2976002.2976011(170-181)Online publication date: 8-Sep-2016

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media