UML/UP ile Yazılım Geliştirme
Bölüm 7/7
İçerik
• UML’in Sizin için Anlamı• UML Şemaları, Semboller ve Semantik İlişkileri• Şema ve Model Bazlı UML Çalışmaları
Arasındaki Farklar• Alternatif Yazılım Geliştirme Süreçlerinde
UML'in Yeri• UML ile Gereksinim Yönetimi• UML ile Nesne Yönelimli Tasarım
Neredeyiz?
İlgili Roller
Analiz Modeli Girdileri
Analiz Modeli Oluşturma Aşamaları
1 < N < 5}
Analiz ve Tasarım Model Yapısı
• Analiz (veya Tasarım) Paketleri • Gerek duyulduğunda class başına ve/veya modül
genelinde State Machine şemaları• Kullanım Senaryosu Gerçekleştirilmeleri (Use Case
Realizations)• Temel Soyutlamalar (Sadece Analiz Modelinde)• Katmanlar ve Modüller (Özellikle Tasarım Modelinde)
Use Case Realizations İçeriği
Analiz veya Tasarıma aitliğine bakılmaksızın Use Case başına,
• Bir Class Şeması: VOPC (View of Participating Classes)2. Bir Class Şeması: Traceabilities3. N sayıda Etkileşim Şeması
1 < N < Akış Sayısı
1 = Temel Akış her zaman alınır.
Analiz/Tasarım ModeliÇalışmaları
Modeller ve Modüller“Analysis Elements”
Modeller ve Modüller“Design Elements”
Modeller ve Modüller“UCR – Analysis Mapping”
Modeller ve Modüller“UCR – Design Mapping”
Senaryo – Class İlişkisi
Aynı class birden fazla UCR’da,kullanılabilir. Böylece class’ların sorumlulukları bir takım çalışmasıyla senaryo ihtiyaçlarına bağlı olarak zamanla eksiksizleşir.
‘1’
‘2’
‘3’
Diğer Tasarım Seviyesi Modelleri
Tasarımcı:• Deployment Modeli• İmplementasyon Modeli (*)Veritabanı Analisti:• Veritabanı Modeli (Data Model)Kullanıcı Arayüzü Tasarımcısı:• Kullanıcı Etkilişimi Modeli (Human
Interaction / User Experience Model)
Diğer Tasarım Seviyesi Modelleri“Deployment Modeli”
Deployment ŞemasıÖrneği
Diğer Tasarım Seviyesi Modelleri“Veritabanı Modeli”
Diğer Tasarım Seviyesi Modeli“Kullanıcı Etkileşimi Modeli”
Diğer Tasarım Seviyesi Modelleri“Kullanıcı Etkileşimi Modeli”
İçerik
• Analiz ve Tasarım Modelleri Yapısı• Analiz Class’ları• Class Bulma Teknikleri• Tasarıma Geçiş Teknikleri
Analiz Class’ları Nelerdir?
• Analiz class’ları bulunurken üç farklı referans kullanılır:
• Sistem ve aktörleri birbirlerinden ayıran sınırlar• Sistemin kullandığı bilgi türleri• Sistemin akış mantığı
Analiz Class’ları Nelerdir?
<<boundary>>
<<entity>>
<<control>>
=
=
=
Stereotype aynı sembolle ifade edilen nesneleri ayrıştırmaya yarar.
Analiz Class’ı Çeşitleri
<<boundary>>
<<boundary>>
<<entity>>
<<control>>
<<entity>>
<<boundary>>
Aktör1
Aktör2
Sistemin dış dünyayla etkileşimini sağlar
Sistemdeki verileri depolar ve yönetir
Use Case davranışını koordine eder
Boundary Class
• Sistemin sağladığı işlevler ile kullanıcıları arasındaki etkileşimleri sağlar– User interface class’ları
• Kullanıcıya sağlanan bilgilere odaklanır• UI detay özellikleri bu aşamada göz önüne alınmaz• Örnek: ViolationsDialog
– System / Device interface class’ları• Hangi protokollerin tanımlanması gerektiğine odaklanır.
Protokollerin implementasyon detayları bu aşamada göz önüne alınmaz
• Örnek: OffendersDBProxy
Entity Class
• Sistemin temel kavramlarının bir modelidir• Genellikle saklanacak bilgileri ifade eder• Sistem seviyesindeki mantığı içerir• Ortamdan bağımsızdır• Birden fazla use case’de kullanılabilir
Control Class
• Use case’in davranışını kontrol ve koordine eder• Use case’in yerine getirmesi gerekenleri iş bazında
class’lara atar– Bir control class’ı diğer class’lara bir şey yapmaları isteğini
iletmeli ve kesinlikle atama haricinde bir iş yapmamalıdır
• Boundary ve entity class’larını bir araya getirir• Genellikle her use case için bir control class’ı vardır
Çok Katmanlı Mimari
Tasarımdaki karşılıkları aşağıdaki gibi olabilir (Java/J2EE):
• Arayüz Katmanı: JSP• İş Mantığı Katmanı: Session Beans + Servlets• Veri Katmanı: Entity Beans • + Veri Erişim Katmanı, vs. vs.
İçerik
• Analiz ve Tasarım Modelleri Yapısı• Analiz Class’ları• Class Bulma Teknikleri• Tasarıma Geçiş Teknikleri
Analiz Class’larını Bulma Yolları
1. Her use case için:a. Dokümanına başvurunuz. b. Entity class’larını bulunuzc. Boundary ve Control class’larını bulunuzd. Her class için:
i. Değişkenlerini bulunuzii. İlişkilerini (Mesajları da içerir) bulunuz
2. Modelin bir sağlamasını yapınız
Analiz Class’larını Bulma Yolları
//
Class’ları Bulacağımız Yerler 1
Birincil kaynağın UC Dokümanı olduğunu aklımızda tutarak,Eğer Use Case Dokümanı sorunluysa:• UC tanımı her zaman analiz class’larını bulmak için kafi
olmayabilir– Önce Entity class’ları bulunmalıdır
• Müşteriye yönelik yazılan uc tanımına gerekli sistem reaksiyonlarını ifade edecek detaylar (sistem içi davranışlar) eklenebilir
• Sistemin dışarıdan gözlenen davranışlarına sebep olan iç özelliklerine odaklanmak gerekebilir
Class’ları Bulacağımız Yerler 2
• Class’lar aşağıdaki dokümanlarda gizlenebilirler:– Gereksinim Dokümanları– Use case modeli– Müşteri istekleri– Problem domain– Proje dokümanları
Class’ları Bulacağımız Yerler 3
• Boundary class’ları– Her aktör / uc ikilisi için en az bir tane olmalıdır
• Control class’ları– Genellikle her uc için bir tane vardır– Benzer control class’ları varsa ait oldukları
uc’ler birleştirilebilirler• Örnek: “manage traffic report”, “edit/add/remove
traffic report” use case’lerini barındırabilir.
İsim Ayıklama Yöntemi“Noun Filtering”
İsim Ayıklama Yöntemi“Noun Filtering”
• Entity Class’ları– Problem tanımı, gereksinim ve diğer mevcut
dokümanlardaki isimleri inceleyerek bulunur– Bulunan isimler:
• Nesneler• Nesnelerin değişkenleri• Aktörler• Hiçbiri olabilir
İsim Ayıklama Yöntemi“Noun Filtering”
Problem metninin dikkatle okunarak, herhangi bir hatalı düşünce şeklinden kötü olarak etkilenmemek için bulunan tüm isimlerin listelenmesidir.
Daha sonra bulunan isimlerden entity class’ı olamayacaklar elenir.
İsim Eleme Nedenleri 1
• Birbirine eş class’lar– Yalnızca isimlendirme farklı
• İlgisiz class’lar– Oluşturulacak sistem için anlamsız
• Değişkenler / Metodlar– İlkel veri tipleri– Veri işleme şekilleri
İsim Eleme Nedenleri 2
• Roller– Class’dan ziyade bir class’dan türetilebilecek nesne
adayları• Örnek: “Asistan” ve “Öğrenci” “Kişi” class’ın farklı rolleridir.
• Soyut kavramlar– Fiziki olarak mevcut olmayan değerlerdir– Nadiren analiz class’ına dönüşürler. Daha çok değişken
adaylarıdır: “İstek”, “Satış”– Tasarım aşamasında class’lara dönüşebilirler.
Değişkenleri Bulma Yolları
• Saptanan class’ların özelliklerini ifade ederler– Bu class’larca taşınacak veri yapılarıdır
• Class’a dönüşmeyen isimler– Akış içinde değeri önemli olan veri yapılarıdır– Bir nesne tarafından benzersiz bir biçimde
sahiplenilecek değerlerdir
İlişkileri Bulma Yolları
• İlişki (Association) genellikle bir fiile karşılık gelir– Mekan: yanında, içinde, üstünde … – Eylem: oluşturmak, yönetmek … – Haberleşme: konuşur, dinler, onaylar, uyarır … – Sahiplik: aidiyet, parça, bütün ...– Diğer: çalışır, evlidir, okur ...
• Problem ve Çözümle ilgisiz ilişkileri göz ardı ediniz • Nesne Etkileşim Şemaları ilişkileri bulmanın en
etkili yoludur
Örnek: Trafik Denetim Sistemi
• Entity Class adayları:
Trafik Raporu
Süpervizör
Rapor Okuması
Konfirmasyon
Suçlu Detayları Formu
T. Raporuna Eklenen
Sistem
Suçlu
Police memuru
Araç no
Plaka no
Hata
Trafik polisi
Polis şefi
Suç
ID
Password
Polis merkezi
Kapanma
Tarih
Hız
Trafik hatası
Memur
Eşdeğer Class’ları Eleme
Memur ve Bilirkişi Kişi ile temsil edilecek
Trafik Raporu
Süpervizör
Rapor Okuması
Konfirmasyon
Suçlu Detayları Formu
T. Raporuna Eklenen
Sistem
Suçlu
Police memuru
Araç no
Plaka no
Hata
Trafik polisi
Polis şefi
Suç
ID
Password
Polis merkezi
Kapanma
Tarih
Hız
Trafik hatası
Memur
İlgisiz Class’ları Eleme
Trafik Raporu
Kişi
Rapor Okuması
Konfirmasyon
Suçlu Detayları Formu
T. Raporuna Eklenen
Suçlu
Police memuru
Araç no
Plaka no
Trafik polisi
Polis şefi
Suç
ID
Password
Polis merkezi
Kapanma
Tarih
Hız
Değişken ve Metod Eleme
Trafik Raporu
Kişi
Rapor Okuması
Konfirmasyon
Suçlu Detayları Formu
T. Raporuna Eklenen
Suçlu
Police memuru
Araç no
Plaka no
Trafik polisi
Polis şefi
Suç
ID
Password
Kapanma
Tarih
Hız
Soyut Kavramları Eleme
Trafik Raporu
Kişi
Konfirmasyon
Suçlu Detayları Formu
Suçlu
Police memuru
Trafik polisi
Suç
Örnek: Trafik Denetim Sistemi
Ayıklama Öncesi:
Trafik Raporu
Süpervizör
Rapor Okuması
Konfirmasyon
Suçlu Detayları Formu
T. Raporuna Eklenen
Sistem
Suçlu
Police memuru
Araç no
Plaka no
Hata
Trafik polisi
Polis şefi
Suç
ID
Password
Polis merkezi
Kapanma
Tarih
Hız
Trafik hatası
Memur
Örnek: Trafik Denetim Sistemi
Trafik Raporu
Kişi
Suçlu Detayları Formu
Suçlu
Police memuru
Trafik polisi
Suç
Ayıklama Sonrası:
• Trafik raporu• Kişi• Suçlu Detayları Formu• Suçlu• Polis memuru• Trafik polisi• Suç• …
Entity class’ları
Bazen bu listede boundary class’ları da kendilerini bariz olarak gösterirler. Ancak bu class’ları bulmanın en iyi yolu UC akışını incelemektir.
Boundary class’ları
• RaporDetaylariFormu• PolisDetaylariFormu• RaporIzlemeFormu• KonfirmasyonEkrani• SucluDBProxy• PolisDBProxy• ...
Veri Tabanına erişim katmanındaki interface’ler.
Control Class’ları
• RaporKontrol• LoginKontrol
Use Case’ler
• Rapor Et– Rapor Ekle– Rapor Sil– Rapor İzle– Rapor Güncelle
• Sisteme Bağlan
Analiz Class’ları 1
Analiz Class’ları 2
Violation
EditReportController<<control>>
Traf f icReport
Of f ender Traf f icPoliceman
Clerk
ReportDetailsForm<<boundary >>
Conf irmationDialog<<boundary >>
PolicemanDBProxy<<boundary >>
Of f endersDBProxy<<boundary >>
Of f endersDB
PolicemenDB
1
1 1
1
1
İçerik
• Analiz ve Tasarım Modelleri Yapısı• Analiz Class’ları• Class Bulma Teknikleri• Tasarıma Geçiş Teknikleri
Gereksinim ve Analiz Aşamalarında odağımız:– “Doğru işi yapmak”– Konuyu anlamak– Gereksinim ve kısıtlamaları anlamak ve berraklaştırmak – Tasarımdan ziyade problemi anlamak
Tasarım Aşamasında odağımız: – “İşi doğru yapmak”– Paydaşların isteklerini karşılayan yazılımı onlara sunabilmek.
Tasarıma GeçişTasarıma Geçiş
Gereksinimlerden TasarımaGereksinimlerden TasarımaGereksinim ürünleri Tasarımı yönlendirir.Gereksinim ürünleri Tasarımı yönlendirir.
Domain Model Use Case Model
Supplementary Specs
(Req list and attributes,. . . )
Software ArchitectureDocument
Design Model Data Model
. . .
. . .
Nesne Etkileşim Şemaları
• Communication şemaları nesnelere tepeden bakarak birlikteliği değerlendirebilmemizi sağlar.
• Sequence şemaları nesneler arasındaki mesajlaşma ve nesne ömürlerine odaklanarak nesne sorumluluklarını güncellememize yardımcı olur.
Nesnelere Sorumluluk AtamaNesnelere Sorumluluk AtamaŞimdi ne olacak?Şimdi ne olacak?Bu mesajı hangi nesne kabul edecek?Bu mesajı hangi nesne kabul edecek?Bu isteği yerine getirmek için hangi mesajlar Bu isteği yerine getirmek için hangi mesajlar nasıl sıralanacak?nasıl sıralanacak?
???
Presentation
ApplicationLogic
Video Store
Record Rental
Video ID
...
...
...
... ...
Clerk
appLogicRequest()
Now what happens?
Sorumluluk Odaklı TasarımSorumluluk Odaklı TasarımDetaylı class tasarımı genellikle aşağıdaki varsayımlarla yapılır:Detaylı class tasarımı genellikle aşağıdaki varsayımlarla yapılır:– Nesnelerin sorumlulukları vardırNesnelerin sorumlulukları vardır– Nesneler birlikte çalışırlarNesneler birlikte çalışırlar– Tıpkı insanlara benzerlerTıpkı insanlara benzerler
Dolayısıyla Sorumluluk Odaklı Tasarım’da aşağıdaki soruları Dolayısıyla Sorumluluk Odaklı Tasarım’da aşağıdaki soruları soracağız:soracağız:– Bu nesnenin sorumlulukları nelerdir? Bu nesnenin sorumlulukları nelerdir? – Hangi nesnelerle birlikte çalışması gerekiyor?Hangi nesnelerle birlikte çalışması gerekiyor?
Class SorumluluklarıClass Sorumlulukları
Sorumluluklar çeşitli kapsamlarda olabilirler:– Veri saklanması (persistence) sorumluluğu.
Üst seviyedeki bir sorumluluk.– K.D.V. hesaplanması sorumluluğu.
Daha alt seviyedeki bir sorumluluk.Bu sorumluluklar genellikle class’lara fonksiyonlar olarak ekleneceklerdir.Gerekiyorsa bir grup class tarafından gerçekleştirilebilirler.
Tasarım Teknikleri
• Size/Kurumunuza özel yaklaşımlar• Proje teknolojisine has yaklaşımlar• Proje konusuna has yaklaşımlar• Popüler yaklaşımlar: GOF Tasarım Kalıpları• Denenmiş Nesne Tabanlı Teknoloji Yaklaşımları:
GRASP• Kullandığınız altyapıyla dikte edilen yaklaşımlar• vs. vs.
GOF Tasarım Kalıpları“Strategy”
Örneğin, borcunu düzenli ödeyen kredi kartı sahibiyle ödemeyene farklı yaklaşmak istememiz.
GRASP Teknikleri (Patterns)GRASP Teknikleri (Patterns)
Sorumlulukları atarken izleyebileceğimiz kılavuzlar var mı?Bu kılavuzların en yaygını GRASP teknikleridir (patterns).– General Responsibility Assignment Software
Patterns.– Çok temel ve basit nesne tabanlı tasarım ilkeleridir.
9 GRASP Tekniği9 GRASP Tekniği1. Expert (Konu Uzmanı)2. Creator (Oluşturan)3. Low Coupling (Nesne Bağımlılıklarını Azalt)4. High Cohesion (Metod Alakalarını Yükselt)5. Controller6. Polymorphism7. Pure Fabrication8. Indirection (Dağıtma)9. Don’t Talk to Strangers (Yabancılarla Konuşma)
1. (Information) Expert1. (Information) Expert“Konu Uzmanı”“Konu Uzmanı”
En temel sorumluluk atama ilkesi nedir?Bir sorumluluğu yerine getirmek için gereken veriye sahip nesneye o sorumluluğu atayınız – “İşi yapan gereken bilgiye sahip olandır.”– Örnek: K.D.V.’yi hangi nesne hesaplar? 1. Bu hesaplama için hangi bilgiler gerekli? 2. Hangi nesne veya nesneler bu bilgilerin çoğuna
sahipler?
2. Creator2. Creator“Oluşturan”“Oluşturan”
Hangi nesne X nesnesini oluşturur? Bir C nesne bulmalıyız ki: – C X’i içerir veya ikisi arasında aggregation vardır– C X’i yoğun olarak kullanır– C’de X’’i oluşturmak için gereken ilk veri değerleri
mevcuttur– Vs. vs.
Liste ne kadar uzunsa o kadar iyidir.
3. Low Coupling3. Low Coupling “Nesne Bağımlılığını Azalt” “Nesne Bağımlılığını Azalt”
Class’lara sorumlulukları dağıtırken önemlidir. ‘Low coupling’ ne demek?– Coupling bir elemanın bir diğerine ne derecede bağımlı
olduğunu, onun bilgisine sahip olduğu veya ihtiyaç duyduğunu belirten bir ölçüm birimidir.
Yüksek coupling’e sahip bir class:– Ilişkili olduğu class’lar değiştiğinde değişmek zorunda kalabilir.– Tek başına ne işe yaradığı zor anlaşılır.– Tekrar kullanımı zordur.
4. High Cohesion4. High Cohesion“Metod Alakalarını Artır”“Metod Alakalarını Artır”
Class’lara atanan sorumlulukların birbirlerine yakınlıklarıyla ilgilidir. ‘Cohesion’ ne demek?– Bir elemanın sorumluklarının ne derecede alakalı ve
odaklanmış olduğunu gösteren bir ölçüm birimidir. Birbiriyle çok alakalı sorumluluklara sahip ve çok çeşitli işleri yapmaya kalkmayan bir nesne yüksek ‘cohesion’a sahiptir.
Düşük ‘cohesion’a sahip bir class:– Ne işe yaradığını anlamak, tekrar kullanmak ve bakımını
yapmak zordur.– Kırılgandır; Durmaksızın değişikliklerden etkilenir.
5. Controller5. ControllerHangi nesne UI katmanından gelen (Presentation Hangi nesne UI katmanından gelen (Presentation Layer) istekleri topluyor (Application Layer) istekleri topluyor (Application Coordination Layer)?Coordination Layer)?
???
Presentation
ApplicationLogic
Video Store
Record Rental
Video ID
...
...
...
... ...
Clerk
appLogicRequest()
What object should this be?
6. Polymorphism6. PolymorphismDeğişen fakat benzerlikler de gösteren durumların tasarımı için bir yol.
Farklı durumlara sahip class grubuna bir polymorphic fonksiyon ekleyiniz.– Alternatifi case logic.
Örneğin, çiz()– Kare, Daire, Üçgen
7. Pure Fabrication7. Pure Fabrication“Suni Class / Katman”“Suni Class / Katman”
Expert (uzman) yaklaşımı coupling (nesne bağımlılığı) ve cohesion (metod alakası) problemlerine yol açıyorsa veya başka bir nedenden dolayı bu yaklaşım arzu edilmiyorsa kullanılır. Suni bir class oluşturularak mutlaka konuyla alakalı olması gerekmeyen bir isim verilir.Örneğin videocu’daki veri tabanı kayıtlarını düşünürsek,– Video (mevcut class)– DatabaseFacade (Bir Pure Fabrication)
8. Indirection8. Indirection“Dağıtma”“Dağıtma”
Coupling (nesne bağımlılığı) azaltma yöntemi olarak kullanılır.
Sorumluluğu ikincil nesnelere verip birlikte çalışma (collaboration) derecesini azaltmak.
9. Don’t Talk to Strangers9. Don’t Talk to Strangers“Birliktelik Oluştur”“Birliktelik Oluştur”
Coupling (nesne bağımlılığı) seviyesini nesnelerin yapısal komşuları arasındaki birlikteliğe (collaboration) indirgemek.Bir metodu çalıştırmak için çok sayıda nesneye erişmeyiniz. Bir işi daha çok o nesnenin ‘yakınlarına’ veriniz.
İlham Kaynakları
Christopher Alexander
Martin Fowler Peter Coad
Kelli Houston
Don Box
Top Related