2.2Комплексы моделей и выразительных средств, используемых на различных этапах разработки программного обеспечения автоматизированных систем 2.2.1Подходы к моделированию жизненного цикла программного обеспечения Жизненным циклом программного обеспечения называют период от момента появления идеи создания некоторого программного обеспечения до момента завершения его поддержки фирмой-разработчиком или фирмой, выполнявшей сопровождение [15].
Состав процессов жизненного цикла регламентируется международным стандартом [16] (российский аналог [17]).
Этот стандарт описывает структуру жизненного цикла программного обеспечения и его процессы. Процесс жизненного цикла определяется как совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выходные [18]. Процессы жизненного цикла по указанному стандарту можно представить следующим образом.
Основные процессы:
приобретение;
поставка;
разработка;
эксплуатация;
сопровождение.
Организационные процессы:
управление;
усовершенствование;
создание инфраструктуры;
обучение.
Вспомогательные процессы:
документирование;
управление конфигурацией;
обеспечение качества, верификация, аттестация, совместная оценка, аудит;
разрешение проблем.
Каждый процесс характеризуется определенными задачами и методами их решения, а также исходными данными и результатами.
Процесс разработки (development process) в соответствии со стандартом предусматривает действия и задачи, выполняемые разработчиком, и охватывает работы по созданию программного обеспечения и его компонентов в соответствии с заданными требованиями, включая оформление проектной и эксплуатационной документации, а также подготовку материалов, необходимых для проверки работоспособности и соответствия качества программных продуктов, материалов, необходимых для обучения персонала, и т. д.
По стандарту процесс разработки начинается с подготовительной работы, которая включает выбор модели жизненного цикла.
Существуют три основные модели жизненного цикла программного обеспечения: каскадная, модель с промежуточным контролем и спиральная [15].
Каскадная модель. Первоначально (1970-1985 годы) была предложена [19] и использовалась каскадная схема разработки программного обеспечения, которая предполагала, что переход на следующую стадию осуществляется после того, как полностью будут завершены проектные операции предыдущей стадии и получены все исходные данные для следующей стадии.
Модель с промежуточным контролем. Схема, поддерживающая итерационный характер процесса разработки, была названа схемой с промежуточным контролем. Контроль, который выполняется по данной схеме после завершения каждого этапа, позволяет при необходимости вернуться на любой уровень и внести необходимые изменения.
Спиральная модель. Для преодоления общеизвестных проблем двух предыдущих моделей была предложена спиральная схема [20]. В соответствии с данной схемой программное обеспечение создается не сразу, а итерационно с использованием метода прототипирования, базирующегося на создании прототипов. Именно появление прототипирования привело к тому, что процесс модификации программного обеспечения стал восприниматься как отдельный важный процесс.
Тем не менее, в каждой из названных моделей жизненного цикла программного обеспечения присутствует процесс сопровождения (или модификации).
2.2.2Подходы к организации процесса разработки программного обеспечения автоматизированных систем и используемые модели В настоящее время существует несколько подходов к организации процесса разработки программного обеспечения: структурный, объектный и компонентный.
Необходимо отметить, что для каждого из рассматриваемых подходов реализуются одни и те же этапы жизненного цикла программного обеспечения. С точки зрения разработчика основополагающим является этап определения спецификаций. На этом этапе строятся модели, являющиеся основой для дальнейших этапов проектирования и реализации: функциональная, информационная и модель поведения.
В рамках структурного подхода на этапе анализа требований и определения спецификаций для определения информационных, функциональных и поведенческих особенностей программного обеспечения обычно используются [21]:
функциональные (активностные) диаграммы или диаграммы потоков данных;
диаграммы «сущность-связь»;
диаграммы переходов состояний.
При объектном подходе к разработке программного обеспечения для тех же целей используются [22]:
диаграммы классов концептуального уровня, определяющие одновременно информационную и функциональную составляющие;
диаграммы вариантов использования, определяющие функциональную и поведенческую составляющие.
В рамках компонентного подхода программная система представляет собой набор компонентов с хорошо определенными интерфейсами.
Изменения в существующую систему вносятся путем создания новых компонентов в дополнение или в качестве замены ранее существующих.
При этом компонентный подход с точки зрения используемых моделей и выразительных средств является развитием объектного подхода [23], в силу этого его детальное рассмотрение в рамках проводимого исследования не является целесообразным.
Однако, необходимо отметить, что с точки зрения трудоемкости этапа сопровождения компонентный подход имеет преимущество перед структурным и объектным, но будет уступать по этому показателю предлагаемой технологии адаптивной реализации процедур сбора, хранения и обработки данных в системах административного мониторинга.
2.2.3Принципы организации этапа сопровождения программного обеспечения Как было сказано выше, наибольший интерес с точки зрения темы исследований представляет этап сопровождения программного обеспечения автоматизированных систем.
Стандарты [16, 17] позиционируют сопровождение как один из главных процессов жизненного цикла. Эти стандарты описывают сопровождение как процесс модификации программного продукта в части его кода и документации для решения возникающих проблем при эксплуатации или реализации потребностей в улучшениях тех или иных характеристик продукта. Задача состоит в модификации продукта при условии сохранения его целостности.
Международный стандарт [24] (российский аналог [25]) определяет сопровождение программного обеспечения в тех же терминах, что и стандарты [16, 17], придавая особое значение работам по подготовке к деятельности по сопровождению до передачи системы в реальную эксплуатацию, например, вопросам планирования регламентов и операций по сопровождению [26].
Сопровождение поддерживает функционирование программного продукта на протяжении всего операционного жизненного цикла, то есть периода его эксплуатации. В процессе сопровождения фиксируются и отслеживаются запросы на модификацию, оценивается влияние предлагаемых изменений, модифицируется код и другие активы (артефакты) продукта, проводится необходимое тестирование и, наконец, выпускается обновленная версия продукта.
Стандарты [16, 17] идентифицируют основные работы по сопровождению: реализация процесса сопровождения, анализ проблем и модификаций (изменений), реализаций модификаций, обзор (оценка)/принятие решений по сопровождению, миграция (с одной версии программного продукта на другую, с одного продукта на другой) и вывод системы из эксплуатации.
Сопровождение необходимо для обеспечения удовлетворения требованиям пользователей к программному продукту на протяжении всего периода его эксплуатации.
В общем случае, работы по сопровождению должны проводиться для решения следующих задач:
устранение сбоев;
улучшение дизайна;
реализация расширения функциональных возможностей;
создание интерфейсов взаимодействия с другими (внешними) системами;
адаптация (например, портирование) для возможности работы на другой аппаратной платформе (или обновленной платформе), применения новых системных возможностей, функционирования в среде обновленной телекоммуникационной инфраструктуры и т.п.;
миграции унаследованного программного обеспечения;
вывода программного обеспечения из эксплуатации.
Cтандарты [24, 25] определяют четыре категории работ по сопровождению:
1 Корректирующее сопровождение – «реактивная» модификация программного продукта, выполняемая уже после передачи в эксплуатацию для устранения сбоев.
2 Адаптирующее сопровождение: модификация программного продукта на этапе эксплуатации для обеспечения продолжения его использования с заданной эффективностью (с точки зрения удовлетворения потребностей пользователей) в изменившемся или находящемся в процессе изменения окружении; в первую очередь, подразумевается изменение бизнес-окружения, порождающее новые требования к системе.
3 Совершенствующее сопровождение: модификация программного продукта на этапе эксплуатации для повышения характеристик производительности и удобства сопровождения.
4 Профилактическое сопровождение: модификация программного продукта на этапе эксплуатации для идентификации и предотвращения скрытых дефектов до того, когда они приведут к реальным сбоям.
Стандарты [24, 25] классифицирует адаптивное и совершенствующее сопровождение как работы по расширению функциональности продукта.
По различным оценкам этап сопровождения занимает около 2/3 жизненного цикла программных систем. Большую часть этого времени занимает адаптирующее и совершенствующее сопровождение. Таким образом применение адаптивных механизмов сбора, хранения и обработки данных в системах административного мониторинга позволит существенно сократить затраты на организацию и реализацию этапа сопровождения и, соответственно, общие производственные и непроизводственные затраты разработчика.
|