No doubt that, Java is the leading enterprise software development language in current context and it comprises with vast technology stack to support many (good to say all) sectors which are deal by enterprise systems. It is rich with thousands of APIs and millions of developer community who willing to help and share the experience.
Scope wise or functionality wise, an Enterprise Java Project is usually inherits the complexity. This complexity causes for headache in all of the software development life cycle phases and especially in maintaining phase of the system. Maintenance involved bug fixing, adding new functionalities, trace back historic records and give reasons for the system behaviors, migrations, back up, etc… In this article I try to point it out 5 tips that we need to consider to do a good job in system maintaining.
Larger systems are very difficult to understand by going through the code line by line. Having with component designing documents, API designing documents it is very easy to narrow down the component or sub component that we need to see if it needs to fix or add new functionality. Even we can get to know the use case also, if we have the Requirement Spec. Each of new CR should properly versioned and documented and it will help to get deep understanding on current system. For a new comer also it is a great help that if he can refer a good documentation of the system. In maintenance perspective system documentation is the most crucial factor that will affect to do better system maintenance.
Logging is a basic discipline that we follow when we are developing the system. Programmers use many logging tools in application level or beyond the application level. Logging involved load balancer logs, server logs and back end db level logs (Oracle PL/SQL programs logs). It is very important to convince, that programmers what it needs to log, at which place and in which log level going to use. If not once the system has deployed it is difficult to trace back the issues. Another important aspect is how to use files for the logging, especially is it going to use different logs for each of the component or going to use central log for every component. System maintainer considers the convenience of the log tracing and System user considers the performance of the system.
This aspect is not a technical thing but relate with the people management. Any given time an employee can jump to a new company and there for it needs to have a backup resource if that person is critical to the system. It should have a proper knowledge transferring mechanism, so the backup person can take over the system if it needs. This aspect help for a better system maintenance and both company and customer will proceed with a good customer relationship.
4. Issue Tracking
It is very important to track the issues when a system is in maintenance phase because company needs to identify what are the places it needs to have further expansions and bug fixes. There are many tools in the market for this purpose and some of them are free to use. Some companies use issue tracking systems as a knowledge base and whenever a similar issue is arising they will refer the earlier case to resolve it. Some of the SLA oriented companies use these systems for their billing proofs too.
5. Code Base Management
Unprofessional code base management leads system’s code base mess. This is very important discipline because large systems keep on adding new things and changing the existing code base. So it increases the complexity day by day in code base aspect. For this process also there are many tools are available in the industry and some of the famous tools are Subversion and GIT. When the code base becomes larger it needs to clean up repeating code segments and organize code base in more logical manner. Some people bit reluctant to change the code base because they consider the effects of it for the existing production functionalities, but after couple of months or even couple of weeks it will mess the code base and make code base more complicate. Code review also needs to execute in periodical manner by the senior developers to point out juniors programming wrong disciplines. Apart from that this process will help to save the code base consistency. .
I like to see these 5 tips will help you to overlook when it designs the system and itself at the maintenance phase.