Лучшие вопросы
Таймлайн
Чат
Перспективы
Старение программного обеспечения
Из Википедии, свободной энциклопедии
Remove ads
Старение программного обеспечения — это тенденция программного обеспечения к сбоям или отказам системы после непрерывной работы в течение определённого времени или вследствие постоянных изменений в окружающей программной среде. Причинами старения ПО являются, в частности, неспособность устаревшего ПО адаптироваться[англ.] к меняющимся потребностям или изменению технологических платформ, а также к тенденции патчей приводить к другим (вторичным) ошибкам. По мере старения ПО оно становится менее пригодным для своих целей и, в конечном итоге, перестаёт работать должным образом. Перезагрузка компьютера или переустановка программы может быть временным решением[1]. Проактивным методом управления ошибками для устранения инцидентов старения ПО является его омоложение.
Данное явление впервые было идентифицировано Дэвидом Парнасом[англ.] в эссе, посвящённом поиску решений этой проблемы[2]:
Программы, как и люди, стареют. Мы не можем предотвратить старение, но мы можем понять его причины, предпринять шаги для ограничения его последствий, временно обратить вспять некоторые из причинённых им повреждений и подготовиться к тому дню, когда программное обеспечение больше не будет жизнеспособным[3].
Как с академической, так и с промышленной точек зрения, феномен старения программного обеспечения становится всё более актуальным. Недавние исследования были сосредоточены на выяснении причин и последствий старения[4]. Разбухание памяти и утечки, вместе с повреждением данных и неосвобождёнными блокировками файлов являются основными причинами старения программного обеспечения.
Remove ads
Проактивное управление старением программного обеспечения
Суммиров вкратце
Перспектива
Старение программного обеспечения
Сбои программного обеспечения чаще приводят к незапланированным простоям систем, чем аппаратные сбои[5][6]. Это связано с тем, что со временем программное обеспечение демонстрирует возрастающую частоту отказов из-за повреждения данных, накопления численных ошибок и неограниченного потребления ресурсов. В широко используемом и специализированном программном обеспечении распространённым способом устранения проблем является перезагрузка, поскольку старение происходит из-за сложности программного обеспечения, которое никогда не бывает лишено ошибок. Практически невозможно полностью проверить, что программное обеспечение свободно от ошибок. Даже известное программное обеспечение, такое как Windows и macOS, требует постоянных обновлений для улучшения производительности и исправления ошибок. Разработка программного обеспечения, как правило, обусловлена необходимостью соблюдения сроков выпуска, а не обеспечением долгосрочной надёжности[7]. Разработка программного обеспечения, устойчивого к старению, затруднительна[8].
Омоложение программного обеспечения
Чтобы предотвратить сбои или деградацию, омоложение программного обеспечения можно применять проактивно, поскольку неизбежное старение приводит к отказам в программных системах. Этот проактивный метод был определён как экономически эффективное решение в ходе исследований отказоустойчивого программного обеспечения в лабораториях Белла в 1990-х годах[9]. Программное омоложение работает путём устранения накопленных ошибок и освобождения системных ресурсов, например, путём очистки таблиц ядра операционной системы, использования сборки мусора, переинициализации внутренних структур данных.
Существуют как простые, так и сложные методы достижения омоложения. Наиболее знакомый большинству людей способ — это перезагрузка оборудования или программного обеспечения. Более техническим примером может служить метод омоложения веб-серверного программного обеспечения Apache, когда процессы завершаются и воссоздаются после обработки определённого количества запросов[10]. Другой метод заключается в перезапуске виртуальных машин, работающих в среде облачных вычислений[11].
Международная телекоммуникационная корпорация AT&T внедрила программное омоложение в систему реального времени, собирающую биллинговые данные в Соединённых Штатах для большинства телефонных узлов[12].
Некоторые системы, в которых применялись методы программного восстановления, включают[13]:
- Системы обработки транзакций
- Веб-серверы
- Бортовые системы космических аппаратов
В 2013 году на Международном симпозиуме IEEE надёжности программного обеспечения прошёл 5-й ежегодный Международный семинар по старению и омоложению программного обеспечения(woSAR). Среди тем были:
- Разработка, реализация и оценка механизмов омоложения
- Моделирование, анализ и реализация планирования омоложения
- Тестирование производительности омоложения.
Remove ads
Утечка памяти
Суммиров вкратце
Перспектива
Некоторые языки программирования, такие как C и C++, позволяют программисту выделить память из кучи. Более того, программист может быть обязан освободить память, когда она больше не нужна. Освобождение памяти необходимо, потому что некоторые операционные системы не выполняют сборку мусора при завершении процесса. Со временем программа будет потреблять всё больше и больше памяти, в конечном итоге приводя к нехватке памяти[14]. В условиях нехватки памяти компьютер обычно работает медленнее из-за интенсивной подкачки страниц и пробуксовки. Когда это происходит, приложения начинают работать медленно или вовсе перестают отвечать на запросы. Если в компьютере заканчивается и оперативная память, и файл подкачки, операционная система может автоматически перезагрузиться, или, что ещё хуже, зависнуть[15].
Программы, написанные на языках программирования, использующих сборщик мусора (например, Java), менее подвержены утечкам памяти, поскольку память, на которую больше нет ссылок, будет освобождена сборщиком мусора. Однако это не означает, что невозможно написать код, который будет приводить к утечкам памяти в таких языках.
Иногда критические компоненты самой операционной системы могут быть источником утечек памяти. Например, в Windows использование памяти проводником может истощить доступную память до такой степени, что весь компьютер станет непригодным для использования и может потребоваться перезагрузка[16].
Remove ads
Реализция
Два метода реализации омоложения:
- Омоложение по времени
- Омоложение по предсказанию
Разбухание памяти
Суммиров вкратце
Перспектива
Сборка мусора — это вид автоматического управления памятью, когда система сама освобождает неиспользованную память. Например, .NET Framework управляет выделением и освобождением памяти для программ, работающих под его управлением. Однако автоматическое отслеживание этих объектов занимает время и не является идеальным.
Веб-сервисы на базе .NET управляют несколькими логическими типами памяти, такими как стек, неуправляемая и управляемая куча (свободное пространство). Когда физическая память заполняется, операционная система записывает редко используемые её части на диск, чтобы освободить место для других приложений — этот процесс называется подкачкой или свопингом. Если же память снова потребуется, данные должны быть загружены с диска. Если несколько приложений одновременно предъявляют большие требования к памяти, ОС может тратить значительную часть времени только на перемещение данных между основной памятью и диском, что называется пробуксовкой[17]. Поскольку сборщик мусора должен просмотреть все выделения памяти, чтобы определить, какие из них используются, он может усугубить эту пробуксовку. В результате интенсивное использование подкачки может привести к тому, что циклы сборки мусора увеличатся с миллисекунд до десятков секунд, что вызывает проблемы с юзабилити.
Remove ads
См. также
- Ухудшение программного обеспечения[англ.]
- Гниение программного обеспечения
Примечания
Литература
Литература для дальнейшего чтения
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads