YZM 2108 Yazılım Mimarisi ve Tasarımı

Benzer belgeler
YAZILIM TASARIMININ ÖNEMİ

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2108 Yazılım Mimarisi ve Tasarımı

NESNEYE DAYALI PROGRAMLAMA VE C++

YZM 2108 Yazılım Mimarisi ve Tasarımı

YZM 2118 Yazılım Mimarisi ve Tasarımı

Koruma Önleminin Uzatılmasına İlişkin Görüşlerimiz. 22 Kasım 2011

Çocuk, Ergen ve Genç Yetişkinler İçin Kariyer Rehberliği Programları Dizisi

T.C. DOKUZ EYLÜL ÜNİVERSİTESİ STRATEJİ GELİŞTİRME DAİRE BAŞKANLIĞI Yılı Sunulan Hizmeti Değerlendirme Anket Raporu

Değerlendirme testleri:

KALİTE ÇEMBERLERİ NEDİR?

AVRASYA ÜNİVERSİTESİ

Geberit pisuvar sistemleri. Tüm ihtiyaçları karşılar.

Analiz Raporu. Analiz aşamasında projenin içeriği belirlenir. Çözeceğimiz problemin büyük bir problem olup olmadığını değerlendirmek,

RF Entegre Devre Tasarımı (EE 575) Ders Detayları

Gerçekleştirme Raporu

Bölüm 2 Algoritmalar. 2.1 Giriş

Ç.Ü. Sosyal Bilimler Enstitüsü Dergisi, Cilt 19, Sayı 2, 2010, Sayfa Doç. Dr. Songül TÜMKAYA İlknur ÇAVUŞOĞLU

SELÇUK ÜNİVERSİTESİ FEN FAKÜLTESİ MATEMATİK BÖLÜMÜ ÖĞRETİM DEĞERLENDİRME ANKETİ

İNSAN KIYMETLERİ YÖNETİMİ 4

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları

Analiz Raporu OTOBÜS OTOMASYONU. Kısa Özet. Analizin Amacı Nedir? Uyguladığınız Analiz Süreci

HİZMETLERİMİZ CE İŞARETLEMESİ LABORATUVAR HİZMETLERİ ELEKTROMANYETİK UYUMLULUK TESTLERİ ELEKTRİKSEL GÜVENLİK TESTLERİ ÇEVRESEL TESTLER RİSK ANALİZLERİ


Esneklik... Talebin Fiyat Esnekliği. Esneklikler. Talebin Fiyat Esnekliğini Belirleyen Faktörler

Ders Yazılımlarını. Seher ÖZCAN

Panel Radyatörler Dekoratif Radyatörler Havlupanlar Aksesuarlar

Okunabilir Kod Yazım Standartları: Şiir Gibi Kod Yazmak

Malzeme Gereksinim Planlaması (MRP)

Mühendislik Ekonomisi. Prof.Dr. Orhan TORKUL

YZM 2108 Yazılım Mimarisi ve Tasarımı

CUTEC etkisi: -Yüksek verimlilik -Yüksek Işlem güvenliği -Yüksek Yaşam - H7 Kalite Delik

hendisliği kanı Bilgisayar MühendisliM Prof. Dr. Oya Kalıps

ALGORİTMA İ VE PROGRAMLAMA

MODERN MÜHENDİSLİK HESAPLAMALARI İLE ASANSÖR BİLEŞENLERİNİN GÜVENİRLİKLERİNİN ARTTIRILMASI

Kiraz Boylama Rehberi. InVision 5 Görüş Açılı Kabin. Özet

KALYONCU ENERJİ ENERJİ YATIRIMLARINIZIN GÜVENCESİYİZ..

Bireysel ve Kurumsal Eğitim Hizmetleri YILI KATALOĞU

YÖNETİM MUHASEBESİ ve Uygulamaları

Kalite Kontrol Çemberleri (Kalite Çemberleri)

ÖLÇME ve KONTROL ölçme kontrol Şekil: 1.

Proses Örnekleme Yöntemleri

karşılaştırarak, zayıf ve üstün yönlerini belirlemek

ÇANKIRI KARATEKİN ÜNİVERSİTESİ KİMYA MÜHENDİSLİĞİ ANABİLİM DALI YÜKSEK LİSANS TANITIM FORMU. Bölüm Başkan Yardımcısı(ları)

Sentetik Çuval.

ÇALIŞAN BAĞLILIĞINA İTEN UNSURLAR NEDİR VE NEDEN ÖNEMLİDİR?

MALZEMELERİN GERİ DÖNÜŞÜMÜ. Prof.Dr. Kenan YILDIZ

