Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Understanding Software Aging: Causes, Costs, and Prevention, Study notes of Computer Science

The concept of software aging, its causes, costs, and ways to prevent or mitigate its effects. The author, d.l. Parnas, argues that software, like people, undergoes aging processes and emphasizes the importance of understanding its causes and taking steps to limit its effects. The two types of software aging - lack of movement and ignorant surgery - and their consequences, such as user dissatisfaction, reduced performance, and decreasing reliability.

Typology: Study notes

Pre 2010

Uploaded on 08/19/2009

koofers-user-qsg-1
koofers-user-qsg-1 🇺🇸

10 documents

1 / 32

Toggle sidebar

Related documents


Partial preview of the text

Download Understanding Software Aging: Causes, Costs, and Prevention and more Study notes Computer Science in PDF only on Docsity! Software Design (Software Aging) © SERG “Software Aging” by D. L. Parnas Software Design (Software Aging) © SERG Software Aging “Programs, like people, get old. We can’t prevent aging, but we can understand its causes, take steps to limit its effects, temporarily reverse some of the damage it has caused, and prepare for the day when the software is no longer viable. ... (We must) lose our preoccupation with the first release and focus on the long term health of our products.” D.L. Parnas Software Design (Software Aging) © SERG Software Does Age • The authors and owners of new software products often look at aging software with disdain. • “If only the software had been designed using today’s languages and techniques …” • Like a young jogger scoffing at an 86 year old man (ex-champion swimmer) and saying that he should have exercised more in his youth! Software Design (Software Aging) © SERG The Causes of Software Aging • There are two types of software aging: – Lack of Movement: Aging caused by the failure of the product’s owners to modify it to meet changing needs. – Ignorant Surgery: Aging caused as a result of changes that are made. • This “one-two punch” can lead to rapid decline in the value of a software product. Software Design (Software Aging) © SERG Lack of Movement • Unless software is frequently updated, its user’s will become dissatisfied and change to a new product. • Excellent software developed in the 60’s would work perfectly well today, but nobody would use it. • That software has aged even though nobody has touched it. • Actually, it has aged because nobody bothered to touch it. Software Design (Software Aging) © SERG The Cost of Software Failure • Inability to keep up, • reduced performance, • decreasing reliability. Software Design (Software Aging) © SERG Inability To Keep Up • As software ages, it grows bigger. • “Weight gain” is a result of the fact that the easiest way to add a feature is to add new code. • Changes become more difficult as the size of the software increases because: – There is more code to change, – it is more difficult to find the routines that must be changed. • Result: Customers switch to a “younger” product to get the new features. Software Design (Software Aging) © SERG Reduced Performance • As the size of the program grows, it places more demands on the computer memory. • Customers must upgrade their computers to get acceptable response. • Performance decreases because of poor design that has resulted from long-term ad hoc maintenance. • A “younger” product will run faster and use less memory because it was designed to support the new features. Software Design (Software Aging) © SERG Reducing the Cost of SW Aging • We should be looking far beyond the first release to the time when the product is old. • Inexperienced programmers get a “rush” after the first successful compile or demonstration. • Experienced programmers realize that this is only the beginning ... Software Design (Software Aging) © SERG Reducing the Cost of SW Aging (Cont’d) • Responsible, professional, organizations realize that more work is invested between the time after the first successful run and the first release than is required to get the first successful run. • Extensive testing and rigorous reviews are necessary. Software Design (Software Aging) © SERG Preventive Medicine • Design for success • Keep records (documentation) • Seek second opinions (reviews) Software Design (Software Aging) © SERG Design for Change (Cont’d) • Since it is impossible to make everything equally easy to change, it is important to: – estimate the probabilities of each type of change – organize the software so that the items that are most likely to change are “confined” to a small amount of code Software Design (Software Aging) © SERG Why is Design for Change Ignored? • Textbooks fail to discuss the process of estimating the probability of change for various classes of changes. • Programmers are impatient because they are too eager to get the first version working. • Designs that result from this principle are different from the “natural” designs of the programmer’s intuition. Software Design (Software Aging) © SERG Why is Design for Change Ignored? (Cont’d) • Few good examples of the application of the principle. Designers tend to mimic other designs they have seen. • Programmers tend to confuse design principles with languages. • Many practitioners lack training in software development. Software Design (Software Aging) © SERG Second Opinions (Reviews) • In engineering, as in medicine, the need for reviews by other professionals is never questioned. • In designing a building, ship, aircraft, there is always a series of design documents that are carefully reviewed by others. Software Design (Software Aging) © SERG Reviews • This is not true in the software industry: – Many programmers have no professional training in software at all. – Emphasis of CS degrees on mathematics and science; professional discipline is not a topic for a “liberal” education. – Difficult to find people who can serve as quality reviewers; no money to hire outsiders. – Time pressure misleads designers into thinking that they have no time for proper reviews. – Many programmers resent the idea of being reviewed. Software Design (Software Aging) © SERG Reviews • Every design should be reviewed and approved by someone whose responsibilities are for the long-term future of the product. Software Design (Software Aging) © SERG Software Geriatrics • Retroactive Documentation: – A major step in slowing the age of older software, and often rejuvenating it, is to upgrade the quality of the documentation. • Retroactive Modularization: – Change structure so that each module hides a design decision that is likely to change. Software Design (Software Aging) © SERG Software Geriatrics (Cont’d) • Amputation: – A section of code has been modified so often, and so thoughtlessly, that it is not worth saving. • Major Surgery (Restructuring): – Identify and eliminate redundant components and gratuitous dependencies. Software Design (Software Aging) © SERG Planning Ahead • It’s time to stop acting as if “getting it to run” was the only thing that matters. • Designs and changes have to be documented and carefully reviewed. • If it’s not documented, it’s not done. • In other areas of engineering, product obsolescence is recognized and included in design and marketing plans. • The same should be done for software engineering.
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved