Унифицированный процесс разработки RUP. Унифицированный процесс разработки и экстремальное программирование

Rational Unified Process (RUP) - методология разработки программного обеспечения, созданная компанией Rational Software.

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

Работа над проектом в сплочённой команде, ключевая роль в которой принадлежит архитекторам.

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

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


Экстремальное программирование (Extreme Programming, XP)

Экстремальное программирование (Extreme Programming, XP) - одна из гибких методологий разработки программного обеспечения

12 основных приёмов экстремального программирования (по первому изданию книги Extreme programming explained) могут быть объединены в четыре группы:

Короткий цикл обратной связи: (Разработка через тестирование, Игра в планирование, Заказчик всегда рядом, Парное программирование

Непрерывный, а не пакетный процесс: Непрерывная интеграция, Рефакторинг, Частые небольшие релизы

Понимание, разделяемое всеми : Простота, Метафора системы, Коллективное владение кодом или выбранными шаблонами проектирования, Стандарт кодирования

Социальная защищенность программиста: 40-часовая рабочая неделя

Парное программирование предполагает, что весь код создается парами программистов, работающих за одним компьютером. Коллективное владение означает, что каждый член команды несёт ответственность за весь исходный код. «Заказчик» в XP - это не тот, кто оплачивает счета, а тот, кто на самом деле использует систему.


Стандарты документации

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

SVVP - План определяет каким образом и в какой последовательности должны проверяться стадии проекта. Верификация – это процесс проверки правильности сборки приложения. Валидация проверяет тот факт, что собран требуемый продукт.

SQAP - План контроля качества программного обеспечения

SCMP - План управления программным проектом

SRS - Спецификация требований к программному обеспечению

SDD - Проектная документация программного обеспечения

STD - Документация по тестированию программного обеспечения


Согласованность и целостность документации.

Управление документацией требует значительных организационных навыков. Написание хорошей и гибкой документации сродни написанию хорошего и гибкого кода.

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

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

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

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


Унифицированный Процесс разработки компании Rational (Rational Unified Process, RUP) – это сумма различных видов деятельности, необходимых для преобразования требований пользователей в программную систему, . Его абстрактное и развёрнутое представление показано на рис. 7.2.

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

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

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

(а )

Рис. 7.2. Унифицированный процесс разработки ПО (а ‑ абстрактное представление, б – развёрнутое представление основных процессов RUP)

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

Для разработки графических представлений (моделей) программной системы RUP использует Унифицированный Язык Моделирования (UML). Фактически UML является неотъемлемой частью RUP ‑ они и разрабатывались совместно.

Однако действительно специфичные аспекты RUP-процесса заключаются в трех словосочетаниях - управляемый вариантами использования , архитектурно-ориентированный , итеративный и инкрементный . Это то, что делает Унифицированный процесс уникальным.

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

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

2. модель прецедентов - формализует функциональные требования к системе;

3. модель предметной области или бизнес-модель , описывающую контекст системы.

4. модель анализа , которая имеет две цели - уточнить детали вариантов использования и создать первичное распределение поведения системы по набору объектов, предоставляющих различные варианты поведения;

5. модель процессов (необязательная) - формализует механизмы параллелизма и синхронизации в системе;

6. модель проектирования , которая определяет: (а ) ‑ статическую структуру системы, такую, как подсистемы, классы и интерфейсы, и (b ) ‑ варианты использования, реализованные в виде коопераций между подсистемами, классами и интерфейсами;

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

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

9. модель тестирования , которая описывает варианты тестов для проверки вариантов использования;

Рис. 7.3. Модели RUP (в форме соответствующих UML-диаграмм)
и их связи,

Все эти модели связаны. Вместе они полностью описывают программную систему. Элементы одной модели имеют трассировочные зависимости вперед и назад, организуемые с помощью связей с другими моделями (см. рис. 7.3). Например, вариант использования (в модели вариантов использования) может быть оттрассирован на соответствующую реализацию варианта использования (в модели проектирования) и вариант тестирования (в модели тестирования). Трассировка облегчает понимание и внесение изменений. UML-диаграммы, созданные в процессе RUP-разработки, дают полное представление о программном продукте).

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

