Week No. 6 (1)
Week No. 6 (1)
REENGINEERING
Software Engineering Department
Sir Syed University of Engineering &
Technology
Week No. 6
CONTENTS
• Bohrbugs: Software bugs that are reproducible, easily found and (often) fixed during the
testing and debugging phase
• Mandelbugs: Software bugs that are hard to find and fix; (often) remain in the software
during the operational phase. These bugs may never be fixed, but if the operation is
retried or the system is rebooted, the bugs may not manifest themselves as failures.
• Yet another cause software failures is resource exhaustion, e.g., memory leakage, swap
space fragmentation. Software appears to “Age” due to resource exhaustion
FUNDAMENTAL CONCEPTS OF SOFTWARE
AGING
• Software aging is a phenomenon that causes system performance degradation and
eventual failures.
• A general characteristic of this phenomenon is the fact that, as the run-time of the system
or process increases, its failure rate also increases.
• Software aging is the tendency for software to fail or cause a system failure after running
continuously for a certain time, or because of ongoing changes in systems surrounding
the software.
• Failure can take the form of incorrect service (e.g., erroneous outcomes), no service (e.g.,
halt and/or crash of the system), or partial failure (e.g., gradual increase in response
time).
FUNDAMENTAL CONCEPTS OF SOFTWARE
AGING
• Aging effects can also be classified into volatile and nonvolatile effects.
• They are considered volatile if they are removed by re-initialization of the system or
process affected, for example via a system reboot. In contrast, non-volatile aging effects
still exist after reinitializing of the system/process.
• Physical memory fragmentation and OS resource leakage are examples for volatile aging
effects. File system and database metadata fragmentation are examples for non-volatile
aging effects.
• Aging effects in a system can only be detected while the system is running, by monitoring
aging indicators. Aging indicators are markers for aging detection, like antigens are
markers to detect cancer disease.
FUNDAMENTAL CONCEPTS OF SOFTWARE
AGING: AGING INDICATORS
• Aging Indicators: To detect and monitor software aging, various aging indicators are used.
These indicators can include system performance metrics (e.g., response time,
throughput), resource consumption (e.g., CPU usage, memory usage), error rates, system
logs, and system health monitoring data.
• Tracking these indicators helps identify signs of aging and potential areas for
improvement.
Tools for Aging Indicators:
• Performance Monitoring Tools: New Relic, AppDynamics
• Resource Monitoring Tools: Nagios, Zabbix
• Profiling and Performance Analysis Tools: Java VisualVM, Visual Studio Profiler (for .NET
applications)
FUNDAMENTAL CONCEPTS OF SOFTWARE
AGING: SOFTWARE REJUVENATION
• Software rejuvenation: Proactive fault management technique aimed at
postponing/preventing crash failures and/or performance degradation.
• Software rejuvenation refers to the process of periodically restarting or reinitializing
components or the entire system to mitigate the effects of aging. Rejuvenation aims to
remove accumulated errors, reset resource states, and restore the system to a more stable
and reliable state.
• Involves occasionally stopping the running software, “cleaning” its internal state and/or its
environment and restarting it. Rejuvenation of the environment, not of software.
• Common techniques for cleaning: Software rejuvenation is the concept of periodically
stopping the running software, cleaning its internal state through garbage collection,
defragmentation, flushing operating system kernel tables and reinitializing internal data
structures, and restarting it.
EXAMPLE OF SOFTWARE AGING