Yazılım yaşlanması - Software aging - Wikipedia

İçinde yazılım Mühendisliği, yazılım yaşlanma belirli bir süre boyunca sürekli çalıştıktan sonra tüm yazılımların başarısız olma veya sistem arızasına neden olma eğilimini ifade eder. Yazılım yaşlandıkça daha az bağışık hale gelir ve sonunda olması gerektiği gibi çalışmayı durdurur. yeniden başlatılıyor veya yazılımı yeniden yüklemek kısa vadeli bir düzeltme olarak görülebilir.[1] Yazılım yaşlanma olayıyla başa çıkmak için proaktif bir hata yönetimi yöntemi yazılım gençleştirme. Bu yöntem, genellikle yazılım gençleştirme aracıları (SRA) aracılığıyla uygulanan bir ortam çeşitliliği tekniği olarak sınıflandırılabilir.

Hem akademik hem de endüstriyel açıdan bakıldığında, yazılım yaşlanma olgusu artmıştır. Ana odak noktası, etkilerini doğrulanabilir bir gözlem ve teorik anlayışla anlamak olmuştur.[2]

"Programlar, tıpkı insanlar gibi yaşlanıyor. Yaşlanmayı önleyemiyoruz, ancak nedenlerini anlayabilir, etkilerini sınırlamak için adımlar atabilir, yol açtığı zararın bir kısmını geçici olarak tersine çevirebilir ve yazılımın kullanılamadığı güne hazırlanabiliriz. daha uzun süre uygulanabilir. "[3]

Hafıza şişkinliği ve sızıntı ile birlikte veri bozulması ve yayınlanmamış dosya kilitleri, yazılımın eskimesinin belirli nedenleridir.

Yazılım yaşlanmasının proaktif yönetimi

Yazılım yaşlanması

Yazılım arızaları, donanım arızalarına kıyasla planlanmamış sistem kesintilerinin daha olası bir nedenidir.[4][5] Bunun nedeni, yazılımın veri bozulması, sayısal hata birikimi ve sınırsız kaynak tüketimi nedeniyle zamanla artan bir başarısızlık oranı sergilemesidir. Yaygın olarak kullanılan ve özelleşmiş yazılımlarda, bir sorunu gidermek için genel bir eylem yeniden başlatmadır çünkü yaşlanma, yazılımın hiçbir zaman hatasız olmayan karmaşıklığı nedeniyle oluşur. Bir yazılım parçasının hatasız olduğunu tam olarak doğrulamak neredeyse imkansızdır. Gibi yüksek profilli yazılımlar bile pencereler ve Mac os işletim sistemi performansı artırmak ve hataları düzeltmek için sürekli güncellemeler almalıdır. Yazılım geliştirme, uzun vadeli güvenilirlik sağlamaktan ziyade son teslim tarihlerini karşılama ihtiyacından kaynaklanma eğilimindedir.[6] Yaşlanmaya karşı bağışık olabilecek yazılımlar tasarlamak zordur. Bazı kullanıcılar sistemi diğerlerinden daha yoğun kullandığından tüm yazılımlar aynı hızda yaşlanmayacaktır.[7]

Gençleştirme

Çökmeleri veya bozulmaları önlemek için yazılım gençleştirme kaçınılmaz yaşlanma yazılım sistemlerinde arızalara yol açtığı için proaktif olarak kullanılabilir. Bu proaktif teknik, 1990'larda AT&T Bell Laboratuvarlarında hataya dayanıklı yazılım üzerine yapılan araştırmalar sırasında uygun maliyetli bir çözüm olarak tanımlandı.[8] Yazılım gençleştirme, biriken hata koşullarını ortadan kaldırarak ve sistem kaynaklarını serbest bırakarak, örneğin işletim sistemi çekirdek tablolarını temizleyerek, çöp toplamayı kullanarak, dahili veri yapılarını yeniden başlatarak ve belki de en iyi bilinen gençleştirme yöntemi sistemi yeniden başlatarak çalışır.

Gençleşmeyi sağlamak için basit teknikler ve karmaşık teknikler vardır. Çoğu kişinin aşina olduğu yöntem, donanım veya yazılımdır. yeniden başlatmak. Daha teknik bir örnek, Web sunucusu yazılım Apache'nin gençleştirme yöntemi. Apaçi belirli sayıda talebi yerine getirdikten sonra süreçleri öldürerek ve yeniden yaratarak bir tür gençleştirme uygular.[9]Başka bir teknik de yeniden başlatmaktır Sanal makineler koşmak Bulut bilişim çevre.[10]

Çok uluslu telekomünikasyon şirketi AT&T Amerika Birleşik Devletleri'nde çoğu telefon santrali için fatura verilerini toplayan gerçek zamanlı sistemde yazılım gençleştirme uyguladı.[11]

Yazılım gençleştirme yöntemlerini kullanan bazı sistemler şunları içerir:[12]

  1. İşlem işleme sistemleri
  2. Web sunucuları
  3. Uzay aracı sistemleri

IEEE Yazılım Güvenilirliği Mühendisliği Uluslararası Sempozyumu (ISSRE), Yazılım Yaşlanma ve Gençleştirme üzerine 5. yıllık Uluslararası Çalıştaya (woSAR ) 2013'te. Dahil edilen konular:

  • Gençleştirme mekanizmalarının tasarımı, uygulanması ve değerlendirilmesi
  • Gençleştirme planlamasının modellenmesi, analizi ve uygulanması
  • Yazılım gençleştirme kıyaslama

Bellek sızıntıları

Kullanan sistemlerde işletim sistemi kullanıcı programları, bir işlemi gerçekleştirmek için bellek blokları talep etmelidir. Bu işlemden sonra (ör. altyordam ) tamamlandığında, programın diğer programların kullanımına açık olması için kendisine ayrılan tüm bellek bloklarını boşaltması beklenir. Çöp toplayıcı olmayan programlama dillerinde (ör. C ve C ++ ) gerekli bellek serbest bırakma işlevlerini çağırmak ve program içinde kullanılmayan tüm verileri hesaba katmak programcıya kalmıştır. Ancak bu her zaman gerçekleşmez. Yazılım hataları nedeniyle, program daha fazla bellek tüketebilir ve sonunda sistemin belleğinin bitmesine neden olabilir.[13] Düşük bellek koşullarında, yoğun performansın neden olduğu performans darboğazı nedeniyle sistem genellikle daha yavaş çalışır. takas (ezici ), uygulamalar yanıt vermez hale gelir ve büyük miktarlarda bellek isteyenler beklenmedik bir şekilde çökebilir. Sistemin hem belleği hem de takasın bitmesi durumunda, işletim sistemi bile çökebilir ve tüm sistemin yeniden başlatılmasına neden olabilir.[14]

Çöp toplayıcı kullanan programlama dillerinde yazılmış programlar (ör. Java ) genellikle bellek sızıntılarını önlemek için bu özelliğe güvenir. Bu nedenle, bu programların "eskimesi", en azından kısmen, programlama dilinin içine yerleştirilmiş çöp toplayıcının kalitesine bağlıdır. çalışma zamanı ortamı kendisi.

Bazen işletim sisteminin kritik bileşenleri bir bellek sızıntısı kaynağı olabilir ve sistem kararlılığı sorunlarının arkasındaki ana suçlu olabilir. İçinde Microsoft Windows örneğin, hafıza kullanımı Windows Gezgini eklentiler ve hizmetler gibi uzun ömürlü süreçler, sistemin güvenilirliğini, onu kullanılamaz hale getirecek kadar etkileyebilir. Sistemin yeniden çalışması için yeniden başlatma gerekebilir.[15]

Yazılım yenileme, bir uygulama tarafından kullanılan tüm belleği serbest bırakmaya zorladığından bellek sızıntılarına yardımcı olur. Uygulama yeniden başlatılabilir ancak temiz bir sayfa ile başlar.

Uygulama

Gençleştirmeyi uygulamak için iki yöntem şunlardır:

  1. Zamana dayalı gençleştirme
  2. Tahmine dayalı gençleştirme