Введение

ациональный унифицированный процесс (Rational Unified Process, RUP) - одна из спиральных методологий разработки программного обеспечения. Методология поддерживается компанией Rational Software, обновление продукта происходит примерно дважды в год. В качестве языка моделирования в общей базе знаний используется язык Unified Modelling Language (UML).

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

RUP достаточно хорошо формализован, и наибольшее внимание уделяется начальным стадиям разработки проекта - анализу и моделированию. Таким образом, эта методология направлена на снижение коммерческих рисков (risk mitigating) посредством обнаружения ошибок на ранних стадиях разработки. Технические риски (assesses) оцениваются и «расставляются» согласно приоритетам на ранних стадиях цикла разработки, а затем пересматриваются с течением времени и с развитием проекта в течение последующих итераций. Новые цели появляются в зависимости от приоритетов данных рисков. Релизы версий распределяются таким образом, что наиболее приоритетные риски устраняются первыми.

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

Для успешного процесса разработки необходимы три составляющие (рис. 1): процесс (process), нотация (notation) и набор утилит (tools). Процесс описывает, что мы делаем, в каком порядке и каким образом; нотация является средством общения; набор утилит помогает автоматизировать процесс и управлять им.

Рис. 1. Треугольник успеха

В RUP представлены все три компонента. Сначала рассмотрим функции нотации, которые производят следующие действия:

Осуществляет «склеивание» процесса в единое целое;

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

Предоставляет семантику для отображения важных стратегических и тактических решений;

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

Фактически нотация охватывает разработку программного обеспечения, начиная с анализа и заканчивая внедрением продукта. Нотация в случае RUP–UML - формальное языковое средство описания процесса (об UML речь пойдет ниже). Далее рассмотрим структуру процесса, а также приведем набор утилит, используемых в процессе управления разработкой проекта согласно RUP.

Структура RUP

UP предоставляет структурированный подход к итерационной разработке программного обеспечения, подразделяя процесс на четыре основные фазы во времени (milestones): Inception (исследование, начало), Elaboration (уточнение плана), Construction (конструирование, построение) и Transition (переход, развертывание). К сожалению, в русском языке нет установившейся терминологии, поэтому в дальнейшем мы будем использовать английские термины, сопровождая их переводом на русский язык. На рис. 2 представлено широко распространенное изображение фаз RUP. Целями каждой из данных фаз являются:

Inception — понимание, что мы создаем. Фаза сбора информации и анализа требований, определение образа проекта в целом;

Elaboration — понимание, как мы это создаем. Фаза анализа требований и проектирования системы, планирование необходимых действий и ресурсов, спецификация функций и особенностей дизайна;

Construction — создание бета-версии продукта. Основная фаза разработки и кодирования, построение продукта как восходящей последовательности итераций (версий кода);

Transition — создание конечной версии продукта. Фаза внедрения продукта, поставка продукта конкретному пользователю.

Рис. 2. Фазы RUP

Это фазы управления эволюцией продукта - итерациями жизненного цикла. RUP предполагает приближение к конечной цели, но, в отличие от классического стандарта ISO (методология «водопад»), где transition является конечной фазой, каждая из фаз может повторяться несколько раз, отражая изменение требований заказчика продукта.

Методология RUP основана на девяти основных потоках (workflow), являющихся элементами итерации жизненного цикла ПО:

Business modeling (бизнес-анализ) - предполагает анализ требований на данной итерации жизненного цикла, определение желаемых параметров системы и нужд пользователей;

Requirements (требования) — формализация образа системы. Предполагает сбор требований и управление требованиями, перевод требований в функциональные спецификации. Здесь начинается анализ прецедентов и построение use cases (пользовательских историй) — формальное отображение требований пользователя в UML. Результатом являются документы уровня менеджмента;

