(Application Domain Model)

Transkript

(Application Domain Model)
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

UML Etkileşim Diyagramları

UML Etkileşim Diyagramları www.akademi.itu.edu.tr/buzluca www.buzluca.info

Detaylı

7. İkinci Iterasyon

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...

Detaylı

Tasarım Modelinin (Design Model) Oluşturulması

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.

Detaylı

01. Giriş - Ninova - İstanbul Teknik Üniversitesi

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...

Detaylı

8.GoF Kalıpları

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...

Detaylı