Софтуерни изисквания и спецификации с UML диаграми

UML диаграми

UML (Unified Modeling Language) е стандартен език за моделиране на софтуерни системи.
Той използва графични елементи (фигури и връзки) за описване на структурата и поведението на системата.


📚 Основни видове UML диаграми

UML диаграмите се делят на две основни групи:

  • Структурни диаграми – описват статичната структура на системата.
  • Поведенчески диаграми – описват динамичното поведение и взаимодействията между обектите.

🧱 1. Структурни диаграми

🟦 1.1 Диаграма на класовете (Class Diagram)

Показва класовете в системата и връзките между тях.

Фигури и връзки:

  • Клас – правоъгълник, разделен на три секции:
    1. име на класа
    2. атрибути
    3. методи

Видове връзки между класовете

🔹 Асоцииране (Association)

  • Описание: Представлява структурна връзка между два класа — те „си взаимодействат“ или „знаят един за друг“.
  • Кратност: Показва колко обекта от единия клас могат да бъдат свързани с обект от другия (например 1..*, 0..1, * и т.н.).
  • Пример:
    Клас Учител е асоцииран с клас Ученик, защото учителят преподава на ученика.
    Един учител може да има много ученици (1..*), а ученикът има един учител (1).

🔹 Наследяване (Generalization / Inheritance)

  • Описание: Един клас (подклас) наследява атрибутите и поведението на друг (суперклас).
  • Нотация: Стрелка с празна триъгълна глава (▲), насочена към базовия клас.
  • Пример:
    Клас Куче наследява от Животно, т.е. кучето е вид животно.

🔹 Агрегация (Aggregation)

  • Описание: Специален вид асоциация, при която единият клас съдържа обекти от другия, но те могат да съществуват и самостоятелно.
  • Нотация: Линия с празен ромб (♦) от страната на „цялото“.
  • Пример:
    Клас Отдел съдържа обекти от клас Служител, но служителят може да съществува и извън този отдел.

🔹 Композиция (Composition)

  • Описание: По-силна форма на агрегация, при която „частите“ не могат да съществуват без цялото.
  • Нотация: Линия със запълнен ромб (◆) от страната на „цялото“.
  • Пример:
    Клас Къща съдържа обекти от клас Стая – ако къщата бъде унищожена, стаите също изчезват.

📘 Обобщаваща таблица

Връзка Символ Означава Пример Зависимост
Асоцииране Взаимодействие Учител ↔ Ученик Слаба
Наследяване Йерархия („е вид“) Куче → Животно Силна (типова)
Агрегация Част от, но самостоятелна Отдел ♦— Служител Средна
Композиция Част от, без самостоятелност Къща ◆— Стая Много силна

🟩 1.2 Диаграма на компонентите (Component Diagram)

Показва как софтуерът е разделен на модули/компоненти.

Пример:


🟧 1.3 Диаграма на разгръщане (Deployment Diagram)

Показва как системата е разпределена по физически устройства (сървъри, клиенти).

Пример:


🔄 2. Поведенчески диаграми

🟪 2.1 Диаграма на случаите на употреба (Use Case Diagram)

Показва актьорите и действията, които могат да извършват в системата.

Фигури и връзки:

  • Актьор (Actor) – човече или икона, представляваща потребител или външна система.
  • Use case – елипса, описваща функционалност.
  • Връзка – линия между актьор и use case.
  • Include / Extend – обозначават зависимост между действията.

Пример:


🟨 2.2 Диаграма на последователността (Sequence Diagram)

Показва взаимодействията между обектите във времето.

Елементи:

  • Лайфлайн (lifeline) – вертикална линия за обект.
  • Съобщение (message) – стрелка между обекти.
  • Активност (activation) – правоъгълник върху лайфлайн, когато обектът е активен.

Пример:


🟥 2.3 Диаграма на активностите (Activity Diagram)

Описва работния процес (workflow) на даден процес.

Елементи:

  • Начало/Край – черен кръг / концентричен кръг.
  • Дейност (Activity) – правоъгълник със заоблени ъгли.
  • Решение (Decision) – ромб.
  • Потоци (Flow arrows) – стрелки, показващи последователността.

Пример:

Препоръчителни инструменти: