stringtranslate.com

Обслуживание программного обеспечения

Сопровождение программного обеспечения в разработке программного обеспечения — это модификация программного продукта после поставки для исправления ошибок, улучшения производительности или других атрибутов. [1] [2]

Распространено мнение, что техническое обслуживание включает в себя лишь устранение дефектов . Однако одно исследование показало, что более 80% усилий по техническому обслуживанию используется для некорректирующих действий. [3] Такое мнение поддерживается пользователями, отправляющими отчеты о проблемах, которые на самом деле являются улучшениями функциональности системы. [ нужна цитата ] Более поздние исследования показали, что доля исправленных ошибок приближается к 21%. [4]

История

Сопровождение программного обеспечения и эволюция систем впервые были рассмотрены Меиром М. Леманом в 1969 году. За двадцать лет его исследования привели к формулировке законов Лемана (Lehman 1997). Основные выводы его исследования заключаются в том, что обслуживание на самом деле является эволюционным развитием и что решения по обслуживанию принимаются благодаря пониманию того, что происходит с системами (и программным обеспечением) с течением времени. Леман продемонстрировал, что системы продолжают развиваться с течением времени. По мере развития они становятся более сложными, если не предпринимаются какие-либо действия, такие как рефакторинг кода, для уменьшения сложности. В конце 1970-х годов известное и широко цитируемое исследование, проведенное Лиентцем и Суонсоном, выявило очень высокую долю затрат в течение жизненного цикла , которые тратились на техническое обслуживание.

Опрос показал, что около 75% усилий по техническому обслуживанию приходится на первые два типа, а на исправление ошибок уходит около 21%. Многие последующие исследования предполагают аналогичный масштаб проблемы. Исследования показывают, что вклад конечных пользователей имеет решающее значение при сборе и анализе данных о новых требованиях. Это основная причина любых проблем при разработке и сопровождении программного обеспечения. Обслуживание программного обеспечения важно, поскольку оно занимает большую часть общих затрат на жизненный цикл, а также невозможность быстро и надежно изменить программное обеспечение означает потерю бизнес-возможностей.[5] [6] [7]

Важность обслуживания программного обеспечения

Ключевые вопросы сопровождения программного обеспечения являются управленческими и техническими. Вопросы управления включают согласование с приоритетами клиентов, укомплектование персоналом, распределение обязанностей и оценку затрат. К техническим проблемам относятся: ограниченное понимание, анализ воздействия , тестирование и измерение ремонтопригодности.

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

Любая работа, выполняемая над программным обеспечением после его развертывания, считается обслуживанием. Обслуживание сохраняет ценность программного обеспечения с течением времени. Ценность можно повысить за счет расширения клиентской базы, удовлетворения новых и дополнительных требований, упрощения использования, повышения эффективности и применения новых технологий. Техническое обслуживание может занимать десятилетия, тогда как первоначальная разработка обычно занимает менее 3 лет.

Планирование обслуживания программного обеспечения

Неотъемлемой частью программного обеспечения является обслуживание, которое требует составления точного плана обслуживания во время разработки программного обеспечения. В нем должно быть указано, как пользователи будут запрашивать изменения или сообщать о проблемах. Бюджет должен включать смету ресурсов и затрат, а также должно быть принято новое решение для разработки каждой новой функции системы и ее целей в области качества. Сопровождение программного обеспечения, которое может длиться более 5 лет (или даже десятилетий) после процесса разработки, требует эффективного плана, который может охватывать объем сопровождения программного обеспечения, адаптацию процесса после поставки/развертывания, назначение тех, кто будет обеспечить техническое обслуживание и оценить затраты в течение жизненного цикла.

Процессы обслуживания программного обеспечения

В этом разделе описываются шесть процессов обслуживания программного обеспечения:

  1. Внедрение — подготовка программного обеспечения и действия по переходу, такие как создание плана обслуживания; подготовка к решению проблем, выявленных в ходе разработки; и последующие действия по управлению конфигурацией продукта.
  2. Анализ проблем и модификаций. Запросы и проблемы подтверждаются (воспроизводятся), анализируются и исследуются. Решения предложены и документированы. Разрешение на внесение изменений получено.
  3. Внедрение модификации — программный код, данные и/или конфигурация обновляются, компилируются и повторно развертываются.
  4. Принятие модификации — лицо, отправившее запрос, управляет/тестирует программное обеспечение, чтобы подтвердить, что проблема решена.
  5. Миграция ( например, миграция платформы ) является исключительной и не является частью ежедневных задач по обслуживанию. Если программное обеспечение необходимо перенести на другую платформу без каких-либо изменений в функциональности, будет использован этот процесс, и для выполнения этой задачи, вероятно, будет назначена группа проекта по сопровождению.
  6. Удаление устаревших/замененных компонентов программного обеспечения. Обычно это не происходит ежедневно.

Существует ряд процессов, действий и практик, которые являются уникальными для сопровождающих, например:

Категории обслуживания программного обеспечения

Э.Б. Свонсон первоначально выделил три категории технического обслуживания: корректирующее, адаптивное и совершенное. [8] Стандарт IEEE 1219 был заменен в июне 2010 года стандартом P14764 . [9] С тех пор они были обновлены, и в стандарте ISO/IEC 14764 представлены:

Существует также понятие обслуживания перед поставкой/предварительным выпуском, которое представляет собой все хорошие действия, которые вы делаете для снижения общей стоимости владения программным обеспечением. Такие вещи, как соответствие стандартам кодирования, включающим цели по ремонтопригодности программного обеспечения. Управление связностью и связностью программного обеспечения. Достижение целей поддержки программного обеспечения (например, SAE JA1004, JA1005 и JA1006). Некоторые академические учреждения [ кто? ] проводят исследования для количественной оценки стоимости текущего обслуживания программного обеспечения из-за нехватки ресурсов, таких как проектная документация, а также обучение и ресурсы для понимания системы/программного обеспечения (умножьте затраты примерно на 1,5–2,0, если данные о проектировании отсутствуют).

