Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4970

.pdf
Скачиваний:
3
Добавлен:
13.11.2022
Размер:
856.74 Кб
Скачать

11

Следует подчеркнуть, что стандарт ГОСТ Р ИСО/МЭК 12207-99 не является ни руководством к действию, ни алгоритмом, ни технологией, так как носит лишь рекомендательный характер и определяет терминологию, процессы и работы, связанные с разработкой, приобретением, эксплуатацией, сопровождением и т.д. программных продуктов (информационных систем). Приведём примеры описания некоторых процессов жизненного цикла информационной системы:

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

1.1.Приобретение готовых ИС.

1.2.Поставка программного продукта или услуги.

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

1.4.Эксплуатация.

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

2.Вспомогательные процессы жизненного цикла.

2.1.Документирование процесса разработки.

2.2.Управление конфигурацией программного комплекса.

2.3.Обеспечение качества программных средств.

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

3.1.Управление проектом создания информационной системы.

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

3.3.Усовершенствование (оценка, измерение, контроль и усовершенствование процессов).

3.4.Обучение (первоначальное обучение и последующее постоянное повы-

шение квалификации персонала).

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

12

Модель жизненного цикла информационной системы − совокупность последовательностей выполнения и взаимосвязи процессов, действий и задач на протяжении жизненного цикла. Модель жизненного цикла зависит от специфики, масштаба и сложности проекта и условий, в которых система создается и функционирует. В состав модели жизненного цикла входят стадии и результаты выполнения работ на каждой стадии (артефакты в виде ключевых событий, т.е. документы, решения, проекты, программные модули и т.д.). Под стадией следует понимать часть процесса создания информационной системы, ограниченную определёнными временными рамками и заканчивающуюся созданием артефакта, соответствующего заданным для данной стадии требованиям. На каждой стадии могут выполняться несколько процессов (см. стандарт ГОСТ Р ИСО/МЭК 12207-99), равно как и один и тот же процесс может выполняться на различных стадиях.

1.2. Каскадная модель жизненного цикла ИС

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

Этапы проекта в соответствии с каскадной моделью:

1)формирование требований (фиксация требований в виде документа);

2)проектирование (фиксация рабочего, а затем технического проекта);

3)реализация (исполнение кода);

4)тестирование;

5)ввод в действие;

6)эксплуатация и сопровождение.

К достоинствам данной модели следует отнести чёткое определение последовательности этапов работ, выполнение работ согласно утверждённому календарному графику, отслеживание этапов выполнения, возможность предварительной

13

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

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

1.3. Спиральная модель жизненного цикла ИС

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

На каждой итерации оцениваются:

14

1)риск превышения сроков и стоимости проекта;

2)необходимость выполнения ещё одной итерации;

3)степень полноты и точности понимания требований к системе;

4)целесообразность завершения работы над проектом.

Один из примеров реализации спиральной модели — RAD (англ. Rapid Application Development, метод быстрой разработки приложений).

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

Спиральная модель требует применения объектно-ориентированной технологии анализа и программирования. При осуществлении проектов применяется модульное и компонентное программирование, реализуется событийноориентированный интерфейс.

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

1.4. Итерационная модель жизненного цикла ИС

Итерационный подход представляет собой сочетание каскадной и спиральной моделей. Итерационная модель реализована в современной технологии RUP (от англ. Rational Unified Process — унифицированный процесс разработки программного обеспечения), созданной компанией Rational Software. Процессом называется упорядоченное неким образом множество шагов, направленных на достижение некоторой цели. В контексте проектирования программного обеспечения целью является поставка программного продукта, удовлетворяющего требованиям, в заданные сроки и в пределах заранее составленной сметы. Организация процесса RUP позволяет ему быть адаптируемым для самых разных про-

15

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

Воснове RUP лежат следующие основные принципы:

1)ранняя идентификация и непрерывное (до окончания проекта) устранение основных рисков;

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

3)готовность к изменениям в требованиях и проектных решениях при в процессе разработки;

4)компонентная архитектура, реализуемая и тестируемая на ранних стадиях проекта информационной системы;

5)постоянный мониторинг качества на всех этапах разработки проекта;

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

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

иустранять риски на ранних стадиях проекта, а также эффективно контролировать качество создаваемого продукта.

Полный жизненный цикл разработки продукта состоит из четырёх фаз, каждая из которых включает в себя одну или несколько итераций:

1)начальная фаза;

2)проектирование (уточнение);

3)построение (конструирование);

4)внедрение.

Итерация «Начальная фаза» включает в себя следующие этапы:

1)формирование модели проекта (основная цель и границы);

2)создание экономического обоснования;

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

4)создание базовой версии модели прецедентов;

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

Итерация «Проектирование» включает в себя следующие этапы:

16

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

2)проектирование, реализацию и тестирование исполняемого функционального ядра системы;

3)уточнение экономического обоснования и более точная оценка сроков и стоимости разработки;

4)снижение основных рисков.

Итерация «Построение» включает в себя следующие этапы:

1)реализация большей части функциональности продукта;

2)завершение первого внешнего релиза системы. Итерация «Внедрение» включает в себя следующие этапы:

5)создание финальной версии продукта;

6)передача от разработчика к заказчику (бета-тестирование, обучение пользователей, определение качества продукта);

7)повторение внедрения (в случае несоответствия качества ожиданиям пользователей);

8)завершение полного цикла разработки.

Технология RUP на сегодняшний день является наиболее прогрессивной, так

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

Применение UML в RUP-процессах позволяет фиксировать окончание работ на очередной стадии в виде различных по назначению моделей. Более того, язык UML принят в качестве стандарта для графических примитивов в автоматизированных CASE-средствах от одноимённой компании Rational Software (IBM Rational Software Modeler и IBM Rational Software Architect), предназначенных для ускоренной разработки программных продуктов. Типичное распределение трудоёмкости по стадиям технологии RUP приведено рисунке 1.

 

 

 

17

 

 

 

 

 

Рабочие процессы

Распределение трудоёмкости по стадиям разработки

 

 

 

Начальная

Уточнения

Конструирование

Внедрение

 

 

стадия

 

 

 

 

 

 

 

 

Итерация 1 Итерация Итерация Итерация Итерация Итерация Итерация

 

 

 

1

n

1

n

1

n

Основные

Моделирование

 

 

 

 

 

 

 

процессы

 

 

 

 

 

 

 

 

 

Управление

 

 

 

 

 

 

 

 

требованиями

 

 

 

 

 

 

 

 

Анализ и

 

 

 

 

 

 

 

 

проектирование

 

 

 

 

 

 

 

 

Реализация

 

 

 

 

 

 

 

 

Тестирование

 

 

 

 

 

 

 

 

Развёртывание

 

 

 

 

 

 

 

Процессы

Управление

 

 

 

 

 

 

 

поддержки

проектом

 

 

 

 

 

 

 

 

Управление

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

изменениями

 

 

 

 

 

 

 

 

Создание среды

 

 

 

 

 

 

 

 

разработки

 

 

 

 

 

 

 

 

Рисунок 1 − Процессы, стадии и итерации технологии RUP

 

Описанные в этом разделе различные процессы разработки программных систем не являются единственными в своём роде. Мы привели наиболее показательные примеры с целью пояснить различия между процедурным и объектноориентированными подходами к разработке программных продуктов. Более подробно объектно-ориентированные технологии будут рассмотрены в следующей главе настоящего пособия. Иллюстрация жизненного цикла программного продукта, включающего в себя итерационный цикл разработки, применение автоматизированных средств CASE и RAD, а также роли исполнителей этапов работ приведена на рисунке 1.

 

 

18

 

 

Постановка задачи на разработку программного обеспечения

 

 

Функциональный анализ бизнес-процессов.

 

Участники процесса:

Анализ информационных процессов. Моделирование бизнес-

 

- системный аналитик;

процессов и реорганизация (при необходимости)

 

- системотехник

 

 

 

 

Генерация требований к проектируемой программной системе

 

 

в виде технического задания ( ответы на вопросы:

 

 

«Что должна выполнять проектируемая система?

CASE

 

Какие данные требуются и обрабатываются?»)

 

 

Участники процесса:

Разработка прототипа

 

- системотехник,

интерфейса

 

 

- дизайнер

 

 

 

Участники процесса:

 

Разработка модели и структуры базы

 

- программист

 

данных

 

Участники процесса:

Разработка руководства

 

 

 

 

- технический писатель

пользователя

 

 

 

 

 

 

 

Спецификация модулей программной

 

 

 

системы

 

 

 

Описание реализации экономико-

 

 

 

математических моделей

 

Участники

 

 

 

процесса:

 

Проектирование логики работы модулей и

 

- программисты

 

взаимодействия модулей

RAD

разработчики

 

 

 

 

 

Разработка исходного кода модулей на

 

 

 

языке программирования

 

 

 

Отладка исходного кода совместно со

 

 

 

сторонними компонентами (СУБД,

 

 

 

оборудование, телекоммуникации)

 

Участники процесса: технический писатель;

Разработка документации

 

программист; дизайнер

 

 

 

(в т.ч. электронной)

 

 

 

Цикл

 

 

 

 

 

 

итераций

Участники процесса:

 

Приёмо-сдаточные испытания

 

 

 

 

- персонал заказчика;

 

Опытная эксплуатация

 

- программисты;

 

 

 

 

 

- специалист технической

 

 

поддержки

 

Эксплуатация промышленная

 

 

 

Поддержка и модернизация

 

 

Рисунок 2 – Жизненный цикл программных продуктов

 

19

1.5. Парадигмы программирования

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

Рассмотрим в качестве примера две парадигмы:

1)структурное проектирование и программирование (см. рисунок 3);

2)объектно-ориентированное проектирование и программирование.

1.5.1. Структурное проектирование

Структурное проектирование включает в себя:

1)нисходящее каскадное проектирование ("сверху вниз");

2)модульное программирование;

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

Нисходящее проектирование – разработка иерархической схемы, которая отражает состав и взаимоподчинённость всех функций, обнаруженных в ходе функционального анализа предметной области. Такой схемой является функциональная структура алгоритма (ФСА) приложения. Функциональная структура алгоритма строится посредством функциональной декомпозиции, т.е. выявления главной цели, подцелей и задач. Одна задача соответствует одной функции. Функциональная структура алгоритма является основой для построения алгоритма приложения. Пример функциональной структуры алгоритма приведён на рисунке 4.

20

Примечание: показательными примерами применения процедурной парадигмы при разработке тиражируемых прикладных программных продуктов для автоматизации бухгалтерского учета в 1990 – 1995гг. являлись системы с жёстким (не зависящим от действий пользователя) интерфейсом типа «меню».

1.5.2. Структурное программирование

Структурное программирование − технология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры базовых конструкций (блоков). Технология предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.

Базовые элементы структурного программирования:

1)последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;

2)ветвление — однократное выполнение одной из двух или более операций,

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

3)цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла);

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

5)переход к выполнению таких инструкций из основной программы осуществляется посредством вызова подпрограммы (процедуры или функции);

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]