fbpx
Wikipedia

Software aging

In software engineering, 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. Software aging has several causes, including the inability of old software to adapt to changing needs or changing technology platforms, and the tendency of software patches to introduce further errors. As the software gets older it becomes less well-suited to its purpose and will eventually stop functioning as it should. Rebooting or reinstalling the software can act as a short-term fix.[1] A proactive fault management method to deal with the software aging incident is software rejuvenation. This method can be classified as an environment diversity technique that usually is implemented through software rejuvenation agents (SRA).

The phenomenon was first identified by David Parnas, in an essay that explored what to do about it:[2]

"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."[3]

From both an academic and industrial point of view, the software aging phenomenon has increased. Recent research has focussed on clarifying its causes and effects.[4] Memory bloating and leaking, along with data corruption and unreleased file-locks are particular causes of software aging.

Proactive management of software aging edit

Software aging edit

Software failures are a more likely cause of unplanned systems outages compared to hardware failures.[5][6] This is because software exhibits over time an increasing failure rate due to data corruption, numerical error accumulation and unlimited resource consumption. In widely used and specialized software, a common action to clear a problem is rebooting because aging occurs due to the complexity of software which is never free of errors. It is almost impossible to fully verify that a piece of software is bug-free. Even high-profile software such as Windows and macOS must receive continual updates to improve performance and fix bugs. Software development tends to be driven by the need to meet release deadlines rather than to ensure long-term reliability.[7] Designing software that can be immune to aging is difficult. Not all software will age at the same rate as some users use the system more intensively than others.[8]

Rejuvenation edit

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 software in the 1990s.[9] Software rejuvenation works by removing accumulated error conditions and freeing up system resources, for example by flushing operating system kernel tables, using garbage collection, reinitializing internal data structures, and perhaps the most well known rejuvenation method is to reboot the system.

There are simple techniques and complex techniques to achieve rejuvenation. The method most individuals are familiar with is the hardware or software reboot. A more technical example would be the web server software Apache's rejuvenation method. Apache implements one form of rejuvenation by killing and recreating processes after serving a certain number of requests.[10] Another technique is to restart virtual machines running in a cloud computing environment.[11]

The multinational telecommunications corporation AT&T has implemented software rejuvenation in the real time system collecting billing data in the United States for most telephone exchanges.[12]

Some systems which have employed software rejuvenation methods include:[13]

  1. Transaction processing systems
  2. Web servers
  3. Spacecraft systems

The IEEE International Symposium on Software Reliability Engineering (ISSRE) hosted the 5th annual International Workshop on Software Aging and Rejuvenation (woSAR) in 2013. Topics included:

  • Design, implementation, and evaluation of rejuvenation mechanisms
  • Modeling, analysis, and implementation of rejuvenation scheduling
  • Software rejuvenation benchmarking

Memory leaks edit

Some programming languages, like C and C++, allow the programmer to allocate heap memory. Moreover, the programmer may be required to free the memory when the memory is no longer needed. Freeing the memory is necessary because some operating systems (OS) don't perform garbage collection when a process finishes. Over time, this is likely to consume more and more memory, eventually causing the computer to run out of memory.[14] In low memory conditions, the computer usually functions slower due to intense swapping and thrashing. When this happens, applications become sluggish or even unresponsive. If the computer runs out of both memory and swap space, the OS might automatically reboot — or even worse hang.[15]

Programs written in programming languages that use a garbage collector (e.g. Java) are less prone to memory leaks, since memory that is no longer referenced will be freed up by the garbage collector. This however does not mean it's impossible to write code that leaks memory in such languages.

Sometimes critical components of the OS itself can be a source of memory leaks. In Microsoft Windows, for example, the memory use of a Windows Explorer plug-in might drain the available memory to the point of making the entire computer unusable. A reboot might be needed.[16]

Implementation edit

Two methods for implementing rejuvenation are:

  1. Time based rejuvenation
  2. Prediction based rejuvenation

Memory bloating edit

Garbage collection is a form of automatic memory management whereby the system automatically recovers unused memory. For example, the .NET Framework manages the allocation and release of memory for software running under it. But automatically tracking these objects takes time and is not perfect.

