User talk:Haedar1985

Introduction


Perfective maintenance is a type of software maintenance and is the natural enhancement to a successful and working product, usually to better meet the needs of stakeholders For example:
 * changing the GUI to streamline user interactions,


 * replacing algorithms to speed up processing,


 * adding color,


 * higher resolution,


 * better sound, better graphics animation,


 * other multimedia enhancements,


 * adding security features,


 * making a program more customizable and adaptable to user preferenc

How will achieve Perfective Maintenance


The point of perfective maintenance is to enhance the system by improving efficiency, reliability, functionality, or maintainability, often in response to user or system personnel requests. Corrective and adaptive maintenance are reactive. Bugs are fixed as they are discovered. An upgrade to an operating system can necessitate a change to application software. Perfective maintenance, in contract, is proactive. The idea is to fix the system before it breaks.

Perfective maintenance involves implementing ne wfunctional or non-functional system requirements. These are generated by software customers as their organization are business changes.

It is difficult to find up-to-date figures for their relative effort devoted to these different types of maintenance. A survey by Lientz and Swanson (1980) discovered that about 65% of maintenance was perfective, 18% adaptive and 17% corrective shown in figure. And also Lientz and Swanson found that large organizations devoted at least 50% of their total programming effort for maintaining existing systems. The costs of adding functionality to a system after it has been put into operation are usually much greater than providing similar functionality when software is originally developed. There are a number of reasons for this:

1.Maintenance staffs are often relatively inexperienced and unfamiliar with the applications domain. Maintenance has a poor image among software engineers. It is seen as a less skilled process than system development and is often allocated to the most junior staff.

2.The program being maintained may have been developed many years ago without modern software engineering techniques. Thay may be unstructured and optimized for efficiency rather than understandability.

3.Changes made to a program may introduce new faults, which trigger further change requests. New faults may be introduced because the complexity of the system may make it difficult to access the effects of a change.

4.As a system is changed, its structure tends to degrade. This makes the system harder to understand and makes further changes difficult as the program becomes less cohesive.

5.The links between a program and its associated documentation are sometimes lost during the maintenance process. The documentation may therefore be an unreliable aid to program understanding.

Problems Statement
The first of these problems can only be tackled by organization adapting enlightened maintenance management policies. management must demonstrate to engineer that maintenance is of equal value and is as challenging as original software development. The best designers and programmers should be challenged and motivated by system maintenance. Boehm (1983) suggested several steps that can improve maintenance staff motivation.

1.Couple software objectives to organizational goals.

2.Couple software maintenance rewards to organizational performance

3.Integrate software maintenance personnel into operational teams.

4.Create a discretionary, preventive maintenance budget, which allows the maintenance team to decide when to re-engineer parts of the software. Preventive maintenance means making changes to the software, which improve its structure so that future maintenance is simplified.

5.Involve maintenance staff early in the software process during standard preparation, reviews and test preparation.

The second of the above problems, namely unstructured code, can be tackled using re-engineering and design recovery tecniques.

The other maintenance problems are process problems. Structure naturally degrades with changes. Organizations must plan to invest extra effort and resources in preventive maintenance with the aim of maintaining the structure. Good software engineerign practice such as the use of information hiding or object-oriented development helps minimize the structure degradation but effort for structure maintenance is still required.

Advantges of Perfective Maintenance
Perfective maintenance allows your business to grow while the cost to maintain your applications shrink. This delta is known as your “Return on Maintenance”. It’s the ability to allocate resources to grow your business vs. maintaining your business.

Budgets continue to shrink everyday, yet you are still being asked to improve quality, improve availability and support more complex mission critical applications with less. In today’s world it is not enough to be average. Every day you have to streamline processes and reduce waste.

The purpose of this paper is to define and introduce the next generation of Application Maintenance Outsourcing known as Perfective Maintenance and how this allows you to achieve a “Return on Maintenance”. Perfective Maintenance does not only allow you to reduce risks and drive cost reductions but provides you a return on your maintenance dollars. It helps you gain added value from your application portfolio.