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

Структура ЖЦ ПО в соответствии со стандартом ISO/IEC 12207 базируется на трех группах процессов (рис. 1):

· основные процессы ЖЦ ПО (приобретение, поставка, разработка, эксплуатация, сопровождение);

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

· организационные процессы (управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого ЖЦ, обучение).

Рис. 1. Процессы жизненного цикла программного обеспечения.

Процесс приобретения (acquisition process). Он состоит из действий

и задач заказчика, приобретающего ПО. Данный процесс охватывает следующие действия:

1) инициирование приобретения;

2) подготовку заявочных предложений;

3) подготовку и корректировку договора;

4) надзор за деятельностью поставщика;

5) приемку и завершение работ.

Процесс поставки (supply process). Он охватывает действия и задачи, выполняемые поставщиком, который снабжает заказчика программным продуктом или услугой. Данный процесс включает следующие действия:

1) инициирование поставки;

2) подготовку ответа на заявочные предложения;

3) подготовку договора;

4) планирование;

5) выполнение и контроль;

6) проверку и оценку;

7) поставку и завершение работ.

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

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

1) анализ требований к системе;

2) проектирование архитектуры системы;

3) анализ требований к ПО;

4) проектирование архитектуры ПО;



5) детальное проектирование ПО;

6) кодирование и тестирование ПО;

7) интеграцию ПО;

8) квалификационное тестирование ПО;

9) интеграцию системы;

10) квалификационное тестирование системы;

11) установку ПО;

12) приемку ПО.

Процесс эксплуатации (operation process). Он охватывает действия и задачи оператора - организации, эксплуатирующей систему. Данный процесс включает следующие действия:

1) эксплуатационное тестирование;

2) эксплуатацию системы;

3) поддержку пользователей.

Процесс сопровождения (maintenance process). Он предусматривает действия и задачи, выполняемые сопровождающей организацией (службой сопровождения). Данный процесс активизируется при изменениях (модификациях) программного продукта и соответствующей документации, вызванных возникшими проблемами или потребностями в модернизации либо адаптации ПО. В соответствии со стандартом IEEE-90 под сопровождением понимается внесение изменений в ПО в целях исправления ошибок, повышения производительности или адаптации к изменившимся условиям работы или

требованиям. Изменения, вносимые в существующее ПО, не должны нарушать

его целостность. Процесс сопровождения включает перенос ПО в другую среду (миграцию) и заканчивается снятием ПО с эксплуатации.

Процесс сопровождения охватывает следующие действия:

1) анализ проблем и запросов на модификацию ПО;

2) модификацию ПО;

3) проверку и приемку;

4) перенос ПО в другую среду;

5) снятие ПО с эксплуатации.

В группу вспомогательных процессов включены:

Документирование;

Управление конфигурацией; обеспечение качества;

Верификация; аттестация;

Совместная оценка;

Разрешение проблем.

Процесс документирования (documentation process). Он предусматривает формализованное описание информации, созданной в течение ЖЦ ПО. Процесс документирования включает следующие действия:

1) проектирование и разработку;

2) выпуск документации;

3) сопровождение документации.

Процесс управления конфигурацией (configuration management process). Он предполагает применение административных и технических процедур на всем протяжении ЖЦ ПО для определения состояния компонентов ПО в системе, управления модификациями ПО, описания и подготовки отчетов о состоянии компонентов ПО и запросов на модификацию, обеспечения полноты, совместимости и корректности компонентов ПО, управления хранением и поставкой ПО. Согласно стандарту IEEE-90 под конфигурацией ПО понимается совокупность его функциональных и физических ха-

рактеристик, установленных в технической документации и реализованных в ПО.

Управление конфигурацией позволяет организовать, систематически учитывать и контролировать внесение изменений в ПО на всех стадиях ЖЦ. Общие принципы и рекомендации по управлению конфигурацией ПО отражены в проекте стандарта ISO/I EC CD 12207-2: 1995 "Information Technology - Software Life Cycle Processes. Part 2.

Configuration Management for Software". Процесс управления конфигурацией включает следующие действия:

1) идентификацию конфигурации;

2) контроль конфигурации;

3) учет состояния конфигурации;

4) оценку конфигурации;

5) управление выпуском и поставку.

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

1) обеспечение качества продукта;

2) обеспечение качества процесса;

3) обеспечение прочих показателей качества системы.

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

Процесс аттестации (validation process). Он предусматривает определение полноты соответствия заданных требований и созданной системы или программного продукта их конкретному функциональному назначению. Под аттестацией обычно понимается подтверждение и оценка достоверности проведенного тестирования ПО.

Процесс совместной оценки (joint review process). Он предназначен для оценки состояния работ по проекту и ПО, создаваемого при выполнении данных работ (действий). Он сосредоточен в основном на контроле планирования и управления ресурсами, персоналом, аппаратурой и инструментальными средствами проекта.

Процесс аудита (audit process). Он представляет собой определение соответствия требованиям, планам и условиям договора.

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

В группу организационных процессов ЖЦ ПО входят:

Управление;

Создание инфраструктуры;

Усовершенствование;

Выпуск новых версий;

Обучение.

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

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

Процесс усовершенствования (improvement process). Он предусматривает оценку, измерение, контроль и усовершенствование процессов ЖЦ ПО. Усовершенствование процессов ЖЦ ПО направлено на повышение производительности труда всех участвующих в них специалистов за счет совершенствования используемой технологии, методов управления, выбора инструментальных средств и обучения

персонала.

Процесс обучения (training process). Он охватывает первоначальное обучение и последующее постоянное повышение квалификации персонала.

Тема 3. Жизненный цикл ПО 28

Жизненный цикл ПО

В соответствии со стандартом все процессы ЖЦ ПО разделены на три группы:

пять основных процессов (приобретение, поставка, разработка, эксплуатация, сопровождение.

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

Четыре организационных процесса (управление, создание инф­раструктуры, усовершенствование, обучение).

ОСНОВНЫЕ ПРОЦЕССЫ ЖЦ ПО

Процесс приобретения.

Он состоит из действий и задач заказчика, приобретающего ПО. Данный процесс охватыва­ет следующие действия:

инициирование приобретения;

подготовку заявочных предложений;

подготовку и корректировку договора;

надзор за деятельностью поставщика;

приемку и завершение работ.

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

определение заказчиком своих потребностей в приобретении, раз­работке или усовершенствовании системы, программных продук­тов или услуг;

анализ требований к системе;

принятие решения относительно приобретения, разработки или усовершенствования существующего ПО;

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

подготовку и утверждение плана приобретения, включающего тре­бования к системе, тип договора, ответственность сторон и т. д. Заявочные предложения должны содержать:

требования к системе;

перечень программных продуктов;

условия и соглашения;

технические ограничения (например, среда функционирования системы).

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

Подготовка и корректировка договора включают следующие задачи:

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

выбор конкретного поставщика на основе анализа предложений;

подготовку и заключение договора с поставщиком;

внесение изменений (при необходимости) в договор в процессе его выполнения.

Надзор за деятельностью поставщика осуществляется в соответ­ствии с действиями, предусмотренными в процессах совместной оценки и аудита.

В процессе приемки подготавливаются и выполняются необходи­мые тесты. Завершение работ по договору осуществляется в случае удовлетворения всех условий приемки.

Процесс поставки.

Он охватывает действия и за­дачи, выполняемые поставщиком, который снабжает заказчика про­граммным продуктом или услугой. Данный процесс включает следу­ющие действия:

инициирование поставки;

подготовку ответа на заявочные предложения;

подготовку договора;

планирование;

выполнение и контроль;

проверку и оценку;

поставку и завершение работ.

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

Планирование включает следующие задачи:

принятие решения поставщиком относительно выполнения ра­бот своими силами или с привлечением субподрядчика;

разработку поставщиком плана управления проектом, содержа­щего организационную структуру проекта, разграничение ответственности, технические требования к среде разработки и ресурсам, управление субподрядчиками и др.

Процесс разработки.

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

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

    подготовительную работу;

    анализ требований к системе;

    проектирование архитектуры системы;

    анализ требований к ПО;

    проектирование архитектуры ПО;

    детальное проектирование ПО;

    кодирование и тестирование ПО;

    интеграцию ПО;

    квалификационное тестирование ПО;

    интеграцию системы;

    квалификационное тестирование системы;

    установку ПО;

    приемку ПО.

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

Анализ требований к системе подразумевает определение ее фун­кциональных возможностей, пользовательских требований, требова­ний к надежности и безопасности, требований к внешним интер­фейсам и т. д. Требования к системе оцениваются исходя из крите­риев реализуемости и возможности проверки при тестировании.

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

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

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

    внешних интерфейсов;

    спецификаций надежности и безопасности;

    эргономических требований;

    требований к используемым данным;

    требований к установке и приемке;

    требований к пользовательской документации;

    требований к эксплуатации и сопровождению.

Требования к ПО оцениваются исходя из критериев соответствия требованиям к системе, реализуемости и возможности проверки при тестировании.

Проектирование архитектуры ПО включает следующие задачи (для каждого компонента ПО):

трансформацию требований к ПО в архитектуру, определяющую на высоком уровне структуру ПО и состав его компонентов;

разработку и документирование программных интерфейсов ПО и баз данных;

разработку предварительной версии пользовательской докумен­тации;

разработку и документирование предварительных требований к тестам и плана интеграции ПО.

Архитектура компонентов ПО должна соответствовать требова­ниям, предъявляемым к ним, а также принятым проектным стан­дартам и методам.

Детальное проектирование ПО включает следующие задачи:

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

разработку и документирование детального проекта базы данных;

обновление (при необходимости) пользовательской документации;

разработку и документирование требований к тестам и плана те­стирования компонентов ПО;

Кодирование и тестирование ПО охватывают следующие задачи:

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

тестирование каждого компонента ПО и базы данных на соот­ветствие предъявляемым к ним требованиям. Результаты тести­рования компонентов должны быть документированы;

обновление (при необходимости) пользовательской документа­ции;

обновление плана интеграции ПО.

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

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

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

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

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

Процесс эксплуатации.

Он охватывает действия и задачи оператора - организации, эксплуатирующей систему. Дан­ный процесс включает следующие действия:

1) подготовительную работу;