Факторы обслуживания

Влияние ключевых корректирующих факторов на техническое обслуживание (отсортировано в порядке максимального положительного воздействия)

Модули, подверженные ошибкам, не только создают проблемы, но и могут снизить производительность. Например, очень сложный спагетти-код довольно сложно безопасно поддерживать. Очень распространенной ситуацией, которая часто снижает производительность, является отсутствие подходящих инструментов обслуживания, таких как программное обеспечение для отслеживания дефектов, программное обеспечение для управления изменениями и программное обеспечение библиотеки тестирования. Ниже описаны некоторые факторы и диапазон их влияния на обслуживание программного обеспечения.

Влияние ключевых корректирующих факторов на техническое обслуживание (отсортировано в порядке максимального негативного воздействия)

[10]

Долг по содержанию

В документе для 27-й Международной конференции по управлению качеством программного обеспечения в 2019 году [11] Джон Эстдейл ввел термин «задолженность по обслуживанию» для потребностей в обслуживании, вызванных зависимостью реализации от внешних ИТ-факторов, таких как библиотеки, платформы и инструменты, которые стали устаревший. [12] Приложение продолжает работать, а ИТ-отдел забывает об этой теоретической ответственности, сосредотачиваясь на более насущных требованиях и проблемах в других местах. Такой долг накапливается с течением времени, незаметно съедая стоимость программного актива. В конце концов происходит что-то, что делает изменение системы неизбежным.

Тогда владелец может обнаружить, что систему больше невозможно модифицировать – ее буквально невозможно поддерживать. Менее драматично то, что обслуживание может занять слишком много времени или стоить слишком дорого, чтобы решить бизнес-проблему, и необходимо найти альтернативное решение. Программное обеспечение внезапно упало до значения 0 фунтов стерлингов.

Эстдейл определяет «долг за обслуживание» [12] как: разрыв между текущим состоянием реализации приложения и идеальным, когда используются только функциональные возможности внешних компонентов, которые полностью поддерживаются и поддерживаются. Этот долг часто скрыт или не осознается. Общая ремонтопригодность приложения зависит от постоянной доступности компонентов всех видов от других поставщиков, в том числе:

и конечно

Полное исчезновение компонента может сделать приложение неперестраиваемым или необратимым в дальнейшем неподдерживаемым.

Смотрите также

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

[13]

  1. ^ «ISO/IEC 14764:2006 Разработка программного обеспечения. Процессы жизненного цикла программного обеспечения. Обслуживание». Исо.орг. 17 декабря 2011 г. Проверено 2 декабря 2013 г.
  2. ^ Сулеймани Нейсиани, Бехзад; Бабамир, Сейед Мортеза; Арицуги, Масаеши (01 октября 2020 г.). «Эффективная модель извлечения функций для повышения производительности проверки при обнаружении повторяющихся отчетов об ошибках в системах сортировки ошибок программного обеспечения». Информационные и программные технологии . 126 : 106344. doi : 10.1016/j.infsof.2020.106344. S2CID  219733047.
  3. ^ Пигоски, Томас М., 1997: Практическое обслуживание программного обеспечения: лучшие практики управления инвестициями в программное обеспечение. Компьютерный паб Wiley. (Нью-Йорк)
  4. ^ Эйк С., Грейвс Т., Карр А., Маррон Дж. и Мокус А. 2001. Разлагается ли код? Оценка данных на основе данных управления изменениями. Транзакции IEEE по разработке программного обеспечения. 27(1) 1-12.
  5. ^ Лиенц Б., Суонсон Э., 1980: Управление обслуживанием программного обеспечения. Эддисон Уэсли, Ридинг, Массачусетс
  6. ^ Lehman MM, 1980: Программа, жизненные циклы и законы эволюции программного обеспечения. В материалах IEEE, 68, 9,1060-1076.
  7. ^ Пенни Грабб, Армстронг А. Таканг, 2003: Обслуживание программного обеспечения: концепции и практика. Всемирная научная издательская компания
  8. ^ Лиенц, БП; Суонсон, Э.Б.; Томпкинс, GE (июнь 1978 г.). «Э. Берт Суонсон, Размеры сопровождения. Материалы 2-й международной конференции по разработке программного обеспечения, Сан-Франциско, 1976, стр. 492–497». Коммуникации АКМ . Портал.acm.org. 21 (6): 466–471. дои : 10.1145/359511.359522 . S2CID  14950091 . Проверено 2 декабря 2013 г.
  9. ^ Статус 1219-1998 по стандартам IEEE.
  10. ^ «Экономика обслуживания программного обеспечения в двадцать первом веке» (PDF) . Архивировано из оригинала (PDF) 19 марта 2015 г. Проверено 2 декабря 2013 г.
  11. ^ Хан, О; Марчбанк, П; Джорджиаду, Э; Линейная машина, П; Росс, М; Стейплс, Дж. (2019). Учебник по управлению качеством программного обеспечения XXVII: Международный опыт и инициативы в области управления качеством ИТ . Саутгемптон: Университет Солент. ISBN 978-1-9996549-2-4.
  12. ^ аб Эстдейл, Джон. Отсрочка технического обслуживания может оказаться фатальной. в [11]. стр. 95–106.
  13. ^ Пигоски, Томас. «Глава 6: Обслуживание программного обеспечения» (PDF) . СВЕБОК . ИИЭЭ . Проверено 5 ноября 2012 г.

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

Внешние ссылки