(Application Domain Model)
Transkript
Yazılım Modelleme ve Tasarımı Uyguluma (Problem) Uzayının Modellenmesi (Application Domain Model) Yazılım mühendislerinin sadece yazılım konusunda uzman olmaları yeterli değildir; geliştirecekleri yazılım ile ilgili dünyayı da tanımaları, anlamaları gerekir. Analiz aşamasının temel amacı uygulama alanını (application domain) tanımaktır. Eğer yazılım ekibi daha önce bu alanda çalıştıysa analiz aşaması daha kısa sürebilir. Bu aşamada, çözülmek istenen probleme ilişkin (gerçek) dünyanın; doğru, özlü, anlaşılır, sınanabilir bir modeli oluşturulur. Uygulama uzayındaki (application domain) modelleme, problemin çözümlenmesi (analysis), yani anlaşılması aşamasını oluşturur. Amaç problemin çözülmesi değil anlaşılmasıdır. “Ne?” sorusunun cevabı aranır. “Nasıl?” sorusunun cevabı tasarımın konusudur. Müşterinin tarif ettiği sistemde hangi varlıklar var? Bu varlıklar arasındaki ilişkiler nelerdir? Bu aşamada kendi yorumlarımıza değil müşterinin isteklerine yoğunlaşırız. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.1 Yazılım Modelleme ve Tasarımı Uyguluma Modeli (devam) İsteklerin çözümlenmesinde (modellenmesinde) oluşturulan kullanım senaryoları (use case) nesneye dayalı özellikler taşımaz. Uygulama uzayının modellenmesinde ise nesneye dayalı yöntem kullanılacaktır. Uygulama uzayının modelinde gerçek dünyayı oluşturan kavramsal sınıflar ve nesneler yer alır. Bu model oluşturulurken yazılım nesneleri (çözüm) düşünülmez. Uygulama uzayının modeli aşağıdaki bilgileri içeren sınıf diyagramları ile belirtilir: 1. Gerçek dünyadaki kavramsal sınıflar ve nesneler (Yazılım sınıfları/nesneleri değil) 2. Sınıflar arasındaki ilişkiler (bağlantılar) (association), 3. Sınıfların nitelikleri (attributes) Oluşturulan analiz modeli iki amaca hizmet eder: • Yazılım ile oluşturacağımız sistemi anlamak • Tasarım aşamasına geçildiğinde sorumluluk atayacak sınıfları belirlerken kaynak olmak www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.2 1 Yazılım Modelleme ve Tasarımı Örnek bir Kavramsal Sınıf Diyagramı Sales LineItem Kavramsal sınıf (Concept or Domain object) Records-sale-of Item 1 0..1 quantity * 1..* Çoğullama (Multiplicity) Contained-in 1 Bağlantı (Association) Stocked-in 1 Store Sale 0..1 address name date time 1 Nitelikler Paid-by (Attributes) 1 1 Payment 1 Houses 1..* Register Captured-on amount www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.3 Yazılım Modelleme ve Tasarımı Uygulama modeli gerçek dünya kavramlarını gösterir, yazılım sınıflarını değil. Gerçek dünya kavramları: Uygulama modeli için uygundur. Sale date time Student name Yazılım ile ilgili kavramlar uygulama modelinde yer almazlar. SalesDatabase Uygun değil. Yazılım öğesi. Tasarım modelinde yer alabilir. Student Sale date time name Uygun değil. Yazılım sınıfları. Sorumluluklar tasarım aşamasında atanacaktır. getAverage() print() www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.4 2 Yazılım Modelleme ve Tasarımı Gerçek dünya ile yazılım arasındaki yakınlık (Lower representational gap between real-world and software) Tasarım aşamasında yazılım sınıflarının isimleri ve sorumlulukları belirlenirken uygulama modelinden esinlenilecektir. Student Uygulama modeli Kavramsal sınıflar: 1 name takes * Course CRN İsim, ilişki ve davranışlar esinlenilir. Student Tasarım modeli Yazılım sınıfları: Name: String getAverage():double 1 Course myCourses * {List} CRN: String getGrade():double Uygulama (analiz) modeli ile yazılım (tasarım) modeli tamamen aynı olmazlar ancak benzerdirler. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.5 Yazılım Modelleme ve Tasarımı Kavramsal Sınıfların Belirlenmesi (Bulunması) Kavramsal sınıflar gerçek dünyadaki somut ve soyut varlıklara karşı düşen sınıflardır. En çok kullanılan yöntemler: 1. Kavramsal sınıfların kategori listesinden yararlanma 2. Kullanım senaryolarındaki isimlerden (isim tamlamalarından) yararlanmak 3. Var olan (eski) modellerin güncellenmesi. Yayımlanmış modeller bulunmaktadır. Bu yöntemler birlikte de kullanılabilir. 1. Kavramsal Sınıfların Kategorileri: Deneyimlerden yararlanılarak uygulama uzayındaki sınıfların hangi kategorilerde yer aldığı belirlenmiş ve bir liste yapılmıştır. Modellenecek olan uygulama incelenerek bu listedeki kategorilere uyan unsurlar belirlenmeye çalışılır. Bazı kategoriler ve örnek kavramsal sınıflar: • Fiziksel ve somut nesneler : Ürün, terminal, uçak • İşlem (Transaction): Satış, Ödeme, rezervasyon (Eğer kendi nitelikleri varsa) • İşlem Kalemleri (Transaction line itemes): Satış kalemi • İşlem veya hizmetle ilgili ürün ve kalemler: Ürün, uçuş, yemek • İşlemin ve Hizmetin Yeri: Dükkan, havalimanı, sınıf • Kişilerin ve kuruluşların rolleri: Müşteri, yolcu, öğretmen, havayolu şirketi, dükkan • İşlem kayıtlarının tutulduğu yerler: Satış defteri, uçuş planı www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.6 3 Yazılım Modelleme ve Tasarımı Kavramsal sınıfların kategori listesinin devamı: • Nesnelerin tanıtıcı bilgileri (description): Ürün tanımı, uçuş tanımı. • Kataloglar (Nesnelerin tanıtıcı bilgilerini tutarlar): Ürün kataloğu, uçuş kataloğu. • Başka nesneler içerebilen taşıyıcılar (container): Dükkan, kutu, uçak. • Taşıyıcılarda yer alan nesneler: Ürün, yolcu. • Finans elemanları: Çek, kart. 2. Kavramsal Sınıfların İsimler Yardımıyla Belirlenmesi: Kavramsal sınıfların belirlenmesinde kullanılan ikinci yöntem ise senaryolarda ve problemin tanımında yer alan isim ve isim tamlamalarından yararlanılmasıdır. Kullanım senaryolarında yer alan tüm isimler ve isim tamlamaları işaretlenir. Çoğunlukla ilk aşamada gereğinden fazla sınıf elde edilir. Daha sonra uygulanan eleme yöntemi ile gereksiz sınıflar ayıklanır. Yinelemeli (iterative) yazılım geliştirmede her yinelemede (iteration) senaryoların sadece bir kısmı üzerinde çalışılıyor olabilir. Bu örnekte de sadece senaryo grubunun doğal akış kısmı ele alınmış ve burada isim ve isim tamlamaları işaretlenmiştir. Her ismin bir defa işaretlenmesi yeterlidir. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.7 Yazılım Modelleme ve Tasarımı Örnek: Main Success Scenario (or Basic Flow): 1. Customer arrives at a POS checkout with goods and/or services to purchase. 2. Cashier starts a new sale. 3. Cashier enters item identifier. 4. System records sale line item and presents item description, price, and running total. Price calculated from a set of price rules. Cashier repeats steps 3-4 until indicates done. 5. System presents total with taxes calculated. 6. Cashier tells Customer the total, and asks for payment. 7. Customer pays and System handles payment. 8. System logs completed sale and sends sale and payment information to the external Accounting system (for accounting and commissions) and Inventory system (to update inventory). 9. System presents receipt. 10.Customer leaves with receipt and goods (if any). Extensions: 7a. Paying by cash: 1. Cashier enters the cash amount tendered. 2. System presents the balance due. ¨¨¨ www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.8 4 Yazılım Modelleme ve Tasarımı Gereksiz sınıfların elenmesi: • Fazlalık Sınıflar (Redundant classes): Aynı unsuru ifade eden iki sınıftan daha tanımlayıcı olan alınır. Kişi – müşteri: müşteri • İlgisiz sınıflar (Irrelevant classes): Problemin çözümü ile ilgisi olmayan ya da çözümlemenin o iterasyonunda ilgilenilmeyen unsurlar elenir. Kredi kartı • Belirsiz sınıflar (Vague classes): Sınırları iyi çizilmemiş, fazla geniş (kaba) tanımı olan sınıflar elenir. Bunlar çoğunlukla başka sınıfların parçalarıdır ya da birden fazla sınıftan oluşurlar. Muhasebe sistemi • Nitelikler (Attributes): Nitelikler de isimler ile ifade edildiğinden sınıflar ile karıştırılabilirler. Kendi başlarına varlıkları anlamlı olmayan sadece başka sınıfların niteliklerini oluşturan unsurlar olası sınıflar listesinden silinirler. Miktar • İşlemler (Operations): Sadece başka nesneler üzerinde uygulanan işlemler sınıf olamaz. Kendi nitelikleri olan ve başka olaylardan etkilenen işlemler sınıftır. Örneğin “ödeme” bir işlem gibi görünmekte ancak kendine ait özellikleri (miktar, para birimi, tarih vb.) olduğundan tek başına bir sınıftır. • Gerçekleme unsurları (Implementation constructs): Gerçekleme aşamasını ilgilendiren unsurlar uygulama uzayının çözümlenmesinde yer almazlar. Bu elemeden geçenler uygulama uzayındaki unsurlara karşı gelen sınıflar olacaktır. Her sınıfın anlamını açıklayan bir sözlük hazırlanması yararlı olacaktır. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.9 Yazılım Modelleme ve Tasarımı Problem Uzayı Modelini Oluşturmada Haritacı (Mapmaker) Yöntemi: Gerçek dünyanın haritasını oluşturmada yararlanılan kavramlar burada da kullanılabilir: 1. Fiziksel dünyadaki gerçek isimleri kullanın. 2. İlgisiz özellikleri dışlayın. 3. Var olmayan şeyleri eklemeyin. Örnek POS sistemine ait kavramsal sınıflar Store Register Sale Item Cashier Sales Line Item Payment Product Specification www.akademi.itu.edu.tr/buzluca www.buzluca.info Ledger Product Catalog Customer – – – – – – – – – – – Register Item Store Sale Sales Line Item Cashier Customer Ledger Payment Product Catalog Product Specification ©2002 - 2012 Dr. Feza BUZLUCA 3.10 5 Yazılım Modelleme ve Tasarımı Betimleme (specification or description) sınıflarına gerek duyulması Dükkanda satılan malzemelerle ilgili fiyat, tip numarası gibi bilgilerin o malzemeye ilişkin nesnelerde tutulması öngörülebilir. Ancak dükkandaki o cinsten tüm malzeme satıldığında (nesneler yok olduğunda) o malzemeyle ilgili bilgiler de kaybolur. Böyle sistemlerde bir nesneyi betimleyen bilgilerin başka sınıflarda tutulması gerekir. Item description price serial number itemID Kötü ProductSpecification Item Describes description price itemID * 1 İyi serial number Ne zaman gerek duyulur? • Bir malzeme ya da hizmetle ilgili bilgilere o malzeme ya da hizmetin var olup olmamasından bağımsız olarak erişmek gerekli ise, • Bir nesnenin yok edilmesi bilgi kaybına neden oluyorsa, • Gereksiz bilgi tekrarını önlüyorsa. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.11 Yazılım Modelleme ve Tasarımı Kavramsal Sınıflar Arasındaki Bağlantıların Belirlenmesi Uygulama uzayının modeli oluşturulurken ilk aşamada kavramsal sınıflar bulunur. İkinci aşamada ise bu sınıflar arasındaki bağlantılar (associations) belirlenir. Bağlantılara ilişkin UML notasyonu: Bağlantının adı Okuma yönü Register 1 Records-current Çoğullama sayısı, modeli nasıl kullanacağımıza bağlıdır. Depo www.akademi.itu.edu.tr/buzluca www.buzluca.info Sale Çoğullama İçerir 1 veya 0..1 1 * Mal Bir malın tükenip depoda bulunmaması bizi ilgilendiriyorsa Depo ucuna ait çoğullama sayısı 0..1 olabilir. Aksi durumda bu sayının 1 olması yazılım açısından daha uygundur. ©2002 - 2012 Dr. Feza BUZLUCA 3.12 6 Yazılım Modelleme ve Tasarımı Çoğullama (multipicity) Sayısı Çoğullama sayısı o sınıftan kaç tane nesnenin, diğer sınıftan kaç tane nesne ile belli bir anda geçerli olarak ilişkilendirilebileceğini gösterir. Öğrenci Alır * 1.. Ders * Soldan sağa: Bir öğrenci en az bir (veya daha fazla) ders alır. Sağdan sola: Bir ders hiçbir öğrenci tarafından alınmayabilir veya aynı anda birden fazla öğrenci tarafından alınabilir. Çoğullama sayıları analiz aşamasında müşterinin isteklerine göre belirlenir. * 1..* T zero or more; "many" T one or more 5 3, 5, 8 1..40 T www.akademi.itu.edu.tr/buzluca www.buzluca.info T exactly 5 T exactly 3, 5, or 8 one to 40 ©2002 - 2012 Dr. Feza BUZLUCA 3.13 Yazılım Modelleme ve Tasarımı Bağlantıların Bulunması Bağlantı (association) iki sınıf arasında o sistemde belli bir süre geçerli olan ilişkidir. Bu konuda da değişik yöntemler kullanılmaktadır: 1. Yaygın Bağlantılar Listesi (Common Associations List) 2. Kullanım senaryolarındaki fiillerden yararlanmak. Yaygın Bağlantılar Listesi (Common Associations List): • physical containment: Register - Store • logical containment: Line Item - Sale • log/record relation: Sale - Register • usage relation: Cashier – Register, Manager - Register • communication relation: Customer - Cashier • description: Product Spec. - Item • membership relation: Cashier - Store • ownership relation: Store - Register • transactional relation: Customer - Payment, Payment – Sale Bu yöntemde, iki kavram arasındaki ilişkiye ait bilgi belli bir süre sistem tarafından bilinmesi gerekiyorsa (need-to-know association) göz önüne alınır. İki kavram arasındaki ilişki tasarlanan sistem açısından gerekli değilse dikkate alınmaz. Örneğin Satış – Müdür bağlantısı gerekli olmayabilir. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.14 7 Yazılım Modelleme ve Tasarımı Diğer yöntemde ise kullanım senaryolarındaki fiiller dikkate alınarak tüm olası bağlantılar (ilişkiler) listelenir. Aşağıdaki maddeler dikkate alınarak gereksiz bağlantılar ayıklanır: • Önceki aşamada elenmiş olan sınıflar arasındaki bağlantılar gereksizdir. • Sistemin amacı açısından gereksiz/ilgisiz olan bağlantılar. • Gerçekleme aşamasını ilgilendiren bağlantılar. • Faaliyet (Actions): Örnek ATM kredi kartı kabul eder. Bu cümle bir ilişkiyi değil müşteri ile ATM arasındaki etkileşimleri içerir. • Üçlü (ternary) bağlantılar ikili bağlantılar şeklinde ifade edilmelidir. “Memur hesap ile ilgili işlemleri girer.” ifadesini “Memur işlemleri girer.”, “İşlemler hesapla ilgilidir.” şeklinde ikiye bölmek gerekir. • Başka bağlantılardan türetilebilen (derived) ilişkiler elenebilir. Örnek: Banka konsorsiyumu ATM’leri paylaşır ilişkisi aşağıdaki iki ilişkiden türetilebilir. Banka konsorsiyumu merkezi bilgisayara sahiptir. Merkezi bilgisayar ATM’leri kontrol eder. Genellikle UML diyagramında iki sınıf arasında birden fazla yol varsa, çözümlemede fazlalık (türetilebilir) ilişkiler olduğu düşünülebilir. Her türetilebilir ilişkinin elenmesi doğru değildir. Sistem açısından önemli olanlar kalabilir. Örneğin toplumda Baba – kardeş yerine Amca ilişkisi kullanılmaktadır. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.15 Yazılım Modelleme ve Tasarımı Öneriler • Sistemin tasarımını ilgilendiren bağlantılara (need-to-know) yoğunlaşmak gerekir. • Bağlantılara doğru isimler atanmalı. Tip adı – fiil – tip adı Bağlantının adı sadece bir ya da bir kaç işlemin adı değil bir ilişkinin ifadesi olmalıdır. Store Örnekler: 1 Contains 1..* Captures Register 1..* 1 Sale Paid-by 1 1 Payment Airline 1 Employs 1..* Assigned-to Person 1..* * * 1 Flight 3Assigned-to * 1 Plane Supervises www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.16 8 Yazılım Modelleme ve Tasarımı • Gerekli olan yerlere rol adları da yazılmalıdır. Roller bağlantının iki ucunu oluştururlar. Çalışan Kişi Çalışır İşveren 1..* Firma 1 • Sahip olma, oluşma (aggregation, compositon) ilişkilerini ayrıntılı olarak belirlemek bu aşamada gereksizdir. • Bu aşamada bazı bağlantıların unutulması sistem tasarımını çok etkilemez. • Kavramsal sınıfların doğru olarak belirlenmesi bağlantılardan daha önemlidir. • Gereğinden fazla bağlantı modelin anlaşırlılığını azaltabilir. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.17 Yazılım Modelleme ve Tasarımı Records-sale-of Ledger 0..1 1 1 Recordsaccountsfor 1 Sales LineItem Contained-in 1.. * 1 Sale Logscompleted * 0..1 Paid-by 1 1 Is-for 1 1 Payment Customer www.akademi.itu.edu.tr/buzluca www.buzluca.info Captured-on 1 1 Product Product Contains Specification Catalog 1 1..* 1 Used-by * Store Stocks * 1 1 Describes * Item 1..* 1 Houses 1..* Register 1 3Works-on 1 Cashier ©2002 - 2012 Dr. Feza BUZLUCA 3.18 9 Yazılım Modelleme ve Tasarımı Kavramsal Sınıfların Niteliklerinin (Attributes) Belirlenmesi Bir sınıfın nitelikleri, o sınıftan nesneler yaratıldığında nesnelere özgü değerler alabilen verilerdir. Bu aşamada amaç, üzerinde çalışılan senaryoları ilgilendiren nitelikler bulmaktır. Nitelikler genellikle basit veri tipleri (int, string, bool, date) ifade edilirler. Eğer bu aşamada nitelik olarak düşünülen veri daha karmaşık bir tipte ise o verinin bir bağlantı ya da ayrı bir sınıf olma olasılığı yüksektir. Basit bir özellik değil Cashier Kötü name currentRegister Cashier İyi 1 name Uses Register 1 number www.akademi.itu.edu.tr/buzluca www.buzluca.info 3.19 ©2002 - 2012 Dr. Feza BUZLUCA Yazılım Modelleme ve Tasarımı Bazı durumlarda nitelikler basit veri tiplerinden oluşmazlar. Eğer bir nitelikte aşağıdaki özellikler varsa başka bir sınıf ile ifade edilmesi doğru olur. • Birden fazla alandan oluşuyorsa: Telefon no, ad/soyad • Üzerinde işlem yapılıyorsa: Kredi kartı numarası onaylanması • Kendi nitelikleri varsa: Fiyatın geçerlilik tarihi olabilir. Bu tip nitelikler iki farklı şekilde de gösterilebilir. Address ItemID OK OK Product Specification Product Specification 1 1 id manufacturerCode countryCode Store 1 1 Street 1 Street 2 City Store address : Address id : ItemID www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.20 10 Yazılım Modelleme ve Tasarımı Birimleri olan büyüklükleri de basit veri tipleri ile göstermek doğru olmaz. yararsız Payment amount : Number Payment Has-amount4 * Payment amount : Quantity Payment amount : Money Quantity 1 amount : Number quantities are pure data values, so suitable to show in attribute section * Is-in 4 Unit 1 ... daha iyi variation: Money is a specialized Quantity whose unit is a currency www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.21 Yazılım Modelleme ve Tasarımı Eğer analiz sırasında kavramsal sınıfların özellikleri hakkında daha fazla bilgi elde edilmişse bunlar da diyagramlar da belirtilir. Bu sınıflar sadece problemdeki kavramların resmidir, yazılım sınıfları değillerdir. Tasarım aşamasında yazılım sınıfları oluşturulurken kavramsal sınıflar kaynak olarak kullanılacaktır. Math Sale - dateTime : Date - / total : Money + pi : Real = 3.14 {readOnly} Public visibility readonly attribute with initialization Private visibility attributes Person firstName middleName : [0..1] lastName Optional value Derived attribute Diğer nitelikler kullanılarak hesaplanır. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.22 11 Yazılım Modelleme ve Tasarımı Register Item Store Sale address : Address name : Text Sales LineItem Cashier date : Date time : Time Customer Manager quantity : Integer Product Specification Product Catalog Payment amount : Money description : Text price : Money id: ItemID www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.23 Yazılım Modelleme ve Tasarımı Records-sale-of Örnek uygulamanın analiz diyagramı 0..1 Sales LineItem quantity Contained-in 1 Product Product Contains Specification Catalog Ledger itemID 1 1..* description price 1 1 Describes Used-by 1 1 * * RecordsaccountsStore Stocks Item for 1 name * 1..* address 1 1.. * 1 Sale * date 0..1 time / total Paid-by 1 1 Is-for 1 1 Payment amount www.akademi.itu.edu.tr/buzluca www.buzluca.info Customer 1 Houses Logscompleted 1..* Register Captured-on id 1 1 3Works-on 1 Cashier id ©2002 - 2012 Dr. Feza BUZLUCA 3.24 12 Yazılım Modelleme ve Tasarımı İşlem Sözleşmeleri (Operation Contracts) Birçok uygulamada kullanım senaryolarını (use-case) yazmak isteklerin (ve sistemin davranışının) modellenmesi için yeterlidir. Bazı durumlarda ise karmaşık bir işlemin daha iyi anlaşılabilmesi için o işlem için sözleşme (contract) yazmak yararlı olur. Sözleşme; ön koşullar sağlandığında, sistemdeki bir işlem gerçekleştirildikten sonra, sistemin (uygulama uzayı nesnelerinin) alacağı durumların (son koşulların) tarif edilmesidir. • Senaryolarda, aktörler ile sistem arasındaki etkileşim belirtilir. • Sözleşmelerde ise sistem içi nesnelerdeki değişim belirtilir. Sözleşmelerin yazılmasında izlenecek yöntem: 1. Sistem etkileşim diyagramlarından (senaryolardan) işlemler belirlenir. 2. Karmaşık işlemler için sözleşmeler yazılır. 3. Sözleşmelerde önemli olan son koşullardır. Son koşullar aşağıdaki kategorilerden oluşur: • Bir nesne (instance) yaratma / yok etme (instance creation) • Bir niteliğin güncellenmesi (attribute modification) • Bir bağlantı oluşturma, koparma (association formation) Sözleşmelerde sözü edilen nesneler uygulama uzayı (gerçek dünya) nesneleridir. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.25 Yazılım Modelleme ve Tasarımı Senaryoların yazılmasına benzer şekilde, sözleşmelerin de bölümleri ve bir yazım biçimleri vardır. Sözleşmelerin bölümleri: • Sözleşmenin numarası ve adı • Sözleşmenin ait olduğu işlem • Referans: Sözleşmenin ilgili olduğu kullanım senaryosu • Ön koşullar (Preconditions): Sözleşmenin sağlanabilmesi (o işlemin gerçekleşmesi) için işleme gelinmeden önce gerçekleşmesi zorunlu olan ön koşullar. • Son koşullar (Postconditions): Sistemde meydana gelmiş olan değişiklikler. Nesne yaratma, nesneleri ilişkilendirme, nitelikleri güncelleme. Dikkat: Buradakiler gerçek dünya nesneleridir. Son koşullar yazılırken geçmiş zaman kipi kullanılır. Çünkü bu bölümde yazılan maddeler, işlem gerçekleştikten sonra sistemdeki nesnelerin hangi durumlara geldiğini belirtmektedir. Son koşullar o işlemin nasıl yapılacağını gösteren adımlar değildir, nesnelerin gözlemlenen durumlarıdır. Bir işlemin nasıl yapılacağı sorusunun cevabı tasarımda aranır. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.26 13 Yazılım Modelleme ve Tasarımı Örnekler: Bu bölümde, örnek POS sistemine ait SG1: Satış İşlemleri kullanım senaryolarındaki bazı işlemlere ilişkin sözleşmeler gösterilmiştir. : Cashier :System makeNewSale() Örnek: enterItem Contract CO2: enterItem loop [more items] enterItem(itemID, quantity) description, total Operation: enterItem(itemID: ItemID, quantity: integer) Reference: Use Cases: Process Sale PreCond.: There is a sale underway PostCond.: - A SalesLineItem instance sli was created (instance creation) - sli was associated with the current Sale (Association formed) - sli.quantity became quantity (attribute modification) - sli was associated with a ProductSpec. based on itemID match (association formed) endSale() total with taxes makePayment(amount) change due, receipt Burada sözü edilen nesneler (örneğin sli), bağlantılar ve niteliklerin hepsi uygulama uzayı ile ilgilidir. Bkz. Uygulama uzayı sınıf diyagramı www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.27 Yazılım Modelleme ve Tasarımı Sözleşmeler, uygulama modelinde bazı değişiklikler (eklemeler) yapılmasına neden olabilirler. Aşağıdaki örnekte endSale() işlemi için sözleşme yazılmıştır. Bu sistemde, biten satışların silinmediği sadece “bitti” olarak işaretlendiği varsayılmıştır. Örnek: endSale Contract CO3: endSale Operation: Cross References: PreConditions: endSale() Use Cases: Process Sale There is a sale underway PostConditions: - Sale.isComplete became true (attribute modification) Sale isComplete: Boolean date time Bu nitelik analiz modelinde yoktu. Sözleşme yazılırken belirlendi. Anımsatma: • Bir sözleşme senaryodaki bir işlemle ilgilidir. • Senaryolar yeterli ise sözleşme yazmaya gerek yoktur. • Sözleşmeler sadece senaryolardaki karmaşık işlemler için yazılır. www.akademi.itu.edu.tr/buzluca www.buzluca.info ©2002 - 2012 Dr. Feza BUZLUCA 3.28 14 Domain Model Sale 1.. * 1 date ... Sales LineItem ... ... quantity the domain objects, attributes, and associations that undergo state changes domain objects Use-Case Model : System Operation: makeNewSale Process Sale 1. Customer arrives ... 2. ... 3. Cashier enters item identifier. 4.... : Cashier system events make NewSale() Post-conditions: - ... system operations enterItem (id, quantity) Operation: enterItem endSale() Post-conditions: - A SalesLineItem sli was created -... makePayment (amount) Use Cases Contracts System Sequence Diagrams in addition to the use cases, requirements that must be satisfied by the design of the software some ideas and inspiration for the postconditions derive from the use cases requirements that must be satisfied by the design of the software instance Design Model : Register : ProductCatalog : Sale enterItem (itemID, quantity) spec := getProductSpec( itemID ) addLineItem( spec, quantity ) ... 3.29 15
Benzer belgeler
7. İkinci Iterasyon
Diğer yöntemde ise kullanım senaryolarındaki fiiller dikkate alınarak tüm olası
bağlantılar (ilişkiler) listelenir.
Aşağıdaki maddeler dikkate alınarak gereksiz bağlantılar ayıklanır:
• Önceki aşam...
Tasarım Modelinin (Design Model) Oluşturulması
Bu durumda Register sınıfının Payment sınıfı hakkında bilgiye sahip olması gerekir.
Aynı sorumluluk aşağıdaki şekilde Sale sınıfına atanırsa bağımlılık azaltılmış olur.
01. Giriş - Ninova - İstanbul Teknik Üniversitesi
(use case) nesneye dayalı özellikler taşımaz.
Uygulama uzayının modellenmesinde ise nesneye dayalı yöntem kullanılacaktır.
Uygulama uzayının modelinde gerçek dünyayı oluşturan kavramsal sınıflar ve...
8.GoF Kalıpları
Yazılım mühendislerinin sadece yazılım konusunda uzman olmaları yeterli değildir;
geliştirecekleri yazılım ile ilgili dünyayı da tanımaları, anlamaları gerekir.
Analiz aşamasının temel amacı uygula...