

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Software aging is a process whereby the software code’s quality drops or becomes outdated leading to various technical problems. Any software or computer program is subject to an aging cycle that gradually changes its characteristics and performance for the worse. Eventually, the software becomes decrepit, and users need to upgrade to a newer version.
Typology: Lecture notes
1 / 3
This page cannot be seen from the preview
Don't miss anything!


Software aging Software aging is a process whereby the software code’s quality drops or becomes outdated leading to various technical problems. Any software or computer program is subject to an aging cycle that gradually changes its characteristics and performance for the worse. Eventually, the software becomes decrepit, and users need to upgrade to a newer version. The phenomenon was first identified by David Parnas, in an essay that explored what to do about it: "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. As the software gets older, it gradually fails to serve its purposes, and users start experiencing slow-down issues. Eventually, the software will trigger frequent system freezes and crashes and will stop working altogether. Windows XP is perhaps the perfect software aging example. While we can’t prevent software aging, we do have a pretty clear picture of what’s causing it. Therefore, we can take specific actions to extend the software lifespan — or, at least, try to. What Causes Software to Degrade over Time Hardware upgrades. Technology, and particularly, hardware advancements are taking place at a very rapid pace. If software developers fail to adapt the code to the latest hardware progress, their product becomes obsolete. Error accumulation over time. There’s no such thing as a bug-free or error-free software. As you continue to run your computer programs, more and more errors accumulate. This puts additional strain on the software code. Data and file corruption. Data corruption is something you can’t stop. The original data or software code unintentionally changes over time. More and more errors occur during the data writing, reading, processing, or storage phases. Memory bloating and leaking. If computer programs fail to release the memory resources they no longer need, they basically exhaust the available memory. As a result, your computer won’t properly run the software code, and various errors pile up. All this speeds up the software aging process. Relevant Software Aging Metrics: Aging indicators are an important area of study for measurement-based approaches. The correct identification of metrics representing the aging of the system is of paramount importance in order
to have a clear assessment of the system health’s state. Aging indicators can refer to both resource usage and to performance. The following classes of aging indicators are commonly used in measurement-based aging analysis techniques: i. Memory consumption: metrics related to memory consumption are by far the most commonly used metrics for monitoring resource depletion. Empirical evidence showed that free memory exhibits the shortest Time to Exhaustion (TTE) among system resources and that memory management defects are a significant cause of aging failures and of software failures in general. Therefore, several measurement-based studies analyze aging phenomena affecting free memory by measuring the amount of free physical memory and swap space, and applying time series and statistical models to these variables. ii. Performance degradation: Measurement-based techniques often refer to performance degradation in software systems affected by aging, which is the other symptom (aside from resource depletion) caused by aging. Performance degradation is indeed related to memory usage: for instance, the consumption of physical memory increases the time required by memory allocation procedures and garbage collection mechanisms, since their computational complexity is a function of the number of memory areas that have been allocated. But performance degradation can be also due to other, more complex and hard-to-reproduce, aging causes such as fragmentation or concurrency management. Common indicators are response time, latency, throughput, transaction rate or, less commonly, the number of SLA (Service Level Agreement) violations. In the presence of this kind of phenomena, software rejuvenation can be triggered when the quality of service (e.g., in terms of response time or throughput) is below a given threshold. Software rejuvenation To prevent crashes or degradation software rejuvenation can be employed proactively as inevitable aging leads to failures in software systems. This proactive technique was identified as a cost-effective solution during research at the AT&T Bell Laboratories on fault-tolerant