46
YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1

YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

  • Upload
    others

  • View
    26

  • Download
    1

Embed Size (px)

Citation preview

Page 1: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

YZM 2108

Yazılım Mimarisi ve Tasarımı

Yrd. Doç. Dr. Deniz KILINÇ

Celal Bayar Üniversitesi

Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılım Mühendisliği

1

Page 2: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

BÖLÜM - 2

Tasarım Kalıplarına Giriş - I

2

Bu bölümde;

Tasarım Kalıpları,

Tasarım Kalıplarının Tarihçesi,

Yazılım Kalitesi

Kötü Tasarımın Belirtileri

Esnemezlik (Rijidite)

Kırılganlık(Fragility)

İmmobalite

Viskozite

ile ilgili konular anlatılacaktır.

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 3: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• "Eğer inşaatçılar, binalarını

programcıların programlarını

yazdıkları gibi dikselerdi, ilk gelen

ağaçkakan medeniyeti yerle bir

ederdi."

-Gerald Weinberg

3

Tasarım Kalıpları Nedir

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 4: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Eğer bir ağaç ev

inşa etmek

isteseydiniz, nasıl

yapardınız?

4

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 5: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

1. Dayanıklı bir ağaç

bulurum.

2. Birkaç tahta, çekiç ve

çivi bulurum.

3. Yapabildiğim en güzel

(?) evi yapmaya çalışır

ve en iyisi (?) için umut

ederim

5

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 6: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Bu yaklaşımı deneyen kişiler bu işlemin

sonunun hüsran olabileceğini bilmektedirler.

Ya da eninde sonunda öğreneceklerdir.

• Bazı durumlarda bu işlem

– ağaç eve zarar vermesinin yanı sıra,

– ağaca da zarar vermektedir.

6

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 7: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

7

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Daha iyi bir önerisi olan…

Page 8: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• İyi bir mimar bulunup, evin ayrıntılı planını

geliştirmek için yardımına başvurulabilir.

– Mimar nasıl karar vermektedir?

– Yıllarca tecrübeden ders almak ve bunu yeni bir

evi yaratırken uygulamak ne kadar mümkündür?

• Kesin olan şey ise, bir bilgi temeli, tecrübe ve

belki biraz önsezinin mimarı başarılı

kıldığıdır.

8

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 9: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Evin inşası ve tasarımı hakkındaki bu sorularla,

bizim yazılım geliştirme esnasında

karşılaştığımız soruların bir farkı yoktur.

– İyi bir yazılımı etkili bir şekilde nasıl

tasarlayabiliriz?

– Kazanılan tecrübeyi nasıl gelecekteki

projelerimize uygulayabiliriz?

– Yazılımın tasarımı esnasında, esneklik,

genişletilebilirlik veya verimlilik gibi iyi

özelliklere sahip olması için nasıl karar

verebiliriz?9

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 10: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• İşte bu noktada, Tasarım Kalıpları na

başvururuz.

“Tasarım kalıpları, uzmanların yeni

sorunları çözmek için geçmişte

çalıştıkları çözümlerin uygulamalarının

iyi belgelenmiş halidir.”

10

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 11: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Tasarım kalıplarının arkasındaki düşünce,

yazılım geliştirilirken sıklıkla karşılaşılan

problemler için sunulan genel çözümler

için standartlaşmış bir yol geliştirmektir.

11

Tasarım Kalıpları Nedir (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 12: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Uzmanlar, problemlerinin parçalarını önceden karşılaştıkları problemler gibi

tanımlarlar.

Sonrasında, önceki problemlerinin çözümlerine geri dönüp onları genellerler.

Son olarak da genel çözümü o anki problemlerinin içeriğine adapte ederler.

12

Tasarım Kalıpları Uygulanma Adımları

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 13: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Tasarım kalıplarının kullanımının başlıca

faydalarına göz atalım:

1. Zamanla, kalıpların kataloglarını yapabiliriz.

• Bu sayede, yazılım geliştirmeye yeni başlayanların

yıllar geçtikçe kazanılan tecrübeden daha etkili

bir şekilde yararlanmasını sağlarız.

13

Tasarım Kalıpları Avantajları

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 14: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

2. Kalıpların standartlaştırılması, tüm

geliştiricilerin (profesyoneller, yeni

başlayanlar veya uzmanların) kararlarını

daha kolay vermesini sağlamaktadır.

3. Tasarım kalıpları ortak bir kelime haznesi

sağlar. Bu geliştiriciler arasındaki iletişimi

daha da kolay hale getirir. Bir tasarımı

detaylıca açıklamaktansa, planlarımızı

açıklamak için kalıp adını kullanabiliriz.

14

Tasarım Kalıpları Avantajları(devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 15: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

4. Kalıplar birbirleri ile ilişkilendirilebilir,

böylece geliştiriciler projelerinde hangi

kalıpların birlikte bulunması gerektiğini

kolayca anlayabilir.

15

Tasarım Kalıpları Avantajları(devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 16: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

5. Tasarım Kalıpları nesneye yönelik

programlama topluluğu aracılıyla tecrübe

paylaşımı için etkili bir yöntem sunmaktadır.

Örneğin; C++, Smalltalk, C# ya da Java

programlama dillerinde kazanılan bilgiler,

Web projelerinde ortaya çıkan uzmanlık gibi

öğrenilen bilgiler biriktirebilir ve bunlar

diğer geliştiricilerle paylaşılabilir.

16

Tasarım Kalıpları Avantajları(devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 17: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Kalıp kavramının kullanımı 1970’li

yılların sonlarında Christopher

Alexander isimli bir mimar tarafından

tanıtıldı. Alexander, kalıpların

belgelenmesi için temel kabul edilen

örnekler ile ilgili iki kitap yazdı.

• 1987 yılında, Ward Cunningham ve

Kent Beck small talk programcılarına

17

Tasarım Kalıplarının Tarihçesi

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Christopher Alexander

yol göstermesi amacıyla Alexander'ın fikirlerinden

yararlanılarak beş küçük tasarım kalıbı geliştirdi. Böylece

tasarım kalıpları yazılım dünyasına girmiş oldu.

Page 18: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Erich Gamma, Richard

Helm, Ralph Johnson ve

John Vlissides 1995’te

"Design Patterns: Elements

of Reusable Object-Oriented

Software" kitabını çıkardılar.

Bu dörtlü ayrıca "Gang of

Four" olarak da bilinir.

18

Tasarım Kalıplarının Tarihçesi (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 19: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Bu dörtlü kitaplarında 3 farklı

kategoride toplam 23 tane kalıba yer

vermişlerdir:

– Creational: nesneleri yaratmakla

ilgili olan tasarımlardan 5 adet

– Structural: nesneler arasındaki

yapısal ilişkileri ifade eden

tasarımlardan 7 adet

19

Tasarım Kalıplarının Tarihçesi (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

– Behavioral: nesnelerin çalışma zamanı davranışlarını

değiştirmek için oluşturulan tasarımlardan 11 adet kalıp

bulunmaktadır.

Page 20: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Tasarım ve Paketleme Prensipleri

20Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 21: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Her yazılımcı bir şekilde bekleneni verebilen ve

çalışabilir bir kod yazıp ortaya bir yazılım ürünü

çıkarabilir.

• Ancak bu yaptığı işin her zaman kaliteli olduğu

anlamına gelmez.

• Bir yazılımın kalitesi ölçülürken çoğu zaman yanlış

bir yaklaşımla performansı, hatta sadece görsel

olarak ne kadar alımlı olduğu dikkate alınmaktadır.

• Oysa bu iki faktör kaliteyi ölçmek için yeterli

değildir.

21

Kötü Tasarımın Belirtileri

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 22: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

22

Kötü Tasarımın Belirtileri (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Yazılım Kalitesi ≠ Performans + Görsellik

Page 23: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Kalite, ihtiyaçları karşılama yeteneğidir.

-Deming, 1968.

• Kalite, şartlara uygunluktur.

-Crosby, 1979

• İlk seferde doğrusunu yapmaktır.

-Price, 1975

• Kalite, bir ürün ya da hizmetin önceden

belirlenen ya da sonradan ortaya

çıkabilecek gereksinimleri karşılama

yeteneğine dayanan özelliklerin toplamıdır.

ISO–840223

Kalite Nedir?

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 24: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Kalite, ürün ya da hizmeti en az

maliyetle üreten ve tüketici isteklerine

cevap veren bir üretim sistemidir.

JIS – Japon Standartlar Enstitüsü

• Kalite, mükemmeli arayışın sistematik

bir yaklaşımıdır.

ASQC – Amerikan Topluluğu Kalite Kontrol

• Kalite, kullanıma uygunluktur.

-Dr. Joseph M. Juran

24

Kalite Nedir? (Devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 25: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Kalite kavramı günümüze gelene

kadar tanım değişiklikleri ile

birlikte çeşitli evrimler

geçirmiştir. Ayrıca bakış açısına

göre de farklılık göstermektedir.

25

Kalite Nedir? (Devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Örneğin bireysel ve kurumsal bakış açıları

aynı olmayabilir ve farklı cevaplar

üretilebilir

Page 26: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

1. Kalite Kontrol

• Kısa Tanım: Hata ayıklama odaklı geleneksel

yaklaşım

2. Kalite Güvence

• Kısa Tanım: Hata önleme odaklı modern

yaklaşım

26

Kalite Nasıl Sağlanır?

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 27: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

1. Kalite Kontrol

– Bir ürün ya da hizmetin

tanımlanmış gereksinimleri

karşılayıp karşılamadığını

kontrol etmek için kullanılan

uygulama teknikleri ve

faaliyetleridir.

27

Kalite Nasıl Sağlanır? (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 28: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

2. Kalite Güvence

– Bir ürün ya da hizmetin

tanımlanmış gereksinimleri

karşılamak amacıyla yeterli

güveni sağlamak için gereken

planlı ve sistematik faaliyetlerin

bütünüdür.

28

Kalite Nasıl Sağlanır? (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 29: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılım kalitesi, yazılımın çözmeye çalıştığı

problemlerin başarı derecesidir.

29

Yazılım Kalitesi

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 30: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

YZM 410 - Yazılım Kalite Güvencesi

• Yazılım kalitesi, kullanım amaçlarına göre açıkça

tanımlanmış işlev ve gereksinimlere uyum, kullanıcı

isterlerine yanıt verebilme, açıkça belgelendirilmiş yazılım

geliştirme standartlarına sadık kalma, yüksek güvenilirlik

sağlama, üretilen yazılımda çeşitli teknik özelliklere sahip

olma ve teslim sonrası destek olarak tanımlanabilir.

30

Yazılım Kalitesi (devam...)

Page 31: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

31

Yazılım Kalitesi Nasıl Sağlanır?

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Hata Ayıklama (Geleneksel)

– Doğrulama ve Geçerleme (Verification and

Validation)

• Hata Önleme

–Kalite Güvence (Quality Assurance)

–Test Güdümlü Geliştirme (TDD)

Hata Önleme > Hata Ayıklama

Page 32: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılım Kalitesini Belirleyen Özellikler

YZM 410 - Yazılım Kalite Güvencesi

• Yazılım kalitesini belirleyen özellikleri 3 ana başlık

altında toplayabiliriz;

Yazılımın çalışmasına ilişkin özellikler,

Yazılımın gelişmesine ilişkin özellikler,

Yazılımın uyumluluğuna ilişkin özellikler

32

Page 33: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılımın Çalışmasına İlişkin Özellikler

YZM 410 - Yazılım Kalite Güvencesi

• Doğruluk (Correctness): Yazılımın öngörülen tüm işlevleri istenilen

şekilde, doğru ve yeterli hassaslıkla yerine getirebilmesidir.

• Güvenilirlik (Reliability): Sistemin işlevlerinde bir kesintiye

uğramadan çalışmaya devam edebilme özelliğidir.

• Verimlilik (Efficiency): Yazılım işlevlerini yerine getirirken sistem

donanımı uygun şekilde kullanmalıdır.

• Korunmuşluk (Immunity): Yazılım, yetkisiz kişilerin yapabilecekleri

değişikliklere ve verebilecekleri zararlara karşı sistemi koruma altına

alabilmelidir.

• Kullanılabilirlik (Usability): Üretilen yazılımda kullanıcıların

rahatlıkla kullanabilmesi için gerekli kolaylıklar sağlanmalı, özellikle

kullanıcı arayüzü düzenli, estetik ve kullanımı kolay olmalıdır.

33

Page 34: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılımın Gelişmesine İlişkin Özellikler

YZM 410 - Yazılım Kalite Güvencesi

• Bakım Kolaylığı (Maintainability): Başka bir yazılım geliştirici kişi

ya da grup tarafından yazılımın bakımının yapılabilmesi için kaynak

kodun anlaşılabilir şekilde yazılmış olması, iyi belgelendirilmesi, sorun

çözümlemesinin ve testinin kolay olması gerekir.

• Esneklik (Flexibility): Bir yazılım her zaman için kullanıcı isterlerine

göre yeniden uyarlanabilir özelliğe sahip olmalıdır. Sistemde gerekli

değişiklikler uygun bir şekilde ve kolayca yapabilmelidir.

• Sınanabilirlik (Testability): Geliştirici için doğrudan önem taşıyan bu

özellik, sistemin veya bir bölümün test edilebilir olma özelliğini açıklar.

34

Page 35: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yazılımın Uyumluluğuna İlişkin Özellikler

YZM 410 - Yazılım Kalite Güvencesi

• Taşınabilirlik (Portability): Yazılımın bir yazılım/donanım ortamından

diğerine kolay taşınabilir olması özelliğidir.

• Tekrar kullanılabilirlik (Reusability): Geliştirici açısından giderek

büyük önem taşıyan bu özellik, bazı yazılım parçalarının başka

sistemlerde ne ölçüde kullanılabilir olduğunu gösterir.

• Uyumluluk (Congeniality): Bir yazılım ürünü daha önce üretilmiş olan

veya beraber çalışan diğer ürünlerle tam uyumlu olmalıdır. Birbiriyle

etkileşen sistemler ortak özelliklere sahip olarak yaratılmalıdır.

35

Page 36: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

36

Yazılımda Kalite Ölçümü

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Geri Bildirim

o Yazılımın kalitesinin ölçmenin en basit yöntemi

geri bildirimlerdir.

• Kod Kalitesi İncelenmesi ile

o Kod Metriklerine bakılması

o Kod Yeniden İncelenmesi

o Birim Testlerinin yapılması

Page 37: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

37

Yazılım Kalitesi (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Kötü tasarımlar kalitesiz

yazılımların ortaya çıkmasındaki

en büyük etmenlerdendir.

Page 38: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Kötü Tasarım belirtilerini genel olarak şöyle

gruplandırabiliriz:

1. Esnemezlik (Rijidite)

2. Kırılganlık(Fragility)

3. İmmobalite

38

Kötü Tasarımın Belirtileri (devam...)

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 39: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Genel olarak esnemezlik, bir

sistemin değişime karşı

gösterdiği direnç olarak

tanımlanabilir.

• Esnemezliğin ölçütü regresyon

olarak adlandırılır.

39

Kötü Tasarımın Belirtileri - Esnemezlik

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Bir yazılım sistemi zaman içinde değişen ve yeni

gündeme gelen gereksinimleri karşılayabilmelidir.

Eğer bir değişim ve gelişime karşı sistem, aşırı

direnç gösteriyorsa ve hatta değişime izin

vermiyorsa bu esnemez bir sistemdir.

Page 40: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• İyi bir tasarımda regresyonun düşük

olması beklenir.

• Düşük regresyonlu sistemlerde olası

değişimler büyük sorunlara neden

olmadan yapılabilmektedir.

• Bir sistem ne kadar esnemez ise o kadar

kırılgandır.

40

Kötü Tasarımın Belirtileri - Esnemezlik

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 41: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Yazılım sistemleri

olabildiğince esnek

tasarlanmalı dolayısıyla

daha az kırılgan olmalıdır.

41

Kötü Tasarımın Belirtileri - Kırılganlık

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Muhtemel değişikliklere daha az direnç

gösteren yani daha az kırılgan tasarlanmalıdır.

Page 42: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Aksi takdirde yapılacak bir

değişiklik, sistemde domino

etkisi yaratıp, zincirleme bir

şekilde birden çok şeyin

değişmesini gerektirebilir.

42

Kötü Tasarımın Belirtileri - Kırılganlık

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

• Değişimler yönetilemez hale gelir ve sistemi

çökmeye (katastrofi) götürebilir.

Page 43: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Yazılım sistemleri modüler bir şekilde

tasarlanmalıdır.

• Bir projede kullanılmış olan herhangi bir

bileşenin farklı bir projeye taşınıp orada da

kullanılabilmesi "yeniden kullanılabilirlik

(reusability)" olarak bilinir.

43

Kötü Tasarımın Belirtileri - İmmobilite

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 44: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

• Pratikte çok kolay ve sorunsuz

olabiliyorken çoğu zaman da ya çok zor

ya da imkansız olmaktadır.

• İmmobilite diye bilinen bu durumun

sebebi; genelde bağımlılıkların sayısı ve

derinliğiyle yakından ilgilidir.

44

Kötü Tasarımın Belirtileri - İmmobilite

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 45: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

Yararlanılan Kaynaklar

45

• Aykut Taşdelen, C++, Java ve C# ile UML ve Dizayn

Paternleri, Pusula Yayıncılık, İstanbul, 2014

• Eric Freeman, Head First Design Patterns, O'Reilly

Media,2004

• Stephen Stelting & Olav Maassen, Applied Java™

Patterns, Prentice Hall PTR ,2001

• http://www.AlgoritmaveProgramlama.com

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı

Page 46: YZM 2108 Yazılım Mimarisi ve Tasarımı...YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi

46

İYİ ÇALIŞMALAR…

Yrd. Doç. Dr. Deniz KILINÇ

[email protected]

Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı