В.В. Кулямин - Технологии программирования. Компонентный подход (1134162), страница 12
Текст из файла (страница 12)
SEI Technical Report CMU/SEI-2002TR-012, Software Engineering Institute, Pittsburgh, March 2002.http://www.sei.cmu.edu/pub/documents/02.reports/pdf/02tr012.pdf[13] W. W. Royce. Managing the Development of Large Software Systems. Proceedings of IEEEWESCON, pp. 1–9, August 1970.Переиздана: Proceedings of the 9th International Software Engineering Conference, ComputerSociety Press, pp. 328–338, 1987.[14] B. Randell, F. W. Zurcher. Iterative Multi-Level Modeling: A Methodology for ComputerSystem Design.
Proc. IFIP, IEEE CS Press, 1968.[15] B. Boehm. A Spiral Model of Software Development and Enhancement. Computer, May 1988,pp. 61-72.[16] И. Соммервилл. Инженерия программного обеспечения. М.: Вильямс, 2002.[17] У. Ройс. Управление проектами по созданию программного обеспечения. М.: Лори, 2002.[18] Э. Дж. Брауде. Технология разработки программного обеспечения. СПб.: Питер, 2004.34Лекция 3. Унифицированный процесс разработки и экстремальноепрограммированиеАннотацияРассматриваются в деталях модели разработки ПО, предлагаемые в рамках унифицированногопроцесса разработки Rational (RUP) и экстремального программирования (XP).Ключевые слова«Тяжелые» процессы разработки, «живые» методы разработки, унифицированный процессRational, экстремальное программирование, модели ПО.Текст лекции«Тяжелые» и «легкие» процессы разработкиВ этой лекции мы рассмотрим детально два процесса разработки — унифицированный процессRational (Rational Unified Process, RUP) и экстремальное программирование (ExtremeProgramming, XP).
Оба они являются примерами итеративных процессов, но построены на основеразличных предположений о природе разработки программного обеспечения и, соответственно,достаточно сильно отличаются.RUP является примером так называемого «тяжелого» процесса, детально описанного ипредполагающего поддержку собственно разработки исходного кода ПО большим количествомвспомогательных действий. Примерами подобных действий являются разработка планов,технических заданий, многочисленных проектных моделей, проектной документации, и пр.Основная цель такого процесса — отделить успешные практики разработки и сопровождения ПОот конкретных людей, умеющих их применять. Многочисленные вспомогательные действия даютнадежду сделать возможным успешное решение задач по конструированию и поддержке сложныхсистем с помощью имеющихся работников, не обязательно являющихся суперпрофессионалами.Для достижения этого выполняется иерархическое пошаговое детальное описаниепредпринимаемых в той или иной ситуации действий, чтобы можно было научить обычногоработника действовать аналогичным образом.
В ходе проекта создается много промежуточныхдокументов, позволяющих разработчикам последовательно разбивать стоящие перед ними задачина более простые. Эти же документы служат для проверки правильности решений, принимаемыхна каждом шаге, а также отслеживания общего хода работ и уточнения оценок ресурсов,необходимых для получения желаемых результатов.Экстремальное программирование, наоборот, представляет так называемые «живые» (agile)методы разработки, называемые также «легкими» процессами.
Они делают упор на использованиихороших разработчиков, а не хорошо отлаженных процессов разработки. Живые методы избегаютфиксации четких схем действий, чтобы обеспечить большую гибкость в каждом конкретномпроекте, а также выступают против разработки дополнительных документов, не вносящихнепосредственного вклада в получение готовой работающей программы.Унифицированный процесс RationalRUP [1,2] является довольно сложной, детально проработанной итеративной модельюжизненного цикла ПО.Исторически RUP является развитием модели процесса разработки, принятой в компанииEricsson в 70-х–80-х годах XX века.
Эта модель была создана Джекобсоном (Ivar Jacobson),впоследствии, в 1987, основавшим собственную компанию Objectory AB именно для развитиятехнологического процесса разработки ПО как отдельного продукта, который можно было быпереносить в другие организации. После вливания Objectory в Rational в 1995 разработкиДжекобсона были интегрированы с работами Ройса (Walker Royce, сын автора «классической»каскадной модели), Крухтена (Philippe Kruchten) и Буча (Grady Booch), а также с развивавшимсяпараллельно универсальным языком моделирования (Unified Modeling Language, UML).35RUP основан на трех ключевых идеях.• Весь ход работ направляется итоговыми целями проекта, выраженными в виде вариантовиспользования (use cases) — сценариев взаимодействия результирующей программнойсистемы с пользователями или другими системами, при выполнении которых пользователиполучают значимые для них результаты и услуги.
Разработка начинается с выделениявариантов использования и на каждом шаге контролируется степенью приближения к ихреализации.• Основным решением, принимаемым в ходе проекта, является архитектурарезультирующей программной системы. Архитектура устанавливает набор компонентов, изкоторых будет построено ПО, ответственность каждого из компонентов (т.е. решаемые имподзадачи в рамках общих задач системы), четко определяет интерфейсы, через которыеони могут взаимодействовать, а также способы взаимодействия компонентов друг сдругом.Архитектура является одновременно основой для получения качественного ПО и базой дляпланирования работ и оценок проекта в терминах времени и ресурсов, необходимых длядостижения определенных результатов.
Она оформляется в виде набора графическихмоделей на языке UML.• Основой процесса разработки являются планируемые и управляемые итерации, объемкоторых (реализуемая в рамках итерации функциональность и набор компонентов)определяется на основе архитектуры.РуководительпроектаСтарт проектаПодготовка средыпроекта и итерацийКонтроль иуправлениеИнженер попроцессуПланированиепроекта и итерацийРуководительпроектаАнализ задачпроектаАнализ потребностейзаинтересованных лицОпределениеконцепции системыРуководительпроектаОценка результатовитерацийСистемныйаналитикСистемныйаналитикСистемныйаналитикОпределениевозможных архитектурАрхитектор ПООпределение методовтестированияТестировщикиРисунок 7.
Пример хода работ на фазе начала проекта.RUP выделяет в жизненном цикле на 4 основные фазы, в рамках каждой из которых возможнопроведение нескольких итераций. Кроме того, разработка системы может пройти через несколькоциклов, включающих все 4 фазы.1. Фаза начала проекта (Inception)Основная цель этой фазы — достичь компромисса между всеми заинтересованнымилицами относительно задач проекта и выделяемых на него ресурсов.На этой стадии определяются основные цели проекта, руководитель и бюджет, основныесредства выполнения — технологии, инструменты, ключевые исполнители. Также,возможно, происходит апробация выбранных технологий, чтобы убедиться в возможностидостичь целей с их помощью, и составляются предварительные планы проекта.36На эту фазу может уходить около 10% времени и 5% трудоемкости одного цикла.Пример хода работ показан на Рис. 7.Инженер попроцессуПодготовка средыдля итерацийПрограммистыКонтроль иуправлениеУточнениезадач системыПоддержка средыОтработкаизмененийПланированиепроекта и итерацийАнализ возможныхархитектурСистемныйаналитикАрхитекторПОРуководительпроектаРазработкакомпонентовАнализ эффективноститестированияУточнениеархитектурыТестированиеи оценкаТестировщикиРуководительпроектаОценка результатовитерацийРисунок 8.
Пример хода работ на фазе проектирования.2. Фаза проектирования (Elaboration)Основная цель этой фазы — на базе основных, наиболее существенных требованийразработать стабильную базовую архитектуру продукта, которая позволяет решатьпоставленные перед системой задачи и в дальнейшем используется как основа разработкисистемы.На эту фазу может уходить около 30% времени и 20% трудоемкости одного цикла.Пример хода работ представлен на Рис. 8.Инженер попроцессуКонтроль иуправлениеПодготовка средыдля итерацийРазработкадокументацииПоддержка средыПланированиепроекта и итерацийОтработкаизмененийОценка результатовитерацийПрограммистыТестированиеи оценкаТестировщикиТехническийписательРуководительпроектаРуководительпроектаРазработкакомпонентовПодготовкаразвертыванияРуководительразвертыванияРисунок 9. Пример хода работ на фазе построения.3.
Фаза построения (Construction)Основная цель этой фазы — детальное прояснение требований и разработка системы,удовлетворяющей им, на основе спроектированной ранее архитектуры. В результатедолжна получиться система, реализующая все выделенные варианты использования.37На эту фазу уходит около 50% времени и 65% трудоемкости одного цикла.Пример хода работ на этой фазе представлен на Рис. 9.4.
Фаза внедрения (Transition)Цель этой фазы — сделать систему полностью доступной конечным пользователям. Наэтой стадии происходит развертывание системы в ее рабочей среде, бета-тестирование,подгонка мелких деталей под нужды пользователей.На эту фазу может уходить около 10% времени и 10% трудоемкости одного цикла.Пример хода работ представлен на Рис. 10.Инженер попроцессуПодготовка средыдля итерацийПрограммистыКонтроль иуправлениеПоддержка средыРазработкадокументацииРаз/доработкакомпонентовНетПланированиепроекта и итерацийОтработкаизмененийТехническийписательТестированиеи оценкаРуководительпроектаИнтеграцияРуководительразвертыванияРуководительпроектаОценка результатовитерацийДаДостаточноекачество?ТестировщикиТестированиеи оценкаДостаточноекачество?НетДаСледующаяитерацияПодготовкапродуктаКонец проектаРисунок 10.
Пример хода работ на фазе внедрения.Артефакты, вырабатываемые в ходе проекта, могут быть представлены в виде баз данных итаблиц с информацией различного типа, разных видов документов, исходного кода и объектныхмодулей, а также моделей, состоящих из отдельных элементов. Основные артефакты и потокиданных между ними согласно RUP изображены на Рис. 11.Наиболее важные с точки зрения RUP артефакты проекта — это модели, описывающиеразличные аспекты будущей системы. Большинство моделей представляют собой наборыдиаграмм UML.