2) эксплуатационное тестирование;

3) эксплуатацию системы;

4) поддержку пользователей.

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

планирование действий и работ, выполняемых в процессе эксп­луатации, и установку эксплуатационных стандартов;

определение процедур локализации и разрешения проблем, воз­никающих в процессе эксплуатации.

Эксплуатационное тестирование осуществляется для каждой оче­редной редакции программного продукта, после чего она передается в эксплуатацию.

Эксплуатация системы выполняется в предназначенной для это­го среде в соответствии с пользовательской документацией.

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

Процесс сопровождения.

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

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

Процесс сопровождения охватывает следующие действия:

    подготовительную работу;

    анализ проблем и запросов на модификацию ПО;

    модификацию ПО;

    проверку и приемку;

    перенос ПО в другую среду;

    снятие ПО с эксплуатации.

Подготовительная работа службы сопровождения включает сле­дующие задачи:

планирование действий и работ, выполняемых в процессе сопро­вождения;

определение процедур локализации и разрешения проблем, воз­никающих в процессе сопровождения.

Анализ проблем и запросов на модификацию ПО, выполняемый службой сопровождения, включает следующие задачи:

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

оценка целесообразности проведения модификации и возмож­ных вариантов ее проведения;

утверждение выбранного варианта модификации. Модификация ПО предусматривает определение компонентов ПО,

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

Проверка и приемка заключаются в проверке целостности моди­фицированной системы и утверждении внесенных изменений.

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

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

ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕССЫ ЖЦ ПО

Процесс документирования.

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

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

    подготовительную работу;

    проектирование и разработку;

    выпуск документации;

    сопровождение.

Процесс управления конфигурацией.

Он предполагает применение административных и техни­ческих процедур на всем протяжении ЖЦ ПО для определения со­стояния компонентов ПО в системе, управления модификациями ПО, описания и подготовки отчетов о состоянии компонентов ПО

и запросов на модификацию, обеспечения полноты, совместимос­ти и корректности компонентов ПО, управления хранением и по­ставкой ПО.

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

    подготовительную работу;

    идентификацию конфигурации;

    контроль конфигурации;

    учет состояния конфигурации;

    оценку конфигурации;

    управление выпуском и поставку.

Подготовительная работа заключается в планировании управле­ния конфигурацией.

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

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

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

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

Управление выпуском и поставка охватывают изготовление эталон­ных копий программ и документации, их хранение и поставку пользо­вателям в соответствии с порядком, принятым в организации.

Процесс обеспечения качества.

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

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

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

    подготовительную работу;

    обеспечение качества продукта;

    обеспечение качества процесса;

    обеспечение прочих показателей качества системы.

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

Обеспечение качества продукта подразумевает гарантирование полного соответствия программных продуктов и их документации требованиям заказчика, предусмотренным в договоре.

Обеспечение качества процесса предполагает гарантирование со­ответствия процессов ЖЦ ПО, методов разработки, среды разработ­ки и квалификации персонала условиям договора, установленным стандартам и процедурам.

Обеспечение прочих показателей качества системы осуществляет­ся в соответствии с условиями договора.

Процесс верификации.

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

Верификация может проводиться с различными степенями неза­висимости. Степень независимости может варьироваться от выпол­нения верификации самим исполнителем или другим специалистом данной организации до ее выполнения специалистом другой орга­низации с различными вариациями. Если процесс верификации осуществляется организацией, не зависящей от поставщика, разра­ботчика, оператора или службы сопровождения, то он называется процессом независимой верификации.

Процесс верификации включает следующие действия:

1) подготовительную работу;

2) верификацию.

В процессе верификации проверяются следующие условия:

непротиворечивость требований к системе и степень учета по­требностей пользователей;

возможности поставщика выполнить заданные требования;

соответствие выбранных процессов ЖЦ ПО условиям договора;

адекватность стандартов, процедур и среды разработки процес­сам ЖЦ ПО;

соответствие проектных спецификаций ПО заданным требова­ниям;

корректность описания в проектных спецификациях входных и выходных данных, последовательности событий, интерфейсов, логики и т.д.;

соответствие кода проектным спецификациям и требованиям;

тестируемость и корректность кода, его соответствие принятым стандартам кодирования;

корректность интеграции компонентов ПО в систему;

адекватность, полнота и непротиворечивость документации.

Процесс аттестации.

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

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

Процесс аттестации включает следующие действия:

    подготовительную работу;

    аттестацию.

Процесс совместной оценки.

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

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

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

    подготовительную работу;

    оценку управления проектом;

    техническую оценку.

Процесс аудита.

Он представляет собой определе­ние соответствия требованиям, планам и условиям договора. Аудит может выполняться двумя любыми сторонами, участвующими в до­говоре, когда одна сторона проверяет другую.

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

Процесс аудита включает следующие действия:

    подготовительную работу;

Процесс разрешения проблем.

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

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

1) подготовительную работу;

2) разрешение проблем.

ОРГАНИЗАЦИОННЫЕ ПРОЦЕССЫ ЖЦ ПО

Процесс управления.

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

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

    инициирование и определение области управления;

    планирование;

    выполнение и контроль;

    проверку и оценку;

    завершение.

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

Планирование подразумевает выполнение, как минимум, следую­щих задач:

составление графиков выполнения, работ;

оценку затрат;

выделение требуемых ресурсов;

распределение ответственности;

оценку рисков, связанных с конкретными задачами;

создание инфраструктуры управления.

Процесс создания инфраструктуры.

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

Процесс создания инфраструктуры включает следующие действия:

    подготовительную работу;

    создание инфраструктуры;

    сопровождение инфраструктуры.

Процесс усовершенствования.

Он предусмат­ривает оценку, измерение, контроль и усовершенствование процес­сов ЖЦ ПО. Данный процесс включает следующие действия:

    создание процесса;

    оценку процесса;

    усовершенствование процесса.

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

Процесс обучения.

Организационные процессы жизненного цикла (пункт 7) состоят из 4 процессов. Они выполняются какой-либо организацией с целью создания и обеспечения деятельности какой-либо нижестоящей структуры, включающей в себя связанные процессы жизненного цикла и персонал и совершенствования структуры и процессов. Они, как правило, инвариантны относительно конкретных проектов и контрактов, однако, уроки, извлеченные из таких проектов и контрактов, способствуют совершенствованию организации. Организационные процессы включают в себя:

1). Процесс управления (пункт 7.1). Определяет основную деятельность управления, включая проектный менеджмент, в течение процесса жизненного цикла.

2). Процесс создания инфраструктуры (пункт 7.2). Определяет основные действия для создания нижней структуры процесса жизненного цикла.

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

4). Процесс обучения (пункт 7.4). Определяет действия для обеспечения соответствующего обучения персонала.

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

4.1.3. Соотношение между процессами и организациями.

Этот Международный стандарт включает различные процессы, которые применяются на протяжении жизненного цикла программного обеспечения различными организациями в зависимости от их потребностей и задач. Для лучшего понимания приложение С представляет связи между процессами жизненного цикла и связанными сторонами.

Рис.1. Структура Международного Стандарта

  1. Основные процессы жизненного цикла

Этот раздел определяет следующие основные процессы жизненного цикла:

1). Процесс приобретения;

2). Процесс поставки;

3). Процесс разработки;

4). Процесс эксплуатации;

5). Процесс сопровождения.

За выполнение действий и задач в основном процессе несет ответственность организация, применяющая и выполняющая этот процесс. Эта организация гарантирует, что процесс является функциональным и действительно существует.

    1. Процесс приобретения

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

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

Покупатель управляет процессом приобретения на проектном уровне, следующим за процессом управления (7.1); устанавливает инфраструктуру под процесс, следующий за процессом инфраструктуры (7.2); приспосабливает процесс для проекта, следующего за процессом настройки (Приложение А); управляет процессом на специальном уровне, идущем за процессом усовершенствования (7.3); и процессом обучения (7.4).

Этот процесс состоит из следующих действий:

1) инициирование;

2) заявка на подготовку предложения;

3) подготовка контракта и модернизация;

4) текущий контроль (мониторинг) поставщика;

5) принятие и завершение.

Здравствуйте, уважаемые хабровчане! Думаю будет кому-то интересно вспомнить какие модели разработки, внедрения и использования программного обеспечения существовали ранее, какие модели в основном используются сейчас, зачем и что это собственно такое. В этом и будет заключаться моя небольшая тема.

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

Модель жизненного цикла программного обеспечения - структура, содержащая процессы действия и задачи, которые осуществляются в ходе разработки, использования и сопровождения программного продукта.
Эти модели можно разделить на 3 основных группы:

  1. Инженерный подход
  2. С учетом специфики задачи
  3. Современные технологии быстрой разработки
Теперь рассмотрим непосредственно существующие модели (подклассы) и оценим их преимущества и недостатки.

Модель кодирования и устранения ошибок

Совершенно простая модель, характерная для студентов ВУЗов. Именно по этой модели большинство студентов разрабатывают, ну скажем лабораторные работы.
Данная модель имеет следующий алгоритм:
  1. Постановка задачи
  2. Выполнение
  3. Проверка результата
  4. При необходимости переход к первому пункту
Модель также ужасно устаревшая. Характерна для 1960-1970 гг., по-этому преимуществ перед следующими моделями в нашем обзоре практически не имеет, а недостатки на лицо. Относится к первой группе моделей.

Каскадная модель жизненного цикла программного обеспечения (водопад)

Алгоритм данного метода, который я привожу на схеме, имеет ряд преимуществ перед алгоритмом предыдущей модели, но также имеет и ряд весомых недостатков.

Преимущества:

  • Последовательное выполнение этапов проекта в строгом фиксированном порядке
  • Позволяет оценивать качество продукта на каждом этапе
Недостатки:
  • Отсутствие обратных связей между этапами
  • Не соответствует реальным условиям разработки программного продукта
Относится к первой группе моделей.

Каскадная модель с промежуточным контролем (водоворот)

Данная модель является почти эквивалентной по алгоритму предыдущей модели, однако при этом имеет обратные связи с каждым этапом жизненного цикла, при этом порождает очень весомый недостаток: 10-ти кратное увеличение затрат на разработку . Относится к первой группе моделей.

V модель (разработка через тестирование)

Данная модель имеет более приближенный к современным методам алгоритм, однако все еще имеет ряд недостатков. Является одной из основных практик экстремального программирования.

Модель на основе разработки прототипа

Данная модель основывается на разработки прототипов и прототипирования продукта.
Прототипирование используется на ранних стадиях жизненного цикла программного обеспечения:
  1. Прояснить не ясные требования (прототип UI)
  2. Выбрать одно из ряда концептуальных решений (реализация сцинариев)
  3. Проанализировать осуществимость проекта
Классификация протопипов:
  1. Горизонтальные и вертикальные
  2. Одноразовые и эволюционные
  3. бумажные и раскадровки
Горизонтальные прототипы - моделирует исключительно UI не затрагивая логику обработки и базу данных.
Вертикальные прототипы - проверка архитектурных решений.
Одноразовые прототипы - для быстрой разработки.
Эволюционные прототипы - первое приближение эволюционной системы.

Модель принадлежит второй группе.

Спиральная модель жизненного цикла программного обеспечения

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

Преимущества:

  • Быстрое получение результата
  • Повышение конкурентоспособности
  • Изменяющиеся требования - не проблема
Недостатки:
  • Отсутствие регламентации стадий
Третьей группе принадлежат такие модели как экстремальное программирование (XP), SCRUM , инкриментальная модель (RUP), но о них я бы хотел рассказать в отдельном топике.

Большое спасибо за внимание!

Аннотация.

Введение.

1. Жизненный цикл ПО

Введение.

Шаги процесса программирования по Райли

