Software Maintenance And Change Control Process
- Length: 1896 words (5.4 double-spaced pages)
- Rating: Excellent
Introduction to Software Maintenance and Change Control Process
Software maintenance process is a topic that probably comes up in most organizations and is an important one to address. Once software is created there are usually changes or bugs that are found causes there to be a need for maintenance. It is important to have a process in place that helps to define how these items are handled and the path they take to completion. Using different tools to log these changes, requests, or bugs will is important to keep things organized and allows for proper tracking of these items.
As part of Software maintenance there is another aspect called change control, which basically is keeping track of the different versions of code. As code changes to accommodate new requests or bugs there are different versions of code for the same part of the software. If this is not properly handled it can cause a lot of confusion and could also keep the right changes from being moved into a production environment. Software tools that can help with that are Microsoft Visual Source Safe or Collaborative SourceSafe. Both of these tools allows a user to put a document in a certain location or "safe" and than when changes occur they check out the document, which keeps another developer from getting the code and making changes at the same time. Once the changes are completed the document or file can be checked back in allowing others to view this new version. Like any project it is always the things that may seem to some as the most trivial that cause a project to be successful or to have difficulty.
Understanding Real World Software Maintenance Processes
The software maintenance process is a long-term support tier for any and all computer-based business systems. In the age of computer automation and electronic commerce, many businesses have become dependent upon scalable and error proof software platforms. The ongoing support of these systems by the software manufacturer is crucial for the business owner, and the software's longevity. Software Maintenance is a detailed process for weighing suggested program additions, making program updates, supporting user-related questions, and fixing latent errors. This process is both heavily time and resource consuming for software firms. This is why it is important for all software firms to have a strong and well-organized software maintenance plan, in which any changes to a given product are, to be followed.
This insures that all changes and updates will be escalated through the appropriate resources and management to reduce unnecessary expenditures.
Software Maintenance Resource Roles
In order for a software maintenance plan to be effective it must be supported with the necessary talent and management structure to insure an expedited escalation path through the companies software support team.
The first tier of the software support maintenance plan is technical support team. The technical support team will handle all user-related questions, concerns, and problems. Their main function is to isolate user errors from system errors. In the event of a user error, or a miscommunication of the proper procedure in which to perform in a given program to yield the desired result, the technical support representative will walk the user through the necessary steps to reach the customer's goal. In the event that an issue arises and cannot be resolved by a technical support team because it is programming related, the team will escalate the problem to the development team. By utilizing the technical support team as filter the company preserves its programmer resources by only involving them when their specific talent is required.
The second tier of the software maintenance plan is the programming/development team. Their primary responsibility is to correct code dependent errors and make necessary software updates when advised. This team works in conjunction with management to prioritize issues and updates in the interest of the company and its customers. Utilizing programmers on an as needed or project basis allows the company greater flexibility of their programming resources, once again allowing them to conserve precious talent for only the most critical issues.
The third tier of the software maintenance plan is management. Management works in tandem with both of the previous layers. For instance there may be a technical support supervisor who makes the final decision about escalation to the programming team. This person serves as the liaison between the two teams to insure that the issue is communicated, fixed, and ultimately resolved for the user. On the programming team a project manager or lead programmer may be in charge. This person's job is to prioritize pending escalated issues from the technical support team as well as company requested modifications to the program. This person is often times the head of the programming team and may report directly to the systems manager or IT manager. Above the lead programmer you have the IT department manager. This person's job is to monitor the IT department's day to day operations to insure that it is effectively and efficiently supporting the company's customers.
Companies spend millions of dollars a year supporting customer or user bases that are not educated in the proper way to operate their programs. By developing a training program for the customer/user the company can greatly reduce its expenditures on technical support resources. As said in the past "Give a man a fish, feed for a day. Teach a man to fish, feed him for life." This principle still holds true today in regards to program specific training. Once a user is aware and accustomed to a programs capabilities and processes, their dependency on the support team for guidance is greatly diminished.
Maintenance Records and Reports
By using key performance indicator reports and detailed date specific records of corrected problems, the company as well as the software maintenance team is able to stay abreast of its efficiency in resolving issues. These figures are helpful to management and human resources when the need arises for new talent requisition. A decline in the department's efficiency through a system of key performance indicator reports allows management to locate weaknesses in their staff and make the necessary changes. The results on these reports overtime will increase providing of course that the data they utilize adequately represents a given department's function. When utilized correctly maintenance records and reports can provide some of the best work related statistics available.
Change Control Process
The next step in the software maintenance process is the change control process. This process will most likely start out with the end user who is using the software and experiences a problem with the software. Before the problem should be reported, the user should at least be able to reproduce the problem. When the problem is reproduced, the user should obtain the type of hardware and other software being used that may have caused a conflict with the system.
The software problem is then reported through the appropriate channels. This can be done through the use of a website where the user can enter the specific problem through a software problem report or be done automatically where the software generates a crash dump and detects the computers system hardware specifications and other software installed. This can automatically be emailed directly to the software company where it can be analyzed. When a software analyst decides the reported problem is valid, then a software change from request is created.
The next step would be the financial aspect of the process. Before the tests can be started, the company should know the answers to some questions. These questions produce answers to better understand the size and type of workload involved in the process, how much effort is wasted, the cost and schedule of a release and the quality of the released software. Some of the questions are: What is the delivery cost of the software maintenance? How are the costs allocated with the available resources? What kinds of changes are made to the software? How much effort is being expended per change type? How many invalid change requests are evaluated? It pretty much all comes down to independent costing, resources, and quality analysis.
In the software change form request, the specific problems are noted and processed to be reproduced on a default system and on a system similar to where the software fault was originally created. Once the problem is reproduced and verified, the problem report is written up by the test engineer by detailing exactly how the problem occurred and what was done to create the fault on the system. The report created by the test engineer is forwarded to the software engineers who then being to create, fix and modify the code to repair the fault. Once a fix is created for the software, the user control board applies the fix to the software and assigns it a priority to be validated. The priority could be low/routine, medium, high/urgent or critical/emergency and will give an idea as to how important the fix is to the software.
The next step would be the contents within the test plan are to be proposed by the maintenance team and users delivered to the maintenance configuration control board who would recommend a priority to the software change request. While the test activities are planned and documented, the system and acceptance testing of the software are planned and performed to demonstrate the software satisfies its requirements to validate the software test project.
A request for a software version change is requested while the user's maintenance team and system engineering team negotiate the version content of the software. The maintenance control board reviews the release plan and schedules the release for a specific time frame based on the budget set for the project. Once this is done, the software engineering teams completes the design, code and test the release software. During this test phase, the software goes through functional testing, regression testing, performance testing and integration testing to make sure all parts of the software are functional and to verify no faults had risen during the final fix and test processes. The installation and quality assurance of the release are reviewed by the user and system engineering team to ensure the schedule release of the software is on track. The final step is where a final version to the software is attached and issued.
Software maintenance and change control process are critical elements of continued success of any software package. By keeping detailed records,following predefined standard operating procedures, and adhering to proper escalation protocols a company can efficiently maintain and update their product. As multiple industries move towards computer automation for control of their daily operations, stable and scalable software packages become more and more crucial to the thriving software based businesses of the global economy. With continued dilegence to provide standardized support for software aided businesses, companys are able to generate higher profits for not only themselves but their customers as well.
(2005) RCGlobal Information. Sample pages of the Template for a Software Maintenance
Plan. Retrieved, from http://www.rcglobal.com/wrcg25septrcgsamp.htm
Stark, George E. (1997). The MITRE Corporation. Measurements to Manage Software
Maintenance. Retrieved, from