Концепция: Переход от проектирования к разработке кода
В данном разделе обсуждаются преимущества и недостатки различных способов перехода от проектирования к реализации.
Взаимосвязи
Связанные элементы
Основное описание

Введение

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

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

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

Проект также может быть иерархическим, например:

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

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

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

Эскиз и код

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

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

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

Круговая разработка

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

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

Высокоуровневая и подробная модели проектаВ начало страницы

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

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

Единая эволюционная модель проектаВ начало страницы

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

  • диаграммы логической структуры системы
  • спецификации подсистем и компонентов
  • механизмы и шаблоны проекта

Такая модель удобна простотой ее синхронизации с реализацией.

Модели реализации и спецификации

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

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

Рекомендации по применению реализаций и спецификаций подсистем приведены в разделе See Рекомендации по рабочим продуктам: Проектирование подсистем.