Программное обеспечение: сопровождение, разработка, продвижение и обслуживание
Программное обеспечение сегодня пронизывает все сферы нашей жизни. От пользовательских приложений на смартфонах до сложных корпоративных систем - без программного обеспечения невозможно представить работу современных компаний. От качества разработки, внедрения и последующего сопровождения ПО во многом зависит конкурентоспособность бизнеса. Давайте разберемся, что такое сопровождение ПО и почему оно так важно.
Понятие сопровождения программного обеспечения
Сопровождение программного обеспечения - это процесс улучшения, оптимизации и устранения дефектов ПО после передачи его в эксплуатацию. Цель сопровождения - поддерживать и повышать качество ПО, добавлять новую функциональность, повышать удобство использования.
В процессе сопровождения программного обеспечения могут вноситься следующие изменения:
- Исправление ошибок
- Улучшение быстродействия и надежности
- Адаптация к новым устройствам и ОС
- Добавление новых функций
Сопровождение программного обеспечения может осуществляться как на постоянной основе в рамках договора, так и периодически по мере необходимости. Обычно услуги по сопровождению оговариваются с компанией-разработчиком ПО.
Стандарты сопровождения ПО
Процесс сопровождения программного обеспечения достаточно хорошо стандартизован. Существуют международные и российские стандарты, регламентирующие сопровождение ПО:
- ГОСТ Р ИСО/МЭК 12207-2010
- ГОСТ Р ИСО/МЭК 14764-2002
- IEEE 1219
Эти стандарты помогают четко определить процессы и этапы сопровождения программного обеспечения.
Место сопровождения ПО в жизненном цикле
Сопровождение программного обеспечения является одной из фаз жизненного цикла ПО. Она следует за этапом внедрения ПО в эксплуатацию и длится вплоть до вывода ПО из эксплуатации.
По статистике, на долю сопровождения приходится около 2/3 от общей продолжительности жизненного цикла ПО.
Сопровождение vs поддержка ПО
Иногда понятия "сопровождение ПО" и "поддержка ПО" употребляют как синонимы. Однако есть различия:
- Поддержка ПО - более узкое понятие, включает консультирование пользователей и оперативное реагирование на их запросы.
- Сопровождение ПО - более широкий процесс, нацеленный на эволюционное улучшение и развитие ПО на протяжении всего жизненного цикла.
Таким образом, поддержка ПО является одной из задач процесса сопровождения.
Виды сопровождения программного обеспечения
В зависимости от целей выделяют несколько основных видов сопровождения программного обеспечения:
Корректирующее сопровождение
Направлено на исправление ошибок, дефектов и неполадок, выявленных в процессе эксплуатации ПО. Является реакцией на конкретные проблемы.
Адаптивное сопровождение
Предполагает внесение изменений в ПО для обеспечения совместимости с новыми аппаратными или программными компонентами инфраструктуры.
Совершенствующее сопровождение
Ориентировано на расширение функционала ПО, повышение удобства использования, производительности и других качественных характеристик.
Профилактическое сопровождение
Направлено на предотвращение возможных проблем в работе ПО путем диагностики и упреждающих действий. Относится к проактивному подходу.
Помимо этого, сопровождение программного обеспечения может быть:
- Регламентным или по запросу
- Дистанционным или с выездом к заказчику
- С различной периодичностью оказания услуг
Таким образом, существует множество моделей организации процесса технического сопровождения программного обеспечения, зависящих от потребностей и возможностей заказчика.
Процесс сопровождения программного обеспечения
Процесс сопровождения программного обеспечения строится на основе цикла Деминга PDCA:
- Планирование сопровождения
- Выполнение запланированных работ
- Проверка результатов
- Анализ и корректировка процесса
Концепция сопровождения ПО
На этапе планирования разрабатывается концепция или стратегия сопровождения программного обеспечения. Этот документ определяет цели, задачи, виды, объемы и сроки сопровождения. Концепция позволяет спланировать ресурсы и бюджет сопровождения.
План сопровождения ПО
На основе концепции формируется детальный план сопровождения программного обеспечения. В нем описываются:
- Роли и ответственность участников процесса
- Необходимые технические и человеческие ресурсы
- Конкретные способы и сроки исполнения задач
- Формы отчетности и взаимодействия
План сопровождения ПО служит руководством к действию для команды сопровождения.
Связь сопровождения ПО с эволюцией
Процесс сопровождения тесно связан с эволюцией программных систем. Согласно исследованиям Мэнни Лемана, деятельность по сопровождению представляет собой эволюционную разработку ПО.
В процессе эксплуатации программные системы постоянно развиваются, растет их сложность. Без специальных усилий по упрощению они становятся все менее понятными и трудными в сопровождении.
Законы эволюции ПО
На основе анализа динамики развития программных систем Леман сформулировал несколько эмпирических законов их эволюции:
- Постоянные изменения. ПО должно регулярно изменяться, иначе оно устареет.
- Увеличение сложности. Сложность ПО со временем растет, если не предпринимать меры по ее снижению.
- Саморегуляция сложности. Эволюция ПО направлена на минимизацию роста его сложности.
Понимание этих законов позволяет принимать верные решения в процессе сопровождения программного обеспечения.
Реактивное и проактивное сопровождение
По источнику возникновения задач выделяют два подхода к сопровождению ПО:
- Реактивное сопровождение - ответ на запросы и инциденты от пользователей.
- Проактивное сопровождение - самостоятельные действия по улучшению ПО.
Эффективное сопровождение должно включать оба этих подхода. Реактивное решает острые текущие проблемы, проактивное обеспечивает стратегическое развитие ПО.
Баланс реактивного и проактивного подходов
Соотношение реактивных и проактивных работ должно поддерживаться в оптимальном балансе. Смещение в сторону реактивных задач приводит к "гашению пожаров", не оставляя ресурсов на развитие. И наоборот, чрезмерный акцент на новых фичах в ущерб оперативному реагированию снижает лояльность пользователей.
Организация процесса сопровождения
Существует несколько моделей организации сопровождения программного обеспечения:
- Внутренняя - силами штатных ИТ-специалистов
- Внешняя - привлечение стороннего подрядчика
- Смешанная - сочетание внутренних ресурсов и аутсорсинга
Структура команды сопровождения
В составе команды сопровождения типично выделяют несколько ролей:
- Руководитель
- Системный аналитик
- Программист
- Тестировщик
- Специалист техподдержки
Инструменты для сопровождения ПО
Для эффективной работы команде сопровождения необходим набор специализированных инструментов:
- Система учета запросов и ошибок
- Средства тестирования и отладки
- СУБД и хранилища данных
- Инструменты разработки и сборки ПО
- Системы мониторинга работоспособности
Применение таких инструментов повышает эффективность команды и сокращает трудозатраты на рутинные операции в рамках сопровождения программного обеспечения.
Договор и SLA по сопровождению ПО
Правовой основой сопровождения ПО является договор, который определяет права и обязательства сторон. Дополнением к договору служит SLA (Service Level Agreement) - соглашение об уровне услуг.
В SLA оговариваются:
- Показатели качества сопровождения
- Целевые уровни показателей
- Методики измерения показателей
- Ответственность сторон
Таким образом обеспечивается прозрачность процесса сопровождения программного обеспечения для заказчика.
Ценообразование на услуги сопровождения ПО
Существует несколько базовых моделей ценообразования на услуги по сопровождению программного обеспечения:
- Почасовая оплата труда специалистов
- Фиксированный ежемесячный платеж
- Оплата конкретных выполненных задач
Выбор модели зависит от потребностей и приоритетов заказчика, а также вида сопровождаемого ПО.
Факторы стоимости сопровождения ПО
На стоимость услуг по сопровождению программного обеспечения влияют следующие факторы:
- Объем и сложность ПО
- Требуемое время реакции
- Необходимый уровень доступности системы
- Количество пользователей системы
Окупаемость затрат на сопровождение ПО
Затраты на сопровождение программного обеспечения должны окупаться за счет эффектов от его использования. К таким эффектам относятся:
- Повышение производительности труда сотрудников
- Снижение издержек бизнес-процессов
- Увеличение объемов и качества оказываемых услуг
- Получение новых конкурентных преимуществ
Для оценки окупаемости применяют показатели ROI, TCO и другие финансовые метрики. Грамотный анализ помогает обосновать инвестиции в сопровождение и развитие программного обеспечения.
Риски при организации сопровождения ПО
Существует ряд рисков, которые необходимо учитывать при организации процесса сопровождения программного обеспечения:
- Недостаточная квалификация команды
- Нарушение регламентов и стандартов
- Несоблюдение сроков исполнения задач
- Превышение бюджета на сопровождение
Способы минимизации рисков
Для снижения рисков рекомендуется:
- Тщательный подбор и обучение команды
- Внедрение регламентов и контроль их исполнения
- Применение гибких технологий управления проектами
- Мониторинг показателей сопровождения и бюджета
Главное - на этапе планирования предусмотреть возможные проблемы и заложить меры по их нейтрализации.