Analysis and design (анализ и моделирование) - предполагает перевод собранных требований в формализованную программную модель. Результатом является описание системы на фазе реализации (технический проект) - это документы уровня разработчиков системы. Язык формализации - Unified Modelling Language (UML), о котором речь пойдет ниже. В процессе итеративной разработки эволюционировать будет продукт именно этого потока - модель проекта. Все изменения привязываются в RUP непосредственно к моделям, а средства автоматизации и довольно гибкий язык моделирования позволяют управлять данным процессом более или менее безболезненно в плане затрат времени и ресурсов. Здесь имеется в виду тот факт, что результатом разработки является не модель, а исполняемый код, поэтому заказчик обычно не очень любит платить за моделирование, так как модели не являются продуктом, который ему нужен);

Implementation (реализация, кодирование) - предполагает собственно написание кода. Элементы кода в RUP уже созданы на этапе анализа и дизайна, так как средство реализации UML - Rational Rose - позволяет создавать элементы кода на нескольких языках программирования. Методология - объектно-ориентированное программирование;

Test (тестирование) — предполагает тестирование продукта на данной итерации. Стоит специально отметить, что regression testing (возвратное тестирование, тестирование «неухудшения» продукта) в данном случае должно содержать все актуальные тесты от предыдущей итерации и приемосдаточные тесты от предыдущей transition-фазы;

Deployment (внедрение) — предполагает установку продукта на полигоне заказчика, подготовку персонала, запуск системы плюс приемо-сдаточные испытания, подготовка стандартов упаковки и распространения продукта, передача материалов отделу продаж (действия опциональны в зависимости от специфики продукта).

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

Preliminary interna — это фактически документы, выпускаемые техническим советом для менеджеров предприятия. Основная цель начальных этапов — заключение контракта или соглашения о намерениях. Дальнейшие итерации — собственно начало работы коллектива разработчиков, который имеет время и ресурсы для построения формальных моделей. UML в данном случае имеет средства, позволяющие отображать модель на элементы кода. Например, дерево объектов отображается непосредственно, вариации зависят от мощности реализации выбранного разработчиками языка программирования, а также от совпадения взглядов Г.Буча и разработчиков данного языка на объектную модель. То же самое относится к методам.

Теперь рассмотрим элементы, касающиеся поддержки продукта, - core supporting workflows:

Configuration management (управление конфигурацией и изменениями) - мощный слой административных действий, направленных на управление версиями продукта, что предполагает контроль исходного кода (модели, исполняемых модулей, тестов, документации), контроль версий продукта, корпоративные стандарты разработки кода и документации, отслеживание изменений и ошибок (bug tracking); тесно связан с тестированием и поддержкой пользователей (customers support);

Management (управление проектом) - предполагает набор административных действий управления проектом согласно идеологии RUP, используются средства управления проектом (см. ниже список продуктов Rational);

Environment (окружение) — предполагает создание и поддержку средств анализа, проектирования, разработки, тестирования (как программное, так и аппаратное обеспечение).

Итеративная разработка;

Управление требованиями;

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

Визуальное моделирование;

Проверка качества;

Отслеживание изменений.

Практики не являются непосредственно частью процесса RUP, но настоятельно рекомендованы к использованию. Часть практик прямо вытекает из идеологии RUP. Так, итеративная разработка заложена в структуру RUP, поскольку этот процесс является одной из реализаций «спирали». Управление требованиями в RUP появляется на самых ранних стадиях анализа. Теоретически модульная архитектура позволяет повторно использовать код, и система получается более гибкой. В силу того что UML является объектным языком, игнорировать модульность можно, но… несколько затруднительно. Визуальное моделирование позволяет эффективно бороться с возрастающей сложностью систем. Кроме того, модели являются средствами коммуникации между разработчиками, но для этого разработчики должны говорить на UML, что предполагает определенный тренинг. Визуальное моделирование часто осуществляется с помощью инструмента Rational Rose, что позволяет получать набор весьма полезных документов для менеджеров, системных администраторов, разработчиков, тестировщики, генерировать элементы кода. Данное средство не является единственной реализацией UML - доступны как коммерческие альтернативы (например, Microsoft Visio), так и бесплатные. Следует отметить, что диалекты UML, реализованные в средствах моделирования, не всегда совпадают: диалект Rational имеет некоторые серьезные различия, описанные как в документации, так и в книгах по UML.

