Upload
others
View
22
Download
0
Embed Size (px)
Citation preview
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 - 1
Yazılım Tasarımına Giriş
2
Bu bölümde;
Yazılım Ürünleri ve Yazılım Tasarımı
Soyutlama ve Modelleme
Tasarımın Çeşitleri
Yazılım Yaşam Döngüsünde Yazılım
Tasarımı
Yazılım Tasarım Metotları
ile ilgili konular anlatılacaktır.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Amaçlar
• Tasarımın ne olduğunu ve çeşitli tasarım türlerinin
ürünün farklı yönleriyle nasıl ilgilendiğini
açıklamak,
• Tasarımı bir problem çözme etkinliği olarak
sunmak, soyutlama ve modellemenin tasarımdaki
rolünü ortaya koymak
• Yazılım yaşam döngüsünde tasarımın yerini
belirlemek
• Yazılım mühendisliğinde tasarım metotlarını
incelemek
3Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Tasarımının Önemi
• Tasarlanmış (designed) bir dünyada yaşıyoruz.
• Tasarım ekonomik olarak öneme sahiptir ve
yaşam kalitemizi doğrudan etkiler.
• Yazılım son derece yaygın hale gelmektedir.
• Yazılım tasarımının kalitesinin önemli
sonuçları olmaktadır ve yazılım tasarımcıları
bunların farkında olmalı, bunları ciddiye
almalıdır.
4Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Tasarımının Önemi
• Yazılımdaki Ünvanlar Üzerine Tecrübe
Aktarımı
– Yazılım Tasarım Uzmanı
– Görsel Tasarım Uzmanı
– Yazılım Mimarı
– Analist Yazılım Uzmanı
– İş Analisti
5Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Ürünleri
6
Bir yazılım ürünü, müşterinin gereksinim ve
isteklerini karşılayan bir veya daha fazla
programdan, verilerden, ve destekleyici
materyal ve hizmetlerden oluşan bir varlıktır.
Bu ürün, tek başına bir ürün olabileceği gibi
başka bir ürünün temel bileşeni de olabilir.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Tasarımı Nedir?
• Yazılım tasarımcıları da temelde diğer
disiplinlerdeki tasarımcıların yaptığı işi yapar.
Tasarlanan şey bir yazılım ürünüdür.
7
Yazılım tasarımı, müşterinin gereksinim ve
isteklerini karşılayan yazılım ürününün
doğasını ve bileşimini belirleme etkinliğidir.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Tasarımı Problem Çözme Olarak
Düşünmek
• Tasarımı bir problem çözme etkinliği olarak
düşünmek oldukça yararlı ve verimli bir yoldur.
• Avantajları:
– Neyin problemin neyin de çözümün bir parçası
olduğunun doğru şekilde anlaşılmasına yardımcı olur.
– Birden çok iyi çözümün (tasarımın) olabileceğini
vurgular.
– Problemi değiştirme, deneme-yanılma, beyin fırtınası
gibi çözüm yöntemlerinin kullanılabilmesine olanak
tanır.
8Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Soyutlama (Abstraction)
• Özellikle yazılım tasarımında Soyutlama son
derece önemli bir problem çözme tekniğidir.
9
Soyutlama, problemin anlaşılmasını ve
çözümünü kolaylaştırmak üzere nesnelerin,
olayların veya durumların bazı özelliklerinin
bilinçli ve kasıtlı olarak görmezden
gelinmesidir.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Soyutlamanın Önemi
• Problemin basitleştirilmesi
– Soyutlama, problemi (kısmen) çözerken problemin en
önemli yönlerine odaklanma olanağı sağlar.
• Problem çözmenin yapısallaştırılması
– Yukarıdan-aşağıya (Top-down) stratejisi: Problemin
soyut bir versiyonunun çözülüp, ayrıntıların daha sonra
eklenmesi (ayrıntılandırma/refinement)
– Aşağıdan-yukarıya (Bottom-up) stratejisi: Problemin
parçalar halinde çözülmesi ve tam bir çözüm için bu
parçaların birleştirilmesi
10Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Modelleme (Modeling)
• Bir model bir hedefi, modelin parçaları hedefin
parçalarına ve modelin parçaları arasındaki ilişkiler
hedefin parçaları arasındaki ilişkilere karşılık
gelecek şekilde temsil eder.
11
Target Model
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Tasarımda Modelleme
• Modelleme şu amaçlarla kullanılır:
– Problemi anlama
– Tasarım yaratımı
– Tasarım inceleme
– Dokümantasyon
• Modelleme işe yarar çünkü modeller hedefin
ayrıntılarını soyutlarlar.
• Eğer önemli ve konuyla ilgili ayrıntılar gözardı
edilirse modeller başarısız olabilirler.
12Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Statik ve Dinamik Modeller
• Statik modele örnek olarak sınıf ve nesne modelleri(class and object models) verilebilir.
• Dinamik modellere örnek olarak durumdiyagramları ve sıra diyagramları (state diagramsand sequence diagrams) verilebilir.
13
Statik model programın çalışması sırasında
değişmeyen yönlerini temsil eder.
Dinamik model programın çalışması sırasında
olanları temsil eder.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Ürün Tasarımı ve Mühendislik Tasarımı
• Ürün tasarımcıları tarz ve estetik, işlev vekullanılabilirlik, üretilebilirlik ve yönetilebilirlik gibiözelliklerle ilgilenirler.
– Endüstriyel tasarımcılar, (bina) mimarları, iç mimarve tasarımcılar, grafik tasarımcılar, vb.
• Mühendislik tasarımcıları teknik mekanizma veçalışma şekilleriyle ilgilenirler.
– Yapı, inşaat, makine, kimya, ve elektrik mühendisleri
• Tasarım ekipleri genellikle hem ürün hem demühendislik tasarımcılarından oluşur.
14Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Ürün Tasarımı
• Kullanıcı arayüzü ve etkileşim tasarımı, iletişim,
endüstriyel tasarım, ve pazarlama gibi beceriler
gerektirir.
15
Yazılım ürün tasarımı, müşterinin gereksinim
ve isteklerini karşılamak üzere yazılım
ürününün özellikleri (feature), yetenekleri, ve
arayüzlerinin belirlenmesi etkinliğidir.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Mühendislik Tasarımı
• Programlama, algoritmalar, veri yapıları, yazılım
tasarım prensipleri, uygulamaları, süreçleri,
teknikleri, mimarileri ve kalıpları konusularında
bilgi ve beceri gerektirir.
17
Yazılım mühendislik tasarımı, yazılım ürün
şartnamesini karşılamak üzere programların,
altsistemlerin, ve bunları oluşturan parçaların ve
çalışma biçimlerinin belirlenmesi etkinliğidir.
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Örnek: Yazılım Mühendislik Tasarımı
18Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
• Sistem açılır açılmaz 2 dakika içerisinde 3.847
öğrenci sisteme girip “Ders Seçmeye” başladı.
• Sistem açıldıktan 15 dakika sonra toplam 26.867
adet ders seçildi.
• Sistem yazılımdan kaynaklı olarak hiç yavaşlamadı.
• Sistem içerisinde yönetmelikte olan ve
kombinasyonları ile birlikte 200’ün üzerinde kural
doğru işletildi (Min AKTS, 1.8, 3.0, havuz, seçmeli
ders, tekrar dersi, ).
Yazılım Tasarımı
19Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
• Hangisi daha önemli?
– Yazılım Ürün Tasarımı
– Yazılım Mühendislik Tasarımı
• İkisi birlikte Kalite için yeterli mi?
Çağlayan Yaşam Döngüsü Modeli
• Çağlayan (waterfall)
modeli yazılım
geliştirme etkinlikleri
arasındaki mantıksal
ilişkiyi ortaya koyar.
20
Requirements
Specification
Design
Implementation
Testing
Maintenance
Software Product Life Cycle
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Implementation ne
demek?
Yaşam Döngüsünde Tasarımın Yeri
21
Engineering Design
Product Redesign and
Engineering Redesign
Product DesignRequirements Specification
Design
Implementation
Testing
Maintenance
Software Product Life Cycle
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Tehlikeli !
“Ne”ye Karşı “Nasıl”
• Gereksinim ve tasarım etkinliklerini ayırt etmenin
geleneksel yolu
• Yeterli değil çünkü
– Çoğu “ne” söylemi tasarım kararına dönüşmekte
– Çoğu “nasıl” söylemi de müşterinin gereksinimi ya
da isteği olabiliyor
– Gereksinimleri tasarımdan ayırmanın en temel yolu
“problem çözme” yaklaşımıdır: Gereksinimler tasarım
ile çözülebilecek problemleri ortaya koyarlar.
22Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yazılım Tasarım Metodu
23
Bir yazılım tasarım metodu, müşterinin
gereksinim ve isteklerini (ve kısıtlamaları)
karşılamak üzere kesin ve tam bir yazılım
tasarım çözümünü oluşturmak için
kullanılan bir prosedürdür.
2013 Bahar YZM211 Yazılım Tasarımı © Volkan TUNALI
Tasarım Metodu Bileşenleri
• Tasarım Süreci (Process) — Bir girdi kümesini birçıktı kümesine dönüştüren ilişkili görevlerbütünüdür.
• Tasarım Notasyonu (Notations) — Bir semboliktemsil sistemidir.
• Sezgisel Yaklaşımlar (Design Heuristics) — Biramaca ulaşmak üzere yol gösterici kurallardır,garantisi yoktur.
• Tasarım metodları ayrıca tasarımı daha iyi ve dahakötü yapan karakteristikleri belirten tasarımprensiplerinden de yararlanırlar.
24Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Özet
• Yazılım tasarımı önemlidir.
• Yazılım tasarımını problem çözme olarak düşünmek çok
yararlıdır.
• Soyutlama temel bir tasarım tekniğidir.
• Modelleme temel tasarım aracıdır.
• Yazılım tasarımı, ürün ve mühendislik tasarımından oluşur.
• Ürün tasarımı esas olarak gereksinim analizi aşamasında
gerçekleşir; mühendislik tasarımı ise genel olarak tasarım ve
kodlama aşamalarında gerçekleşir.
• Günümüzde OO analiz ve tasarım metodları çok yaygındır.
25Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı
Yararlanılan Kaynaklar
26
• 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ı
27
İYİ ÇALIŞMALAR…
Yrd. Doç. Dr. Deniz KILINÇ
Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı