Automated analysis for auto-generated build systems

Thumbnail Image
Date
2020-01-01
Authors
Al-Kofahi, Jafar
Major Professor
Advisor
Suraj C Kothari
Committee Member
Journal Title
Journal ISSN
Volume Title
Publisher
Altmetrics
Authors
Research Projects
Organizational Units
Organizational Unit
Electrical and Computer Engineering

The Department of Electrical and Computer Engineering (ECpE) contains two focuses. The focus on Electrical Engineering teaches students in the fields of control systems, electromagnetics and non-destructive evaluation, microelectronics, electric power & energy systems, and the like. The Computer Engineering focus teaches in the fields of software systems, embedded systems, networking, information security, computer architecture, etc.

History
The Department of Electrical Engineering was formed in 1909 from the division of the Department of Physics and Electrical Engineering. In 1985 its name changed to Department of Electrical Engineering and Computer Engineering. In 1995 it became the Department of Electrical and Computer Engineering.

Dates of Existence
1909-present

Historical Names

  • Department of Electrical Engineering (1909-1985)
  • Department of Electrical Engineering and Computer Engineering (1985-1995)

Related Units

Journal Issue
Is Version Of
Versions
Series
Department
Electrical and Computer Engineering
Abstract

Software build systems are crucial for software development as they translate the source code and resources into a deliverable. Prior work has identified that build systems account for 9% of software systems. However, their maintenance imposes a 36% overhead on software development. This overhead stems from the unique and hard to comprehend the nature of build systems. When executed, the build system is evaluated into a dependency-graph that captures how the system’s artifacts relate to each other. The graph generated depends on the selected build configurations. This graph is then traversed to perform the build. Prior work has emphasized the need for analysis support to tackle the challenges of evolving and maintaining build systems.

In this thesis, we tackle three challenges associated with the maintenance and evolution of build systems. As the build system evolves, it’s not trivial to understand the impact of build code changes on its semantics. To tackle this, we propose a build code differencing technique to identify the semantic changes between two versions of a given build system. This would provide visibility on how the build system is evolving along with the software system.

The second challenge we tackle is localizing faults within build systems. Build-time failures occur after the build code has been evaluated, and during the traversal of the dependency graph, it’s challenging to trace back the failure from the graph back to its root cause in the build system code. To this end, we propose a novel approach to localize faults in build code. For a given build failure, it returns a ranked list of statements in the build code that are suspected of causing the failure. This would aid in reducing the overhead of debugging and root causing build failures.

The third challenge is to extract knowledge from build systems for analysis purposes. We propose an approach to extract the presence conditions of source code files from within the build system. This aims to support configuration aware analysis of configurable source code influenced by the build system. We then proceed to propose a foundation for developers to create analysis techniques to help them understand, maintain, and migrate their generator-based build system. We illustrate the use of the platform with two approaches: one to help developers better understand their build systems and another to detect build smells to improve the build code quality.

To evaluate our work, we implement our proposed approaches against the widely used GNU build suite. Then, we use open-source projects to evaluate each of the approaches.

Comments
Description
Keywords
Citation
Source
Copyright
Tue Dec 01 00:00:00 UTC 2020