Продукты, поддерживающие RUP

иже перечислены самые известные продукты, поддерживающие Rational Unified Process:

Rational Rose — CASE-средство визуального моделирования информационных систем, имеющее возможности генерирования элементов кода. Специальная редакция продукта — Rational Rose RealTime — позволяет на выходе получить исполняемый модуль;

Rational Requisite Pro — средство управления требованиями, позволяющее создавать, структурировать, устанавливать приоритеты, отслеживать, контролировать изменения требований, возникающие на любом этапе разработки компонентов приложения;

Rational ClearQuest — продукт для управления изменениями и отслеживания дефектов в проекте (bug tracking), тесно интегрирующийся со средствами тестирования и управления требованиями и представляющий собой единую среду для связывания всех ошибок и документов между собой;

Rational SoDA — продукт для автоматического генерирования проектной документации, позволяющий установить корпоративный стандарт на внутрифирменные документы. Возможно также приведение документации к уже существующим стандартам (ISO, CMM);

Rational Purify, Rational Quantify Rational PureCoverage, - средства тестирования и отладки:

Rational Purify — весьма мощное средство поиска ошибок на run-time для разработчиков приложений и компонентов, программирующих на C/C++,

Rational Visual Quantify — средство измерения характеристик для разработчиков приложений и компонентов, программирующих на C/C++, Visual Basic и Java; помогает определять и устранять узкие места в производительности ПО,

Rational Visual PureCoverage - автоматически определяет области кода, которые не подвергаются тестированию;

Rational ClearCase — продукт для управления конфигурацией программ (Rational’s Software Configuration Management, SCM), позволяющий производить версионный контроль всех документов проекта. С его помощью можно поддерживать несколько версий проектов одновременно, быстро переключаясь между ними. Rational Requisite Pro поддерживает обновления и отслеживает изменения в требованиях для группы разработчиков;

SQA TeamTest — средство автоматизации тестирования;

Rational TestManager — система управления тестированием, которая объединяет все связанные с тестированием инструментальные средства, артефакты, сценарии и данные;

Rational Robot — инструмент для создания, модификации и автоматического запуска тестов;

SiteLoad, SiteCheck — средства тестирования Web-сайтов на производительность и наличие неработающих ссылок;

Rational PerformanceStudio - измерение и предсказание характеристик производительности систем.

Артефакты и роли

еотъемлемую часть RUP составляют артефакты (artefact), прецеденты (precedent) и роли (role). Артефакты - это некоторые продукты проекта, порождаемые или используемые в нем при работе над окончательным продуктом. Прецеденты - это последовательности действий, выполняемых системой для получения наблюдаемого результата. Фактически любой результат работы индивидуума или группы является артефактом, будь то документ анализа, элемент модели, файл кода, тестовый скрипт, описание ошибки и т.п. За создание того или иного вида артефактов отвечают определенные специалисты. Таким образом, RUP четко определяет обязанности каждого члена группы разработки на том или ином этапе, то есть когда и кто должен создать тот или иной артефакт. Весь процесс разработки программной системы рассматривается в RUP как процесс создания артефактов - начиная с первоначальных документов анализа и заканчивая исполняемыми модулями, руководствами пользователя и т.п. Ниже приведен набор артефактов (моделей, документов и т.п.) для каждого из потоков.

Business modeling

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

Модель структуры предприятия - артефакт для разработки функциональной модели системы;