Введение.

1.1.1. Постановка задачи.

1.1.2. Проектирование решения.

1.1.3. Кодирование алгоритма.

1.1.4. Сопровождение программы.

1.1.5. Программная документация.

Вывод к п. 1.1

1.2. Определение ЖЦПО по Леману.

Введение.

1.2.1 Определение системы.

1.2.2. Реализация.

1.2.3. Обслуживание.

Вывод к п. 1.2.

1.3. Фазы и работы ЖЦПО по Боэму

1.3.1. Каскадная модель.

1.3.2. Экономическое обоснование каскадной модели.

1.3.3. Усовершенствование каскадной модели.

1.3.4. Определение фаз жизненного цикла.

1.3.5. Основные работы над проектом.

Литература.


Введение

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

В практике разработок больших программных проектов зачастую отсутствует единый подход к оцениванию затрат труда, сроков проведения работ и материальных затрат, что сдерживает повышение производительности разработки ПО, а в конечном счете – эффективное управление жизненным циклом ПО. Поскольку программа любого типа становится изделием (кроме, может быть, учебных, макетных программ), подход к ее изготовлению во многом должен быть аналогичен подходу к производству промышленной продукции, и вопросы проектирования программ становятся чрезвычайно важными. Эта идея лежит в основе книги Б.У. Боэма «Инженерное проектирование программного обеспечения», которую мы использовали при написании данной курсовой работы. В этой книге под проектированием ПО понимается процесс создания проекта программного изделия.


1 Жизненный цикл ПО

ВВЕДЕНИЕ

ЖЦПО – это непрерывный процесс, который начинается с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации.

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

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

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

И, для разнообразия, – приведем шаги процесса программирования, представленные Д.Райли в книге «Использование языка Модула-2». Это представление, по-моему, является весьма простым и привычным, с него и начнём.

1.1 Шаги процесса программирования по Райли

Процесс программирования включает четыре шага (рис. 1):

постановка задачи, т.е. получение адекватного представления о том, какую задачу должна выполнить программа;

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

кодирование программы, т. е. перевод спроектированного решения в программу, которая может быть выполнена на машине;

сопровождение программы, т.е. непрекращающийся процесс устранения в программе неполадок и добавления новых возможностей.

Рис. 1.Четыре шага программирования.

Программирование начинается с того момента, когда пользователь , т.е. тот, кто нуждается в программе для решения задачи, излагает проблему системному аналитику. Пользователь и системный аналитик совместно определяют постановку задачи. Последняя затем передается алгоритмисту , который отвечает за проектирование решения. Решение (или алгоритм) представляет последовательность операций, выполнение которых приводит к решению задачи. Поскольку алгоритм часто не приспособлен к выполнению на машине, его следует перевести в машинную программу. Эта операция выполняется кодировщиком. За последующие изменения в программе несет ответственность сопровождающийпрограммист. И системный аналитик, и алгоритмист, и кодировщик, и сопровождающий программист – все они являются программистами.

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

1.1.1 Постановка задачи

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

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

Характеристики Хорошей Постановки Задачи:

Точность , т.е. исключение любой неоднозначности. Не должно возникать вопросов относительно того, каким будет вывод программы при каждом конкретном вводе.

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

Ясность , т.е. она должна быть понятной и пользователю и системному аналитику, поскольку постановка задачи – это единственный контракт между ними.

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

Стандартная форма постановки задачи.

Рассмотрим следующую постановку задачи: «Ввести три числа и вывести числа в порядке».

Такая постановка не удовлетворяет приведенным выше требованиям: она не является ни точной, ни полной, ни понятной. Действительно, должны ли числа вводиться по одному на строке или все числа на одной строке? Означает ли выражение «в порядке» упорядочение от большего к меньшему, от меньшего к большему или тот же порядок, в каком они были введены.

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

наименование задачи (схематическое определение);

общее описание (краткое изложение задачи);

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

пример (хороший пример может передать сущность задачи, а также проиллюстрировать различные случаи).

Пример. Постановка задачи в стандартной форме.

НАЗВАНИЕ

Сортировка трех целых чисел.

ОПИСАНИЕ

Ввод и вывод трех целых чисел, отсортированных от меньшего числа к большему.

Вводятся три целых числа по одному числу на строке. При этом целым числом является одна или несколько последовательных десятичных цифр, которым может предшествовать знак плюс «+» или знак минус «–».

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

1) Если введено менее трех чисел, программа ждет дополнительного ввода.