Computer Science Colloquia
Wednesday, July 22, 2015
Advisor: Kevin J. Sullivan
Attending Faculty: Joanne Dugan (Chair)
1:00 PM, Rice Hall, Rm. 514
Master's Project Presentation
Building a Automatic Continuous Integration Pipeline for Software Evolution
In the paper Programs, Life Cycles, and Laws of Software Evolution, M. Lehman introduced the idea of E-type (evolutionary) programs. These are programs that are embedded in evolving contexts of use. Among Lehman's laws, one states that such software must continually evolve to retain its value. Indeed, the ability to evolve without the need for changes in physical apparatus is an essential source of software value. Yet achieving rapid and effective evolution is hard, due to the complexity of software and the ease with which its logic can be broken. Many software engineering concepts, tools, and methods have thus been developed to support software evolution. Tools include Github for collaborative version control, Jenkins for continuous integration, make and maven for incremental builds, automated bug checkers, etc.
In this talk, I will present my work on the Galileo dynamic fault tree analysis tool a case study in software evolution. Galileo was developed in early 2000s. It relied on now obsolete versions of Microsoft Windows, Microsoft Office Word and Visio, Visual Studio, and C++. Galileo had lost much of its value due to evolution of the surrounding environment. The goal of my project was to recover its value by evolving it to be useful in today's environment, and easy to evolve as time goes by. Key tasks included porting the software from Windows and an old version of C++ to a current version of C++ under Linux; developing a new web-based user interface based on Java EE; building an infrastructure for continuous integration using GitHub, Jenkins, and Sonarqube; and deploying a working version of Galileo to a Glassfish server.