Модели документов, бизнес-сущностей, модели сценариев бизнес-функций, модели состояний бизнес-сущностей - для проектирования пользовательского интерфейса, БД системы; представляют собой описание статического и динамического состояний системы с различных точек зрения;

Модели бизнес-правил — артефакт используется для моделирования правил в ПО.

Артефакты-документы — используются RequisitePro, SoDA, текстовые процессоры, Microsoft Project:

Оценка организации заказчика, структура бизнеса;

Словарь терминов предметной области;

Набор бизнес-правил;

Коммерческое предложение;

Спецификации бизнес-функций;

План работ на этапе бизнес-моделирования;

Запросы на изменение.

Requirements

Артефакты-модели — используется Rational Rose:

Модель функции системы;

Модель сценариев функций системы;

Модель интерфейсов пользователя;

Модель сценариев работы пользователя системы;

Модель выходных форм;

Модель правил системы.

План управления требованиями;

Словарь терминов системы;

Спецификация на программную систему;

Спецификация на функции системы;

Правила системы;

Запросы заинтересованных лиц;

План работ на этапе определения требований к системе;

Запросы на изменение.

Analysis and design

Артефакты-модели — используется Rational Rose:

Логическая модель данных;

Физическая модель данных;

Модель спецификаций компонентов системы;

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

Артефакты-документы — используются RequisitePro, SoDA, текстовые процессоры, MS Project:

Архитектура программного обеспечения;

Спецификации программных компонентов;

План работ на этапе анализа и проектирования;

Запросы на изменение.

Implementation

Артефакты-модели — используется Rational Rose:

Компонентная модель приложения.

Артефакты-код — используются Rational Rose, средства программирования, текстовые процессоры:

Элементы генерации кода, полученные в Rational Rose;

Собственно код приложения;

Документация.

Артефакты-документы — используются RequisitePro, SoDA, текстовые процессоры, MS Project:

План сборки приложения;

План работ на этапе реализации.

Test

Артефакты-модели — используется Rational Rose:

Модель тестовых примеров;

Функциональная модель тестовой программы;

Модель спецификации компонентов тестовой программы;

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

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

План тестирования;

План работ на этапе тестирования;

Запросы на изменение.

Реализация тестирования — Quantify, Purify, PureCoverage, Robot, SiteLoad, SiteCheck.

Deployment

Артефакты-модели — используется Rational Rose:

Модель размещения — описание размещения компонентов по узлам обработки.

Артефакты-документы — используются SoDA, текстовые процессоры, MS Project:

Обучающие материалы;

Документы по инсталляции;

Описание версий системы;

План внедрения.

Следующая статья данного цикла будет посвящена языку Unified Modelling Language (UML).

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

Унифицированный процесс компонентно ориентирован. Это означает, что создаваемая программная система строится на основе программных компонентов , связанных хорошо определенными интерфейсами.

Специфичные аспекты UP заключаются в трех его характеристиках:

● управляется вариантами использования;

● является архитектурно-ориентированным;

● является итеративным и инкрементным.

Жизненный цикл унифицированного процесса

Жизненный цикл UP разбивается на циклы, каждый из которых завершается поставкой выпуска продукта. Каждый цикл развития состоит из четырех фаз - анализа и планирования требований, проектирования, построения, внедрения. Каждая фаза подразделяется на итерации.

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

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

18. XP – процесс.

Экстрема́льное программи́рование (англ. Extreme Programming, XP) - одна из гибких методологий разработки программного обеспечения. Авторы методологии - Кент Бек, Уорд Каннингем, Мартин Фаулер и другие.

Двенадцать основных приёмов экстремального программирования (по первому изданию книги Extreme programming explained) могут быть объединены в четыре группы:

1. Короткий цикл обратной связи (Fine scale feedback)

a. Разработка через тестирование (Test driven development)

b. Игра в планирование (Planning game)

c. Заказчик всегда рядом (Whole team, Onsite customer)

d. Парное программирование (Pair programming)

2. Непрерывный, а не пакетный процесс

a. Непрерывная интеграция (Continuous Integration)

b. Рефакторинг (Design Improvement, Refactor)

c. Частые небольшие релизы (Small Releases)

3. Понимание, разделяемое всеми

a. Простота (Simple design)

b. Общение

c. Уважение

d. Коллективное владение кодом (Collective code ownership) или выбранными шаблонами проектирования (Collective patterns ownership)

e. Стандарт кодирования (Coding standard or Coding conventions)

4. Социальная защищенность программиста (Programmer welfare):

a. 40-часовая рабочая неделя (Sustainable pace, Forty hour week)

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

19. ICONIX – процесс.

ICONIX разработал Дуг Розенберг в компании ICONIX Software .Процесс ICONIX основан на вариантах испльзования, но не характеризуется множеством его недостатков. В этом процессе также применяется язык моделирования UML, но используется только базовая нотация из UML – это 20% языка. В основу процесса ICONIX положены четыре основных этапа разработки ПО на основе вариантов использования:

● моделирование предметной области;

● моделирование прецедентов;

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

● построение диаграмм последовательности.

Основные этапы процесса следующие:

● Анализ требований

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

● Проектирование

● Реализация

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

20. SCRUM – процесс.

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

Главные действующие роли в Scrum: ScrumMaster - тот, кто ведёт Scrum митинги и следит, чтобы при этом соблюдались все принципы Scrum (роль не предполагает ничего кроме корректного ведения самогоScrum -а, руководитель проекта скорее относится к Product Owner и не должен являться ScrumMaster );Владелец Продукта (Product Owner ) - человек, который представляет интересы конечных пользователей и других заинтересованных в продукте сторон; и кросс-функциональная Команда (Scrum Team ), состоящая как из разработчиков, так и из тестировщиков, архитекторов, аналитиков и т. д. (при этом размер команды в идеале составляет 7±2 человека). Команда является единственным полностью вовлечённым участником разработки, и отвечает за результат как единое целое. Никто кроме команды не может вмешиваться в процесс разработки на протяжении спринта.

На протяжении каждого спринта создаётся функциональный рост программного обеспечения. Набор возможностей, которые реализуются в каждом спринте, происходят из этапа, называемого product backlog (документация запросов на выполнение работ), обладающего наивысшим приоритетом по уровню требований к работе, который должен быть выполнен. Запросы на выполнение работ (backlog items ), определенных на протяжении совета по планированию спринта (sprint planning meeting ), перемещаются в этап спринта. На протяжении этого собрания Владелец Продукта информирует о заданиях, которые должны быть выполнены. Тогда Команда определяет, сколько из желаемого они могут выполнить, чтобы завершить необходимые части на протяжении следующего спринта . Во время спринта команда выполняет определенный фиксированный список заданий (т. н. sprint backlog ). На протяжении этого периода никто не имеет права менять список требований к работе, что следует понимать как заморозку требований (requirements ) во время спринта.

Артефакты

Product backlog - это документ, содержащий список требований к функциональности, которые упорядочены по степени важности. Product backlog представляет собой список того, что должно быть реализовано. Элементы этого списка называются «историями» (user story ) или элементами backlog’a (backlog items ). Product backlog открыт для редактирования для всех участников Scrum-процесса.

В соответствии с ГОСТ 34.601-90 «АС. Стадии создания» устанавливаются следующие стадии создания АИС, которые, в свою очередь, могут подразделяться на этапы:

· формирование требований к АИС;

· разработка концепции АИС;

· техническое задание;

· эскизный проект;

· технический проект;

· рабочая документация;

· ввод в действие.

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

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

· модель вариантов использования;

· модель анализа;

· модель проектирования;

· модель развертывания;

· модель реализации;

· модель тестирования.

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

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

