«Введение в Унифицированный процесс разработки ПО». Лекция № 10. Тщательное планирование – ключ к безопасному и быстрому путешествию. Одиссей. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Мы тут! Начало Проектирование Реализация Тестирование Контрольная точка. Архитектуры ЖЦ. Во-первых, раз мы начали II фазу – значит мы полностью закончили I. Следовательно: У нас есть полный набор результирующих артефактов первой фазы, проработанных в необходимом объеме для данного проекта. У нас есть план, как минимум на первую итерацию этой фазы, учитывающий наши предположения. У нас есть цели, которые мы должны реализовать в ходе работ на второй фазе. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Тоньше клиент, толще сервер Клиент А Приложение Объектно-реляционная служба Клиент В Приложение Клиент С Браузер WWW Объектно-реляционная служба Объектно-реляционное ядро Web-сервер Сервер бизнес-объектов Сервер(ы) реляционной или объектной базы данных HTML CGI HTML ISAPI Java Объектно-реляционный ORB Объектно-реляционная служба Объектно-реляционное служба Объектно-реляционное ядро Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Фаза проектирования демонстрирует ряд преимуществ Унифицированного процесса: Осуществление борьбы с основными рисками . Создается начальный архитектурный каркас системы – базовый уровень архитектуры. Совершенствуются и развиваются планы проекта. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Фаза проектирования демонстрирует ряд преимуществ Унифицированного процесса: Осуществление борьбы с основными рисками . Создается начальный архитектурный каркас системы – базовый уровень архитектуры. Совершенствуются и развиваются планы проекта. Разрешение вопроса о степени формальности артефактов. Ни одна из рекомендаций, никогда не должна заменять здравого смысла. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Глобальная цель: выбор и создание базового уровня архитектуры системы, которая должна обеспечить стабильный скелет для основной массы работ по проектированию и реализации во время фазы Реализация. Эта глобальная цель второй фазы разделяется на четыре крупные цели, каждая из которых обеспечивает работу с определенной крупной группой рисков: 1. Риски, связанные с функциональными требованиями (мы действительно создаем то приложение. которое ждет клиент?). 2. Риски, связанные с самой архитектурой (мы действительно создаем устойчивое технологическое решение?). 3. Риски, связанные со сроками и стоимостью (мы вписываемся в наши оценки по срокам и бюджету?) 4. Риски, связанные с процессом и инструментальной средой (нас устраивает та настройка процесса, которую мы используем, и те инструменты, которые мы применяем?) Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Такая интенсивная работа над потенциальными рисками проекта на этой фазе гарантирует, что команда сможет прейти к фазе Реализации с минимум рисков и проблем (а значит с точными оценками бюджета и времени разработки). Для того, чтобы реализовать перечисленные цели необходимо: 1. 2. 3. 4. Более глубоко понять требования. Спроектировать, реализовать и оттестировать базовый уровень архитектуры. Снизить существенные риски и дать более точную оценку сроков и стоимости. Уточнить процесс и установить среду разработки. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Базовый уровень архитектуры: исполняемый эволюционный прототип. Наличие такого прототипа гарантировало успешность спиралевидного процесса. Фаза проектирования и итерации: Матч на своем поле – одна итерация. Матч на чужом поле – пара итераций. Матч с заведомо сильным соперником – три итерации. Предположим , что у нас абсолютно зеленый проект и запланировано две итерации, тогда Первая итерация - наиболее существенные. Вторая итерация – технологические риски. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Первая итерация: Проектируем, реализуем и тестируем как можно больше архитектурнозначимых сценариев для того, чтобы определить необходимый тип архитектуры и архитектурных механизмов. Делаем это как можно раньше и проверяем те предположения относительно архитектуры, которые мы сделали в фазе Начало. Определяем, реализуем и тестируем небольшой первоначальный набор принципиальных архитектурных механизмов. Выполняем предварительный логический дизайн уровня хранения. Описываем последовательность действий для примерно половины из тех вариантов использования, которые дальше будут задействованы в ходе Проектирования, естественно, порядок того, что детализируем, определяется приоритетами вариантов использования. Тестируем, все что можно и все, что нужно, основная цель этой деятельности подтвердить, что архитектурные риски снижаются. Например, как там насчет скорости реагирования? Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Вторая итерация: Сначала исправляем все, что было не так при подведении итогов первой фазы. Проектируем, реализуем и тестируем архитектурно-значимые сценарии, которые остались на этот момент. В рамках этой итерации необходимо обеспечить широту рассмотрения проблемы (так называемый архитектурный охват). Прорабатываем и реализуем следующие моменты: параллельное выполнение, распределенную обработку, процессы, потоки управления и физическое распределение системы. Порядок работы определяется технически наиболее рискованными для целевого проекта проблемами. Тестируем так же производительность, загрузку и проверяем интерфейсы между нашими подсистемами и внешними интерфейсами. Определяем, реализуем и тестируем, оставшиеся архитектурные механизмы. Фаза Проектирование (Elaboration ). Девиз фазы: Необходимо разобраться, а как мы это будем разрабатывать? Вторая итерация: Проектируем и реализуем черновую версию уровня хранения. Специфицируем второю половину вариантов использования, работа над которыми была запланирована на эту итерацию. Тестируем, совершенствуем и оцениваем архитектуру. основная задача обеспечить ту самую архитектурную основу для разрабатываемого приложения. Архитектурная основа означает, что принятые на этом этапе решения в дальнейшем будут выступать в роли базиса системы. В принципе в архитектуру могут быть внесены изменения, но при этом желательно избежать коренной переработки архитектуры, если только такая работа не связана с решением критических проблем. Если не получается привести архитектуру к стабильному состоянию за то количество итераций, которое было запланировано в начале фазы, то нужно добавить в эту фазу еще одну итерацию. Такое решение, естественно, замедлит выполнение проекта, но в случае продолжения работ без прочного архитектурного скелета, можно получить гораздо больше проблем, как временных, так и финансовых.