Skip to content
IRC-CodingIRC-Coding
UMLUse CaseGRASPSOLIDDesign PatternsАрхитектурные паттерны

Анализ и проектирование: UML, Use Cases, GRASP, SOLID

Анализ требований (Use Cases, UML), проектирование (классы, диаграммы), GRASP, SOLID и архитектурные паттерны.

S

schutzgeist

1 min read
Анализ и проектирование: UML, Use Cases, GRASP, SOLID

Применение аналитических и проектных методов

Этот материал поясняет концепцию анализа и проектирования, включая контрольные вопросы, ключевые компоненты и теги.

In a Nutshell

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

Краткое описание

Анализ

Цель: однозначность, тестируемость, определение границ системы.

Типичные артефакты:

  • Описания прецедентов
  • UML-диаграммы
  • Глоссарий
  • Критерии приемки

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

Цель: жизнеспособная архитектура и процессы.

  • Структурные модели: диаграмма классов
  • Поведенческие модели: диаграммы последовательности, активности, состояния
  • Уточнение: пред- и постусловия, при необходимости OCL

Принципы и эвристики:

  • GRASP (например, Controller, Creator, Low Coupling, High Cohesion)
  • SOLID (SRP, OCP, LSP, ISP, DIP)

Атрибуты качества (Security, Performance, надежность) фиксируются как нефункциональные требования и решаются через архитектурные тактики.

Контрольные моменты

  • Анализ = “Что?”, Проектирование = “Как?”
  • Критерии приемки формулировать измеримо
  • Структуру и поведение моделировать отдельно
  • GRASP: распределить ответственности осмысленно
  • SOLID: продемонстрировать (значимо для IHK)
  • Требования к качеству как сценарии
  • Трассируемость: требование → модель → тест
  • Версионирование + утверждения

Ключевые компоненты

  1. Сбор требований
  2. Структурная модель (диаграмма классов)
  3. Поведенческая модель (последовательность/активность)
  4. Модель состояний (жизненный цикл)
  5. Уточнение (пред-/постусловия/OCL)
  6. Принципы проектирования (SOLID)
  7. Ответственности (GRASP)
  8. Паттерны (Patterns/архитектурные паттерны)
  9. QA (обзоры, прототипы, TDD)
  10. Трассируемость

Практический пример (онлайн-магазин: заказ)

Анализ:
- Актор: Клиент
- Прецедент: "Оформить заказ"
- Критерий приемки: Платеж авторизован -> Заказ создан

Проектирование (фрагмент):
- Классы: Order, Cart, Payment
- Сервис: OrderService
- Адаптер: PaymentServiceAdapter
- Хранилище: OrderRepository

Процесс:
- Вычислить сумму
- Авторизовать платеж
- Сохранить заказ
- Отправить подтверждение

Достоинства и недостатки

Достоинства

  • Лучшая коммуникация
  • Выше тестируемость
  • Меньше рисков изменений

Недостатки

  • Начальные затраты
  • Риск избыточного моделирования
  • Требует дисциплины при ведении и версионировании

Типичные контрольные вопросы (с кратким ответом)

  1. Анализ против проектирования? Анализ описывает что, проектирование конкретизирует как.
  2. Зачем GRASP? Распределить ответственности осмысленно.
  3. Зачем SOLID? Улучшить поддерживаемость и тестируемость.
  4. Как обеспечить консистентность между прецедентом и моделями? Сообщения в диаграмме последовательности соответствуют операциям в диаграмме классов.

Стратегия обучения

  1. Написать прецедент и критерии приемки.
  2. Диаграмма последовательности для основного сценария.
  3. Распределить ответственности (GRASP).
  4. Проверка SOLID + модульные тесты.

Далее в пути обучения SOLID

Все статьи SOLID теперь завершены. Вернитесь к первой статье: Clean Code и SOLID-принципы.

Основные источники

  1. https://www.omg.org/spec/UML
  2. https://refactoring.guru/design-patterns
Назад к блогу
Share:

Похожие статьи