{"title":"浅谈makefile的维护复杂性","authors":"Douglas H. Martin, J. Cordy","doi":"10.1145/2897695.2897703","DOIUrl":null,"url":null,"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.","PeriodicalId":185963,"journal":{"name":"2016 IEEE/ACM 7th International Workshop on Emerging Trends in Software Metrics (WETSoM)","volume":"16 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2016-05-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"6","resultStr":"{\"title\":\"On the Maintenance Complexity of Makefiles\",\"authors\":\"Douglas H. Martin, J. Cordy\",\"doi\":\"10.1145/2897695.2897703\",\"DOIUrl\":null,\"url\":null,\"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.\",\"PeriodicalId\":185963,\"journal\":{\"name\":\"2016 IEEE/ACM 7th International Workshop on Emerging Trends in Software Metrics (WETSoM)\",\"volume\":\"16 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2016-05-14\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"6\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"2016 IEEE/ACM 7th International Workshop on Emerging Trends in Software Metrics (WETSoM)\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/2897695.2897703\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"2016 IEEE/ACM 7th International Workshop on Emerging Trends in Software Metrics (WETSoM)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2897695.2897703","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
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.