План сопровождения (maintenance plan) регламентирует поток запросов на сопровождение внутри организации. Типичный план сопровождения приведен на рис. 10.13. Жирной линией на нем отмечена номинальная последовательность обработки запросов. В этом плане отдел сопровождения принимает от пользователей (заказчиков) жалобы и предложения. Они оформляются как запросы на сопровождение. Специальное подразделение, которое может быть как одним человеком, так и целым комитетом, принимает решение о реализации запросов и присваивает им приоритеты. Такой комитет иногда называется Советом по контролю изменений (ССВ). После этого запросы обслуживаются техническим персоналом службы сопровождения. Тонкими линиями показаны другие последовательности появления и исчезновения запросов. Оптимальная организация работ по сопровождению зависит от масштабов приложения: процесс реализации запросов может быть достаточно растянутым.
С реализацией запросов связаны две проблемы. Первая – доставка подготовленного кода пользователям. Вторая – борьба с дефектами в целом. Дефект может повлиять на длительность тестирования, подготовка которого может недопустимо затянуться. Исключительным примером является военное приложение, в работах над которым довелось принять участие автору. Между определением задачи и полной реализацией запроса в этом проекте проходило до 9 месяцев! В таких ситуациях прибегают к выпуску исправлений или заплат (patch). Исправления – это изменения кода, которые либо устраняют дефект, либо позволяют обойти его. Исправления считаются временными. Часто они выпускаются в виде набора файлов, заменяющих уже написанный объектный код. Возможный вариант работы с исправлениями в организации, занимающейся разработкой, иллюстрирует рис. 10.14. Преимущества и недостатки исправлений рассматриваются в табл. 2.5.
Рис. 2.8.Типичная последовательность работ по сопровождению
Таблица 2.5. Преимущества и недостатки исправлений
Преимущества | Недостатки |
Быстрая удовлетворенность заказчиков | Дублирование работ: требуется реализация как временного, так и постоянного исправления |
Возможность непрерывной работы и тестирования без широкого распространения дефектов | Иногда исправление остается навсегда, а нормальная версия так и не выходит |
Исключает скрытие других дефектов | Затрудняется выпуск постоянного исправления, предназначенного для устранения временного |
Позволяет тестировать исправление | Затрудняется процесс документирования |
Под скрытием дефектов подразумевается то, что наличие неустраненного дефекта затрудняет обнаружение других дефектов, которые проявились бы, если бы первый дефект был устранен.
Рис. 2.9. Сопровождение и исправление
Опросы организаций, занимающихся сопровождением программ, показали, что эти организации ранжируют причины своих затруднений в следующем порядке [22].
1. Изменение приоритетов.
2. Методы тестирования.
3. Измерение производительности.
4. Неполная системная документация или ее отсутствие.
5. Адаптация к изменяющимся требованиям бизнеса.
6. Количество незавершенных задач.
7. Измерение вклада.
8. Низкий уровень самосознания из-за отсутствия признания или уважения.
9. Недостаток персонала, в особенности квалифицированного.
10. Недостаточный уровень методологии, стандартов, средств и процедур сопровождения.
Видно, что наибольшие трудности вызываются частым изменением приоритетов задач, стоящих перед службой сопровождения. В качестве примера рассмотрим нашу игру Встреча. Приведенная ниже последовательность изменения основных приоритетов типична для любой организации-разработчика:
♦ в момент выпуска – в игре должно быть меньше ошибок, чем у конкурентов:
♦ решение: устранить максимальное количество дефектов;
♦ через два месяца после выпуска – у игры должно быть больше достоинств, чем у ее основного конкурента;
♦ решение: быстрое выполнение усовершенствований;
♦ через шесть месяцев после выпуска – нужно снизить постоянно возрастающую стоимость сопровождения;
♦ решение: устранение только самых серьезных дефектов.
Второй и третий по масштабу источники проблем связаны с методами тестирования и измерения производительности. Как мы уже видели, список возможных тестов достаточно широк, а время их выполнения весьма продолжительно. Измерять эффективность предприятия, занимающегося сопровождением, тоже можно множеством способов. Сопровождение часто оказывается одной из важных статей расходов, но при этом недооценивается. Еще один источник проблем – задержка выполнения запросов, которые накапливаются с опасной быстротой. Наконец, сопровождение и тестирование часто считаются менее престижными и эффектными профессиями, чем проектирование.