Софтуерни изисквания и спецификации с UML диаграми
UML диаграми
UML (Unified Modeling Language) е стандартен език за моделиране на софтуерни системи.
Той използва графични елементи (фигури и връзки) за описване на структурата и поведението на системата.
📚 Основни видове UML диаграми
UML диаграмите се делят на две основни групи:
- Структурни диаграми – описват статичната структура на системата.
- Поведенчески диаграми – описват динамичното поведение и взаимодействията между обектите.
🧱 1. Структурни диаграми
🟦 1.1 Диаграма на класовете (Class Diagram)
Показва класовете в системата и връзките между тях.
Фигури и връзки:
- Клас – правоъгълник, разделен на три секции:
- име на класа
- атрибути
- методи
Видове връзки между класовете
🔹 Асоцииране (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) – стрелки, показващи последователността.
Пример:
Препоръчителни инструменти:
- Draw.io
- Lucidchart
- Visual Paradigm
- StarUML
- IntelliJ IDEA UML Plugin