Старение программного обеспечения - Software aging

В программная инженерия, программного обеспечения старение относится ко всему программному обеспечению, склонному к отказу или к отказу системы после непрерывной работы в течение определенного времени. По мере того, как программное обеспечение стареет, оно становится менее защищенным и в конечном итоге перестает функционировать должным образом, поэтому перезагрузка или переустановку программного обеспечения можно рассматривать как краткосрочное решение.[1] Упреждающий метод управления сбоями для устранения инцидента старения программного обеспечения: обновление программного обеспечения. Этот метод можно классифицировать как метод разнообразия среды, который обычно реализуется с помощью программных агентов омоложения (SRA).

Как с академической, так и с промышленной точки зрения феномен старения программного обеспечения увеличился. Основное внимание уделялось пониманию его эффектов на основе поддающегося проверке наблюдения и теоретического понимания.[2]

«Программы, как и люди, стареют. Мы не можем предотвратить старение, но мы можем понять его причины, предпринять шаги, чтобы ограничить его последствия, временно устранить часть причиненного им ущерба и подготовиться к тому дню, когда программное обеспечение перестанет работать. более жизнеспособный ".[3]

Раздутие и утечка памяти, а также повреждение данных и невыполненные блокировки файлов - частные причины старения программного обеспечения.

Упреждающее управление старением программного обеспечения

Старение программного обеспечения

Программные сбои являются более вероятной причиной незапланированных отключений системы по сравнению с аппаратными сбоями.[4][5] Это связано с тем, что программное обеспечение со временем демонстрирует возрастающую частоту отказов из-за повреждения данных, накопления числовых ошибок и неограниченного потребления ресурсов. В широко используемом и специализированном программном обеспечении обычным действием для устранения проблемы является перезагрузка, поскольку старение происходит из-за сложности программного обеспечения, которое никогда не бывает без ошибок. Практически невозможно полностью убедиться, что в программном обеспечении отсутствуют ошибки. Даже громкое программное обеспечение, такое как Windows и macOS должны получать постоянные обновления для повышения производительности и исправления ошибок. Разработка программного обеспечения, как правило, обусловлена ​​необходимостью соблюдения сроков выпуска, а не обеспечением долгосрочной надежности.[6] Трудно разработать программное обеспечение, устойчивое к старению. Не все программное обеспечение будет стареть с одинаковой скоростью, поскольку некоторые пользователи используют систему более интенсивно, чем другие.[7]

Омоложение

Для предотвращения сбоев или деградации программное омоложение могут использоваться проактивно, поскольку неизбежное старение приводит к сбоям в программных системах. Этот упреждающий метод был определен как экономичное решение в ходе исследований отказоустойчивого программного обеспечения в лаборатории AT&T Bell в 1990-х годах.[8] Обновление программного обеспечения работает путем удаления накопившихся ошибок и освобождения системных ресурсов, например, путем очистки таблиц ядра операционной системы, использования сборки мусора, повторной инициализации внутренних структур данных, и, возможно, наиболее известным методом восстановления является перезагрузка системы.

Есть простые техники и сложные техники для достижения омоложения. Метод, с которым знакомо большинство людей, - это аппаратное или программное обеспечение. перезагрузка. Более технический пример: веб сервер программный метод омоложения Apache. Apache реализует одну из форм омоложения, убивая и воссоздавая процессы после обслуживания определенного количества запросов.[9]Другой способ - перезапустить виртуальные машины работает в облачные вычисления среда.[10]

Многонациональная телекоммуникационная корпорация AT&T реализовала обновление программного обеспечения в системе реального времени, собирающей данные о выставлении счетов в США для большинства телефонных станций.[11]

Некоторые системы, в которых используются методы обновления программного обеспечения, включают:[12]

  1. Системы обработки транзакций
  2. Веб-серверы
  3. Системы космических аппаратов

В IEEE Международный симпозиум по проектированию надежности программного обеспечения (ISSRE) провел 5-й ежегодный международный семинар по старению и обновлению программного обеспечения (WoSAR ) в 2013 году. Темы включали:

  • Разработка, внедрение и оценка механизмов омоложения
  • Моделирование, анализ и реализация расписания омоложения
  • Программное омоложение сравнительный анализ

Утечки памяти

В системах, использующих Операционные системы пользовательские программы должны запрашивать блоки памяти для выполнения операции. После этой операции (например, подпрограмма ) ожидается, что программа освободит все блоки памяти, выделенные для нее, чтобы сделать ее доступной для использования другими программами. В языках программирования без сборщика мусора (например, C и C ++ ) программист должен вызвать необходимые функции освобождения памяти и учесть все неиспользуемые данные в программе. Однако так бывает не всегда. Из-за ошибок программного обеспечения программа может потреблять все больше и больше памяти, что в конечном итоге приводит к нехватке памяти в системе.[13] В условиях нехватки памяти система обычно работает медленнее из-за узкого места производительности, вызванного интенсивным обмен (взбучка ) приложения перестают отвечать, а те, которые неожиданно запрашивают большой объем памяти, могут аварийно завершить работу. В случае, если в системе не хватает как памяти, так и подкачки, даже ОС может выйти из строя, что приведет к перезагрузке всей системы.[14]

Программы, написанные на языках программирования, которые используют сборщик мусора (например, Ява ) обычно полагаются на эту функцию для предотвращения утечек памяти. Таким образом, «старение» этих программ, по крайней мере частично, зависит от качества сборщика мусора, встроенного в язык программирования. среда выполнения сам.

Иногда критически важные компоненты самой ОС могут быть источником утечек памяти и быть главным виновником проблем со стабильностью системы. В Майкрософт Виндоус, например, использование памяти проводник Виндоус плагины и долговечные процессы, такие как службы, могут повлиять на надежность системы до такой степени, что она станет непригодной для использования. Возможно, потребуется перезагрузка, чтобы система снова заработала.[15]

Обновление программного обеспечения помогает при утечках памяти, поскольку оно заставляет освободить всю память, используемую приложением. Приложение можно перезапустить, но запускается с чистого листа.

Выполнение

Два метода проведения омоложения:

  1. Омоложение по времени
  2. Омоложение на основе прогнозов

Вздутие памяти

Сборка мусора - это форма автоматического управление памятью при этом система автоматически восстанавливает неиспользуемую память. Например, .NET Framework управляет выделением и освобождением памяти для программного обеспечения, работающего под ней. Но автоматическое отслеживание этих объектов требует времени и не идеально.

Веб-службы на основе .NET управляют несколькими логическими типами памяти, такими как стек, неуправляемая и управляемая куча (свободное пространство). Когда физическая память заполняется, ОС записывает редко используемые части ее на диск, чтобы можно было перераспределить ее другому приложению, процесс, известный как подкачка или подкачка. Но если необходимо использовать память, ее нужно перезагрузить с диска. Если несколько приложений предъявляют большие требования, ОС может тратить большую часть своего времени просто на перемещение данных между основной памятью и диском, процесс, известный как обмолота диска.[16] Поскольку сборщик мусора должен проверять все выделения, чтобы решить, какие из них используются, это может усугубить эту проблему. В результате обширная подкачка может привести к увеличению циклов сборки мусора с миллисекунд до десятков секунд. Это приводит к проблемам с удобством использования.

Рекомендации

  1. ^ Шерешевский, М .; Crowell, J .; Cukic, B .; Гандикота, В .; Ян Лю (2003). «Старение программного обеспечения и мультифрактальность ресурсов памяти». 2003 Международная конференция по надежным системам и сетям, 2003. Труды. С. 721–730. Дои:10.1109 / DSN.2003.1209987. ISBN  978-0-7695-1952-4.
  2. ^ Гроттке, Майкл; Матиас, Ривалино; Триведи, Кишор С. (2008). «Основы старения программного обеспечения». Международная конференция IEEE по проектированию надежности программного обеспечения, 2008 г. (ISSRE WKSP). С. 1–6. Дои:10.1109 / ISSREW.2008.5355512. ISBN  978-1-4244-3416-9.
  3. ^ Парнас, Д. (1994). «Старение программного обеспечения». Материалы 16-й Международной конференции по программной инженерии. С. 279–287. Дои:10.1109 / ICSE.1994.296790. ISBN  978-0-8186-5855-6.
  4. ^ "Оатд: -".
  5. ^ Garg, S .; Van Moorsel, A .; Vaidyanathan, K .; Триведи, К. (1998). «Методология обнаружения и оценки старения программного обеспечения». Труды Девятого международного симпозиума по проектированию надежности программного обеспечения (№ по каталогу 98TB100257). С. 283–292. Дои:10.1109 / ISSRE.1998.730892. ISBN  978-0-8186-8991-8.
  6. ^ Кастелли, В .; Harper, R.E .; Heidelberger, P .; Хантер, S.W .; Триведи, К.С .; Vaidyanathan, K .; Zeggert, W.P. (2001-03-01). «Проактивное управление старением программного обеспечения». Журнал исследований и разработок IBM. 45 (2): 311–332. CiteSeerX  10.1.1.28.7273. Дои:10.1147 / ряд.452.0311. ISSN  0018-8646.
  7. ^ Gross, K.C .; Bhardwaj, V .; Бикфорд, Р. (2003). «Упреждающее обнаружение механизмов старения программного обеспечения на компьютерах, критичных к производительности». 27-й ежегодный семинар NASA Goddard / IEEE Software Engineering Workshop, 2002 г. Труды. С. 17–23. Дои:10.1109 / SEW.2002.1199445. ISBN  978-0-7695-1855-8.
  8. ^ Котронео, Д., Нателла, Р., Пьетрантуоно, Р., и Руссо, С. 2014. Обзор исследований программного обеспечения, посвященного старению и омоложению. ACM J. Emerg. Technol. Comput. Syst. 10, 1, статья 8 (январь 2014 г.), 34 стр.
  9. ^ Триведи, К. С. и Вайдьянатан, К. 2007. Старение программного обеспечения и омоложение. Энциклопедия компьютерных наук и инженерии Wiley.
  10. ^ Брунео, Дарио; Дистефано, Сальваторе; Лонго, Франческо; Пулиафито, Антонио; Скарпа, Марко (2013). «Обновление программного обеспечения на основе рабочих нагрузок в облачных системах». Транзакции IEEE на компьютерах. 62 (6): 1072–1085. Дои:10.1109 / TC.2013.30.
  11. ^ Триведи, Кишор С .; Вайдьянатан, Кальянараман (01.01.2004). Рейс, Рикардо (ред.). Программное омоложение - моделирование и анализ. IFIP Международная федерация обработки информации. Springer США. С. 151–182. Дои:10.1007/1-4020-8159-6_6. ISBN  978-1-4020-8158-3.
  12. ^ Лэй Ли; Vaidyanathan, K .; Триведи, К. (2002). «Подход к оценке старения программного обеспечения на веб-сервере». Труды Международного симпозиума по эмпирической программной инженерии. С. 91–100. Дои:10.1109 / ISESE.2002.1166929. ISBN  978-0-7695-1796-4.
  13. ^ «Обзор утечек памяти». msdn.microsoft.com. Получено 2015-11-04.
  14. ^ Мартин Браун и Кен Милберг (16 ноября 2010 г.). «Оптимизация производительности памяти AIX 7, часть 3, Настройка параметров пространства подкачки».CS1 maint: использует параметр авторов (связь)
  15. ^ «Предотвращение утечки памяти в приложениях Windows (Windows)». msdn.microsoft.com. Получено 2015-11-04.
  16. ^ С.Р., Чайтра; Басу, Анирбан (2012). «Обновление программного обеспечения в веб-сервисах». Международный журнал компьютерных приложений. 54 (8): 31–35. Bibcode:2012IJCA ... 54ч..31С. Дои:10.5120/8589-2340.

дальнейшее чтение

  • Р. Матиас-младший и П. Дж. Фрейтас Филхо, "Экспериментальное исследование старения и обновления программного обеспечения на веб-серверах", Труды 30-й Ежегодной Международной конференции по компьютерному программному обеспечению и приложениям (COMPSAC'06), Vol. 01. С. 189 - 196, 2006.
  • М. Гроттке, Р. Матиас-младший и К. С. Триведи, "Основы старения программного обеспечения", Семинар по старению и омоложению программного обеспечения (WoSAR / ISSRE), 2008 г.
  • Р. Матиас-младший, П. Барбетта, К. Триведи, П. Фрейтас Филхо «Тесты ускоренной деградации, применяемые в экспериментах по устареванию программного обеспечения», IEEE Transactions on Reliability 59 (1): 102–114,2010.
  • М. Гроттке, Л. Ли, К. Вайдьянатан, К.С. Триведи, «Анализ старения программного обеспечения на веб-сервере», IEEE Transactions on Reliability, vol. 55, нет. 3. С. 411–420, 2006.
  • М. Гроттке, К. Триведи, «Борьба с ошибками: удаление, повторная попытка, репликация и восстановление», IEEE Computer 40 (2): 107–109, 2007.
  • Больше статей о Proceedings of Workshop of Software Aging and Rejuvenation (WoSAR'08, '10, '11, '12, '13, '14) на IEEE Xplore.