5-software_engineering_maintenance (1133545), страница 2
Текст из файла (страница 2)
Сопровождение программного обеспечения.Рисунок 6. Область знаний “Сопровождение программного обеспечения” [SWEBOK, 2004, с.6-2, рис.1]1. Основы сопровождения программного обеспечения (Software Maintenance Fundamentals)Эта секция включает концепции и терминологию, формирующие основы понимания роли исодержания работ по сопровождению программных систем. Темы данной секции предоставляютсоответствующие определения и описывают, почему именно существует потребность всопровождении. Категории сопровождения критически важны для понимания сути обсуждаемыхвопросов.1.1 Определения и терминология (Definitions and Terminology)Сопровождение программного обеспечения определяется стандартом IEEE Standard for SoftwareMaintenance (IEEE 1219) как модификация программного продукта после передачи в эксплуатациюдля устранения сбоев, улучшения показателей производительности и/или других характеристик(атрибутов) продукта, или адаптации продукта для использования в модифицированном окружении.Интересно, что данный стандарт также касается вопросов подготовки к сопровождению до передачисистемы в эксплуатацию, однако, структурно это сделано на уровне соответствующегоинформационного приложения, включенного в стандарт.В свою очередь, стандарт жизненного цикла 12207 (IEEE, ISO/IEC, ГОСТ Р ИСО/МЭК) позиционируетсопровождение как один из главных процессов жизненного цикла.
Этот стандарт описываетсопровождение как процесс модификации программного продукта в части его кода и документациидля решения возникающих проблем <при эксплуатации> или реализации потребностей вулучшениях <тех или иных характеристик продукта>. Задача состоит в модификации продукта приусловии сохранения его целостности. Международный стандарт ISO/IEC 14764 (Standard for SoftwareEngineering - Software Maintenance) определяет сопровождение программного обеспечения в тех жетерминах, что и стандарт 12207, придавая особое значение работам по подготовке к деятельностипо сопровождению до передачи системы в реальную эксплуатацию, например, вопросампланирования регламентов и операций по сопровождению.1.2 Природа сопровождения (Nature of Maintenance)Сопровождение поддерживает функционирование программного продукта на протяжении всегооперационного жизненного цикла, то есть периода его эксплуатации.
В процессе сопровожденияфиксируются и отслеживаются запросы на модификацию (также называемые “запросами наизменения” – change requests, в частности, в контексте конфигурационного управления),оценивается влияние предлагаемых изменений, модифицируется код и другие активы (артефакты)продукта, проводится необходимое тестирование и, наконец, выпускается обновленная версияпродукта. Кроме того, проводится обучение пользователей и обеспечивается их ежедневнаяподдержка при работе с текущей версией продукта.
В SWEBOK отмечается, что сопровождение, сточки зрения операций отслеживания и контроля, обладает большим содержанием, чем разработка(в общем понимании). Объем и активность операций по контролю разработки в большой степенизависит от сложившихся практик, внутрикорпоративных регламентов и требований, а такжеприменяемых методологий и концепции управления (в частности – проектного менеджмента). Такили иначе, отслеживание и контроль – ключевые элементы деятельности по сопровождениюпрограммного обеспечения (как и других ИТ-активов предприятия).Стандарт 12207 определяет понятие “maintainer” - в соответствующем ГОСТ он именуется как“персонал сопровождения”, подразумевая организацию, выполняющая работы по сопровождению.SWEBOK использует данный термин, также, и в отношении лиц (individuals), проводящихопределенные работы по сопровождению, в отличие, например, от разработчиков, занимающихсяреализацией системы в программном коде.Стандарт жизненного цикла 12207 также идентифицирует основные работы по сопровождению:реализация процесса <сопровождения>, анализ проблем и модификаций (изменений), реализациймодификаций, обзор (оценка)/принятие <решений> по сопровождению, миграция (с одной версиипрограммного продукта на другую, с одного продукта на другой) и вывод системы из эксплуатации.Эти работы описываются далее в теме 3.2 “Работы по сопровождению” (Maintenance Activities).Copyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru4Основы программной инженерии (по SWEBOK)Программная инженерия.
Сопровождение программного обеспечения.Специалисты по сопровождению (персонал сопровождения) могут получать знания о программномпродукте непосредственно от разработчиков. Взаимодействие с разработчиками и раннеепривлечение этих специалистов помогает уменьшить усилия, необходимые для адекватногосопровождения программной системы. По мнению автора, передача знаний персоналусопровождения, его обучение, должно начинаться не позднее начала опытной эксплуатациипродукта. В противном случае, усилия на одновременную поддержку прикладной системы иобучение соответствующих специалистов не только превысит реально допустимые нормы загрузкиперсонала (как группы или службы сопровождения и техподдержки, так и разработчиков системы), носнизит эффективность поддержки пользователей на критически важном этапе первоначальногоиспользования новой системы.
По опыту автора и результатам обсуждения этого вопроса ссотрудниками внутрикорпоративных ИТ-департаментов, обычно, в зависимости от сложностисистемы, пик нагрузки на службу сопровождения приходится в течении первых 2 - 6 недель, смомента передачи системы в реальную эксплуатацию, тем более, при отказе от использованиястарой системы или ее предыдущей версии.
SWEBOK отмечает, что, в некоторых случаях, инженеры(создававшие систему) не могут быть привлечены к обучению и поддержке персоналасопровождения. Особенно часто это касается тиражируемых или “коробочных” систем. Это создаетдополнительные трудности для специалистов, обеспечивающих сопровождение. В то же время,инженеры, занимающиеся технической поддержкой (несколько боле узкий круг в командесопровождения, включающей менеджеров, администраторов и других специалистов), должны (взависимости от типа продукта) иметь доступ к активам проекта (например, описанию его внутреннейархитектуры), включая код, документацию и т.п.
Именно таким образом начинает формироватьсяинформационная инфраструктура службы технической поддержки и сопровождения упроизводителей программных продуктов.Практика показывает, что инженеры по технической поддержке производителя программногообеспечения (не только “коробочного”, но и создаваемого и настраиваемого интеграторами,обладающими собственными программными решениями) должны не просто иметь доступ ко всемключевым активам проекта (код, документация, спецификации требований, внутренние модели ит.п.), но в их обязанности входит создание “патчей” (patch – “заплата”), исправлений ошибок и, вособых случаях, такие изменения, до выпуска новой версии продукта, создаются с привлечениемнепосредственно разработчиков продукта (групп и подразделений R&D – Research and Development).При этом, разработчики продукта информируются о найденных ошибках и, в случае нахождениясоответствующих решений специалистами технической поддержки, такие решения передаютсяразработчикам с тем, чтобы те либо включили такие изменения в новую версию программногопродукта (безусловно, в случае успешного прохождения всех необходимых тестов), либо нашлиболее адекватное решение в контексте новой функциональности либо тех изменений, которыевключены в новую версию продукта.
В обязанности инженеров службы сопровождения, в общемслучае, входит: проверка пользовательского сценария, приводящего к сбою; идентификация причинсбоя, т.е локализация ошибки/причин ее появления; предоставление соответствующих исправленийили, при невозможности создания таковых на данном этапе либо в заданные сроки –предоставление обходного пути решения проблемы для достижения требуемых бизнес-задач (такиеобходные пути, обычно, называют “workaround”); журналирование всех работ и операций;помещение описания проблемы и ее решения в базу знаний службы сопровождения; передача всейинформации разработчикам; своевременное информирование пользователя о статусе запроса инекоторые другие работы, содержание которых может варьироваться, в зависимости от регламентови корпоративных стандартов в конкретной организации, либо параметров контракта насопровождение и техническую поддержку, если таковой есть.1.3 Потребность в сопровождении (Need for Maintenance)Сопровождение необходимо для обеспечения того, чтобы программный продукт на протяжениивсего периода эксплуатации удовлетворяет требованиям пользователей.
Деятельность посопровождению применима для программного обеспечения, созданного с использованием любоймодели жизненного цикла (например, спиральной) и методологии разработки. На первый взгляд, этоутверждение SWEBOK может показаться тривиальным. Однако, обратитесь к своему опытуразработки и использования различного программного обеспечения. Наверняка, Вы найдете случаииз собственной практики или практики коллег, когда столь очевидное утверждение хорошо быдонести до разработчика того или иного программного продукта. Изменения программной системымогут быть обусловлены как действиями по корректировке ее поведения или несвязанные сCopyright © Сергей Орлик, 2004-2010.http://swebok.sorlik.ru5Основы программной инженерии (по SWEBOK)Программная инженерия.
Сопровождение программного обеспечения.необходимостью корректировки (подразумевая уже не исправление ошибок, а, например,повышение производительности или расширение функциональности).В общем случае, работы по сопровождению должны проводиться для решения следующих задач: устранение сбоев улучшение дизайна реализация расширений <функциональных возможностей> создание интерфейсов взаимодействия с другими (внешними) системами адаптация (например, портирование) для возможности работы на другой аппаратнойплатформе (или обновленной платформе), применения новых системных возможностей,функционирования в среде обновленной телекоммуникационной инфраструктуры и т.п. миграции унаследованного (legacy) программного обеспечения вывода программного обеспечения из эксплуатацииДеятельность персонала сопровождения включает четыре ключевых аспекта: поддержка контроля (управляемости) программного обеспечения в течение всего циклаэксплуатации поддержка модификаций программных систем совершенствование существующих функций* предотвращение падения производительности программной системы до неприемлемогоуровняГоворя о предотвращении деградации производительности, мы должны понимать, что это, при всемжелании совершенствования системы, может делаться и за счет обновления мощности аппаратнойчасти и/или соответствующей телекоммуникационной инфраструктуры, если это более обосновано,чем модификация самой программной системы.
На самом деле это вопрос того, что окажетсядешевле (и менее рискованно), т.е. связано с затратами/ стоимостью соответствующих работ,оборудования и поддержки обновленного системного окружения (что, к сожалению, часто также неучитывается даже при более-менее сложившейся практике сопровождения).* судя по всему, SWEBOK в данном случае подразумевает функции не программного обеспечения, а процессовсопровождения и функции персонала сопровождения, как таковые.1.4 Приоритет стоимости сопровождения (Majority of Maintenance Costs)Работы по сопровождению потребляют если не большую (как отмечает SWEBOK), то значительнуючасть финансовых ресурсов жизненного цикла программного обеспечения.
Общее пониманиесопровождения подразумевает лишь устранение сбоев. Однако, исследования и опросы напротяжении многих лет показывают, что более 80% усилий по сопровождению связаны не столькоустранением сбоев, сколько с другими работами, не связанными с исправлением дефектов. Многиеменеджеры по сопровождению объединяют в отчетности вопросы расширения функциональности иисправления ошибок в поддерживаемых программных системах.