Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по методологии_март.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
749 Кб
Скачать
☆

Контрольные вопросы

  1. Что понимается под «кризисом программирования»?

  2. Охарактеризуйте этап «стихийного» программирования.

  3. Назовите составные части программной инженерии.

  4. Дайте характеристику программного продукта?

  5. Дайте характеристику персонала, как составной части программной инженерии?

  6. Что включает в себя процесс разработки программного продукта?

  7. Поясните понятие «железный треугольник» относительно проекта.

Раздел 2 программная инженерия в жизненном цикле программных средств

2.1 Основы жизненного цикла программных средств

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

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

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

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

Состав процессов жизненного цикла регламентируется международным стандартом «Information Technologe – Software Life Cycle Processes» –­­ «Информационные технологии – Процессы жизненного цикла программного обеспечения» ISO / IEC 12207 : 1995 (ISO – International Organization for Standartization : Международная организация по стандартизации, IEC – International Electrotechnical Commission : Международная комиссия по электротехнике).

По стандарту процесс разработки программного продукта включает следующие действия:

  • подготовительная работа (выбор модели жизненного цикла, стандартов, методов и средств разработки, а также составление плана работ);

  • анализ требований к системе (определение функциональных возможностей, пользовательских требований, требований к надежности и безопасности, требований к внешним интерфейсам и т. д.);

  • проектирование архитектуры системы (определение состава необходимого оборудования, программного обеспечения и операций, выполняе­мых обслуживающим персоналом);

  • анализ требований к программному обеспечению (определение функциональных возможностей, среды функционирования компонентов, внешних интерфейсов, спецификаций надежности и безопасности, эргономических требований, требований к используемым данным, установке, приемке, пользовательской документа­ции, эксплуатации и сопровождению);

  • проектирование архитектуры программного обеспечения (определе­ние структуры программного обеспечения, документирование интерфейсов его компонентов, разработку предварительной версии пользовательской документации, требований к тестам и плана интеграции);

  • детальное проектирование программного обеспечения (подробное описание компонентов программного обеспечения и интерфейсов между ними, обновление пользовательской документации, разработка и документирование требований к тестам и плана тестирования компонентов программно­го обеспечения, обновление плана интеграции компонентов);

  • кодирование и тестирование программного обеспечения (разработка и документирование каждого компонента, а также совокупности тестовых процедур и данных для их тестирования, тестирование компонентов, обнов­ление пользовательской документации, обновление плана интеграции про­граммного обеспечения);

  • интеграция программного обеспечения (сборка программных компо­нентов в соответствии с планом интеграции и тестирование программного обеспечения на соответствие квалификационным требованиям);

  • квалификационное тестирование программного обеспечения (тести­рование программного обеспечения в присутствии заказчика для демон­страции его соответствия требованиям и готовности к эксплуатации; при этом проверяется также готовность и полнота технической и пользователь­ской документации);

  • интеграция системы (сборка всех компонентов системы, включая программное обеспечение и оборудование);

  • квалификационное тестирование системы (тестирование системы на соответствие требованиям к ней и проверка оформления и полноты докумен­тации);

  • установка программного обеспечения (установка программного обес­печения на оборудовании заказчика и проверка его работоспособности);

  • приемка программного обеспечения (оценка результатов квалификационного тестирования программного обеспечения и системы в целом и документирование результатов оценки совместно с заказчиком, окончательная передача программного обеспечения заказчику) [Иванова].

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

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

Рис. 2. Каскадная схема разработки программного продукта

Инкрементная модель (с промежуточным контролем) позволяет после завершения каждого этапа при необходимости вер­нуться на любой уровень и внести необходимые изменения (рис.3).

Рис.3. Инкрементная схема разработки программного продукта

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

Рис. 4. Спиральная схема разработки программного продукта

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

2.2. Назначение профилей стандартов жизненного цикла в программной инженерии

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

Профиль стандартов − это совокупность нескольких (или подмножество одного) базовых стандартов (и других нормативных документов) с четко определенными и гармонизированными подмножествами обязательных и факультативных возможностей, предназначенная для реализации заданной функции или группы функций. Функциональная характеристика (заданный набор функций) объекта стандартизации является исходной для формирования и применения профиля этого объекта или процесса. В профиле выделяются и устанавливаются допустимые факультативные возможности и значения параметров каждого базового стандарта и/или нормативного документа, входящего в профиль.

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

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

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