Глава 5. Жизненный цикл программных систем
Понятие жизненного цикла программных систем
Понятие жизненного цикла программных систем (ЖЦ ПС) является одним из базовых в программной инженерии. ЖЦ ПС определяется как период времени, который начинается с момента принятия решения о необходимости создания ПС и закачивается в момент ее полного изъятия из эксплуатации. Основным нормативным документом, регламентирующим состав процессов ЖЦ ПС, является международный стандарт ISO/IEC 12207: 1995 “Information Technology – Software Life Cycle Process” (ISO – International Organization for Standardization – Международная организация по стандартизации, IEC – International Electrotechnical Commission – Международная комиссия по электротехнике). Этот стандарт определяет структуру ЖЦ, содержащую процессы. Действия и задачи, которые должны быть выполнены во время создания ПС.
В данном стандарте ПС (или программный продукт) определяется как набор компьютерных программ, процедур и, возможно, связанной с ними документацией и данных. Процесс определяется как совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выходные (Г. Майерс называет это трансляцией данных [ ]). Каждый процесс характеризуется определенными задачами и методами их решения. В свою очередь, каждый процесс разделен на набор действий, а каждое действие – на набор задач. Каждый процесс, действие или задача инициируется и выполняется другим процессом по мере необходимости, причем не существует заранее определенных последовательностей выполнения (естественно, при сохранении связей по входным данным).
Следует отметить, что в бывшем Советском Союзе, а затем в России создание программного обеспечения (ПО) первоначально, в 70-е годы прошлого столетия регламентировалось стандартами ГОСТ ЕСПД (Единой системы программной документации – серии ГОСТ 19.ХХХ), которые были ориентированы на класс относительно простых программ небольшого объема, создаваемых отдельными программистами. В настоящее время эти стандарты устарели концептуально и по форме, их сроки действия закончились и использование нецелесообразно.
Процессы создания автоматизированных систем (АС), в состав которых входит и ПО, регламентированы стандартами ГОСТ 34.601-90 ”Информационная технология. Комплекс стандартов на автоматизированные системы. Стадии создания”, ГОСТ 34.602-89 “Информационная технология. Комплекс стандартов на автоматизированные системы. Техническое задание на создание автоматизированной системы” и ГОСТ 34.603-92 “Информационная технология. Виды испытаний автоматизированных систем”. Однако многие положения этих стандартов устарели, а другие отражены недостаточно, чтобы их можно было использовать для серьезных проектов создания ПС. Поэтому в отечественных разработках целесообразно использовать современные международные стандарты.
В соответствии со стандартом ISO/IEC 12207 все процессы ЖЦ ПО разделены на три группы (рис. 5.1).
Рис. 5.1
В группах определено пять основных процессов: приобретение, поставка, разработка, эксплуатация и сопровождение. Восемь вспомогательных процессов обеспечивают выполнение основных процессов, а именно документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, совместная оценка, аудит, разрешение проблем. Четыре организационных процесса обеспечивают управление, создание инфраструктуры, усовершенствование и обучение.
Основные процессы ЖЦ ПС
5.2.1. Процесс приобретения состоит из действий и задач заказчика, приобретающего ПС. Данный процесс охватывает следующие действия:
1) инициирование приобретения;
2) подготовку заявочных предложений;
3) подготовку и корректировку договора;
4) надзор за деятельностью поставщика;
5) приемку и завершение работ.
Инициирование приобретения включает следующие задачи:
1) определение заказчиком своих потребностей в приобретении, разработке или усовершенствовании системы, программных продуктов или услуг;
2) анализ требований, предъявляемых к системе;
3) принятие решения относительно приобретения, разработки или усовершенствования существующего ПО;
4) проверку наличия необходимой документации, гарантий, сертификатов, лицензий и поддержки в случае приобретения программного продукта;
5) подготовку и утверждение плана приобретения, включающего требования к системе, тип договора, ответственность сторон и т.д.
Заявочные предложения должны содержать:
1) требования, предъявляемые к системе;
2) перечень программных продуктов;
3) условия приобретения и соглашения;
4) технические ограничения (например, по среде функционирования системы).
Заявочные предложения направляются к выбранному поставщику или нескольким поставщикам в случае тендера. Поставщик – это организация, которая заключает договор с заказчиком на поставку системы, ПО или программной услуги на условиях, оговоренных в договоре.
Подготовка и корректировка договора включает следующие задачи:
1) определение заказчиком процедуры выбора поставщика, включающей критерии оценки предложений возможных поставщиков;
2) выбор конкретного поставщика на основе анализа предложений;
3) подготовку и заключение договора с поставщиком;
4) внесение изменение (при необходимости) в договор в процессе его выполнения.
Надзор за деятельностью поставщика осуществляется в соответствии с действиями, предусмотренными в процессах совместной оценки и аудита. В процессе приемки подготавливаются и выполняются необходимые тесты. Завершение работ по договору осуществляется в случае удовлетворения всех условий приемки.
5.2.2. Процесс поставки охватывает действия и задачи, выполняемые поставщиком, который снабжает заказчика программным продуктом или услугой. Данный процесс включает следующие действия:
1) инициирование поставки;
2) подготовку ответа на заявочные предложения;
3) подготовку договора;
4) планирование работ по договору;
5) выполнение и контроль договорных работ и их оценку;
6) поставку и завершение работ.
Инициирование поставки заключается в рассмотрении поставщиком заявочных предложений и принятии решения, соглашаться с выставленными требованиями и условиями или предложить свои (согласовать).
Планирование включает следующие задачи:
1) принятие решения поставщиком относительно выполнения работ своими силами или с привлечением субподрядчика;
2) разработку поставщиком плана управления проектом, содержащего организационную структуру проекта, разграничение ответственности, технические требования к среде разработки и ресурсам, управление субподрядчиками и др.
5.2.3. Процесс разработки предусматривает действия и задачи, выполняемые разработчиком, и охватывает работы по созданию ПО и его компонентов в соответствии с заданными требованиями. Сюда включается оформление проектной и эксплуатационной документации, подготовка материалов, необходимых для проверки работоспособности и качества программных продуктов, материалов, необходимых для организации обучения персонала и др.
Процесс разработки включает следующие действия:
1) подготовительную работу;
2) анализ требований, предъявляемых к системе;
3) проектирование архитектуры системы;
4) анализ требований, предъявляемых к программному обеспечению;
5) проектирование архитектуры программного обеспечения;
6) детальное проектирование программного обеспечения;
7) кодирование и тестирование программного обеспечения;
8) интеграцию программного обеспечения;
9) квалификационное тестирование программного обеспечения;
10) интеграцию системы;
11) квалификационное тестирование системы;
12) установку программного обеспечения;
13) приемку программного обеспечения;
Подготовительная работа начинается с выбора модели ЖЦ ПО, соответствующей масштабу, значимости и сложности проекта. Действия и задачи процесса разработки должны соответствовать выбранной модели. Разработчик должен выбирать, адаптировать к условиям проекта и использовать согласованные с заказчиком стандарты, методы и средства разработки, а также составить план выполнения работ.
Анализ требований, предъявляемых к системе, подразумевает определение ее функциональных возможностей, пользовательских требований, требований к надежности, безопасности, требований к внешним интерфейсам, производительности и т.д. Требования к системе оцениваются, исходя из критериев реализуемости и возможности проверки при тестировании.
Проектирование архитектуры системы заключается в определении компонентов ее оборудования (аппаратуры), программного обеспечения и операций, выполняемых эксплуатирующим систему персоналом. Архитектура системы должна соответствовать требованиям, предъявляемым к системе, а также принятым проектным стандартам и методам.
Анализ требований к программному обеспечению предполагает определении следующих характеристик для каждого компонента ПО:
1) функциональных возможностей, включая характеристики производительности и среды функционирования компонента;
2) внешних интерфейсов;
3) спецификаций надежности и безопасности;
4) эргономических требований;
5) требований к используемым данным;
6) требований к установке и приемке;
7) требований к пользовательской документации;
8) требований к эксплуатации и сопровождению.
Требования к программному обеспечению оцениваются, исходя из критериев соответствия требованиям, предъявляемым к системе в целом, реализуемости и возможности проверки при тестировании.
Проектирование архитектуры ПО включает следующие задачи для каждого компонента ПО:
1) трансформацию требований к ПО в архитектуру, определяющую на высоком уровне структуру ПО и состав его компонентов;
2) разработку и документирование программных интерфейсов ПО и баз данных (БД);
3) разработку предварительной версии пользовательской документации;
4) разработку и документирование предварительных требований к тестам и плана интеграции ПО.
Детальное проектирование ПО включает следующие задачи:
1) описание компонентов ПО и интерфейсов между ними на более низком уровне, достаточном для последующего кодирования и тестирования;
2) разработку документирование детального проекта базы данных;
3) обновление (при необходимости) пользовательской документации;
4) разработку и документирование требований к тестам и плана тестирования компонентов ПО;
5) обновление плана интеграции ПО.
Кодирование и тестирование ПО включает следующие задачи:
1) кодирование и документирование каждого компонента ПО и базы данных, а также подготовку совокупности тестовых процедур и данных для их тестирования;
2) тестирование каждого компонента ПО и БД на соответствие предъявляемым к ним требованиям с последующим документированием результатов тестирования;
3) обновление документации (при необходимости);
4) обновление плана интеграции ПО.
Интеграция ПО предусматривает сборку разработанных компонентов ПО в соответствии с планом интеграции и тестирования агрегированных компонентов. Для каждого из агрегированных компонентов разрабатываются наборы тестов и тестовые процедуры, предназначенные для проверки каждого из квалификационных требований при последующем квалификационном тестировании. Квалификационное требование – это набор критериев или условий, которые необходимо выполнить, чтобы квалифицировать программный продукт как соответствующий своим спецификациям и готовый к использованию в условиях эксплуатации.
Квалификационное тестирование ПО проводится разработчиком в присутствии заказчика(по возможности) для демонстрации того, что ПО удовлетворяет своим спецификациям и готово к использованию в заданных условиях эксплуатации. Такое тестирование выполняется для каждого компонента программного продукта по всем разделам требований при широком варьировании тестов. При этом также проверяется полнота технической и пользовательской документации и ее адекватность самим компонентам ПО.
Интеграция системы заключается в сборке всех ее компонентов, включая ПО и оборудование. После интеграции система, в свою очередь, квалификационному тестированию на соответствие предъявляемым к ней требованиям. При этом также производится оформление и проверка полного комплекта документации на систему.
Установка ПО осуществляется разработчиком в соответствии с планом в той среде и на том оборудовании, которые предусмотрены договором. В процессе установки проверяется работоспособность ПО и БД. Если устанавливаемое ПО заменяет существующую систему, разработчик должен обеспечить их параллельное функционирование в соответствии с договором.
Приемка ПО предусматривает оценку результатов квалификационного тестирования ПО и системы и документирование результатов оценки, которые производятся заказчиком с помощью разработчика. Разработчик выполняет окончательную передачу ПО заказчику в соответствии с договором, обеспечивая при этом необходимое обучение и поддержку.
5.2.4. Процесс эксплуатации охватывает действия и задачи организации-оператора, эксплуатирующего систему. Процесс эксплуатации включает следующие действия:
1) подготовительную работу, которая включает проведение оператором следующих задач:
· планирование действий и работ, выполняемых в процессе эксплуатации, и установку эксплуатационных стандартов;
· определение процедур локализации и разрешения проблем, возникающих в процессе эксплуатации.
2) эксплуатационное тестирование, осуществляемое для каждой очередной редакции программного продукта, после чего эта редакция передается в эксплуатацию;
3) собственно эксплуатацию системы, которая выполняется в предназначенной для этого среде в соответствии с пользовательской документацией;
4) поддержку пользователей – оказание помощи и консультаций при обнаружении ошибок в процессе эксплуатации ПО.
5.2.5. Процесс сопровождения представляет собой действия и задачи, выполняемые сопровождающей организацией, при изменениях (модификациях) программного продукта и соответствующей документации, вызванных возникшими проблемами или потребностями в модернизации или адаптации ПО.
Изменения, вносимые в соответствующее ПО, не должны нарушать его целостность. Процесс сопровождения включает его перенос в другую среду (миграцию) и заканчивается снятием ПО с экплуатации.
Процесс сопровождения охватывает следующие действия:
1) подготовительную работу(планирование действий и работ, определение процедур локализации и разрешения проблем, возникающих в процессе сопровождения);
2) анализ проблем и запросов на модификацию ПО (анализ сообщений о возникшей проблеме или запроса на модификацию, оценка масштаба, стоимости модификации, получаемого эффекта, оценка целесообразности модификации);
3) модификацию ПО (внесение изменений в компоненты программного продукта и документацию в соответствии с правилами процесса разработки);
4) проверку и приемку (в части целостности модифицируемой системы);
5) перенос ПО в другую среду (конвертирование программ и данных, параллельная эксплуатация ПО в старой и новой среде в течение некоторого периода времени);
6) снятие ПО с эксплуатации по решению заказчика при участии эксплуатирующей организации, службы сопровождения и пользователей. При этом программные продукты и документации подлежат архивированию в соответствии с договором.