Software maintenance is the act of keeping software operational and updated after its initial release. The software industry spends hundreds of millions of dollars yearly on software maintenance and it is clear that there is no blueprint for how it should be performed. In this thesis we will look at performing software maintenance on a system called Joly. The first version of Joly was released in 2006, and it has been used at the Department of Informatics at the University of Oslo since then. Joly is written in Java and makes use of several pieces of Open-Source software. The main theme of this thesis is about how partially existing source code can be reconstructed by reverse engineering it through the use of a decompiler. And while there are many Java decompilers out there, few of them actually work. We look at how Open-Source software, which has become increasingly popular over the years, can affect software maintenance and what to keep in mind when deciding to use it. Joly has had different developers working on it to improve it over the years and we will see what impact this has made, and finally we look at how we can correct various errors in the system, with one particular error that is causing it to crash.