Hafıza şişkinliği

Çöp toplama bir tür otomatik hafıza yönetimi böylece sistem kullanılmayan belleği otomatik olarak kurtarır. Örneğin, .NET Framework altında çalışan yazılım için bellek tahsisini ve serbest bırakılmasını yönetir. Ancak bu nesnelerin otomatik olarak izlenmesi zaman alır ve mükemmel değildir.

.NET tabanlı web hizmetleri, yığın, yönetilmeyen ve yönetilen yığın (boş alan) gibi çeşitli mantıksal bellek türlerini yönetir. Fiziksel bellek dolduğunda, işletim sistemi nadiren kullanılan bölümlerini diske yazar, böylece disk belleği veya değiştirme olarak bilinen bir işlem olan başka bir uygulamaya yeniden tahsis edebilir. Ancak belleğin kullanılması gerekiyorsa, diskten yeniden yüklenmesi gerekir. Birkaç uygulamanın tümü büyük taleplerde bulunuyorsa, işletim sistemi zamanının çoğunu verileri yalnızca ana bellek ile disk arasında taşımak için harcayabilir, bu işlem disk atma.[16] Çöp toplayıcı, hangilerinin kullanıldığına karar vermek için tüm tahsisleri incelemesi gerektiğinden, bu çöpü daha da kötüleştirebilir. Sonuç olarak, kapsamlı değişim, milisaniyeden onlarca saniyeye uzanan çöp toplama döngülerine yol açabilir. Bu, kullanılabilirlik sorunlarına neden olur.

