007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

74
UML/UP ile Yazılım Geliştirme Bölüm 7/7

description

Unified Process ve UML ile Yazılım Geliştirme - 7 - Analiz ve Tasarım

Transcript of 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Page 1: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

UML/UP ile Yazılım Geliştirme

Bölüm 7/7

Page 2: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İç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

Page 3: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Neredeyiz?

Page 4: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İlgili Roller

Page 5: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Analiz Modeli Girdileri

Page 6: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Analiz Modeli Oluşturma Aşamaları

1 < N < 5}

Page 7: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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)

Page 8: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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ı

Page 9: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Modeller ve Modüller“Analysis Elements”

Page 10: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Modeller ve Modüller“Design Elements”

Page 11: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Modeller ve Modüller“UCR – Analysis Mapping”

Page 12: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Modeller ve Modüller“UCR – Design Mapping”

Page 13: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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’

Page 14: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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)

Page 15: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Diğer Tasarım Seviyesi Modelleri“Deployment Modeli”

Page 16: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Deployment ŞemasıÖrneği

Page 17: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Diğer Tasarım Seviyesi Modelleri“Veritabanı Modeli”

Page 18: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Diğer Tasarım Seviyesi Modeli“Kullanıcı Etkileşimi Modeli”

Page 19: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Diğer Tasarım Seviyesi Modelleri“Kullanıcı Etkileşimi Modeli”

Page 20: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İçerik

• Analiz ve Tasarım Modelleri Yapısı• Analiz Class’ları• Class Bulma Teknikleri• Tasarıma Geçiş Teknikleri

Page 21: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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ığı

Page 22: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Analiz Class’ları Nelerdir?

<<boundary>>

<<entity>>

<<control>>

=

=

=

Stereotype aynı sembolle ifade edilen nesneleri ayrıştırmaya yarar.

Page 23: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 24: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 25: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 26: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 27: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Ç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.

Page 28: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İçerik

• Analiz ve Tasarım Modelleri Yapısı• Analiz Class’ları• Class Bulma Teknikleri• Tasarıma Geçiş Teknikleri

Page 29: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 30: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Analiz Class’larını Bulma Yolları

//

Page 31: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 32: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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ı

Page 33: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 34: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İsim Ayıklama Yöntemi“Noun Filtering”

Page 35: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İ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

Page 36: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İ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.

Page 37: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İ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

Page 38: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İ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.

Page 39: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 40: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İ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

Page 41: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Ö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

Page 42: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 43: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İ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

Page 44: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 45: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Soyut Kavramları Eleme

Trafik Raporu

Kişi

Konfirmasyon

Suçlu Detayları Formu

Suçlu

Police memuru

Trafik polisi

Suç

Page 46: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Ö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

Page 47: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Örnek: Trafik Denetim Sistemi

Trafik Raporu

Kişi

Suçlu Detayları Formu

Suçlu

Police memuru

Trafik polisi

Suç

Ayıklama Sonrası:

Page 48: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

• 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.

Page 49: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Boundary class’ları

• RaporDetaylariFormu• PolisDetaylariFormu• RaporIzlemeFormu• KonfirmasyonEkrani• SucluDBProxy• PolisDBProxy• ...

Veri Tabanına erişim katmanındaki interface’ler.

Page 50: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Control Class’ları

• RaporKontrol• LoginKontrol

Page 51: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Use Case’ler

• Rapor Et– Rapor Ekle– Rapor Sil– Rapor İzle– Rapor Güncelle

• Sisteme Bağlan

Page 52: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

Analiz Class’ları 1

Page 53: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 54: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İçerik

• Analiz ve Tasarım Modelleri Yapısı• Analiz Class’ları• Class Bulma Teknikleri• Tasarıma Geçiş Teknikleri

Page 55: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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ş

Page 56: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

. . .

. . .

Page 57: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 58: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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?

Page 59: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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?

Page 60: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 61: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 62: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

GOF Tasarım Kalıpları“Strategy”

Örneğin, borcunu düzenli ödeyen kredi kartı sahibiyle ödemeyene farklı yaklaşmak istememiz.

Page 63: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 64: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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)

Page 65: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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?

Page 66: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 67: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 68: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 69: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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?

Page 70: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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

Page 71: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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)

Page 72: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 73: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

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.

Page 74: 007 Uml Modelleri Analiz Ve Tasarim [74 Slides]

İlham Kaynakları

Christopher Alexander

Martin Fowler Peter Coad

Kelli Houston

Don Box