Устаревание программного обеспечения
![]() | В этой статье слишком много внимания уделяется конкретным примерам . ( март 2017 г. ) |
В разработке программного обеспечения старение программного обеспечения — это тенденция программного обеспечения выходить из строя или вызывать сбой системы после непрерывной работы в течение определенного времени или из-за продолжающихся изменений в системах, окружающих программное обеспечение. Устарение программного обеспечения имеет несколько причин, включая неспособность старого программного обеспечения адаптироваться к меняющимся потребностям или изменяющимся технологическим платформам, а также тенденцию программных исправлений вносить дополнительные ошибки. По мере старения программного обеспечения оно становится менее подходящим для своих целей и в конечном итоге перестает функционировать должным образом. Перезагрузка или переустановка программного обеспечения может помочь в краткосрочной перспективе. [1] Проактивным методом управления сбоями, позволяющим справиться с инцидентами, связанными с устареванием программного обеспечения, является омоложение программного обеспечения . Этот метод можно классифицировать как метод разнообразия среды, который обычно реализуется с помощью агентов обновления программного обеспечения (SRA).
Это явление было впервые выявлено Дэвидом Парнасом в эссе, в котором исследовалось, что с этим делать: [2]
«Программы, как и люди, стареют. Мы не можем предотвратить старение, но мы можем понять его причины, принять меры по ограничению его последствий, временно обратить вспять часть причиненного им ущерба и подготовиться к тому дню, когда программное обеспечение выйдет из строя. более жизнеспособным». [3]
Как с академической, так и с промышленной точки зрения явление старения программного обеспечения усилилось. Недавние исследования были сосредоточены на выяснении его причин и последствий. [4] Раздувание и утечка памяти , а также повреждение данных и невыполненные блокировки файлов являются особыми причинами старения программного обеспечения.
управление старением Проактивное программного обеспечения
Устаревание программного обеспечения [ править ]
Сбои программного обеспечения являются более вероятной причиной незапланированных сбоев системы по сравнению с сбоями оборудования. [5] [6] Это связано с тем, что программное обеспечение со временем демонстрирует увеличивающуюся частоту отказов из-за повреждения данных, накопления числовых ошибок и неограниченного потребления ресурсов. В широко используемом и специализированном программном обеспечении обычным действием для устранения проблемы является перезагрузка, поскольку старение происходит из-за сложности программного обеспечения, которое никогда не бывает свободным от ошибок. Практически невозможно полностью убедиться в том, что часть программного обеспечения не содержит ошибок. Даже такое высококлассное программное обеспечение, как Windows и macOS, должно постоянно получать обновления для повышения производительности и исправления ошибок. Разработка программного обеспечения, как правило, обусловлена необходимостью соблюдения сроков выпуска, а не обеспечением долгосрочной надежности. [7] Разработка программного обеспечения, которое может быть невосприимчивым к старению, является сложной задачей. Не все программное обеспечение стареет с одинаковой скоростью, поскольку некоторые пользователи используют систему более интенсивно, чем другие. [8]
Омоложение [ править ]
Чтобы предотвратить сбои или деградацию, обновление программного обеспечения можно активно использовать , поскольку неизбежное старение приводит к сбоям в программных системах. Этот упреждающий метод был признан экономически эффективным решением во время исследований в AT&T Bell Laboratories в 1990-х годах. отказоустойчивого программного обеспечения [9] Обновление программного обеспечения работает путем удаления накопленных ошибок и освобождения системных ресурсов, например, путем очистки таблиц ядра операционной системы, использования сборки мусора, повторной инициализации внутренних структур данных и, возможно, наиболее известный метод обновления — перезагрузка системы.
Существуют простые методы и сложные методы достижения омоложения. Метод, с которым знакомо большинство людей, — это аппаратная или программная перезагрузка . Более техническим примером может служить метод омоложения программного обеспечения веб-сервера Apache. Apache реализует одну из форм омоложения, убивая и воссоздавая процессы после обслуживания определенного количества запросов. [10] Другой метод — перезапустить виртуальные машины, работающие в среде облачных вычислений . [11]
Многонациональная телекоммуникационная корпорация AT&T внедрила обновление программного обеспечения в системе реального времени, собирающей платежные данные в США для большинства телефонных станций. [12]
Некоторые системы, в которых использовались методы омоложения программного обеспечения, включают: [13]
- Системы обработки транзакций
- Веб-серверы
- Системы космических аппаратов
В 2013 году на Международном симпозиуме IEEE по проектированию надежности программного обеспечения (ISSRE) состоялся 5-й ежегодный международный семинар по старению и омоложению программного обеспечения ( woSAR ). Темы включали:
- Разработка, внедрение и оценка механизмов омоложения.
- Моделирование, анализ и внедрение планирования омоложения.
- обновления программного обеспечения Сравнительный анализ
Утечки памяти [ править ]
Некоторые языки программирования , такие как C и C++ , позволяют программисту выделять динамическую память . Более того, программисту может потребоваться освободить память, когда она больше не нужна. Освобождение памяти необходимо, поскольку некоторые операционные системы (ОС) не выполняют сборку мусора после завершения процесса . Со временем это может потреблять все больше и больше памяти, что в конечном итоге приведет к нехватке памяти на компьютере. [14] В условиях нехватки памяти компьютер обычно работает медленнее из-за интенсивного обмена и перезагрузки . Когда это происходит, приложения начинают работать медленно или даже перестают отвечать на запросы. Если на компьютере не хватает памяти и пространства подкачки, ОС может автоматически перезагрузиться или, что еще хуже, зависнуть. [15]
Программы, написанные на языках программирования, использующих сборщик мусора (например, Java ), менее подвержены утечкам памяти, поскольку память, на которую больше нет ссылок, будет освобождена сборщиком мусора. Однако это не означает, что на таких языках невозможно написать код с утечкой памяти.
Иногда источником утечек памяти могут быть критические компоненты самой ОС. в Microsoft Windows Например, использование памяти подключаемым модулем Проводника Windows может истощить доступную память до такой степени, что весь компьютер станет непригодным для использования. перезагрузка . Возможно , потребуется [16]
Реализация [ править ]
Двумя методами осуществления омоложения являются:
- Омоложение по времени
- Омоложение на основе прогнозов
Раздутие памяти [ править ]
Сбор мусора — это форма автоматического управления памятью , при которой система автоматически восстанавливает неиспользуемую память. Например, .NET Framework управляет выделением и освобождением памяти для программного обеспечения, работающего под ней. Но автоматическое отслеживание этих объектов требует времени и не является идеальным.
Веб-службы на основе .NET управляют несколькими логическими типами памяти, такими как стек, неуправляемая и управляемая куча (свободное пространство). По мере заполнения физической памяти ОС записывает на диск редко используемые ее части, чтобы можно было перераспределить их другому приложению. Этот процесс известен как подкачка или подкачка. Но если память все же необходимо использовать, ее необходимо перезагрузить с диска. Если несколько приложений предъявляют большие требования, ОС может тратить большую часть своего времени просто на перемещение данных между основной памятью и диском — процесс, известный как перегрузка диска . [17] Поскольку сборщику мусора приходится проверять все выделения, чтобы решить, какие из них используются, это может усугубить проблему. В результате обширная замена может привести к увеличению циклов сборки мусора с миллисекунд до десятков секунд. Это приводит к проблемам с удобством использования.
См. также [ править ]
Ссылки [ править ]
- ^ Шерешевский, М.; Кроуэлл, Дж.; Цукич, Б.; Гандикота, В.; Ян Лю (2003). «Старение программного обеспечения и мультифрактальность ресурсов памяти» . Международная конференция 2003 г. по надежным системам и сетям, 2003 г. Материалы . стр. 721–730. дои : 10.1109/DSN.2003.1209987 . ISBN 978-0-7695-1952-4 . S2CID 18697750 .
- ^ Парнас, Д.Л. (1994). «Устарение программного обеспечения». Материалы 16-й Международной конференции по программной инженерии . стр. 279–287. дои : 10.1109/ICSE.1994.296790 . ISBN 978-0-8186-5855-6 . S2CID 790287 .
- ^ «Старение программного обеспечения | утренняя газета» . 14 октября 2014 г. Проверено 12 февраля 2024 г.
- ^ Гроттке, Майкл; Матиас, Ривалино; Триведи, Кишор С. (2008). «Основы старения программного обеспечения». 2008 Международная конференция IEEE по семинарам по проектированию надежности программного обеспечения (ISSRE WKSP) . стр. 1–6. дои : 10.1109/ISSREW.2008.5355512 . ISBN 978-1-4244-3416-9 . S2CID 11527276 .
- ^ «Оатд: -» .
- ^ Гарг, С.; Ван Мурсел, А.; Вайдьянатан, К.; Триведи, Канзас (1998). «Методология обнаружения и оценки старения программного обеспечения». Материалы девятого международного симпозиума по обеспечению надежности программного обеспечения (кат. № 98TB100257) . стр. 283–292. дои : 10.1109/ISSRE.1998.730892 . ISBN 978-0-8186-8991-8 . S2CID 8696313 .
- ^ Кастелли, В.; Харпер, Р.Э.; Гейдельбергер, П.; Хантер, Юго-Запад; Триведи, Канзас; Вайдьянатан, К.; Зеггерт, WP (01 марта 2001 г.). «Проактивное управление старением программного обеспечения». Журнал исследований и разработок IBM . 45 (2): 311–332. CiteSeerX 10.1.1.28.7273 . дои : 10.1147/rd.452.0311 . ISSN 0018-8646 .
- ^ Гросс, КК; Бхардвадж, В.; Бикфорд, Р. (2003). «Превентивное обнаружение механизмов старения программного обеспечения на компьютерах, где важна производительность». 27-й ежегодный семинар НАСА по разработке программного обеспечения Годдарда / IEEE, 2002 г. Материалы . стр. 17–23. дои : 10.1109/SEW.2002.1199445 . ISBN 978-0-7695-1855-8 . S2CID 17167955 .
- ^ Котронео Д., Нателла Р., Пьетрантуоно Р. и Руссо С. 2014. Обзор исследований старения и омоложения программного обеспечения. ACM J. Emerg. Технол. Вычислить. Сист. 10, 1, статья 8 (январь 2014 г.), 34 стр.
- ^ Триведи, К.С. и Вайдьянатан, К. 2007. Старение и омоложение программного обеспечения. Энциклопедия компьютерных наук и техники Wiley.
- ^ Брунео, Дарио; Дистефано, Сальваторе; Лонго, Франческо; Пулиафито, Антонио; Скарпа, Марко (2013). «Обновление программного обеспечения на основе рабочих нагрузок в облачных системах». Транзакции IEEE на компьютерах . 62 (6): 1072–1085. дои : 10.1109/TC.2013.30 . S2CID 23981532 .
- ^ Триведи, Кишор С.; Вайдьянатан, Кальянараман (1 января 2004 г.). Рейс, Рикардо (ред.). Обновление программного обеспечения — моделирование и анализ . ИФИП Международная федерация обработки информации. Спрингер США. стр. 151–182. дои : 10.1007/1-4020-8159-6_6 . ISBN 978-1-4020-8158-3 .
- ^ Лей Ли; Вайдьянатан, К.; Триведи, К.С. (2002). «Подход к оценке старения программного обеспечения на веб-сервере». Труды Международного симпозиума по эмпирической разработке программного обеспечения . стр. 91–100. дои : 10.1109/ISESE.2002.1166929 . ISBN 978-0-7695-1796-4 . S2CID 8170010 .
- ^ «Обзор утечек памяти» . msdn.microsoft.com . Проверено 4 ноября 2015 г.
- ^ Мартин Браун; Кен Милберг (16 ноября 2010 г.). «Оптимизация производительности памяти AIX 7. Часть 3. Настройка параметров пространства подкачки» . ИБМ .
- ^ «Предотвращение утечек памяти в приложениях Windows (Windows)» . msdn.microsoft.com . Проверено 4 ноября 2015 г.
- ^ СР, Чайтра; Басу, Анирбан (2012). «Обновление программного обеспечения в веб-сервисах» . Международный журнал компьютерных приложений . 54 (8): 31–35. Бибкод : 2012IJCA...54h..31S . дои : 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.
- Дополнительные статьи о материалах семинара по старению и омоложению программного обеспечения (WoSAR'08,'10, '11, '12, '13, '14) на IEEE Xplore.