ETİK DAVRANMA NİYETİNİN PLANLI DAVRANIŞ TEORİSİ ÇERÇEVESİNDE DEĞERLENDİRİLMESİ GIDA MÜHENDİSLERİ ÖRNEĞİ

İşletmelerin rekabet avantajlarını koruyabilmeleri için sürekli olarak inovasyon yapmaları gerekir. Bunun için de ürettikleri ürünleri ve sundukları

Oyun Programlama Dersi. Nergiz Ercil Çağıltay

İÇİNDEKİLER ÖNSÖZ...III AÇIKLAMA... V BÖLÜM I - TEMEL KAVRAMLAR...1

Avansas Pro ile her zaman kazanın

Yrd. Doç. Dr. Mustafa Fedai ÇAVUŞ. Osmaniye Korkut Ata Üniversitesi İktisadi ve İdari Bilimler Fakültesi İktisat Bölüm Başkanı 02/12/2011 OSMANİYE

3.DERS YAZILIMDA KALİTENİN ANLAMI

TASARIM KALIPLARI TASARIM DESENLERİ TASARIM ÖRÜNTÜLERİ TASARIM ŞABLONLARI

Aile Arabuluculuğu - Arabulucu.com. Yazar Hamdi Can Ünsal Salı, 01 Aralık :21

ODTÜ Bilgisayar Mühendisliği. Tanıtım Günleri Temmuz 2005

KAYISI ARAŞTIRMA İSTASYONU MÜDÜRLÜĞÜ EK 3.9 TOPRAK SU KAYNAKLARI BÖLÜMÜ

Yaratıcılık. Yağ nereye gidiyor?

Sağlıkta Yılında Başlamıştır. Dönüşüm Programı

designed by Nurus D Lab teknik doküman

DERS BİLGİLERİ. Ders Kodu Yarıyıl T+U Saat Kredi AKTS ORTADOĞU SİYASETİ SPRI

Kalıp ve İş Takımlarının Tasarımında İleri Teknikler (MFGE 544) Ders Detayları

İ.Ü. AÇIK VE UZAKTAN EĞİTİM FAKÜLTESİ Çalışma Soruları Hazırlama Klavuzu

Matematiksel Beceriler (Ortaöğretim Matematik Dersi Öğretim Programı)

Horton'nun (2001) belirttiği üzere web tabanlı öğretim ortamlarında genel olarak kullanılan ders yapıları aşağıdaki gibidir:

HİSAR OKULLAR ORTAOKUL ÖDÜLLERİ TANIMI VE KRİTERLERİ

Bursa Teknik Üniversitesi Doğa Bilimleri, Mimarlık ve Mühendislik Fakültesi

Avrupa elektronik pazarlarında VESTEL VE MONİTÖR TESİSİ ÖZET

DİCLE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ EEM309 SAYISAL ELEKTRONİK LABORATUARI

Örgüt Kuramı & Yönetim Fonksiyonları. Doç. Dr. Serkan ADA

ULUDAĞ ÜNİVERSİTESİ MÜHENDİSLİK - MİMARLIK FAKÜLTESİ ENDÜSTRİ MÜHENDİSLİĞİ BÖLÜMÜ

TEMEL SATIŞ VE PAZARLAMA KAVRAMLARI

Araç Motoru İmalatına Yönelik Sert Lehimleme Çözümleri

SERMAYE PİYASALARININ GELİŞMESİ EKONOMİLERDEKİ KRİZLERİN BAŞ ETKENİ OLABİLİR Mİ?

Teknik Açıklıklar Nasıl Yönetilmeli? Hayretdin Bahşi Uzman Araştırmacı

Ölçme Hataları ve Belirsizlik Analizi

Yaşam alanları ihtiyaca ve koşullara göre değişiklik. gösterir. BULUNDUĞUMUZ MEKÂN VE ZAMAN

Nesneye Dayalı Yazılım Metrikleri ve Yazılım Kalitesi. Ural ERDEMİR, Umut TEKİN, Feza BUZLUCA

Teknik sistem kataloğu Plastik panolar KS

Özet: Asimetrik Bilgi ve Piyasa Yapısı

MAT223 AYRIK MATEMATİK

YZM 2105 Nesneye Yönelik Programlama

AÇIK ERİŞİM ÜNİVERSİTELERDE NELERİ DEĞİŞTİRECEK?

ARAŞTIRMA ve BİLİMSEL ARAŞTIRMA TÜRLERİ

Birlikte Çalışma. Dr. Mustafa Burak SAYHAN Trakya Üniversitesi Acil Tıp AD

BOSSA DIŞ GİYİM İŞLETMESİNDE FASON İPLİK İMALATI TERMİN SÜRELERİNE ALTI SIGMA ARAÇLARI İLE İSTATİSTİKSEL YAKLAŞIM

Bölüm 1 Bilgisayar ve C Programlamaya Giriş

ADDIE Tasarım Modeli Analiz Basamağı

WEBER MINING. Boşluk doldurma Havalandırma Sağlamlaştırma Su kontrolü. Yüksek kaliteli dolgu ve enjeksiyon ürünlerimizin başlıca kullanım alanları

ÖZEL GÜVEN TIP MERKEZİ

Çalışma Dizaynları ve Kullanım Alanları

Yazılım Örüntüleri (SE 461) Ders Detayları

talebi artırdığı görülmektedir.

İnsan Kaynakları İSTANBUL SERBEST MUHASEBECİ MALİ MÜŞAVİRLER ODASI ISTANBUL CHAMBER OF CERTIFIED PUBLIC ACCOUNTANTS

Sunu: Belli bir konunun resim, grafik, metin, ses ve görüntüler kullanılarak giriş, gelişme, sonuç bölümleriyle sıralı ve düzenli bir şekilde

FEN-EDEBİYAT FAKÜLTESİ

Transkript:

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

BÖLÜM - 2 Tasarım Kalıplarına Giriş - I 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. 2

Tasarım Kalıpları Nedir "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 (devam...) Eğer bir ağaç ev inşa etmek isteseydiniz, nasıl yapardınız? 4

Tasarım Kalıpları Nedir (devam...) 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...) 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...) Daha iyi bir önerisi olan 7

Tasarım Kalıpları Nedir (devam...) İ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...) 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...) İş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...) 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ı Uygulanma Adımları 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ı Avantajları 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ı(devam...) 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...) 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...) 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ının Tarihçesi 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 Christopher Alexander Kent Beck small talk programcılarına 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. 17

Tasarım Kalıplarının Tarihçesi (devam...) 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...) 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 Behavioral: nesnelerin çalışma zamanı davranışlarını değiştirmek için oluşturulan tasarımlardan 11 adet kalıp bulunmaktadır. 19

Tasarım ve Paketleme Prensipleri 20

Kötü Tasarımın Belirtileri 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 (devam...) Yazılım Kalitesi Performans + Görsellik 22

Kalite Nedir? Kalite, ihtiyaçları karşılama yeteneğidir. Kalite, şartlara uygunluktur. İlk seferde doğrusunu yapmaktır. -Deming, 1968. -Crosby, 1979 -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 8402 23

Kalite Nedir? (Devam...) 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...) 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. Örneğin bireysel ve kurumsal bakış açıları aynı olmayabilir ve farklı cevaplar üretilebilir 25

Kalite Nasıl Sağlanır? 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? (devam...) 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...) 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

Yazılım Kalitesi Yazılım kalitesi, yazılımın çözmeye çalıştığı problemlerin başarı derecesidir. 29

Yazılım Kalitesi (devam...) 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. YZM 410 - Yazılım Kalite Güvencesi 30

Yazılım Kalitesi Nasıl Sağlanır? 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 31

Yazılım Kalitesini Belirleyen Özellikler 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 YZM 410 - Yazılım Kalite Güvencesi 32

Yazılımın Çalışmasına İlişkin Özellikler 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. YZM 410 - Yazılım Kalite Güvencesi 33

Yazılımın Gelişmesine İlişkin Özellikler 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. YZM 410 - Yazılım Kalite Güvencesi 34

Yazılımın Uyumluluğuna İlişkin Özellikler 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. YZM 410 - Yazılım Kalite Güvencesi 35

Yazılımda Kalite Ölçü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ı 36

Yazılım Kalitesi (devam...) Kötü tasarımlar kalitesiz yazılımların ortaya çıkmasındaki en büyük etmenlerdendir. 37

Kötü Tasarımın Belirtileri (devam...) 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 - Esnemezlik 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. 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. 39

Kötü Tasarımın Belirtileri - Esnemezlik İ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 - Kırılganlık Yazılım sistemleri olabildiğince esnek tasarlanmalı dolayısıyla daha az kırılgan olmalıdır. Muhtemel değişikliklere daha az direnç gösteren yani daha az kırılgan tasarlanmalıdır. 41

Kötü Tasarımın Belirtileri - Kırılganlık Aksi takdirde yapılacak bir değişiklik, sistemde domino etkisi yaratıp, zincirleme bir şekilde birden çok şeyin değişmesini gerektirebilir. Değişimler yönetilemez hale gelir ve sistemi çökmeye (katastrofi) götürebilir. 42

Kötü Tasarımın Belirtileri - İmmobilite 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 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

Yararlanılan Kaynaklar 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 45

İYİ ÇALIŞMALAR Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr 46