Tool released into open source automates common programming tasks including automated bug repair, optimization and refactoring, as well as injection of bugs for testing, and synthesis of source code.
JANUARY 2018
ITHACA, NY.
Researchers in automated software engineering now have access to proven industrial strength tools to automate common programming tasks. GrammaTech, Inc., a leading developer of commercial embedded software analysis and transformation tools, announced immediate availability of their Software Evolution Library (SEL) as open source software, licensed under the GNU General Public License (GPL).
The Software Evolution Library enables the programmatic modification and evaluation of existing software, and has been used to automatically improve software for a number of purposes. Typical uses leverage built in heuristic search techniques to create improved versions of existing software projects. Example applications include optimizing real-world software and patching vulnerabilities in source code, as well as synthesizing code to fill holes in incomplete programs.
Currently, software development is a very manual process. The idea of automated software engineering is to mechanize more of this development process, specifically removing much of the tedious coding work and allowing software developers to focus on higher level design efforts.
“Imagine a world where you write a suite of unit tests and suggested code passing those tests appears in your editor. Where overnight search generates patches with significant performance gains, which you can review when you come in the next morning,” says Eric Schulte Ph.D., Senior Scientist at GrammaTech. “Or where you submit a test exercising a bug and the bug is fixed automatically during your lunch. Such is the promise of automated software engineering. It’s like having a dedicated team of fully automated software engineers collaborating with you on every task. Much work needs to be done before we fully realize that capability, and we hope that GrammaTech’s release of our work as open source will accelerate advances in this exciting field.”
This material is based upon work supported by the Defense Advanced Research Projects Agency (DARPA) under Contract no. D17PC00096. Any opinions, findings and conclusions, or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Defense Advanced Research Projects Agency (DARPA); or its Contracting Agent, the U.S. Department of the Interior, Interior Business Center, Acquisition Services Directorate, Division III. For access to the Software Evolution Library, as well as full documentation and examples to get started now, visit the SEL GitHub repository.
About GrammaTech:
GrammaTech’s advanced static analysis tools are used by software developers worldwide, spanning a myriad of embedded software industries including avionics, government, medical, military, industrial control, and other applications where reliability and security are paramount. Originally developed within Cornell University, GrammaTech is now a leading research center for software security and a commercial vendor of software-assurance tools and advanced cyber-security solutions. With both static and dynamic analysis tools that analyze source code as well as binary executables, GrammaTech continues to advance the science of superior software analysis, providing technology for developers to produce safer software. For more information, visit www.grammatech.com or follow us on LinkedIn.
About Software Evolution Library:
The Software Evolution Library provides an interface for programmatic modification and evaluation of software, making it possible to automate common programming tasks such as bug repair, optimization, refactoring, bug injection for testing purposes, and synthesis of new source code. Support for Markov chain Monte Carlo (MCMC) and evolutionary search (mimicking natural selection) are built into the library, along with software objects for representing C and C++ source, compiled ASM, linked ELF binaries, LLVM IR, CIL, LISP, and Forth with more underway. SEL’s extensible design also supports the addition of new software representations, either from scratch or by extending and modifying existing implementations.