Жизненный цикл и этапы разработки программного обеспечения
Тема 3
Жизненный цикл (ЖЦ) ПО – это непрерывный процесс, начинающийся в момент принятия решения о создании ПО и заканчивающийся в момент полного изъятия всех версий ПО из эксплуатации.
Состав процессов ЖЦ регламентируется международным стандартом ISO/IEC 12207:1995 «Information Technology - Software Life Cycle Process». ISO - International Organization for Standartization -Международная организация по стандартизации. IEC - International Electrotechnical Comission- Международная комиссия по электротехнике.
Этот стандарт описывает структуру ЖЦ ПО и его процессы. Процесс ЖЦ определяется как совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выходные. Каждый процесс характеризуется определенными задачами и методами их решения, а также исходными данными и результатами. В соответствии с этим стандартом структура ЖЦ основывается на трех группах процессов :
1. основные процессы ЖЦ(приобретение, поставка, разработка, эксплуатация, сопровождение);
2. вспомогательные процессы, обеспечивающие выполнение основных (документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, оценка, аудит, разрешение проблем);
3. организационные процессы(управление, создание инфраструктуры, усовершенствование, обучение).
Рассмотрим подробнее один из основных процессов – процесс разработки. По стандарту ISO/IECпроцесс разработки включает следующие действия:
· подготовительную работу – выбор модели ЖЦ, стандартов, методов и средств разработки, а также составление плана работ;
· анализ требований к системе – определение ее функциональных возможностей, пользовательских требований, требований к надежности и безопасности, требований к внешним интерфейсам и т.д.;
· проектирование архитектуры системы – определение состава необходимого оборудования, ПО и операций, выполняемых обслуживающим персоналом;
· анализ требований к ПО – определение функциональных возможностей, включая характеристики производительности, среды функционирования компонентов, внешних интерфейсов, спецификаций надежности и безопасности, эргономических требований, требований к используемым данным, установке, приемке, пользовательской документации, эксплуатации и сопровождению;
· проектирование архитектуры ПО – определение структуры ПО, документирование интерфейсов его компонентов, разработку предварительной версии пользовательской документации, а также требований к тестам и плана интеграции;
· детальное проектирование ПО – подробное описание компонентов ПО и интерфейсов между ними, обновление пользовательской документации, разработку и документирование требований к тестам и др.;
· кодирование и тестирование ПО – разработку и документирование каждого компонента, а также совокупности тестовых процедур и данных для их тестирования, тестирование компонентов и т.д.;
· интеграцию ПО – сборку программных компонентов в соответствии с планом интеграции, тестирование ПО на соответствие квалификационным требованиям;
· квалификационное тестирование ПО – тестирование ПО в присутствии заказчика для демонстрации его соответствия требованиям и готовности к эксплуатации; проверка готовности и полноты всей документации;
· интеграцию системы – сборку всех компонентов системы, включая ПО и оборудование;
· установку ПО – установку ПО на оборудовании заказчика и проверку его работоспособности;
· приемку ПО – оценку результатов квалификационного тестирования ПО и системы в целом и документирование результатов оценки совместно с заказчиком, окончательную передачу ПО заказчику.
Указанные действия можно сгруппировать, условно выделив следующие основные этапы разработки ПО (стадии разработки по ГОСТ 19.102-77 «Стадии разработки»):
· постановка задачи (стадия «Техническое задание»);
· анализ требований и разработка спецификаций (стадия «Эскизный проект»);
· проектирование (стадия «Технический проект»);
· реализация (стадия «Рабочий проект»);
Традиционно разработка также включала этап сопровождения (началу этого этапа соответствует стадия «Внедрение» по ГОСТ). Однако по международному стандарту этот процесс теперь рассматривается отдельно.
Постановка задачи. В процессе постановки задачи четко формулируют назначение ПО и основные требования к нему. Каждое требование представляет собой описание необходимого или желаемого свойства ПО. Различают функциональные требования, определяющие функции, которые должно выполнять разрабатываемое ПО, и эксплуатационные требования, задающие особенности его функционирования.
Требования к ПО, имеющему прототипы, обычно определяют по аналогии, учитывая структуру и характеристики уже существующего ПО. Прототип– это действующий программный продукт, реализующий отдельные функции и внешние интерфейсы разрабатываемого ПО. Для формулирования требований к ПО, не имеющему аналогов, иногда необходимо провести специальные предпроектные исследования.
В любом случае этап постановки задачи заканчивается разработкой технического задания (ТЗ), фиксирующего принципиальные требования, и принятием основных проектных решений.
Анализ требований и определение спецификаций. Спецификация– это точное формализованное описание функций и ограничений разрабатываемого ПО. Различают функциональные и эксплуатационные спецификации. Совокупность спецификаций представляет собой общуюлогическую модель проектируемого ПО. (Модель – это описание системы, отображающее определенную группу ее свойств. )
Для получения спецификаций выполняют анализ требований ТЗ, формулируют содержательную постановку задачи, выбирают математический аппарат формализации, строят модель предметной области, определяют подзадачи и выбирают или разрабатывают методы их решения. Проектирование.Основной задачей этого этапа является определение подробных спецификаций разрабатываемого ПО. Процесс проектирования сложного ПО обычно включает:
- проектирование общей структуры – определение основных компонентов и их взаимосвязей;
- декомпозицию компонентов и построение структурных иерархий в соответствии с рекомендациями блочно-иерархического подхода;
- проектирование компонентов.
Результатом проектирования является детальная модель разрабатываемого ПО вместе со спецификациями его компонентов всех уровней. Тип модели зависит от выбранного подхода (структурный, объектный или компонентный) и конкретной технологии проектирования. Однако в любом случае процесс проектирования охватывает как проектирование программ (подпрограмм) и определение взаимосвязей между ними, так и проектирование данных, с которыми взаимодействуют эти программы или подпрограммы.
Принято различать также два аспекта проектирования:
- логическое проектирование, которое включает те проектные операции, которые непосредственно не зависят от имеющихся технических и программных средств, составляющих среду функционирования будущего программного продукта;
- физическое проектирование – привязка к конкретным техническим и программным средствам среды функционирования, т.е. учет ограничений, определенных в спецификациях.
Реализация.Реализация представляет собой процесс поэтапного написания кодов программы на выбранном языке программирования (кодирование), их тестирование и отладку.
Сопровождение.Сопровождение– это процесс создания и внедрения новых версий программного продукта. Причинами выпуска новых версий могут служить:
- необходимость исправления ошибок, выявленных в процессе эксплуатации предыдущих версий;
- необходимость совершенствования предыдущих версий, например, улучшения интерфейса, расширения состава выполняемых функций или повышения производительности;
- изменение среды функционирования, например появление новых технических средств и/или программных продуктов, с которыми взаимодействует сопровождаемое ПО.
На этом этапе в программный продукт вносят необходимые изменения, которые так же, как в остальных случаях, могут потребовать пересмотра проектных решений, принятых на любом предыдущем этапе.
Рассматриваемый стандарт только называет и определяет процессы ЖЦ ПО, не конкретизируя в деталях, как реализовывать или выполнять действия и задачи, включенные в эти процессы. Эти вопросы регламентируются соответствующими методами, методиками и т. п.