DEBLOAT: Code Debloating from Source Code to Large-scale Deployment
Research project
The long term vision of DEBLOAT is to design analysis algorithms, tools and middleware to let complex software systems analyze their usage and autonomously remove useless or seldom used parts of the code, at runtime.
This WASP expedition supports the first key step of this vision: design algorithms and tools that remove unused code from the top-level code of the application down to the low-level systems libraries.
The rapidly increasing resource consumption of online digital services (e.g., for finance, administration, entertainment, communication) is often attributed to increasing usage volumes, while the contributions by increasing software size and complexity is often overlooked. Today's software is bloated. For example, the Linux kernel has over 20 Million lines of code, with each new release adding more to the code bloat. Code bloat not only considerably reduces the speed of software, but also leads to severe issues such as waste of resources, waste of funds, increased risks of failure, and increased security vulnerabilities.
This bloating is also reflected in what is known to software engineers as the "death star software architecture", a very complex dependency graph between software components. Many of these dependencies and large portions of this code is either never used, or used only when extremely rare events occur. Whereas some attention has been given to dynamic adjustment of resource allocations to varying usage volumes, the developers of systems software, and software applications build static executables that package way more code than necessary, planning for the most improbable case - that each and every request needs access to all functionality provided by the application. While there has been previous attempts to improve the current state (as later discussed in the State-of-the-Art), the fact of the matter is that these techniques are seldom used, and most of today's software stacks from the Operating System (OS) to web services are bloated. No current techniques targets the full stack of software when performing debloating.
The long term vision of DEBLOAT is to design analysis algorithms, tools and middleware to let complex software systems analyze their usage and autonomously remove useless or seldom used parts of the code, at runtime. This WASP expedition supports the first key step of this vision: design algorithms and tools that remove unused code from the top-level code of the application down to the low-level systems libraries.