BÖLÜM 4 MÜHENDİSLİK TASARIMI ÇÖZÜMLEMESİ YZM211 YAZILIM TASARIMI Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi
Amaçlar 2 Mimari tasarım ve ayrıntılı tasarım arasındaki farkı anlamak Mimari ve ayrıntılı tasarım spesifikasyonlarının içeriğini incelemek Tasarım spesifikasyonları için kısaltmalar önermek Tasarımı prensipleri sunmak Bu prensiplerin anlaşılmasını ve hatırlanmasını kolaylaştırıcı bir sınıflandırma oluşturmak
İçerik 3 Mühendislik tasarımı sürecinde mimari ve ayrıntılı tasarım Mimari tasarım spesifikasyonları Ayrıntılı tasarım spesifikasyonları Tasarımı prensipleri Temel prensipler Yapıcı prensipler Yazılım mühendisliği tasarım prensipleri sınıflandırması
Generic Software Engineering Design SRS : Problem Design Document : Solution SRS Analyze SRS Analysis 4 Genel Bir Yazılım Mühendislik Tasarımı Süreci Generate/Improve Candidate Architectures Evaluate Candidate Architectures Select Architecture [else] Finalize Architecture [adequate architecture] Generate/Improve Detailed Design Alternatives Architectural Design Evaluate Detailed Design Alternatives Select Detailed Design [else] Detailed Design [else] [adequate detailed design] Finalize Design [adequate architecture] Design Document
Mimari Tasarım (Architectural Design) 5 Mimari tasarım, programın büyük parçalarının, bunların sorumluluklarının, özelliklerinin, ve arabirimlerinin; ve bu parçalar arasındaki ilişki ve etkileşimlerin belirlenmesi aktivitesidir. Yüksek düzeyli tasarım Kara kutular Her programın bir mimarisi vardır
Ayrıntılı Tasarım (Detailed Design) 6 Ayrıntılı tasarım, büyük program parçalarının içsel elemanlarının, bunların yapısının, ilişkilerinin, süreçlerinin; ve sıklıkla da bunların algoritma ve veri yapılarının belirlenmesi aktivitesidir. Orta ve düşük düzeyli tasarım Kara kutular Ayrıntılı tasarım kodlamaya daha yakındır
Mimari Tasarım Spesifikasyonları 7 Decomposition (ayrıştırma) Program parçaları veya modüller Responsibilities (sorumluluklar) Veri ve davranış Interfaces (arabirimler) Bir arabirim, varlıkların üzerinden iletişim kurduğu bir sınırdır. Collaborations (işbirlikleri) Kim neyi ne zaman yapar? Relationships (ilişkiler) Kullanımlar, bağımlılıklar, vb. Properties (özellikler) Performans, güvenilirlik, vb. States and Transitions (durumlar ve geçişler) Dışsal olarak görünür DeSCRIPTR
Ayrıntılı Tasarım Spesifikasyonları 8 Decomposition (ayrıştırma) Altsistem parçaları veya birimleri Responsibilities (sorumluluklar) Veri ve davranış Interfaces (arabirimler) Herkese açık özellikler Collaborations (işbirlikleri) Kim neyi ne zaman yapar? Relationships (ilişkiler) Kalıtım, ilişkiler, vb. Properties (özellikler) Performans, güvenilirlik, vb. States and Transitions (durumlar ve geçişler) Dışsal olarak görünür Packaging and Implementation (paketleme ve implementasyon) Kapsam, görünürlük, vb. Algorithms, Data Structures, and Types (algoritmalar, veri yapıları, ve tipler) Belki DeSCRIPTR-PAID
Tasarım Prensipleri 9 Tasarım prensipleri bir tasarımı daha iyi yapan özellikleri belirten ifadelerdir. Temel (basic) prensipler bir tasarımın müşteri gereksinim ve isteklerini daha iyi karşılamasını sağlayan karakteristikleri belirtir. Yapıcı (constructive) prensipler, deneyime dayalı olarak, bir tasarımı daha iyi yapan belirli mühendislik tasarımı karakteristiklerini belirtir.
Temel Prensipler 10 Fizibilite (Feasibility) Bir tasarım gerçekleştirilebilir olduğu sürece kabul edilebilirdir. Yeterlilik (Adequacy) Müşterilerin daha fazla gereksinim ve isteğini karşılayan tasarımlar daha iyidir. Ekonomi (Economy) Daha ucuza, daha az zamanda, ve daha az risk ile gerçekleştirilebilen tasarımlar daha iyidir. Değiştirilebilirlik (Changeability) Bir programın kolayca değiştirilebilmesine imkan tanıyan tasarımlar daha iyidir.
Yapıcı Prensipler 11 Modülerlik (Modularity) prensipleri İyi tasarım modülerdir; bu prensipler tasarımların belirttiği modüllerin değerlendirilmesinde yardımcı olur. Uygulanabilirlik (Implementability) prensipleri İyi tasarımları uygulamak, hayata geçirmek kolaydır; bu prensipler tasarımların kolay uygulanabilir olup olmadığının değerlendirilmesinde yardımcı olur. Estetik (Aesthetic) prensipleri İyi tasarımlar güzeldir; bu prensipler güzel tasarımların seçilmesinde yardımcı olur.
Modülerlik 12 Modüler bir program iyi tanımlanmış, kavramsal olarak basit, ve bağımsız bileşenlerden oluşur. Bu bileşenler iyi tanımlanmış arabirimler üzerinden haberleşirler.
Modülerliğin Avantajları 13 Anlaşılması ve açıklanması kolaydır Dokümante etmesi kolaydır Değiştirilmesi kolaydır Test edilmesi ve hata ayıklaması kolaydır Daha fazla yeniden-kullanılabilirdir (reusable) İnce ayar yapılması daha kolaydır
Modül Nedir? 14 Bir modül parçaları olan bir program birimidir. Yakın parçalar (Immediate parts) parça hiyerarşisinde bütünün hemen altında yer alan parçalardır. Program Sub-programs or sub-systems Packages, compilation units Classes, functions Attributes, operations, blocks - Lines of code
Modülerlik Prensipleri 1 15 Küçük Modüller (Small Modules) Küçük modüllerden oluşan tasarımlar daha iyidir. Bilgi Saklama (Information Hiding) Her modül kendi içsel yapısının ve süreçlerinin ayrıntılarını diğer modüllerden gizlemelidir. En Düşük Ayrıcalık (Least Privilege) Modüller gerek duyulmayan kaynaklara erişememelidir.
Modülerlik Prensipleri 2 16 Bağlılık (Coupling) Modül bağlılığı en aza indirilmelidir. Bağlılık (Coupling) modül çiftleri arasındaki bağlantının derecesidir. Uyum (Cohesion) Modül uyumu olabildiğince yüksek olmalıdır. Uyum (Cohesion) modülün parçalarının birbiriyle ne kadar ilgili olduğunun derecesidir.
Uygulanabilirlik Prensipleri 17 Basitlik (Simplicity) Basit ve sade tasarımlar daha iyidir. Yeniden Kullanım (Software reuse) yeni yazılım ürünlerinin oluşturulmasında mevcut varlıkların (tasarım, kod, doküman vb.) kullanılmasıdır. Yeniden Kullanım ile Tasarım (Design with Reuse) Mevcut varlıkları yeniden kullanan tasarımlar daha iyidir. Yeniden Kullanım için Tasarım (Design for Reuse) Yeniden kullanılabilir varlıklar üreten tasarımlar daha iyidir.
Estetik Prensipleri 18 Güzellik (Beauty) Güzel (basit ve güçlü) tasarımlar daha iyidir. Başka estetik prensipleri var mıdır? Simetri (Symmetry) Denge (Balance) Oran (Proportion)
Prensipler Arasındaki İlişkiler 19 Bazı prensipler birbirini destekler Uyum (Cohesion), Bağlılık (Coupling), Bilgi Saklama (Information Hiding) Basitlik (Simplicity), Güzellik (Beauty) Basitlik (Simplicity), Küçük Modüller (Small Modules) Bazı prensipler birbiriyle çelişir Basitlik (Simplicity), Yeniden Kullanım için Tasarım (Design for Reuse) Küçük Modüller (Small Modules), Yeniden Kullanım için Tasarım (Design for Reuse) Cohesion, Small Modules Destek veya çelişki duruma göre değişebilir.
Tasarım Prensiplerinin Sınıflandırılması 20 Engineering Design Principles Basic Feasibility Adequacy Changeability Economy Constructive Modularity Small Modules Information Hiding Least Privilege Coupling Cohesion Implementability Simplicity Design with Reuse Design for Reuse Aesthetic Beauty
Özet 1 21 Mimari tasarım büyük program parçalarının yüksek düzeyli spesifikasyonudur. Ayrıntılı tasarım program birimlerinin orta düzeyli ve düşük düzeyli spesifikasyonudur. Mimari tasarım için DeSCRIPTR spesifikasyonları Ayrıntılı tasarım için DeSCRIPTR-PAID spesifikasyonları
Özet 2 22 Temel prensipler (Yeterlilik, Ekonomi, Fizibilite, Değiştirilebilirlik) müşteri gereksinim ve isteklerini karşılamakla ilgilidir. Yapıcı prensipler mühendislik deneyimine dayalıdır. Modülerlik prensipleri: Küçük Modüller, Bilgi Saklama, En Düşük Ayrıcalık, Bağlılık, ve Uyum. Uygulanabilirlik prensipleri: Basitlik, Yeniden Kullanım ile ve Yeniden Kullanım için Tasarım. Estetik prensibi: Güzellik.