• No results found

Summary of Chapters

In document The Recovery of an Old Lost System (sider 16-20)

Chapter 2: In this chapter we take a look at what software maintenance is, why it is necessary, and how it can be categorized. We then look at maintenance costs, a software maintenance process and what neglecting software maintenance can lead to.

Chapter 3: This chapter is about Joly, the software system we will perform our maintenance effort on. We look at how it is built, which open source frameworks it makes use of and discuss the different problem areas of the system.

Chapter 4: In this chapter we begin our maintenance effort by getting to grips with the state of the system. We also try to determine resource usage when Joly is in use. We are prevented from doing any further testing when we find out that the source code for the latest version has been lost by a former developer. This leads us to search for a way to retrieve the lost source code . Chapter 5: In this chapter we look at our options for solving the problem of not having source code, whether to create a new version from scratch or decompile the class files we have available. We set up a plan for our continued effort and proceed by executing upon that plan.

Towards the end we discover a more recent version of the source code.

Chapter 6: Before we proceed with wrapping up the first part of our maintenance effort we look at how our discovery in the previous chapter affects our plan. We also look at how successful the work we have done so far has been.

Chapter 7: This chapter details our options when it comes to finding the bugs that Joly has. We then choose the approach we believe will suit our situation the best.

Chapter 8: In this chapter we look at how we can perform our debugging effort so we can find the bugs that are causing Joly to crash. We also look at some other bugs that we proceed with correcting.

Chapter 9: In the last chapter we summarize the experience we have gathered through our mainte-nance work with Joly. We discuss the way we handled the challenges that we faced and take a look at what future work remains.

Chapter 2

Software Maintenance

Before we begin the software maintenance process we must first look at what it means to maintain software and the different ways of doing it. It may not always be viable to maintain old software because of the cost versus benefit ratio and we will therefore look at what can be done to reduce maintenance costs.

2.1 Maintenance

Maintenance is defined as "the process of preserving a condition or situation or the state of being preserved.."[36]. For material objects like cars, which are prone to corrosion, or clothing , which is affected by wear and tear, this would mean to keep them in such a shape that they can still serve their original purpose. Software is however not tangible, and as such physical factors have little to no impact on it and the concept of doing maintenance work on software may therefore seem odd.

On the other hand there are other challenges that software faces, like bugs, performance issues, new functionality that needs to be implemented and environmental changes.

An automobile maker like Mercedes cannot release a car with faulty brakes but there may be other errors such as the car’s chassis being exceedingly prone to corrosion. The car will work great and fulfill its purpose, but while the chassis is expected to last for 10 years before corrosion occurs, it may only take 3 years. This problem will be fixed for their next models but through the affected models lifetime they will have lost millions of dollars because of their obligation wrt. their corrosion warranty.

It is the same case with software, the first version of a software program often has bugs that affect the user experience. If these bugs are not fixed early on it will cause negative publicity for the company releasing it and revenues will go down. It may not even be the first version of the soft-ware. When Microsoft released Windows Millenium they experienced a huge amount of negative

feedback due to all the bugs it contained, forcing them to release their next iteration(Windows XP) a lot earlier then what was normal for Microsoft.

2.1.1 Definition

Software maintenance is defined by the the Institute of Electrical and Electronics Engineers(IEEE) as follows[46]: "Software maintenance is the process of modifying a software system or component after delivery to correct faults, improve performances or other attributes, or adapt to a changed environment.". By this definition software maintenance is something that is done after it is delivered to the customer to either improve it or make it run as it was originally intended to. This definition is disputed because many believe that software maintenance is something that should start at an early stage[3]. The reason for this is to identify problem areas or parts of the software that may need to be changed in the future, and so that design decisions and other issues that may affect the difficulty of making changes at later stages become easier. It is clear that software maintenance plays a huge role in the software industry because many products are rushed out to the market before sufficient testing can be done, while others need updates throughout their lifetime to remain operational.

In document The Recovery of an Old Lost System (sider 16-20)