Сопровождение программного обеспечения

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

Существует три вида сопровождения системы:

1. Сопровождение с целью исправления ошибок. Обычно ошибки в программировании дос­таточно легко устранимы, однако ошибки проектирования стоят дорого и требуют корректировки или перепрограммирования некоторых компонентов. Самые доро­гие исправления связаны с ошибками в системных требованиях, так как здесь мо­жет понадобиться перепроектирование системы.

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

3. Сопровождение с целью изменения функциональных возможностей системы. В ответ на ор­ганизационные или деловые изменения в организации могут измениться требова­ния к программным средствам. В таких случаях применяется данный тип сопрово­ждения. Наиболее существенные изменения при этом претерпевает именно про­граммное обеспечение.

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

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

Рис.1. Распределение типов сопровождения

Согласно исследованиям, 65% сопровождения связано с выполнением новых требований, 18% отводится на изменения системы с целью адаптации к новому окружению и 17% связано с исправлением ошибок (рис. 1.).

Из этого можно определить, что исправление ошибок не является самым распростра­ненным видом сопровождения. Модернизация системы в соответствии с новым рабочим окружением либо в соответствии с новыми требованиями более эффективна. Поэтому со­провождение само по себе является естественным процессом продолжения разработки системы со своими процессами проектирования, реализации и тестирования. Таким об­разом, спиральная модель, показанная на рис. 2, лучше представляет процесс развития ПО, чем каскадная модель, где сопровождение рассматривается как отдель­ный процесс.

Рис.2. Спиральная модель развития ПО

Значительная часть бюджета большинства организаций уходит на сопровождение ПО, а не на само использование программных систем. В 1980-х годах было обнаружено, что во многих организациях по меньшей мере 50% всех средств, потраченных на программирование, идет на развитие уже существующих систем. При этом от 65 до 75% средств общего бюджета расходуется на сопровождение. Так как предприятия заменяют старые системы коммерческим ПО, например программами планирования ресурсов, эти цифры никак не будут уменьшаться. Поэтому можно утверждать, что из­менение ПО все еще остается доминирующим в статье затрат организаций на про­граммное обеспечение.

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

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

На рис. 3 показано, как снижается стоимость сопровождения хорошо разработан­ных систем. Здесь при разработке системы 1 выделено дополнительно $25 000 для облег­чения процесса сопровождения. В результате за время эксплуатации системы это помогло сэкономить около $100 000. Из сказанного следует, что увеличение средств на разработку системы пропорционально снизит затраты на ее сопровождение.

Рис.3. Расходы на разработку и сопровождение систем

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

1. Стабильность команды разработчиков. Вполне естественно, что после внедрения сис­темы команда разработчиков распадается, специалисты будут работать над другими проектами. Новым членам команды или же отдельным специалистам, которые возьмут на себя дальнейшее сопровождение системы, будет трудно понять все ее особенности. Поэтому на понимание системы перед внесением в нее изменений уходит много времени и средств.

2. Ответственность согласно контракту. Контракт на сопровождение обычно заключа­ется отдельно от договора на разработку программы. Более того, часто контракт на сопровождение может получить фирма, сама не занимающаяся разработкой. Вме­сте с фактором нестабильности команды это может стать причиной отсутствия в команде стимула создать легкоизменяемую, удобную в сопровождении систему. Ес­ли членам команды выгодно пойти кратчайшим путем с минимальными затратами усилий, то вряд ли они откажутся от этого даже с риском повышения последующих затрат на сопровождение.

3. Квалификация специалистов. Специалисты, занимающиеся сопровождением, часто не знакомы с предметной областью, где эксплуатируется система. Сопро­вождение не пользуется популярностью среди разработчиков. Это считается менее квалифицированной разработкой и часто поручается младшему персо­налу. Более того, старые системы могут быть написаны на устаревших языках программирования, не знакомых молодым специалистам и требующих допол­нительного изучения.

4. Возраст и структура программы. С возрастом структура программ нарушается вследствие частых изменений, поэтому их становится сложнее понимать и из­менять. Кроме того, многие наследуемые системы были созданы без использо­вания современных технологий. Они никогда не отличались хорошей качест­венной структурой; изменения, сделанные в них, были направлены скорее на повышение эффективности функционирования, чем на повышение удобства сопровождения. Документация на старые системы часто бывает неполной либо вообще отсутствует.

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

Дилемма заключается в следующем: или создавать системы и поддерживать их до тех пор, пока это возможно, и затем заменять их новыми, или разрабатывать постоянно эво­люционирующие системы, которые могут изменяться в соответствии с новыми требова­ниями. Их можно создавать на основе наследуемых систем, улучшая структуру последних с помощью реинжениринга, либо путем изменения архитектуры этих систем.

Последняя проблема, а именно нарушение структуры, является самой простой из них. Технология реинжениринга поможет усовершенствовать структуру и повысить понимаемость системы. В подходящих случаях адаптировать систему к новым аппаратным средст­вам может и преобразование архитектуры. Профилактические меры при со­провождении будут полезны, если возникнет необходимость усовершенствовать систему и сделать ее более удобной для изменений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: