MaintainJ Blog

September 22, 2011

The 3 Types of Maintenance

Filed under: Uncategorized — maintainj @ 11:55 am

This post deals with maintenance of enterprise Java applications. There are many types of maintenance, but here I am going to talk about the bug fixing and enhancements related maintenance, which consumes most of the maintenance budgets.

Enterprise Java application maintenance can be divided into three broad categories. Most of the maintenance will either be one or a combination of these three types.

Type 1 – Localized changes

A bug fix or enhancement requires a local change in a JSP, Java class, Javascript, HTML, resource bundle or XML file. The first task would be to identify the component to change. Usually the impact for this type of change is local and thereby minimal. So fixing and regression testing this would be quick.

Type 2 – New features

This can be like adding a new field to a database table or adding a new screen to the application.

To add a new database field, first we need to identify the current components in the flow – the Action/Controller class, DAO, VO, Servlet, JSP, etc. Then we analyze the impact, which is usually limited as we are only adding new components and are not changing the existing components (at least not in a major way).

A new screen being added will usually be similar to many of those already present in the application. Very rarely do we need to build a new screen that is completely different from the other screens in the application. The information shown on the screen will be different, but the screen structure, the flow to the screen will be similar to some other screens in the application. So we just need to identify a similar screen and replicate its design.

Because of this, the development effort for Type 2 maintenance is minimal even though it takes more effort than Type 1 maintenance.

The regression testing effort is also minimal unless we modify some existing code while adding a new feature.

Type 3 – Global changes

This can either be fixing defects or adding new features but the distinguishing feature is the global impact of the change on the application. Some examples of this type are:

a) Changing the base data model on which most of the application depends. This will require changes to the object model on which many parts of the application depends.
b) Because of a business change, multiple changes to many parts of the application may be required.
c) A change or fix is required in a shared JSP, which is included in most of the JSP’s in the application. If the shared JSP does not get the data it displays from a single source, it will be very difficult to assess the impact.

This kind of maintenance takes the most effort during development and regression testing.


Most of the time the maintenance activities fall under one or a combination of these categories.

Careful observation suggests that about 50% of the maintenance falls under the first two types, in which most of the effort goes into identifying the code to fix or enhance. MaintainJ can be used to drastically reduce the effort required to identify the source of a defect or to identify the components used in a use case, and thereby reducing the overall maintenance effort.

Choudary Kothapalli.

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

You must be logged in to post a comment.

Powered by WordPress