27
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ı · Örnek: Yazılım Mühendislik Tasarımı Celal Bayar Üniversitesi - YZM 2108 Yazılım Mimarisi ve Tasarımı 18 •Sistem açılıraçılmaz2

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

Örnek: Yazılım Ürün Tasarımı

16Celal 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Ç

[email protected]

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