Sequence Diaqramları
Sequence diaqramları UML-in davranış diaqramlarından biridir və obyektlər arasında mesaj mübadiləsinin vaxt ardıcıllığı ilə təsvirini göstərir. Bu diaqramlar sistemin dinamik davranışını, obyektlərin qarşılıqlı əlaqəsini və proseslərin necə baş verdiyini vizual şəkildə təqdim edir.
Sequence diaqramları xüsusilə sistem dizaynı, API dokumentasiyası, biznes proseslərinin təsviri və test ssenarilərinə yazılmasında çox faydalıdır. Onlar zaman faktoru nəzərə alaraq obyektlər arasında olan əlaqələri göstərir və mürəkkəb proseslərin anlaşılmasını asanlaşdırır.
Sequence Diaqramının Əsas Komponentləri
1. Aktor (Actor)
Aktor sistemə xaricdən təsir edən bir varlığı təmsil edir. Bu insan, başqa sistem və ya xarici servis ola bilər.
2. Obyekt (Object)
Sequence diaqramında iştirak edən sistem komponentlərini və ya siniflərin nümunələrini təmsil edir.
3. Lifeline (Həyat Xətti)
Hər aktor və obyekt üçün şaquli xətt çəkilir ki, bu da həmin varlığın diagram müddətində mövcudluğunu göstərir.
4. Aktivasiya Qutusu (Activation Box)
Lifeline üzərində yerləşən və obyektin aktiv olduğu zaman müddətini göstərən düzbucaqlı qutu.
5. Mesaj (Message)
Obyektlər arasında həyata keçirilən kommunikasiya və ya funksiya çağırışları.
6. Return Mesajı
Funksiya çağırışının cavabını və ya nəticəsini göstərən mesaj.
Mesaj Növləri
1. Synchronous Message (Sinxron Mesaj)
- Göndərən obyekt cavab gözləyir
- Dolu ox başı ilə gösterilir:
→
2. Asynchronous Message (Asinxron Mesaj)
- Göndərən obyekt cavab gözləmir
- Açıq ox başı ilə gösterilir:
⇢
3. Return Message (Qayıdış Mesajı)
- Funksiya çağırışının nəticəsi
- Qırıqlı xətt ilə gösterilir:
⇠
4. Self Message (Özünə Mesaj)
- Obyekt öz metodunu çağırır
- Lifeline üzərində dövrə şəkil alır
5. Create Message (Yaratma Mesajı)
- Yeni obyektin yaradılması
<<create>>stereotipi ilə işarələnir
6. Destroy Message (Məhv Etmə Mesajı)
- Obyektin məhv edilməsi
<<destroy>>stereotipi ilə işarələnir və lifeline X ilə bitir
Praktik Nümunə: Onlayn Sifariş Sistemi
Sadə Sifariş Prosesi
Detallı E-ticarət Sifariş Prosesi
Mürəkkəb Sequence Diaqramı
PlantUML ilə Sequence Diaqramı
Kitabxana Sistemi Nümunəsi
@startuml
participant Member
participant LibrarySystem as LS
participant Database as DB
participant BookService as BS
participant NotificationService as NS
Member -> LS : searchBook("Java Programming")
activate LS
LS -> DB : findBooks("Java Programming")
activate DB
DB --> LS : bookList
deactivate DB
LS --> Member : displaySearchResults(bookList)
Member -> LS : borrowBook(bookId, memberId)
LS -> BS : checkAvailability(bookId)
activate BS
BS -> DB : getBookStatus(bookId)
activate DB
DB --> BS : bookAvailable
deactivate DB
alt book available
BS -> DB : updateBookStatus(bookId, "borrowed")
activate DB
DB --> BS : statusUpdated
deactivate DB
BS -> DB : createBorrowRecord(bookId, memberId)
DB --> BS : recordCreated
deactivate DB
BS --> LS : borrowSuccessful
LS -> NS : sendConfirmationEmail(memberId, bookId)
activate NS
NS --> LS : emailSent
deactivate NS
LS --> Member : borrowConfirmation
else book not available
BS --> LS : bookNotAvailable
LS --> Member : errorMessage("Book not available")
end
deactivate BS
deactivate LS
@enduml
Sequence Diaqramında İstifadə Olunan Konstruksiyalar
1. Alt/Else (Alternativ)
2. Loop (Təkrarlama)
3. Par (Paralel Proseslər)
4. Opt (İxtiyari)
5. Break (Fasilə)
6. Critical (Kritik Bölgə)
Sequence Diaqramı Best Practice-ləri
1. Aydın Adlandırma
✅ Düzgün:
- getUserProfile()
- processPayment()
- sendNotification()
❌ Yanlış:
- doSomething()
- process()
- handle()
2. Məntiqli Qruplaşdırma
Əlaqədar mesajları bir yerdə saxlayın
Sequence-i sol-sağ istiqamətində təşkil edin
Çox uzun diaqramları alt-diaqramlara bölün
3. Səhv Hallarının Nəzərə Alınması
4. Return Mesajlarının İstifadəsi
Mikroservis Arxitekturasında Sequence Diaqramları
API Gateway Pattern
Event-Driven Architecture
Test Ssenariləri üçün Sequence Diaqramları
API Test Ssenarisi
Sequence Diaqramı Alətləri
1. Onlayn Vasitələr
- Mermaid.js: Markdown-friendly
- SequenceDiagram.org: Sadə və sürətli
- WebSequenceDiagrams: Professional
- Draw.io: Vizual editor
2. Desktop Tətbiqlər
- StarUML: Professional UML suite
- Visual Paradigm: Tam funksiyalı
- Enterprise Architect: Korporativ həll
- PlantUML: Text-based
3. IDE Plugin-ləri
- IntelliJ IDEA: Sequence diagram plugin
- VS Code: Mermaid extension
- Eclipse: UML plugins
- Sublime Text: PlantUML plugin
Ümumi Səhvlər və Onlardan Çəkinmə
1. Çox Mürəkkəb Diaqramlar
Səhv: Bütün detalları bir diaqramda göstərmək
Düzgün: Hər scenario üçün ayrı diaqram yaratmaq
2. Vaxt Ardıcıllığını Pozmaq
Səhv: Mesajları təsadüfi sırayla göstərmək
Düzgün: Real-time sequence-i izləmək
3. Return Mesajlarını Unutmaq
Səhv: Yalnız request mesajlarını göstərmək
Düzgün: Response mesajlarını da daxil etmək
4. Activation Box-ların Yanlış İstifadəsi
Səhv: Bütün lifeline-də aktivasiya göstərmək
Düzgün: Yalnız aktiv olduqda activation box istifadə etmək
Performance və Scalability Göstəricisi
Zaman Məhdudiyyətləri
Caching Strategiyası
Nəticə
Sequence diaqramları proqram təminatı inkişafının müxtəlif mərhələlərində vacib rol oynayır:
- Dizayn mərhələsində: Obyektlər arası qarşılıqlı əlaqənin planlaşdırılması
- İmplementasiya zamanı: API çağırışlarının ardıcıllığının təyin edilməsi
- Test mərhələsində: Test ssenarilərinə yaradılması
- Sənədləşdirmədə: Sistem davranışının vizual təsviri
- Debug prosesində: Sistem axınının təhlil edilməsi
Düzgün hazırlanmış sequence diaqramları:
- Mürəkkəb proseslərin anlaşılmasını asanlaşdırır
- Komanda üzvləri arasında ünsiyyəti təkmilləşdirir
- API dizaynının optimallaşdırılmasına kömək edir
- Test coverage-in artırılmasında istiqamət verir
- Sistem performansının təhlil edilməsini dəstəkləyir