Saturday, April 2, 2011

An approach to understand the legacy software applications

Software industry has seen a tremendous growth over the past 3 decades. There has been a lot of development of computer programs during this period of time ranging from operating systems to large-scale web applications to satisfy the user needs and to make their life easy and exciting. The usages of software have been increased exponentially due to increasing awareness amongst the community. This increase in the user base of the product led the organizations to increase their team size to serve them better and efficiently.

Generally speaking, any software product is evolved over the period of years. There are large teams working together and in conjunction with each other to deliver high-class enterprise software. As time elapses the product code base becomes more and more complex. The team may find it difficult to maintain and troubleshoot the issues reported by the users. At this point of time team may really need a set of guidelines which can be followed to understand the product at the code level. Many of us may be already following it:

Setting up the debugging environment: This is the foremost and the most important step while getting started on any software product. The developer gets more understanding of the product architecture and code only when he starts debugging the code. Now that he has started stepping into the code he can understand the code flow and programming paradigm that the software follows. Gaining this level of understanding is very important as the part of the job as it opens all the doors for fixing the defects and developing the new components around or on the top of the existing ones. The developer working on a functionality can understand how the components interact with each other with other minute details.

Preparing architecture block diagrams: This approach is useful when a developer wants to convey his design to other team members. UML diagrams can be followed in this case.

Usage of good tools: The usage of code refactoring and navigation tool greatly reduces the developer’s effort to manually navigate to the code that he may want to look at. The target code could be very handy with such tools. In addition to that there are other tools which are available online to create detail analysis of the existing code.

Product documentation: The documentation is helpful to understand the product at the functional level.

Writing sample applications: It’s probably the only way to understand third-pary or black box component integration before writing a single line of the production code.

Performance analysis: This is one of the important aspects of the software support phase. The developer may need to spend considerable time to analyze the performance of the piece of code on hand. He may have to plot time taken Vs. load to understand the performance hit, if any.

Understand + Develop: The developer may need to stay focused on the code that is not written by him and which is unknown to him. This can give him a good command and grip on the functionality. In addition, with the rapid technology advancements he may also need to take care of the various other options in the form of technical proposals which can do better in a long run.

The equation can be put as follows:
Tool + Technology + People = Product

Stay simple, stay creative!

No comments: