Wednesday 6 January 2010

Software Re-Engineering for Real : Software Aging

Software Aging

Reference :


Software Aging By By David Lorge Parnas

Software industry is like other industries, customer requirements are changing, technologies improves everyday and new technologies and products are introduced and users attracted towards new products with newer technologies and better performances. Older products are getting old and unable to compete with new. Software systems also get old with years when technology improves and changes made to meet the challenges and changing requirements. This is not new, but getting into more significant as demand for software system increases as with economic growth and software systems play major role in high-tech firms. So preventing software from early aging and keep up the existing legacy software systems, owners of this software have to take some actions.

Software aging is caused by two main factors, first is failure to modify the software to meet challenges other one is continuous changes made to the software by maintenance engineers without knowledge of actual design of the system, they do changes in code, it will degrade the quality of the software. Aging software are become hard to keep up with market, as there are lot of new competitive product with new technologies and with better performance and aging software often degrade it’s performance because of gradually deteriorating structure due the changes made that introduce new problems and bugs into the system.

Software aging is inevitable and un-avoidable, but still we need to take some preventive measures to decay or limit this issue. So software professionals should think in advance and enforce these preventive measures such as Design for Success / Design for Changes, Keep up better and updated documentation from beginning of the project, compulsory software reviews. As stated above, software aging is inevitable, design for changes is not an easy task as predicting the future changes is not easy, anyhow designers approximately predict the future changes and challenges that might slow down the software aging but cannot completely avoid it.

Even we do take preventive actions to slowdown aging of new software, but still we have got lots of legacy software which are being used and maintained without aware of this aging issue. Owners of such software have do take some immediate actions to keep up the system running and slowdown aging. Stopping more deterioration due to the changes made into the system in past, upgrade the documentation that can serve as good reference to future maintenance programmers, retroactive incremental modularization, amputation and restructuring the system with in appropriate way will help to decay the aging issue at least for some period.

It is always better consider software aging as a major problem and plan early to avoid or slowdown the aging issue. It is obviously important to deliver the first release of running software on date to the customer but deliver a running first release is not a only matter, delivering better quality software with imposing standards and documentation, plan for future changes by well documentations and reviews design before actual coding starts and document and review the changes made the software after release will help to avoid deterioration of system that will lead to limit aging issue. If software is not documented well then it is assumed that it is not done. Owners of software have to plan for future replacement both financially and technologically, like other products software is also has to be replaced with new design and technology to keep up the existing customer and attract new customers as well.

If we start act to prevent software aging there factors as barriers to the actions taken. Software crisis issue addressed long time ago, quick and easy solutions have never work in futures, it is lead software aging very quickly and software profession is not standardized like other professions like electrical engineers, aeronautical engineers...etc. Software profession has to be standardized by forming a professional body and software products should be checked for their quality by enforcing some industry standards.

Finally it is not true, if we assume that old software will not be running in future, if they don’t run, we need find out root cause of the problem, and try out something to sort out that. There are new ideas and techniques evolving to decay the software aging but they have to be put into real product to reach intended audience.

Thanks
TS

No comments:

Post a Comment