Requirement management (rus)

ICONIX

Применение объектного моделирования с использованием UML и анализ прецедентов.

На примере разработки книжного Internet-магазина.

Дуг Розенберг, Кендалл Скотт

 ICONIX – среднее между RUP и XP. В одном руководстве по UML говорится, что 80% всех задач можно промоделировать при помощи 20% UML диаграмм. Главный вопрос ICONIX – как наиболее быстро перейти от модели прецедентов к кодированию. Тут мне наиболее непонятно – почему за исходную точку берется следующее:

  •          Уже проведены работы по созданию прототипа
  •          Уже есть некоторое представление об интерфейсе пользователя
  •          Возможно, уже выявлены некоторые сценарии или прецеденты в системе

Для наглядности изображу: Главный вопрос в начале пути – что должна делать система? Потому, в первую очередь, чтобы написать код, нам потребуется диаграмма классов, причем для каждого класса потребуется описать все атрибуты, то есть данные – члены, и операции, которые представляют собой  функции программы. В итоге должна быть создана диаграмма классов, уровень детализации которых позволит служить шаблоном для создания кода, то есть точно отражать организацию будущей программы. Итого: Теперь требуется описать распределение поведения – то есть определить функции, из которых будет состоять программа (какому классу должна принадлежать каждая функция). Для этого лучше всего подходит диаграмма последовательности. Их разрабатывают отдельно для каждого сценария. На диаграмме последовательности видно, что экземпляры объектов взаимодействуют путем обмена сообщениями, каждое из которых вызывает ту или иную функцию объекта-получателя. Далее требуется перейти от нечетких формулировок прецедента к очень точным и детальным диаграммам последовательности. Это реализуется при помощи диаграммы пригодности  – это незаменимое средство для осуществления перехода между требованиями и проектом. Кстати, прецеденты должны быть предельно точны и недвусмысленны. Что нам ещё необходимо? Модель предметной области (я её называю доменной моделью). По сути – это словарь необходимых абстракций. Существительные, которые описывают понятия из предметной области, называются доменными объектами. На диаграммах пригодности мы будем изображать граничные объекты, например, мониторы. В тексте прецедентов требуется явно ссылаться и на доменные, и на граничные объекты, то есть описывать, как пользователь взаимодействует с монитором. Что получили в итоге:

Процесс описания динамической модели так (хотя для меня до сих пор спорны прототипы на первом месте):

  1.        Начинаем с создания прототипов, которые достаточно просто изобразить на экране
  2.        Заручившись поддержкой пользователей в правильности выбранного пути, нанесем прецеденты на диаграмму, стараясь изобразить все сценарии, которые должна выполнять система.
  3.        Переходим к словестному описанию прецедентов
  4.        Тексты будут уточняться по ходу анализа пригодности. Анализ пригодности помогает при  фиксации требований.

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

  1.        Это тот выявленный минимум набор диаграмм и работ.
  2.        Возможность легкого отслеживания хода работ и мы постоянно возвращаемся к работке над потребностями заказчика.
  3.        Итеративность и инкрементность.

Основные вехи процесса

  1.       Анализ и рецензирование требований

1.1.    Выявите объекты предметной области, а также существующие между ними отношения обобщения и агрегирования. Начните рисовать высокоуровневую диаграмму классов.

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

1.3.    Выявите прецеденты, используя для этой цели диаграммы прецедентов.

1.4.    Организуйте прецеденты в группы. Изобразите группы в виде пакетов.

1.5.    Распределите функциональные требования между прецедентами и объектами предметной области

2.       Анализ и предварительное проектирование

2.1.    Составьте текстовые описания прецедентов – главные и альтернативные потоки.

2.2.    Для каждого прецедента выполнить анализ пригодности:

2.2.1. Выявите приблизительный набор объектов, которые выполняют описанный сценарий.

2.2.2. Добавьте вновь обнаруженные объекты вместе с атрибутами в диаграмму классов из модели предметной области.

2.3.    Завершить модификацию диаграммы классов так, чтобы отражала конец фазы анализа в работе над проектом.

3.       Проектирование

3.1.    Распределите поведение. Для каждого прецедента:

3.1.1. Выявить сообщения, которыми обмениваются объектами, и соответствующие им методы.

3.1.2. Можно отобразить основные транзакции, выполняемые объектами

3.1.3. По желанию – продемонстрировать поведение в реальном времени на диаграмме состояний.

3.2.    Завершить статическую модель, добавив в нее детальную проектную информацию.

3.3.    Вместе с коллегами проверьте, то проект удовлетворяет всем записанным ранее требованиям.

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

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

4.2.    Напишите или сгенерируйте код.

4.3.    Выполните автономное тестирование и тестирование сопряжений.

4.4.    Протестируйте систему и проведите приемно-сдаточные испытания, пользуясь прецедентами как описаниями тестов.

Advertisements
Standard

3 thoughts on “ICONIX

  1. Было бы круто рассмотреть конкретный пример этого метода (пошагово) с реальными объектами, прецендентами, диаграммами и т.д. с картинками.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s