Модель проектирования является детальным представлением физической реализации модели анализа и включает диаграммы пакетов (подсистем), детальные диаграммы классов, диаграммы последовательности и/или диаграммы кооперации, диаграммы состояний, диаграммы деятельности различной степени детализации.

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

Модель реализации описывает, как реализуются в виде компонентов классы проектирования. Соответственно она включает диаграммы компонентов, трассировки (реализации) классов, детальные диаграммы развёртывания, описание архитектуры системы.

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

Сопоставим процессы построения моделей со стандартизованными стадиями создания АС. Модель вариантов использования строится на стадии формирования требований к АС; модель анализа – на стадии разработки концепции АС. На стадии технического задания и эскизного проектирования строится модель проектирования. Она уточняется на стадии технического проектирования и дополняется моделью развёртывания. На стадии рабочей документации создаются модели реализации и тестирования. Наконец, на стадии ввода в действие модель тестирования уточняется и становится в процессе эксплуатации эталонной, предназначенной для периодических проверок правильности функционирования и диагностики системы.

1.5 Компоненты языка UML

Унифицированный язык моделирования UML (Unified Modeling Language) – это язык визуального моделирования, используемый для спецификации, визуализации, конфигурирования, и документирования сложных систем (в том числе программного обеспечения) по объектно-ориентированной технологии.

При создании АС в методологии UML используются известные по методологиям Гейна/Сарсона и SADT принципы структурного системного анализа :

· нисходящая поэтапная разработка;

· диаграммная техника;

· иерархичность описаний;

· строгая формализация описания проектных решений;

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

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

· технологическая поддержка инструментальными средствами (CASE-системами).

Модель сложной системы на UML может быть исследована для получения оценочных характеристик эффективности протекания процессов в системе.

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

Достаточно полная модель сложной системы должна отражать два аспекта:

-статический (структурный) – состав, структура компонент и их взаимосвязи;

-динамический (поведенческий) – описание логики процессов, протекающих в системе или подлежащих реализации.

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

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

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

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

Модель имеет два аспекта: семантическую информацию (семантику) и визуальное представление (нотацию).

Полный состав представлений моделей на языке UML приведён в таблице 1

Таблица 1 – Представление моделей системы на языке UML.

МОДЕЛЬ ДИАГРАММА КОМПОНЕНТЫ
Концептуальный уровень Модель вариантов использования (use case model) Логический уровень Модель анализа (analysis model) Модель проектирования (design model) Физический уровень Модель развёртывания (deployment model) Диаграмма вариантов использования (use case diagram) Диаграмма пакетов анализа (analysis package diagram) Диаграмма пакетов проектирования (design package diagram) Диаграмма классов анализа (analysis class diagram) Диаграмма классов проектирования (design class diagram) Диаграмма состояний (state chart diagram) Диаграмма деятельности (activity diagram) Диаграмма последовательности (sequence diagram) Диаграмма кооперации (collaboration diagram) Диаграмма развертывания (deployment diagram) Вариант использования (use case) Актант (актер, actor) Ассоциация (связь, отношение, association) Роль (роль в ассоциации, role) Сценарий (scenario) Пакет (package) Пакет (package) Модель (model) Система (system) Подсистема (subsystem) Отношение зависимости (зависимость, dependency relationship) Трассировка (trace) Класс (class) Объект (object) Атрибут (свойство, attribute) Операция (operation) Отношение зависимости (зависимость, dependency relationship) Ассоциация (association) Агрегация (aggregation) Композиция (composition) Обобщение (generalization) Трассировка (trace) Реализация (realization) Состояние (state) Событие (event) Переход (transition) Действие (action) Состояние деятельности (activity state) Событие (event) Переход (transition) Деятельность (activity) Действие (action) Развилка (fork) Слияние (merge) Объект (object) Сообщение (message) Активация (выполнение операции, activation) Линия жизни (lifeline) Плавательная дорожка (swim lane) Объект (object) Роль (роль в кооперации, collaboration role) Сообщение (message) Узел (узел реализации, node) Компонент (component) Объект (object) Зависимость (dependency relationship)
Модель реализации (implementation model) Модель тестирования (test model) Диаграмма классов реализации (implementation class diagram) Диаграмма компонентов (component diagram) Ассоциация (association) Расположение (месторасположение, location) Пакет (package) Система (system) Подсистема (subsystem) Класс (class) Объект (object) Атрибут (свойство, attribute) Метод (method) Отношение зависимости (зависимость, dependency) Ассоциация (association) Агрегация (aggregation) Композиция (composition) Обобщение (generalization) Реализация (realization) Компонент (component) Тестовый компонент (test component) Интерфейс (interface) Зависимость (dependency relationship) Реализация (realization relationship)

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

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

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