Referanslar

  1. ^ Shereshevsky, M .; Crowell, J .; Cukic, B .; Gandikota, V .; Yan Liu (2003). "Yazılım yaşlanması ve bellek kaynaklarının çok yönlü olması". 2003 Güvenilir Sistemler ve Ağlar Uluslararası Konferansı, 2003. Bildiriler. s. 721–730. doi:10.1109 / DSN.2003.1209987. ISBN  978-0-7695-1952-4.
  2. ^ Grottke, Michael; Matias, Rivalino; Trivedi, Kishor S. (2008). "Yazılım yaşlanmasının temelleri". 2008 IEEE Uluslararası Yazılım Güvenilirliği Mühendisliği Çalıştayları Konferansı (ISSRE WKSP). s. 1–6. doi:10.1109 / ISSREW.2008.5355512. ISBN  978-1-4244-3416-9.
  3. ^ Parnas, D.L. (1994). "Yazılım yaşlanması". 16.Uluslararası Yazılım Mühendisliği Konferansı Bildirileri. s. 279–287. doi:10.1109 / ICSE.1994.296790. ISBN  978-0-8186-5855-6.
  4. ^ "Yulaf: -".
  5. ^ Garg, S .; Van Moorsel, A .; Vaidyanathan, K .; Trivedi, K.S. (1998). "Yazılım yaşlanmasının tespiti ve tahmini için bir metodoloji". Bildiriler Dokuzuncu Uluslararası Yazılım Güvenilirliği Mühendisliği Sempozyumu (Kat. No. 98TB100257). s. 283–292. doi:10.1109 / ISSRE.1998.730892. ISBN  978-0-8186-8991-8.
  6. ^ Castelli, V .; Harper, R.E .; Heidelberger, P .; Hunter, S.W .; Trivedi, K.S .; Vaidyanathan, K .; Zeggert, W.P. (2001-03-01). "Yazılım yaşlanmasının proaktif yönetimi". IBM Araştırma ve Geliştirme Dergisi. 45 (2): 311–332. CiteSeerX  10.1.1.28.7273. doi:10.1147 / rd.452.0311. ISSN  0018-8646.
  7. ^ Gross, K.C .; Bhardwaj, V .; Bickford, R. (2003). "Performans açısından kritik bilgisayarlarda yazılım yaşlanma mekanizmalarının proaktif tespiti". 27. Yıllık NASA Goddard / IEEE Yazılım Mühendisliği Çalıştayı, 2002. Bildiriler. sayfa 17–23. doi:10.1109 / SEW.2002.1199445. ISBN  978-0-7695-1855-8.
  8. ^ Cotroneo, D., Natella, R., Pietrantuono, R., ve Russo, S. 2014. Yazılım yaşlandırma ve gençleştirme çalışmaları üzerine bir anket. ACM J. Emerg. Technol. Bilgisayar. Syst. 10, 1, Madde 8 (Ocak 2014), 34 sayfa.
  9. ^ Trivedi, K. S. ve Vaidyanathan, K. 2007. Yazılım Yaşlanma ve Gençleştirme. Wiley Bilgisayar Bilimi ve Mühendisliği Ansiklopedisi.
  10. ^ Bruneo, Dario; Distefano, Salvatore; Longo, Francesco; Puliafito, Antonio; Scarpa Marco (2013). "Bulut Sistemlerinde İş Yüküne Dayalı Yazılım Yenileme". Bilgisayarlarda IEEE İşlemleri. 62 (6): 1072–1085. doi:10.1109 / TC.2013.30.
  11. ^ Trivedi, Kishor S .; Vaidyanathan, Kalyanaraman (2004-01-01). Reis, Ricardo (ed.). Yazılım Gençleştirme - Modelleme ve Analiz. IFIP Uluslararası Bilgi İşleme Federasyonu. Springer ABD. s. 151–182. doi:10.1007/1-4020-8159-6_6. ISBN  978-1-4020-8158-3.
  12. ^ Lei Li; Vaidyanathan, K .; Trivedi, K.S. (2002). "Bir Web sunucusunda yazılım yaşlanmasının tahmini için bir yaklaşım". Proceedings Uluslararası Ampirik Yazılım Mühendisliği Sempozyumu. s. 91–100. doi:10.1109 / ISESE.2002.1166929. ISBN  978-0-7695-1796-4.
  13. ^ "Bellek Sızıntılarına Genel Bakış". msdn.microsoft.com. Alındı 2015-11-04.
  14. ^ Martin Brown ve Ken Milberg (16 Kasım 2010). "AIX 7 bellek performansını optimize etme Bölüm 3, Takas alanı ayarlarını ayarlama".CS1 Maint: yazar parametresini kullanır (bağlantı)
  15. ^ "Windows Uygulamalarında (Windows) Bellek Sızıntılarını Önleme". msdn.microsoft.com. Alındı 2015-11-04.
  16. ^ S.R., Chaitra; Basu, Anirban (2012). "Web Hizmetlerinde Yazılım Yenileme". Uluslararası Bilgisayar Uygulamaları Dergisi. 54 (8): 31–35. Bibcode:2012 IJCA ... 54h..31S. doi:10.5120/8589-2340.

daha fazla okuma

  • R. Matias Jr. ve P. J. Freitas Filho, "Web sunucularında yazılımın yaşlanması ve gençleşmesi üzerine deneysel bir çalışma," 30. Yıllık Uluslararası Bilgisayar Yazılımları ve Uygulamaları Konferansı Bildirileri (COMPSAC'06), Cilt. 01, sayfa 189 - 196, 2006.
  • M. Grottke, R. Matias Jr. ve 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 "Yazılım Yaşlanma Deneylerine Uygulanan Hızlandırılmış Bozulma Testleri," Güvenilirlik Üzerine IEEE İşlemleri 59 (1): 102–114,2010.
  • M. Grottke, L. Li, K. Vaidyanathan ve K.S. Trivedi, "Bir web sunucusunda yazılım yaşlanmasının analizi" Güvenilirlik Üzerine IEEE İşlemleri, cilt. 55, hayır. 3, sayfa 411–420, 2006.
  • M. Grottke, K. Trivedi, "Böceklerle Mücadele: Kaldır, Yeniden Dene, Çoğalt ve Gençleştir," IEEE Bilgisayar 40 (2): 107–109, 2007.
  • IEEE Xplore'da Yazılım Yaşlanma ve Gençleştirme Çalıştayı Bildirileri (WoSAR'08, '10, '11, '12, '13, '14) hakkında daha fazla makale.