.NET based web services manage several logical types of memory such as stack, unmanaged and managed heap (free space). As the physical memory gets full, the OS writes rarely used parts of it to disk, so that it can reallocate it to another application, a process known as paging or swapping. But if the memory does need to be used, it must be reloaded from disk. If several applications are all making large demands, the OS can spend much of its time merely moving data between main memory and disk, a process known as disk thrashing.[17] Since the garbage collector has to examine all of the allocations to decide which are in use, it may exacerbate this thrashing. As a result, extensive swapping can lead to garbage collection cycles extended from milliseconds to tens of seconds. This results in usability problems.

See also edit

References edit

  1. ^ Shereshevsky, M.; Crowell, J.; Cukic, B.; Gandikota, V.; Yan Liu (2003). "Software aging and multifractality of memory resources". 2003 International Conference on Dependable Systems and Networks, 2003. Proceedings. pp. 721–730. doi:10.1109/DSN.2003.1209987. ISBN 978-0-7695-1952-4. S2CID 18697750.
  2. ^ Parnas, D.L. (1994). "Software aging". Proceedings of 16th International Conference on Software Engineering. pp. 279–287. doi:10.1109/ICSE.1994.296790. ISBN 978-0-8186-5855-6. S2CID 790287.
  3. ^ "Software Aging | the morning paper". 2014-10-14. Retrieved 2024-02-12.
  4. ^ Grottke, Michael; Matias, Rivalino; Trivedi, Kishor S. (2008). "The fundamentals of software aging". 2008 IEEE International Conference on Software Reliability Engineering Workshops (ISSRE WKSP). pp. 1–6. doi:10.1109/ISSREW.2008.5355512. ISBN 978-1-4244-3416-9. S2CID 11527276.
  5. ^ "Oatd: -".
  6. ^ Garg, S.; Van Moorsel, A.; Vaidyanathan, K.; Trivedi, K.S. (1998). "A methodology for detection and estimation of software aging". Proceedings Ninth International Symposium on Software Reliability Engineering (Cat. No.98TB100257). pp. 283–292. doi:10.1109/ISSRE.1998.730892. ISBN 978-0-8186-8991-8. S2CID 8696313.
  7. ^ Castelli, V.; Harper, R.E.; Heidelberger, P.; Hunter, S.W.; Trivedi, K.S.; Vaidyanathan, K.; Zeggert, W.P. (2001-03-01). "Proactive management of software aging". IBM Journal of Research and Development. 45 (2): 311–332. CiteSeerX 10.1.1.28.7273. doi:10.1147/rd.452.0311. ISSN 0018-8646.
  8. ^ Gross, K.C.; Bhardwaj, V.; Bickford, R. (2003). "Proactive detection of software aging mechanisms in performance critical computers". 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings. pp. 17–23. doi:10.1109/SEW.2002.1199445. ISBN 978-0-7695-1855-8. S2CID 17167955.
  9. ^ Cotroneo, D., Natella, R., Pietrantuono, R., and Russo, S. 2014. A survey of software aging and rejuvenation studies. ACM J. Emerg. Technol. Comput. Syst. 10, 1, Article 8 (January 2014), 34 pages.
  10. ^ Trivedi, K. S. and Vaidyanathan, K. 2007. Software Aging and Rejuvenation. Wiley Encyclopedia of Computer Science and Engineering.
  11. ^ Bruneo, Dario; Distefano, Salvatore; Longo, Francesco; Puliafito, Antonio; Scarpa, Marco (2013). "Workload-Based Software Rejuvenation in Cloud Systems". IEEE Transactions on Computers. 62 (6): 1072–1085. doi:10.1109/TC.2013.30. S2CID 23981532.
  12. ^ Trivedi, Kishor S.; Vaidyanathan, Kalyanaraman (2004-01-01). Reis, Ricardo (ed.). Software Rejuvenation - Modeling and Analysis. IFIP International Federation for Information Processing. Springer US. pp. 151–182. doi:10.1007/1-4020-8159-6_6. ISBN 978-1-4020-8158-3.
  13. ^ Lei Li; Vaidyanathan, K.; Trivedi, K.S. (2002). "An approach for estimation of software aging in a Web server". Proceedings International Symposium on Empirical Software Engineering. pp. 91–100. doi:10.1109/ISESE.2002.1166929. ISBN 978-0-7695-1796-4. S2CID 8170010.
  14. ^ "Overview of Memory Leaks". msdn.microsoft.com. Retrieved 2015-11-04.
  15. ^ Martin Brown; Ken Milberg (16 November 2010). "Optimizing AIX 7 memory performance Part 3, Tuning swap space settings". IBM.
  16. ^ "Preventing Memory Leaks in Windows Applications (Windows)". msdn.microsoft.com. Retrieved 2015-11-04.
  17. ^ S.R., Chaitra; Basu, Anirban (2012). "Software Rejuvenation in Web Services". International Journal of Computer Applications. 54 (8): 31–35. Bibcode:2012IJCA...54h..31S. doi:10.5120/8589-2340.

Further reading edit

  • R. Matias Jr. and P. J. Freitas Filho, "An experimental study on software aging and rejuvenation in web servers," Proceedings of the 30th Annual International Computer Software and Applications Conference (COMPSAC'06), Vol. 01, pp. 189 – 196, 2006.
  • M. Grottke, R. Matias Jr., and K. S. Trivedi, "The Fundamentals of Software Aging," Workshop of Software Aging and Rejuvenation (WoSAR/ISSRE), 2008.
  • R. Matias Jr, P. Barbetta, K. Trivedi, P. Freitas Filho "Accelerated Degradation Tests Applied to Software Aging Experiments," IEEE Transactions on Reliability 59(1): 102–114,2010.
  • M. Grottke, L. Li, K. Vaidyanathan, and K.S. Trivedi, "Analysis of software aging in a web server," IEEE Transactions on Reliability, vol. 55, no. 3, pp. 411–420, 2006.
  • M. Grottke, K. Trivedi, "Fighting Bugs: Remove, Retry, Replicate, and Rejuvenate," IEEE Computer 40(2): 107–109, 2007.
  • More papers on Proceedings of Workshop of Software Aging and Rejuvenation (WoSAR'08,'10, '11, '12, '13, '14) at IEEE Xplore.

software, aging, this, article, focuses, much, specific, examples, please, help, improve, this, article, adding, sources, that, evaluate, within, broader, context, march, 2017, software, engineering, software, aging, tendency, software, fail, cause, system, fa. This article focuses too much on specific examples Please help improve this article by adding sources that evaluate within a broader context March 2017 In software engineering 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 Software aging has several causes including the inability of old software to adapt to changing needs or changing technology platforms and the tendency of software patches to introduce further errors As the software gets older it becomes less well suited to its purpose and will eventually stop functioning as it should Rebooting or reinstalling the software can act as a short term fix 1 A proactive fault management method to deal with the software aging incident is software rejuvenation This method can be classified as an environment diversity technique that usually is implemented through software rejuvenation agents SRA The phenomenon was first identified by David Parnas in an essay that explored what to do about it 2 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 3 From both an academic and industrial point of view the software aging phenomenon has increased Recent research has focussed on clarifying its causes and effects 4 Memory bloating and leaking along with data corruption and unreleased file locks are particular causes of software aging Contents 1 Proactive management of software aging 1 1 Software aging 1 2 Rejuvenation 2 Memory leaks 3 Implementation 4 Memory bloating 5 See also 6 References 7 Further readingProactive management of software aging editSoftware aging edit Software failures are a more likely cause of unplanned systems outages compared to hardware failures 5 6 This is because software exhibits over time an increasing failure rate due to data corruption numerical error accumulation and unlimited resource consumption In widely used and specialized software a common action to clear a problem is rebooting because aging occurs due to the complexity of software which is never free of errors It is almost impossible to fully verify that a piece of software is bug free Even high profile software such as Windows and macOS must receive continual updates to improve performance and fix bugs Software development tends to be driven by the need to meet release deadlines rather than to ensure long term reliability 7 Designing software that can be immune to aging is difficult Not all software will age at the same rate as some users use the system more intensively than others 8 Rejuvenation edit 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 amp T Bell Laboratories on fault tolerant software in the 1990s 9 Software rejuvenation works by removing accumulated error conditions and freeing up system resources for example by flushing operating system kernel tables using garbage collection reinitializing internal data structures and perhaps the most well known rejuvenation method is to reboot the system There are simple techniques and complex techniques to achieve rejuvenation The method most individuals are familiar with is the hardware or software reboot A more technical example would be the web server software Apache s rejuvenation method Apache implements one form of rejuvenation by killing and recreating processes after serving a certain number of requests 10 Another technique is to restart virtual machines running in a cloud computing environment 11 The multinational telecommunications corporation AT amp T has implemented software rejuvenation in the real time system collecting billing data in the United States for most telephone exchanges 12 Some systems which have employed software rejuvenation methods include 13 Transaction processing systems Web servers Spacecraft systemsThe IEEE International Symposium on Software Reliability Engineering ISSRE hosted the 5th annual International Workshop on Software Aging and Rejuvenation woSAR in 2013 Topics included Design implementation and evaluation of rejuvenation mechanisms Modeling analysis and implementation of rejuvenation scheduling Software rejuvenation benchmarkingMemory leaks editMain article Memory leak Some programming languages like C and C allow the programmer to allocate heap memory Moreover the programmer may be required to free the memory when the memory is no longer needed Freeing the memory is necessary because some operating systems OS don t perform garbage collection when a process finishes Over time this is likely to consume more and more memory eventually causing the computer to run out of memory 14 In low memory conditions the computer usually functions slower due to intense swapping and thrashing When this happens applications become sluggish or even unresponsive If the computer runs out of both memory and swap space the OS might automatically reboot or even worse hang 15 Programs written in programming languages that use a garbage collector e g Java are less prone to memory leaks since memory that is no longer referenced will be freed up by the garbage collector This however does not mean it s impossible to write code that leaks memory in such languages Sometimes critical components of the OS itself can be a source of memory leaks In Microsoft Windows for example the memory use of a Windows Explorer plug in might drain the available memory to the point of making the entire computer unusable A reboot might be needed 16 Implementation editThis section does not cite any sources Please help improve this section by adding citations to reliable sources Unsourced material may be challenged and removed March 2017 Learn how and when to remove this template message Two methods for implementing rejuvenation are Time based rejuvenation Prediction based rejuvenationMemory bloating editMain article Garbage collection computer science Garbage collection is a form of automatic memory management whereby the system automatically recovers unused memory For example the NET Framework manages the allocation and release of memory for software running under it But automatically tracking these objects takes time and is not perfect NET based web services manage several logical types of memory such as stack unmanaged and managed heap free space As the physical memory gets full the OS writes rarely used parts of it to disk so that it can reallocate it to another application a process known as paging or swapping But if the memory does need to be used it must be reloaded from disk If several applications are all making large demands the OS can spend much of its time merely moving data between main memory and disk a process known as disk thrashing 17 Since the garbage collector has to examine all of the allocations to decide which are in use it may exacerbate this thrashing As a result extensive swapping can lead to garbage collection cycles extended from milliseconds to tens of seconds This results in usability problems See also editSoftware regression Software rotReferences edit Shereshevsky M Crowell J Cukic B Gandikota V Yan Liu 2003 Software aging and multifractality of memory resources 2003 International Conference on Dependable Systems and Networks 2003 Proceedings pp 721 730 doi 10 1109 DSN 2003 1209987 ISBN 978 0 7695 1952 4 S2CID 18697750 Parnas D L 1994 Software aging Proceedings of 16th International Conference on Software Engineering pp 279 287 doi 10 1109 ICSE 1994 296790 ISBN 978 0 8186 5855 6 S2CID 790287 Software Aging the morning paper 2014 10 14 Retrieved 2024 02 12 Grottke Michael Matias Rivalino Trivedi Kishor S 2008 The fundamentals of software aging 2008 IEEE International Conference on Software Reliability Engineering Workshops ISSRE WKSP pp 1 6 doi 10 1109 ISSREW 2008 5355512 ISBN 978 1 4244 3416 9 S2CID 11527276 Oatd Garg S Van Moorsel A Vaidyanathan K Trivedi K S 1998 A methodology for detection and estimation of software aging Proceedings Ninth International Symposium on Software Reliability Engineering Cat No 98TB100257 pp 283 292 doi 10 1109 ISSRE 1998 730892 ISBN 978 0 8186 8991 8 S2CID 8696313 Castelli V Harper R E Heidelberger P Hunter S W Trivedi K S Vaidyanathan K Zeggert W P 2001 03 01 Proactive management of software aging IBM Journal of Research and Development 45 2 311 332 CiteSeerX 10 1 1 28 7273 doi 10 1147 rd 452 0311 ISSN 0018 8646 Gross K C Bhardwaj V Bickford R 2003 Proactive detection of software aging mechanisms in performance critical computers 27th Annual NASA Goddard IEEE Software Engineering Workshop 2002 Proceedings pp 17 23 doi 10 1109 SEW 2002 1199445 ISBN 978 0 7695 1855 8 S2CID 17167955 Cotroneo D Natella R Pietrantuono R and Russo S 2014 A survey of software aging and rejuvenation studies ACM J Emerg Technol Comput Syst 10 1 Article 8 January 2014 34 pages Trivedi K S and Vaidyanathan K 2007 Software Aging and Rejuvenation Wiley Encyclopedia of Computer Science and Engineering Bruneo Dario Distefano Salvatore Longo Francesco Puliafito Antonio Scarpa Marco 2013 Workload Based Software Rejuvenation in Cloud Systems IEEE Transactions on Computers 62 6 1072 1085 doi 10 1109 TC 2013 30 S2CID 23981532 Trivedi Kishor S Vaidyanathan Kalyanaraman 2004 01 01 Reis Ricardo ed Software Rejuvenation Modeling and Analysis IFIP International Federation for Information Processing Springer US pp 151 182 doi 10 1007 1 4020 8159 6 6 ISBN 978 1 4020 8158 3 Lei Li Vaidyanathan K Trivedi K S 2002 An approach for estimation of software aging in a Web server Proceedings International Symposium on Empirical Software Engineering pp 91 100 doi 10 1109 ISESE 2002 1166929 ISBN 978 0 7695 1796 4 S2CID 8170010 Overview of Memory Leaks msdn microsoft com Retrieved 2015 11 04 Martin Brown Ken Milberg 16 November 2010 Optimizing AIX 7 memory performance Part 3 Tuning swap space settings IBM Preventing Memory Leaks in Windows Applications Windows msdn microsoft com Retrieved 2015 11 04 S R Chaitra Basu Anirban 2012 Software Rejuvenation in Web Services International Journal of Computer Applications 54 8 31 35 Bibcode 2012IJCA 54h 31S doi 10 5120 8589 2340 Further reading editR Matias Jr and P J Freitas Filho An experimental study on software aging and rejuvenation in web servers Proceedings of the 30th Annual International Computer Software and Applications Conference COMPSAC 06 Vol 01 pp 189 196 2006 M Grottke R Matias Jr and K S Trivedi The Fundamentals of Software Aging Workshop of Software Aging and Rejuvenation WoSAR ISSRE 2008 R Matias Jr P Barbetta K Trivedi P Freitas Filho Accelerated Degradation Tests Applied to Software Aging Experiments IEEE Transactions on Reliability 59 1 102 114 2010 M Grottke L Li K Vaidyanathan and K S Trivedi Analysis of software aging in a web server IEEE Transactions on Reliability vol 55 no 3 pp 411 420 2006 M Grottke K Trivedi Fighting Bugs Remove Retry Replicate and Rejuvenate IEEE Computer 40 2 107 109 2007 More papers on Proceedings of Workshop of Software Aging and Rejuvenation WoSAR 08 10 11 12 13 14 at IEEE Xplore Retrieved from https en wikipedia org w index php title Software aging amp oldid 1206603072, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.