Модель концептуальных классов
Теория
Что такое модель предметной области?
Модель предметной области – это основа для общения между участниками проекта. Она представляет собой визуализацию ключевых понятий, их свойств и взаимосвязей, характерных для предметной области, без привязки к программной реализации.
Основные цели модели:
- Единый язык: Обеспечение общего понимания между разработчиками и специалистами предметной области.
- Структурирование знаний: Преобразование требований и описаний прецедентов в четкую и логичную структуру.
- Базис для реализации: Служит основой для дальнейшего проектирования и программирования.
Основные понятия
Концептуальный класс
Концептуальные классы представляют собой ключевые понятия или объекты предметной области. Они выделяются на основе анализа требований и описаний прецедентов.
Примеры концептуальных классов:
- В предметной области "Кафе": Напиток, Рецепт, Ингредиент.
- В предметной области "Библиотека": Книга, Автор, Читатель.
Если объект не является примитивным (например, числом или строкой), скорее всего, это концептуальный класс.
Связи (Ассоциации)
Ассоциации описывают, как классы взаимодействуют друг с другом в предметной области.
-
Формат:
ИмяТипа - ГлагольнаяФраза - ИмяТипа
Пример:
Напиток - ГотовитсяПо - Рецепт
-
Роли ассоциаций:
- Кратность (например, "1", "*", "0..1").
- Направление связи.
Пример:
Напиток (1) - ГотовитсяПо - Рецепт (*)
Атрибуты
Атрибуты – это свойства классов, выраженные через простые типы данных (числа, строки, даты и т.п.).
Пример:
- Класс "Напиток" может иметь атрибуты: название, объем, калорийность.
Создание модели предметной области
Шаги:
-
Анализ описания прецедента:
Выделите существительные из текста (ключевые понятия). -
Определение классов:
Из выделенных существительных отберите те, которые представляют реальные объекты или концепции. -
Построение диаграммы концептуальных классов:
- Изобразите классы как прямоугольники с названиями.
- Добавьте связи (ассоциации) между классами.
- При необходимости укажите атрибуты и кратности.
-
Уточнение модели:
- Убедитесь, что модель отражает терминологию предметной области.
- Исключите программные термины и детали реализации.
Пример модели
Описание прецедента:
Прецедент: "Приготовление напитка"
Основной успешный сценарий:
- Пользователь выбирает рецепт.
- Система отображает список ингредиентов.
- Пользователь подтверждает приготовление.
- Напиток готовится.
Выделенные концептуальные классы:
- Напиток
- Рецепт
- Ингредиент
Диаграмма концептуальных классов (PlantUML)
@startuml
' Определение классов
class Напиток {
+название
+объем
+калорийность
}
class Рецепт {
+название
+время_готовки
+сложность
}
class Ингредиент {
+название
+количество
+единица_измерения
}
' Определение связей
Напиток "1" - "*" Рецепт : ГотовитсяПо >
Рецепт "1" - "*" Ингредиент : Содержит
@enduml
Если нужно разместить классы горизонтально нужно использовать --
Напиток "1" -- "*" Рецепт : ГотовитсяПо >
Рецепт "1" -- "*" Ингредиент : Содержит
Советы для разработчиков
-
Анализируйте термины предметной области:
Избегайте технических терминов, используйте язык заказчика и аналитика. -
Ищите связи и зависимости:
Определите, какие классы связаны, и какие ассоциации между ними наиболее логичны. -
Добавляйте только необходимые атрибуты:
Не перегружайте модель, добавляйте свойства только при необходимости. -
Обсуждайте модель с аналитиками и предметными экспертами:
Убедитесь, что она правильно отражает суть предметной области.