BÖLÜM 3 MÜHENDİSLİK TASARIMI ANALİZİ YZM211 YAZILIM TASARIMI Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi
GENEL BAKIŞ 2 KISIM 1 Sınıf & Nesne Modelleme KISIM 2 Kavramsal Modelleme
KISIM 1 3 Sınıf & Nesne Modelleme
Amaçlar 4 Mühendislik tasarımı analizini (engineering design analysis) özetlemek Sınıf modellerinin farklı türlerini tanımak UML sınıf ve nesne diyagram notasyonlarını sunmak Sınıf ve nesne diyagramlarıyla ilgili kural ve önerileri sunmak Sınıf ve nesne diyagramlarının ne zaman kullanılacağını açıklamak
İçerik 5 Yazılım mühendislik analizi (Software engineering analysis) Sınıf ve nesne modelleri Sınıflar ve nesneler UML sınıf diyagramları UML nesne diyagramları
Generic Software Engineering Design SRS : Problem Design Document : Solution SRS Analyze SRS Analysis 6 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
Analiz Amaç, Girdi, ve Aktiviteleri 7 Mühendislik tasarımı problemini anlamak Yazılım Gereksinim Dokümanı (SRS Software Requirements Specification) ile Ürün tasarım modelleri (Product design models) ile Doğru anlamak için SRS ve tasarım modelleri üzerinde çalışmak Analiz modelleri oluşturmak
Analiz Modelleri 8 Bir analiz modeli, bir tasarım probleminin herhangi bir gösterimidir/temsilidir. Statik ve dinamik modeller Object-oriented ve diğer modeller
Sınıf ve Nesne Modelleri 9 Bir sınıf (nesne) modeli, bir problemdeki veya bir yazılım çözümündeki sınıfların (nesnelerin) bir temsilidir. Sınıf (nesne) diyagramları, sınıf (nesne) modellerinin grafiksel/şekilsel formlarıdır. CRC kartları gibi diğer formların kullanımı da mümkündür.
Sınıf Modellerinin Türleri 10 Analiz veya kavramsal modeller Problemdeki önemli varlıklar veya kavramlar, onların özellikleri, önemli ilişkiler Tasarım sınıf modelleri Bir yazılım sistemindeki sınıflar, özellikleri, operasyonları, ilişkileri (implementasyon ayrıntıları olmadan) İmplementasyon sınıf modelleri İmplementasyon ayrıntılarıyla birlikte bir yazılım sistemindeki sınıflar Analiz modelleri problemi temsil eder; tasarım ve implementasyon modelleri çözümü temsil eder.
Sınıflar ve Nesneler 11 Bir nesne (object) veri barındıran ve davranış sergileyen bir varlıktır. Bir sınıf (class) ortak özellikler ve operasyonlara sahip nesne kümesinin bir soyutlamasıdır. Bir özellik (attribute) bir nesne veya sınıf tarafından barındırılan bir veri öğesidir. Bir operasyon (operation) nesne veya sınıfın davranışıdır. Bir ilişki (association) bağlantılı sınıfların örnekleri (instance) arasındaki ilişkileri (relation) temsil eden, sınıflar arasındaki bağlantıdır.
UML İsimleri 12 UML'de bir isim (name), bir model elemanını tanımlayan bir karakter dizisidir. Basit isim (Simple name): ardışık harfler, rakamlar ve noktalama işaretleri Bileşik isim (Composite name): çift üst üste nokta (::) ile ayrılan ardışık basit isimler Örnekler Java::util::Vector verylongnamewithoutpunctuationcharacters short_name
UML Sınıf Sembolü 13 Table Book author title ISBN number color ring() dial() redial() hangup() Phone Exceptions nonumberexception lowpowerexception java::util::random nextboolean() nextdouble() nextfloat() nextint() nextlong() setseed() Bölmeler Sınıf ismi (Class name) Özellikler (Attributes) Operasyonlar (Operations) Diğer bölmeler Bölmelerin sırası Bölmelerin gözardı edilmesi Sınıf ismi bölmesi mutlaka bir isim içermelidir (basit veya bileşik)
Özellik (Attribute) Belirtim Formatı 14 name : type [ multiplicity ] = initial-value name simple name, cannot be suppressed type any string, may be suppressed with the : multiplicity number of values stored in attribute list of ranges of the form n..k, such that n <=k k may be * n..n is the same as n 0..* is the same as * 1 by default if suppressed, square brackets are omitted initial-value any string, may be suppressed along with the =
Operasyon (Operation) Belirtim Formatı 15 name( parameter-list ) : return-type-list name simple name, cannot be suppressed parameter-list direction param-name : param-type = default-value direction in, out, inout, return; in when suppressed param-name simple name; cannot be suppressed param-type any string; cannot be suppressed default-value any string; if suppressed, so is = return-type-list any comma-separated list of strings; if omitted (with :) indicates no return value The parameter-list and return-type-list may be suppressed together.
Özellik ve Operasyon Örnekleri 16 Player roundscore : int = 0 totalscore : int = 0 words : String[*] = () resetscores() setroundscore( in size : int ) findwords( in board : Board ) getroundscore() : int gettotalscore() : int getwords() : String[*] WaterHeaterController mode : HeaterMode = OFF occupiedtemp : int = 70 emptytemp : int = 55 setmode( newmode : Mode = OFF ) setoccupiedtemp( newtemp : int ) setemptytemp( newtemp : int ) clocktick( out ack : Boolean )
İlişki (Association) Çizgileri 17 manages subordinate Person manager renter rents rental Property Etiketli veya etiketsiz çizgiler İki yönde de okunabilir Yön okları Rol isimleri
İlişkide Çokluk (Association Multiplicity) 18 Bir ilişki çizgisinin hedef sınıf ucundaki çokluk işareti, kaynak sınıftan bir örnekle ilişkilendirilebilecek hedef sınıf örneklerinin sayısını gösterir. Student 1..* 0..3 occupies 0..1 DormRoom takes 1..* Course * teaches 1..* Professor
Sınıf Diyagramı Kuralları 19 Sınıf sembollerinde mutlaka sınıf ismi bölmesi bulunmalıdır. Bölmelerin sırası son derece önemlidir. Özellik ve operasyonlar her satıra bir tane olacak şekilde yazılmalıdır. Özellik ve operasyon belirtimlerinde yazım (syntax) hatası olmamalıdır.
Sınıf Diyagramı İçin Sezgisel Öneriler 1 20 Sınıfları, özellikleri, ve rolleri isim ifadeleriyle isimlendirin. Operasyon ve ilişkileri fiil ifadeleriyle isimlendirin. Yalnızca sınıf isimlerinin ilk harfini büyük yapın. Sınıf ve bölme isimlerini ortalayın, diğer bölme içeriğini sola-dayalı yapın.
Sınıf Diyagramı İçin Sezgisel Öneriler 2 21 İkili ilişkiler (binary associations) kullanmaya çalışın. Rol isimleri yerine ilişki isimleri kullanmayı tercih edin. İlişki ve rol isimlerini çizgi üzerinde bir tarafta, çokluk işaretlerini diğer tarafta gösterin.
Sınıf Diyagramı Kullanımı 22 Object-oriented tasarımda statik modelleme için kullanılan en temel modelleme aracıdır. Kavramsal modeller Tasarım sınıf modelleri İmplementasyon sınıf diyagramları Hem ürün tasarımı hem de mühendislik tasarımı süreçlerinin her aşamasında kullanılabilir.
Nesne Diyagramları 23 Nesne diyagramları, sınıf diyagramları kadar sık kullanılmazlar. Nesne sembolleri iki bölmeden oluşur: Nesne adı Özellikler (görmezden gelinebilir)
Object Name Format 24 object-name : class-name [ statelist ] object-name simple name class-name a name (simple or composite) statelist list of strings; if suppressed, the square brackets are omitted The object-name and class-name may both be suppressed, but not simultaneously.
Object Attribute Format 25 attribute-name = value attribute-name simple name value any string Any attribute and its current value may be suppressed together.
Nesne Sembollerine Örnekler 26 :Rectangle width = 720 height = 320 color = blue b:book [checked out] title = Ivanhoe author = Sir Walter Scott a1 x = 10 y = 14 t:telephone number = 8792460 color = black status = ONHOOK
Nesne Bağlantıları (Object Links) 27 Spesifik bir nesne ile diğer nesneler arasında bir ilişki olduğunu gösterir. İlişkilerin (association) çalışma-zamanındaki örnekleridir (instance) Link çizgisi (link line) ile gösterilir Kesiksiz düz çizgi (çizgi uçlarında ok olmamalı) İlişki adının (association name) altı-çizgili olmalıdır Bağlantı çizgilerinde asla çokluk (multiplicity) işareti bulunmamalıdır.
Nesne Diyagramı Kullanımı 28 Bir veya daha fazla nesnenin programın çalışma anındaki durumunu gösterir. Statik modeller olan sınıf diyagramlarının aksine nesne diyagramları dinamik modellerdir.
Özet 1 29 Mühendislik tasarımı SRS ve ürün tasarım modellerinin analiziyle başlar. Analiz modelleri tasarımcıların tasarım problemini anlamasına yardımcı olur. Sınıf modelleri; analiz (kavramsal) modelleri, tasarım ve implementasyon sınıf modelleri gibi modellerden oluşur.
Özet 2 30 UML sınıf modelleri tasarım süreci boyunca her tür sınıf modelinin gösterimi için kullanılabilir. UM nesne modelleri, programın çalışması sırasında nesnelerin durumlarını gösterir.
KISIM 2 31 Kavramsal Modelleme (Conceptual Modeling)
Amaçlar 32 Kavramsal modellemenin ne olduğunu açıklama Kavramsal modellemenin kullanımlarını listelemek Kavramsal modelleme için bir süreç sunmak Kavramsal modelleme için sezgisel kurallar önermek
İçerik 33 Kavrsamsal modeller (Conceptual models) Kavramsal modellerin kullanımları Kavrsamsal Modelleme Süreci Kavramsal modelleme nasıl yapılır
Kavramsal Modeller (Conceptual Models) 34 Bir kavramsal model (conceptual model), bir problemdeki önemli varlıkların, onların sorumluluk veya özelliklerinin, aralarındaki önemli ilişkilerin, ve davranışlarının statik bir modelidir. Kavramsal modeller problemin ilgi alanındaki (problem domain) gerçek hayat varlıklarıyla ilgilidir; yazılımla ilgili değildir.
Kavramsal Modellerin Kullanımları 35 Ürün tasarımında Problemin ilgi alanını anlamak Veri gereksinimlerini ortaya koymak Gereksinimleri doğrulamak (validate) Mühendislik tasarımında Ürün tasarımını anlamak Mühendislik tasarımı modellemesine bir temel oluşturmak
Kavramsal Modelleme Süreci 36 Conceptual Modeling Identify Classes Add Attributes Add Associations Add Multiplicities
Sınıfların Belirlenmesi Beyin Fırtınası 37 Ürün tasarımını çalışın (SRS, use-case modelleri, diğer modeller) İsimler veya isim ifadeleri arayın Fiziksel varlıklar Bireyler, roller, gruplar, organizasyonlar Üründe yönetilen, izlenen, kaydedilen, veya temsil edilen gerçek şeyler Ürünle etkileşimde olan kişiler, cihazlar, veya sistemler (aktörler)
Sınıfların Belirlenmesi Rasyonelleştirme 1 38 Özellik belirten isim ifadelerini çıkartın (bunlar özellik olabilir [attribute]). Davranış belirten isim ifadelerini çıkartın (bunlar operasyon olabilir). Aynı şey için farklı isimleri kombine edin.
Sınıfların Belirlenmesi Rasyonelleştirme 2 39 Ürünle doğrudan etkileşimi olmayan varlıkları çıkartın. Belirsiz (muğlak) isim ve isim ifadelerini açık hale getirin. Konuyla ilgisi olmayan veya implementasyona yönelik varlıkları çıkartın.
Caldera Örneği, Taslak 1 40 Homeowner Thermostat WaterHeaterController mode lowtemp hightemp weekenddays peaktimes Clock time
Özelliklerin Eklenmesi 1 41 SRS ve ürün tasarım modellerini çalışın Sıfatları ve diğer niteleyicileri bulmaya çalışın Problemin ilgi alanından isimler kullanın. Yalnızca problemde belirtilen tipleri, çoklukları, ve ilk-değerleri kullanın.
Özelliklerin Eklenmesi 2 42 Problem için önemli olmadıkça nesne tanımlayıcıları (object identifier) eklemeyin. İmplementasyonla ilgili özellikleri eklemeyin. Operasyonları eklerken tutumlu davranın.
Caldera Örneği, Taslak 2 43 Homeowner Thermostat setting : Temperature WaterHeaterController mode : ModeType lowtemp : Temperature hightemp : Temperature weekenddays : Day[0..7] peaktimes : TimePeriod[1..3] Clock time
İlişkilerin Eklenmesi Beyin Fırtınası 44 SRS ve ürün tasarım modellerini çalışın Model varlıkları arasındaki ilişkileri gösteren fiilleri ve edatları bulmaya çalışın. Örnek ilişkiler Fiziksel veya organizasyonel yakınlık; Kontrol, koordinasyon, ve etkileme; Yaratım, yıkım, veya modifikasyon; İletişim; Sahiplik veya içerme/barındırma.
İlişkilerin Eklenmesi Rasyonelleştirme 1 45 Bir sınıf çifti arasındaki ilişkilerin sayısını en fazla bir olarak sınırlandırın. Aynı ilişki için farklı isimleri kombine edin. Üç veya daha fazla sınıf arasındaki ilişkileri ikili ilişkilere dönüştürecek şekilde parçalayın.
İlişkilerin Eklenmesi Rasyonelleştirme 2 46 İlişki isimlerinin mümkün olduğunca açıklayıcı ve kesin olmasına çalışın. Gerek duyulan yerlere rol isimleri ekleyin.
Caldera Örneği, Taslak 3 47 Homeowner setsparameters Thermostat setting : Temperature WaterHeaterController mode : ModeType lowtemp : Temperature hightemp : Temperature weekenddays : Day[0..7] peaktimes : TimePeriod[1..3] sets checks Clock time
Çoklukların Eklenmesi (Multiplicities) 48 İlişkili varlık çiftlerini sırayla ele alın. Bir sınıfı hedef (target), diğer sınıfı kaynak (source) yapın. Kaynak sınıfın bir örneği ile hedef sınıfın kaç örneğinin ilişkide olabileceğini belirleyin. Hedef kaynak sınıfı yer değiştirip başka tür çokluk varsa bulmaya çalışın. Ürün tasarımına başvurun. Yalnızca problem için önemli olan çoklukları ekleyin.
Caldera Örneği, Final Taslak 49 Homeowner Thermostat * 1 setsparameters WaterHeaterController mode : ModeType lowtemp : Temperature hightemp : Temperature weekenddays : Day[0..7] peaktimes : TimePeriod[1..3] 1 setting : Temperature sets checks 1 1 1 Clock time
Özet 1 50 Bir kavramsal model, bir tasarım problemindeki önemli varlıkları, onların özelliklerini ve aralarındaki ilişkileri temsil eder. Kavramsal modeller tasarım problemini temsil eder, yazılım çözümünü değil. Kavramsal modeller hem ürün tasarımı hem de mühendislik tasarımı analizi için çok kullanışlıdır.
Özet 2 51 Kavramsal modelleme için kullanılabilecek bir süreç vardır. Süreç adımları ürün tasarımına dair çıktı metinleri analiz edilerek gerçekleştirilebilir. Kavramsal modelleme için tasarımcıların yararlanabileceği çeşitli sezgisel öneriler bulunmaktadır.