При возникновении потребностей в заказе, приобретении, разработке, эксплуатации и сопровождении программ перед всеми сторонами, вовлеченными в жизненный цикл программного средства (ПС), возникает целый ряд вопросов, связанных с определением и детальным структурированием жизненного цикла (ЖЦ) ПС, с организационными и техническими правами и обязанностями сторон, с управлением ЖЦ и контролем за его реализацией. Одним из действенных инструментов для решения данных вопросов является использование унифицированных подходов, закрепленных в современных международных и российских стандартах.
Разнообразие и проблемы жизненных циклов
Слова «жизненный цикл системы» или «жизненный цикл программного средства» часто появляются в статьях и звучат в разговорах разработчиков, по крайней мере — руководителей проектов и подразделений. Всем понятно, что относятся они к тому, что и в какой последовательности должно делаться при создании и эксплуатации систем. Но прежде чем две организации или два специалиста договорятся о том, что конкретно входит или не входит в ЖЦ, проходит значительное время. А позже вполне может обнаружиться, что эти двое (две «стороны») все-таки по-разному понимают, какие работы будут входить в ЖЦ, а какие — нет, какие проверки будут планироваться и когда, и т. д. и т. п. Естественно, общие принципы организации работ описаны давно, но что делать сторонам в конкретном проекте — это каждый раз приходится решать заново.
Дело, однако, усложняется как многообразием возможных моделей ЖЦ, так и постоянно возникающими отличиями действительно реализуемых ЖЦ от идеальных представлений. Но прежде чем продолжать обсуждение этих вопросов, приведем определения модели жизненного цикла некоторой программной системы и жизненного цикла конкретной системы.
Модель жизненного цикла: структура, состоящая из процессов, работ и задач, включающих в себя разработку, эксплуатацию и сопровождение программного продукта, охватывающая жизнь системы от установления требований к ней до прекращения ее использования [1].
Жизненный цикл автоматизированной системы (АС): совокупность взаимосвязанных процессов создания и последовательного изменения состояния АС, от формирования исходных требований к ней до окончания эксплуатации и утилизации комплекса средств автоматизации АС [2].
Многообразие моделей ЖЦ покажем кратким представлением трех самых известных, в каком-то смысле фундаментальных типов моделей ЖЦ: каскадной, инкрементной и эволюционной.
Каскадная модель ЖЦ реализует по сути принцип однократного выполнения каждого вида деятельности в виде заранее ограниченных и однозначно упорядоченных во времени стадий, этапов, осуществляемых как бы в их естественных границах: установление потребностей пользователя; определение требований; проектирование (конструирование); изготовление; испытание; корректировка; поставка или использование.
При таком подходе к разработке каждого ПС (или его компонента) работы и задачи процесса разработки обычно выполняются последовательно. Однако они могут быть частично выполнены параллельно, когда последовательные работы перекрываются.
Когда несколько элементов конфигурации ПС разрабатываются одновременно, работы и задачи процесса разработки могут быть выполнены параллельно для всех элементов конфигурации ПС. Процессы сопровождения и эксплуатации обычно реализуют после процесса разработки. Процессы заказа и поставки, а также вспомогательные и организационные процессы обычно выполняют параллельно с процессом разработки.
Инкрементная модель ЖЦ, называемая также запланированным усовершенствованием продукта, начинается с выдачи набора требований и реализует разработку последовательности конструкций, все более приближающихся к итоговой системе. Первая конструкция реализует часть требований, в последующую конструкцию добавляют дополнительные требования и так далее до тех пор, пока не будет закончено создание системы. Для каждой конструкции выполняют необходимые процессы, работы и задачи, например, анализ требований и создание архитектуры могут быть выполнены одновременно, в то время как разработка технического проекта ПС, его программирование и тестирование, сборка и квалификационные испытания ПС реализуются при создании каждой последующей конструкции.
При таком подходе при разработке каждой конструкции работы и задачи процесса разработки выполняют последовательно или частично параллельно с перекрытием. При частично одновременном создании последовательных конструкций работы и задачи процесса разработки могут быть выполнены параллельно для ряда конструкций.
Работы и задачи процесса разработки обычно выполняют неоднократно в той же последовательности для всех конструкций. Процессы сопровождения и эксплуатации могут быть реализованы параллельно с процессом разработки. Процессы заказа и поставки, а также вспомогательные и организационные процессы обычно выполняют параллельно с процессом разработки.
При эволюционной модели ЖЦ система также разрабатывается в виде последовательности конструкций, но, в отличие от инкрементной модели ЖЦ, подразумевается, что требования не могут быть полностью осознаны и сформулированы предварительно, поэтому они устанавливаются частично и уточняются в каждой последующей конструкции.
При таком подходе для каждой конструкции работы и задачи процесса разработки выполняют последовательно или параллельно с частичным перекрытием.
Работы и задачи процесса разработки обычно выполняют не однократно, возможно в той же (или в разной) последовательности для всех конструкций. Процессы сопровождения и эксплуатации могут быть реализованы параллельно с процессом разработки. Процессы заказа и поставки, а также вспомогательные и организационные процессы обычно выполняют параллельно с процессом разработки.
Надо сказать, что этими типами моделей ЖЦ их разнообразие не исчерпывается. Так, при более детальном уровне рассмотрения ЖЦ отдельно выделяются итерационные циклические формы, основанные на технике макетирования системы.
Кроме вопросов выбора типа общего устройства ЖЦ, есть проблемы с решением частных вопросов о включении или невключении в ЖЦ отдельных работ, очень важных для качества ПС и системы: что документировать при создании системы и ПС, какие работы должны будут гарантировать качество продукта, с какой степенью организационной независимости должны выполняться проверочные процедуры разных типов, чем будет обеспечиваться соответствие разрабатываемого ПС требованиям ко всей системе и, более того, соответствие ПС потребностям в системе.
Актуальный подход к стандартизации ЖЦ ПС и систем
Для того чтобы привнести порядок и понимание, общие для любых сторон, участвующих в ЖЦ систем и ПС, давно разрабатывались стандарты различных уровней утверждения — национальные и международные. Но применявшиеся ранее стандарты определяли слишком жесткие для ПС и систем модели ЖЦ. Причины этого и новый подход к решению проблемы таковы.
Существующее многообразие номенклатуры и функциональных возможностей эксплуатируемых, разрабатываемых и перспективных ПС затрудняет использование для них традиционных методов стандартизации групп (видов) однородной продукции. В то же время обязательная реализация в ходе проекта типовых процессов ЖЦ (заказ, поставка, разработка, эксплуатация, сопровождение и т. д.) дает возможность использовать принципы и методы функциональной стандартизации, основанные на применении базовых стандартов и разработанных на их основе профилей стандартов для конкретного типа объекта (в нашем случае — проекта и системы).
Под базовым стандартом следует понимать принятый нормативный документ, регламентирующий типовые (возможно многовариантные) требования, нормы и правила применительно к данному объекту стандартизации.
Под профилем стандарта следует понимать принятый нормативный документ, регламентирующий требования, нормы и правила, выбранные из базовых стандартов и при необходимости дополненные и/или уточненные (ограниченные) применительно к конкретной классификационной группе данного объекта стандартизации.
Основные принципы и методы создания профилей стандартов установлены в стандартах серии ГОСТ Р ИСО/МЭК ТО 10000, определяющих основы и таксономию международных функциональных стандартов информационной технологии; в данной статье мы не будем их детализировать.
Применительно к ПС построение профилей стандартов активно применяется в международной и национальной стандартизации. В России впервые основы построения и использования профилей стандартов ЖЦ ПС заложены принятием в качестве базового стандарта ГОСТ Р ИСО/МЭК 12207 [1]. Данный документ введен в действие с 1 июля 2000 года, тесно взаимоувязан с рядом стандартов, принятых ранее (см. [3, 4, 5]), и с некоторыми стандартами, разрабатываемыми в данное время на основе прямого применения стандартов ИСО (см. [6, 7, 8]).
Актуальность стандарта ГОСТ Р ИСО/МЭК 12207 для современных условий настолько высока, что принятие в ISO его исходного, международного варианта вскоре вызвало самую положительную оценку российских экспертов и ряд рекомендаций по его использованию в реальных условиях. В статье [9] была высказана идея использования стандарта ИСО/МЭК 12207 на ЖЦ программных средств в качестве системообразующего для создания моделей ЖЦ на системы в целом. В работе [10] рассмотрена ситуация в реальных проектах, в которых разработчик сталкивается с наличием различных типов нормативных документов, которые необходимо или полезно использовать для организации ЖЦ, и предложен способ их совместного использования. Надо отметить, что и в этой работе стандарт ИСО/МЭК 12207 рассматривается в качестве системообразующего при одновременном использовании некоторого конкретного «фирменного» стандарта и давно известных стандартов серии ГОСТ 34.
Общее устройство ГОСТ Р ИСО/МЭК 12207
В данном стандарте впервые реализован принцип структурной стандартизации ЖЦ ПС на основе регламентации требований к процессам, работам и задачам, входящим в полную типовую структуру ЖЦ ПС.
Процессы ЖЦ ПС выделены по принципу ответственности субъекта (заказчика, поставщика, разработчика и т. д.), реализующего конкретный процесс. В свою очередь, каждый из процессов состоит из ряда работ и решаемых при выполнении соответствующей работы задач. С точки зрения соподчиненности и важности данных процессов они разбиты на три группы: основные; вспомогательные; организационные.
Группа основных процессов включает в себя процессы: заказа; поставки; разработки; эксплуатации; сопровождения.
Эти процессы, а также включенные в другие две группы перечислены на рисунке и охарактеризованы далее.
В условиях выполнения конкретного проекта на основе ГОСТ Р ИСО/МЭК 12207 следует выбирать соответствующую конкретную модель ЖЦ ПС. В данной модели в той или иной мере должны быть описаны те или иные процессы из всего набора процессов стандарта путем включения в модель соответствующих работ и задач из этих процессов.
Соответствие проекта стандарту ГОСТ Р ИСО/МЭК 12207 определяется как реализация в рамках конкретного проекта такой модели ЖЦ ПС, которая построена на основе выбора из данного стандарта соответствующих процессов, работ и задач. Выполнение процесса или работы считается завершенным, если решены все требуемые в них задачи в соответствии с предварительно установленными в договорной документации проекта (договоре или контракте) критериями и требованиями.
Любая организация может применять данный стандарт в качестве условия обеспечения своих договоров. При этом она обязана определить и оговорить минимальный набор требуемых процессов, работ и задач, который обеспечивает проверку ее соответствия данному стандарту. Данный стандарт предназначен для применения в двухсторонних отношениях равноправных сторон, а также может применяться при взаимодействии сторон в рамках одной организации.
Стандарт предназначен для всех сторон, участвующих в процессах жизни ПС, он может быть применен при закупке систем, отдельных ПС и оказании соответствующих услуг; а также при поставке, разработке, эксплуатации и сопровождении ПС и программных компонентов программно-аппаратных средств. В стандарте описан также ряд аспектов, необходимых для обеспечения ЖЦ ПС и относящихся к системе в целом.
Отметим, что стандарт описывает архитектуру процессов ЖЦ ПС, но не определяет детали реализации входящих в них работ и задач. В стандарте не определены наименования, форматы, содержание и комплектность документации, выпускаемой в ЖЦ ПС. Данные вопросы должны решаться в рамках конкретного проекта на основе использования соответствующих стандартов и/или методик (см., например, по этому поводу указания в [10, 11]). Тем самым обеспечивается повышение не только реальной универсальности стандарта (например, за счет возможности применять его в сочетании с самыми разными частными методиками, ориентированными на конкретное, но различное представление документов проекта), но и его живучести, уменьшение вероятности его устаревания в короткие сроки.
Характеристики процессов ЖЦ ПС
Для более конкретной ориентации читателей ниже приведены краткие характеристики процессов ЖЦ ПС, установленных в ГОСТ Р ИСО/МЭК 12207.
Основные процессы ЖЦ реализуются ответственным субъектом, вовлеченным в ЖЦ ПС. Ответственным субъектом является одно из юридических лиц (или подразделений, или должностных физических лиц), которые реализуют соответствующий процесс. Ответственными субъектами являются заказчик, поставщик, разработчик, эксплуатационный (оператор) и сопровождающий персонал. Основные процессы определяют следующее.
- Процесс заказа — работы заказчика (субъекта, приобретающего систему, ПС или получающего программную услугу).
- Процесс поставки — работы поставщика (субъекта, поставляющего систему, ПС или программную услугу заказчику).
- Процесс разработки — работы разработчика (субъекта, проектирующего и разрабатывающего ПС).
- Процесс эксплуатации — работы эксплуатационного персонала (субъекта, обеспечивающего эксплуатационное обслуживание вычислительной системы в заданных условиях в интересах пользователей).
- Процесс сопровождения — работы персонала сопровождения (субъекта, предоставляющего услуги по сопровождению ПС, обеспечивающие контролируемое изменение программного продукта в целях сохранения его исходного состояния и функциональных возможностей). Данный процесс охватывает перенос ПС в другую среду и снятие его с эксплуатации.
Вспомогательные процессы являются составной частью других процессов, обеспечивающей успешную реализацию и качество выполнения проекта. Конкретный вспомогательный процесс при необходимости инициируется и используется другим процессом. Вспомогательные процессы определяют следующее.
- Процесс документирования — работы по описанию информации, выдаваемой в конкретном процессе ЖЦ.
- Процесс управления конфигурацией — работы по управлению конфигурацией конкретного процесса или создаваемого продукта.
- Процесс обеспечения качества — работы по объективному обеспечению соответствия создаваемого ПС и (или) реализуемого процесса установленным требованиям и утвержденным планам. В качестве методов обеспечения качества могут использоваться совместные анализы, аудиторские проверки, верификация и аттестация.
- Процесс верификации — работы соответствующего субъекта (заказчика, поставщика или независимой стороны) по проверке соответствия (верификации) создаваемых промежуточных продуктов установленным требованиям по мере реализации проекта.
- Процесс аттестации — работы соответствующего субъекта (заказчика, поставщика или независимой стороны) по аттестации (сертификации) конечного продукта проекта.
- Процесс совместного анализа — работы по оценке состояния и результатов какой-либо работы. Данный процесс может использоваться двумя любыми субъектами, когда один из субъектов проверяет другого субъекта при совместном рассмотрении результатов и хода выполнения соответствующих работ.
- Процесс аудита — работы независимых (по отношению к проекту) экспертов по определению соответствия деятельности субъекта принятым требованиям, планам и договору
- Процесс решения проблемы — работы по анализу и устранению (решению) проблем (включая обнаруженные несоответствия), независимо от их характера и источника, обнаруженных при реализации проекта.
Организационные процессы ЖЦ применяются каким-либо субъектом для создания и реализации основной структуры модели ЖЦ ПС, охватывающей взаимосвязанные процессы и соответствующий персонал, а также для постоянного совершенствования данной структуры и входящих в нее процессов. Организационные процессы, как правило, являются типовыми независимо от области выполнения конкретных проектов и договоров. Организационные процессы определяют следующее.
- Процесс управления — основные работы по управлению, включая управление проектом, при реализации процессов ЖЦ
- Процесс создания инфраструктуры — основные работы по созданию базовой структуры какого-либо процесса ЖЦ
- Процесс усовершенствования — основные работы, выполняемые субъектом при создании, оценке, контроле и усовершенствовании выбранных процессов ЖЦ.
- Процесс обучения — работы по соответствующему обучению персонала.
Структура процессов жизненного цикла программных средств |
Адаптация стандарта к конкретному проекту
Применение требований ГОСТ Р ИСО/МЭК 12207 к конкретному проекту (его адаптация) состоит из работ следующих видов:
- определение условий выполнения проекта;
- запрос исходных данных для адаптации;
- выбор процессов, работ и задач;
- документирование решений по адаптации и их обоснований.
При определении условий выполнения проекта должны быть определены характеристики условий выполнения проекта, влияющие на адаптацию (например, модель ЖЦ; влияние ЖЦ цикла существующей системы; требования к системе и ПС; организационные подходы, процедуры и цели; размер, критичность и типы системы, ПС продукта или услуги; количество задействованного персонала и участвующих в проекте сторон).
При запросе исходных данных для адаптации от участвующих в проекте субъектов должны быть запрошены и получены исходные данные, могущие повлиять на решения по адаптации. В работы по адаптации должны быть вовлечены пользователи, персонал сопровождения, заказчик и потенциальные поставщики.
При выборе процессов, работ и задач должны быть определены необходимые для построения модели ЖЦ ПС процессы, работы и задачи. При этом должны быть охвачены разрабатываемая документация и обязанности исполнителей. Дополнительные процессы, работы и задачи, необходимые для реализации проекта, но не описанные в ГОСТ Р ИСО/МЭК 12207, следует установить в договорной документации проекта.
Все решения по адаптации и их обоснования должны быть документально оформлены.
При проведении работ по адаптации следует руководствоваться также рекомендациями, приведенными в [7] в части классификации ПС и в [8] в части выбора и построения модели ЖЦ ПС.
Так, построение модели ЖЦ ПС должно базироваться на концептуальной идее ПС (системы), охватывать разработку (создание), эксплуатацию и сопровождение и оканчиваться снятием (утилизацией). Модель ЖЦ обычно разбивается на периоды реализации, например стадии или этапы. Каждое такое разбиение должно охватывать отдельные работы и задачи, реализуемые в данном периоде (стадии, этапе), и при их завершении может потребоваться разрешение сторон на переход к следующему периоду модели.
В качестве основы модели ЖЦ могут быть использованы фундаментальные модели ЖЦ: каскадная, инкрементная и эволюционная, которые были описаны ранее.
Адаптация на основе модульности и ответственности
Вопросы адаптации общей структуры ЖЦ ПС, описанной в ГОСТ Р ИСО/МЭК 12207, являются ключевыми при выборе (построении) модели ЖЦ ПС (автономной или входящей в состав общей модели ЖЦ создаваемой системы) в условиях реализации конкретного проекта.
Процессы общей структуры ЖЦ ПС по ГОСТ Р ИСО/МЭК 12207 основаны на двух исходных принципах: модульности и ответственности.
Принцип модульности, в свою очередь, основан на следующих положениях.- Каждый процесс сильно связан, т. е. организован таким образом, что все части процесса (работы, задачи) строго взаимоувязаны.
- Процессы свободно соединены между собой. Количество интерфейсов между процессами сведено к минимуму.
В принципе каждый процесс предназначен для реализации уникальной функции в ЖЦ и может привлекать другой процесс для выполнения специализированной функции. При определении области применения и структурирования процессов должны использоваться следующие правила.
- Процесс должен быть своего рода модулем ЖЦ, т. е. каждый процесс должен выполнять только собственную функцию в ЖЦ, а интерфейсы между двумя любыми процессами должны быть минимальны.
- Каждый процесс должен быть привязан к архитектуре системы.
- Если процесс А вызван процессом В и только процессом В, тогда А принадлежит к В.
- Если работа или задача вызваны более чем одним процессом, тогда они сами становятся процессом.
- Должна быть возможность для проверки любого процесса, работы и задачи в модели ЖЦ.
- Каждый процесс должен иметь внутреннюю структуру, установленную в соответствии с тем, что должно выполняться.
Принцип ответственности базируется на определенных обязанностях каждого субъекта, вовлеченного в ЖЦ. Субъект может выполнять один или несколько процессов. Процесс может быть выполнен одним или несколькими субъектами, при этом один из субъектов должен быть определен ответственным за процесс. Субъект, выполняющий процесс, несет ответственность за весь данный процесс, даже если выполнение отдельных работ (задач) поручено другим субъектам.
Ответственность является особенностью структуры ЖЦ применительно к условиям проекта, в который закономерно может быть вовлечено множество субъектов.
Об усилиях и пользе
Безусловно, применение ГОСТ Р ИСО/МЭК 12207 требует от соответствующих субъектов определенных усилий по его адаптации к условиям реализации конкретных проектов. Кроме того, требуются усилия по его взаимоувязке с конкретными методиками разработки систем и другими стандартами.
Тем не менее можно с уверенностью полагать, что внедрение данного стандарта в практическую деятельность должно облегчить упорядочение взаимоотношений между субъектами, вовлеченными в ЖЦ ПС.
Наконец, надо обратить внимание на то, что этот стандарт, во-первых, имеет однозначную ориентацию на организацию процессов деятельности (а не на конкретные детали результата этой деятельности) и в этом полностью соответствует не только всем современным стандартам, но и другим методикам и подходам к организации работ, а во-вторых — обеспечивает высокую степень адаптивности организации работ, что позволяет учитывать растущую динамику модификации требований к проектам и системам, свойственную современному миру.
Валерий Васильевич Васютович - начальник отделения, Сергей Сергеевич Самотохин и Георгий Станиславович Никифоров - старшие научные сотрудники ВНИИстандарт Госстандарта РФ. Их электронный адрес: iakimov@gost.ru
Литература
[1] ГОСТ Р ИСО/МЭК 12207-99 Информационная технология. Процессы жизненного цикла программных средств.
[2] ГОСТ 34.003-90 Информационная технология. Комплекс стандартов и руководящих документов на автоматизированные системы. Термины и определения.
[3] ГОСТ Р ИСО/МЭК 9126-93 Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению.
[4] ГОСТ Р ИСО 9127-94 Системы обработки информации. Документация пользователя и информация на упаковке для потребительских программных пакетов.
[5] ГОСТ Р ИСО/МЭК ТО 9294-93 Информационная технология. Руководство по управлению документированием программного обеспечения.
[6] ИСО/МЭК 12119-94 Информационная технология. Пакеты программ. Требования к качеству и тестирование.
[7] ИСО/МЭК ТО 12182-98 Информационная технология. Классификация программных средств.
[8] ИСО/МЭК ТО 15271-98 Информационная технология. Руководство по ИСО/МЭК 12207 (процессы жизненного цикла программных средств).
[9] Липаев В. В., Филинов Е. Н. Формирование и применение профилей открытых информационных систем // Открытые системы, № 5 1997.
[10] Зиндер Е. З. Соотнесение и использование стандартов организации жизненных циклов систем // СУБД, № 3, 1997.
[11] Васютович В. В., Самотохин С. С. Стандартизация в области документирования программных средств // Computerworld Россия, № 25 (186), 6 июля 1999, рубрика «Директору информационной службы» № 12.