В языке имеется 4 вида графических конструкций:

· значки (пиктограммы);

· графические символы на плоскости;

· пути (линии);

· строки текста.

1.6 Концептуальный уровень. Модель вариантов использования

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

Диаграммой самого верхнего уровня считается предложенная А. Якобсоном в OOSE диаграмма вариантов использования системы в целом. Именно она является исходным концептуальным представлением системы и строится с целью:

· определить общие границы и контекст моделируемой предметной области;

· сформировать общие требования к функциональному поведению и интерфейсу системы;

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

Точка зрения модели: внешний пользователь системы. В диаграмму вариантов использования входят актанты (actors), варианты использования (use case) и ассоциации (association).

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

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

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

Во многих АС нет никаких других актантов, кроме людей. Однако, актантами могут быть внешняя система, устройство ввода/вывода или таймер (обычно это встречается во встроенных системах реального времени). Среди актантов в варианте использования выделяется главный актант (primary actor), который инициирует работу с системой. Остальные – второстепенные (secondary), они также участвуют в варианте использования, получая результаты и вводя некоторые промежуточные данные.

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

Актант может изображаться на диаграммах двумя способами:

3. Символ класса (прямоугольник) с внутренним указанием стереотипа

Заказчик

4. Более стандартно: “человек” с надписью (символ человека)

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

Заказчик

Вариант использования (прецедент, use case) – абстрактное описание класса сервиса (сервисных функций), предоставляемого актанту в ответ на его запросы.

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

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

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

Связь между актантом и вариантом использования показывается ассоциацией.

На диаграмме вариант использования изображается двумя способами:

1) эллипсом, внутри ставится имя


2) прямоугольником - как и любой класс


Заказчик


Датчик

Между актантами и вариантами использования ассоциация – единственный вид связи. При этом он имеет семантику коммутативной связи , то есть передачи сообщений, поэтому обычно не помечается, так как контекст ясен из обозначений актанта и варианта использования. Но можно ее пометить, а также указать кратность связи:


Клиент банка

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

В общем случае ассоциация – это отношение между двумя или несколькими компонентами модели. Так как в большинстве случаев компоненты – это некоторые классы объектов, то экземпляр ассоциации – это просто упорядоченный список ссылок на конкретные экземпляры, возможно, снабженный атрибутами ассоциации (свойствами).

Имя ассоциации, если оно есть, должно быть уникальным. Его формируют по смыслу отношений между классами - участниками ассоциации. Например, «Сотрудник работает_в Отделе», «Менеджер комплектует Компьютер» и т.п.

Ассоциации сами являются классами (класс-ассоциация , association class), у нее есть как свойства класса, так и свойства ассоциации. Экземпляры этого класса - связи, у которых есть не только ссылки на объекты, но и значения атрибутов (свойств).

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

Множественность связи проставляется у полюсов.

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

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

Ассоциация изображается непрерывной линией, соединяющей границы 2-х классов, если ассоциация n -арная, то рисуется ромб (признак агрегации):

Множество ассоциаций - агрегация
Бинарная ассоциация

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

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

  • II. НОРМАТИВНОЕ ПРАВОВОЕ ОБЕСПЕЧЕНИЕ образовательного процесса по учебным предметам