erdoğan doğdu tobb uml
TRANSCRIPT
1
BİL211Ders 3: UML ile Nesnesel Modelleme (Ch.2 Jia)
Erdoğan DoğduTOBB Ekonomi ve Teknoloji Üniversitesi
Bilgisayar Mühendisliği BölümüAnkara
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 2
İçerik
Esaslar ve KavramlarYapıların ve ilişkilerin modellenmesiDinamik hareketlerin (behavior) modellenmesiGereksinimlerin ‘kullanım şekilleri’ (use cases) ile modellenmesiÖrnek bir çalışma: E-Kitapçı
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 3
UML tarihçesi
UML: Unified Modelling LanguageMany modelling methodologies by 1990sBooch method, Rumbaugh’s OMT, Jacobson’s OOSE unified in RationalObject Management Group (OMG) www.omg.orgUML 1.0 (1997)UML 2.0 (2004)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 4
UML nedir?
Yazılım tasarımı için kullanılan bir modelleme diliTasarlanan sistemin 3 önemli yönünü modeller
Fonksiyonel (işlevsel) modelKullanıcının bakışı ile sistem (kullanım şekilleri)
UML Use Case Diagrams
Nesne modeliSistemin yapısı: nesneler, özellikleri, işlemler, yapısal ilişkiler
UML Class Diagrams
Dinamik modelSistemin iç işleyişi
UML Sequence, Avtivity, State-Chart Diagrams
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 5
Nesneler ve Sınıflar
Nesne (object)Gerçek dünyada, ayrı ayrı tanımlanabilen herşey bir nesnedir.Modelde, her nesnenin bir kimliği, durumu, ve davranışı vardır.
Sınıf (class)Gerçek dünyada, benzer karakteristik ve davranışlara sahip nesneler bir sınıf (class) ile temsil edilir.Modelde, bir sınıf, nesneler tarafından paylaşılan durum ve davranışları temsil eder.
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 6
Nesneler ve Sınıflar
Bir sınıf, nesneler tarafından paylaşılan durum ve davranışları temsil eder
Benzer karakteristik ve davranışlara sahip nesneler bir sınıf (class) ile temsil edilir
Sınıf(Class)
Her nesnenin bir kimliği (identity), durumu (state), ve davranışı (behavior) vardır
Ayrı ayrıtanımlanabilen herşey bir nesnedir
Nesne(Object)
Modelde GösterimiGerçek Dünyada Yorumlanması
2
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 7
Nesne (object)
Kimlik (identity)Nesneyi birtek (unique) olarak tanımlar ve onu diğer nesnelerden ayırır
Durum (state)Özellikler (fields veya attributes) ile belirtilirÖzellik =
ad (name) + tür (type) + değer (value) Davranış (behavior)
Metotlar (methods veya operations): nesnenin durum bilgilerine erişebilen ve değiştirebilen işlemler. Metot, metot adı, aldığı parametre türleri, ve döndürdüğü tür ile tanımlanır. Herhangi bir değer döndürmeyen metotlar void ile belirtilir.
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 8
Nesne (object): Örnek
Öğrenci123456:Durum:
ad: “Serdar Doğdu”öğrenciNo: “st123456”yıl: 2005
Metotlar:dersEkle()dersSil()danışmanAta()
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 9
Nesne (object)
İki nesne:“eşit” (equal): durumları aynı; özellik değerleri aynı.“aynı” (identical): aynı nesne
Metotlar:“erişim metotları” (accessors): özellik değerlerini değiştirmeyen metotlar“değişim metotları” (mutators): özellik değerlerini değiştiren metotlar
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 10
Sınıf (class)
Nesneler (objects veya instances) sınıf(class) tanımı kullanarak oluşturulurlar (instantiation).Sınıf (class) aşağıdakileri tanımlar:
Alanlar (fields): Nesne özelliklerini tanımlayan değişkenler, adları ve türleri ile.Metotlar (methods): Metot adları, döndürdüğü tür, parametreleri, ve metotu gerçekleştiren program kodu
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 11
Sınıf (class): Örnek
ÖğrenciAlanlar (fields)
String adString öğrenciNoint yıl
Metotlar (methods)boolean dersEkle(String dersKodu,
String dönem)boolean dersSil(String dersKodu, String dönem)boolean danışmanAta(Danışman yeniDanışman)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 12
UML’de sınıf (class) gösterimi
Sınıfİsmialan1alan2..alann
metot1metot2..metotm
Sınıf Adı
Alanlarıntanımları
Metotlarıntanımları
ÖğrenciString adıString öğrenciNoint yılboolean dersEkle(String dersKodu, String dönem)
boolean dersSil(String dersKodu, String dönem)
boolean danışmanAta(Danışman yeniDanışman)
3
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 13
UML sınıf tanımları
Alanlar[Erişim][Tür] Ad [[Sayı]] [=İlkDeğer]Örnek: private String ad = “Serdar”Standart UML gösterimi
[Erişim] Ad [[Sayı]] [:Tür] [=İlkDeğer]Örnek: private yıl:int = 2005
Metotlar[Erişim][Tür] Ad ([Parametre, ...])Örnek: public boolean dersAl (String dersKodu)Standart UML gösterimi
[Erişim] Ad ([Parametre, ...]) [:Tür] Örnek: public danışmanAta(Danışman d):boolean
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 14
Erişim (visibility)
Public: diğer sınıflar erişebilirProtected: aynı paketteki (package) diğer sınıflar ve bütün alt sınıflar (subclasses) tarafında erişilebilirPackage: aynı paketteki (package) diğer sınıflar tarafında erişilebilirPrivate: yalnızca içinde bulunduğu sınıf tarafından erişilebilir (diğer sınıflar erişemezler)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 15
Erişim (visibility)
-privateprivate
~package
#protectedprotected
+publicpublic
UMLJavaErişim(visibility)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 16
UML alan örnekleri
Date doğumGünü (Java)doğumGünü:Date (UML)
public int süre = 100 (Java)+süre:int = 100 (UML)
private Öğrenci öğrenciler[0..MAX_ÖĞR] (Java)
-öğrenciler[0..MAX_ÖĞR]:Öğrenci(UML)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 17
UML metot örnekleri
boolean dersEkle(String dersKodu, String dönem) (Java)
~dersEkle(String dersKodu, String dönem):boolean (UML)
public int getSize() (Java)+getSize():int (UML)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 18
UML sınıf örnekleri
Pointprivate int xprivate int ypublic void move(int dx, int dy)
UML (Java syntax):
Point- x:int- y:int+move(dx:int, dy:int)
UML (standart):
Pointxymove()
UML (kısaltılmış):
Point veya
4
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 19
UML nesne (object) gösterimi
nesneAdı : SınıfAdıalan1= değer1
alan2= değer2..alann= değern
Nesne ve Sınıf Adı;altı çizili
Alanlar ve aldıkları değerler
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 20
UML nesne gösterimi
p1:Pointx = 0y = 0
p2:Pointx = 24y = 40
UML
Java Point p1 = new Point();p1.x = 0;p1.y = 0;
Point p1 = new Point();p1.x = 24;p1.y = 40;
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 21
Mesaj Geçme (message passing)
Nesneler birbirleriyle mesaj geçerek iletişim kurarlar
Mesaj geçme (message passing) veyaMetot çağırma (method invocation)
Mesajı bir nesneye gönderilir (alıcı –recipient) ve alıcı nesne çağırılan metodu çalıştırırÖrnek: p1.move(10, 20)(p1 nesnesi: x’de 10, y’de 20 pixel kay)Alıcı: p1, metot: move(), parametreler: (10,20)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 22
UML Paket (package) gösterimi
Birbirleriyle ilişkili sınıflar bir paket (package) içine yerleştirilirler.Paket isimler küçük harflerle yazılır.Yaygın olarak kullanılacak paket isimleri internet domain ismini tersten yazarak kullanırlar.
tr.edu.etu.bilPaket adı
Paket adıpaket1
paket2
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 23
UML Paket: Örnekler
java.awt
datatransfer Point
event image
java.lang
sınıf
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 24
Nesnesel Yazılım Geliştirme Prensipleri
Modülerlik (modularity)Soyutlama (abstraction)Kapama (encapsulation)Polymorphism
5
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 25
Modülerlik (modularity)
Karmaşık sistemler, parçalara bölünerek geliştirilmeli ve denetlenmelidirParçala-fethet (divide-and-conquer) tekniğiSistem modüllere parçalanmalıdır (decomposition)
Tek bir yolu yok; bu bir sanatKriter:
Cohesion: Modül içindeki nesneler birbirleriyle fonksiyonel olarak ilişkili olmalıdırCoupling: Modüller arası iletişim basit olmalıdır
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 26
Soyutlama (abstraction)
Esas olanın, esas olmayandan ayrılmasıBir modülün davranışları, veya işlevleri, bir kontrat arayüzü (contractual interface) ile belirlenmelidir. Bu arayüz modülün soyutlanmış halidir; modülün ne yaptığınıbelirtir.Modül: servis sağlayıcı (service provider)Kontrat arayüzü: servis kontratı
Hangi servisler sağlandığı belirtilir (what)Servislerin nasıl sağlandığı belirtilmez (not how)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 27
Soyutlama: Örnek
TelefonOldukça karmaşık bir sistem: sesin elektronik sinyallere ve tekrar sese çevrimi, sinyallerin analog ve dijital olarak aktarımı, sinyallerin enkript/dekript edilmesi, bağlantı kurulması vs.
Telefon kullanıcı açısındanEl kitabı kullanılarak
(1) Arama, (2) konuşma, ve (3) kapamaTelefon servisinin kullanıcı açısından soyutlanmış haliBu servislerin telefon servisi tarafından “nasıl”yapıldığı (detaylar) servis kullanıcıyıilgilendirmemektedir
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 28
Kapama (encapsulation)
Müşteri (servis kullanıcı) servisi kullanmak için servis kontratı dışında hiçbirşey bilmek zorunda değildirBir modül gerçekleştirilirken, detaylar kullanıcılardan gizlenmelidir; yalnızca kontrat arayüzü aracılığı iletişim kurulmalıdırBilgi gizleme (information hiding)Arayüz sabit kaldığı sürece, program kodu diğer kullanıcıları etkilemeden değiştirilebilir..
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 29
Kapama: Örnek
Telefon servisi eskiden yalnızca analog’duŞimdi dijital telefon servisi de sağlanıyor, ayrıca encription (kodlama) ile güvenlik de sağlanabiliyorFakat servis arayüzü (interface) değişmediKullanıcılar servisi eskisi gibi kullanıyorlar, fakat ses ve servis kalitesi arttıJava’da servis arayüzü, gerçekleştirimden tamamen ayrılabilir
interface ve interface’i gerçekleştiren sınıf(class)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 30
Polymorphism
Birden fazla servis sağlayıcı aynı servis kontratını kabul edebilir (honor)Servis sağlayıcı, kullanıcıyı etklilemeden, yer değiştirilebilir (başka bir servis sağlayıcıya geçilebilir)
6
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 31
Polymorphism: Örnek
Bazı cep telefonları hem analog hem dijital telefon kullanma kapasitesine sahiplerKullanılan alan hangisi ise, telefon otomatik olarak dijital veya analog servise geçmektedir.Kullanıcılar hangi servisin kullanıldığınıbilmemekteler; servis arayüzü her iki durumda da aynı(GSM, TDMA, CDMA servislerini, yada değişik frekansları
kullanma kapasitesine sahip telefonlar da bunun bir örneğidir)7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 32
İkişkilerin ve Yapıların Modellenmesi
UML Class Diagram
Inheritance (kalıt)Association (ilişkili)Aggregation ve Composition (agregasyon ve kompozisyon)Dependency (bağımlılık)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 33
Inheritance (kalıt)
Sınıf ve arayüzler arasındaki ilişki3 tür
Extension: üstsınıf (superclass) ve altsınıf (subclass) arasındaArayüzler arası extensionImplementation: bir sınıf bir arayüzügerçekleştiriyor
UML’ce:Specialization (extension)Realization (implementation)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 34
Inheritance (kalıt)
UML notasyonu
Superclass
Subclass
Superinterface
Subinterface
Interface
Implementation
Extension ofclasses
Extension ofinterfaces
Implementationof interfaces
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 35
Inheritance: Örnek
Öğrenci
Lisans YüksekLisansDışarıdanÖğrenci
Master DoktoraInheritance = “is-a”Kalıt = “dir”
Her Lisans öğrencisi bir Öğrencidir.Her Master öğrencisi bir YüksekLisans öğrencisidir
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 36
Inheritance
Multiple Inheritance (çoklu kalıt): Bir sınıf birden fazla üstsınıftan kalıt alabilir (inherit from multiple superclasses)Single Inheritance (tekli kalıt): Çoğu nesnesel programlama dili tekli kalıta izin verir. Java gibi.Java’da kısıtlı olarak çoklu kalıta izin vardır; ancak bu arayüzlerden (interface) olabilir.
7
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 37
Soyutlama Düzeyleri (levels of abstraction)
Kalıt ilişkileri sınıfları bir hiyerarşi içerisine koyar.Hiyerarşi içinde yukarı çıkıldıkça, sınıflar “genelleşir”, aşağıya inildikçe “özelleşir”.Süpersınıflar daha genel soyutlamalardır.Altsınıflar daha özel soyutlamalardır.
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 38
Association (ilişkili)
Sınıflar arası ikili (binary) ilişkiler
Sınıf1 Sınıf2rol rol
ad
Öğrenci Ders
Danışman
danışan
danışılan
dersveren
kayıtlı
11
*
*İlişki yönü
1,*: Sayı/çokluk
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 39
İlişkinin çokluğu (sayısı)
a .. ü : alt değerden üst değere kadar.i : tek bir değer* : 0 .. n
Örnekler:0 .. * 0 veya daha fazla1 .. * 1 veya daha fazla2 .. 5 2’den 5’e kadar2, 5, 7 2, 5, veya 71, 3, 5 .. * 1, 3, 5, veya daha fazla
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 40
Aggregation ve Composition (agregasyon ve kompozisyon)
Association’ının özel bir haliParça-Bütün (part-whole)ilişkisini temsil ederParça veya bütün’ün hayat süresi konusunda bir yaptırımı yokturAggregasyonun daha güçlü bir hali komposizyon (composition) dur.Kompozisyonda, parçalar bütün olmadan olmazlar (ortadan kalkarlar)Association’daki multiplicity, isimlendirmeler, navigasyon (ilişkilerin yönü) (agregasyon ve kompozisyonda) aynen uygulanır.
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 41
Aggregation ve Composition
Aggregate
Component
rol
rolad
Aggregation
Aggregate
Component
rol
rolad
Composition
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 42
Aggregation/Composition : Örnek
Bölüm
ÖğretimÜyeleri
1
1başkanı
1
1üyesi
Öğrenci1 *Fakülte
1 *Üniversite1 *
Fakülte olmadan bölümler olamaz (kompozisyon)Üniversite olmazsa fakülteler de olamaz (kompozisyon)Bölüm olmadan öğretim üyeleri ve öğrenciler(?) olabilir (agregasyon)
8
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 43
Bağımlılık (dependency)
Bir sınıfın diğer bir sınıfa bağlı olmasıÖrneğin: bir sınıfın diğer bir sınıfı“kullanması” (use) (sınıfın diğer sınıfın metotlarını çağırması gibi, yada o sınıftan bir nesneyi döndürmesi gibi..
Sınıf1 Sınıf2
Sınıf1, Sınıf2’ye bağımlı (dependent)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 44
Bağımlılık (dependency): Örnek
Öğrenciİşleri DersProgramı
void dersEkle(DersProgramı p, Ders d)void dersSil(DersProgramı p, Ders d)Ders dersBul(String ad)void kaydet(Ders d, Öğrenci ö)void sil(Ders d, Öğrenci ö)
Ders
Öğrenci
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 45
Dinamik davranışların modellenmesi
“Class diagrams” : statik yapıDinamik davranışlar?
Nesneler arası aktiviteler, bir nesne üzerinde olayların ve hareketlerin sıralanması
“Sequence” diyagramları“State” (durum) diyagramları
İç-içe durum (nested state) diyagramları
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 46
Sequence Diagrams
Nesneler arası metot çağırma işlemlerinin zaman çizgisinde sıralı gösterimiZaman çizgisi y-ekseni üzerinde yukarıdan aşağı gösterilirİlgili nesneler x-ekseni üzerinde en üstte soldan sağa sıralanır
nesne:Sınıf
Method çalışıyor
nesne
Hayat çizgisi
<<oluştur>> Nesne oluşturma(new)
metot(param) Metot çağır
Metot geri döner
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 47
Sequence Diagrams : Örnek
client:
pj:PrintJob
:PrintQueue
<<create>>
submit(myDoc)add(this)
assignJobNo()
print()
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 48
State Diagram (durum diyagramı)
Finite State Machine (sonlu durum makinesi) nin genelleştirilmişiDurumlar (states) ve bunlar arasındaki geçişlerin (transitions) gösterilmesiGeçiş (transition): nesnenin bir durumdan diğerine geçmesi. Bu bir olayla tetiklenebilir (triggered) ve hiçbir sebep olmadan olabilir (triggerless).
[Olay-listesi][[Kontrol]][/Aksiyon]
9
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 49
State Diagram (durum diyagramı)
Durum
İlk durum
Son durum
KaynakDurum
HedefDurum
Bir geçiş
Bir durum olaylar[koşul]/aksiyon
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 50
State Diagram: Telefon örneği
Kapalı
bekliyorAçık
Aktif
konuşuyorBağlantı-sağlandı
Tuşlar-açıldı
çalıyor
Gelen-arama
Tuşlar-kapandı
Tuşlar-basılıyor
son
arıyor
Tuşlar-açıldıaçıldı
kapandı
bağlanıyorkonuş
Bağlantıdüştü
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 51
Gereksinimlerin modellenmesi
Sistem gereksinimleri UML Use Case (kullanım şekilleri) diyagramları ile belirtilirYazılım geliştirme için gerekli değildir, fakat gereksinimler ve nesnesel modeller arasında en önemli bağlantıdırUse Case: Kullanım şekli
Bir sistem fonksiyonunun dışarıdan gözlemlenen davranışıSistemle, sistem dışı aktörler (kullanıcı veya diğer sistemler gibi) arasında etkileşimler..Sistem “ne” yapıyorla ilgili, “nasıl” yapıyorla ilgili değil..
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 52
Gereksinimlerin modellenmesi
Use Cases (Kullanım şekilleri)Bir adı varBirkaç senaryordan oluşabilir
Bunlardan birisi ana senaryo, diğerleri alternatif senaryolar olabilir
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 53
Use Cases (grafik gösterim)
Kullanıcı Aktör
Kullanım şekli (Use case)Şekil1
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 54
Aktörler arası ilişki
Kullanıcı
ÖğretimÜyesiÖğrenci Yönetici
10
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 55
Kullanım şekilleri: Örnek
Öğrenci
ÖğretimÜyesi
Yönetici
Kullanıcı
Notlarıkontrol et
Sınıf listesial
Notlarıgir
Notlarıdoğrula
Kullanıcıyıdoğrula
<<extend>> <<include>>
<<include>>
<<include>>
<<include>>
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 56
Örnek Çalışma: eKitapçı
Kavramsallaştırma (conceptualization)Kullanım şekilleri (use cases)Nesnesel model (class diagrams)
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 57
eKitapçı: Kavramsallaştırma
Sitemin temel gereksinimleri:Müşterilerin kitapları, müzik CD’lerini, ve bilgisayar yazılımlarını İnternet üzerinden taramalarını ve satın almalarını sağlamak
Sistemin temel fonksiyonları:Müşterilere satın almalarında yardımcı olacak bilgileri vermek,Müşterilerin kayıtlarını, siparişlerini, ve adres bilgilerini almak,Sistem yönetimi: kayıt girme, silme, ve değiştirme; müşteri bilgilerinin güncellenmesi
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 58
eKitapçı: Kullanım şekilleri(Use Case Diagram)
Müşteri
Sistemyöneticisi
Katalogyöneticisi
Kullanıcı
Kayıt
Alışveriş
Siparişişleme
Katalogyönetimi
Giriş
<<include>>
<<include>>
<<include>>
Depoyöneticisi
Kayıtyönetimi
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 59
eKitapçı: Use CaseÖnkoşul (precondition): Müşteri kayıtlıAna senaryo:
Aktör: MüşteriGiriş eylemi Sistem eylemi ve cevabı
Giriş isteği Hoşgeldin mesajı, kullanıcı adı ve şifresi isteğiKullanıcı adı ve şifre girilir Kullanıcı doğrulanır ve girişe izin verilirTekrarla:Arama ve listeleme Satılan şeylerin listelenmesiAlmak üzere seçme Seçilen şeyin sepete eklenmesiAlışveriş tamamlandı Sepettekileri, ödeme/gönderme adresleri gösterSiparişi doğrula, Ödeme metodunu doğrulave ödeme yap Ödeme tamamlanır
Sipariş işlenir, e-fiş verilir; depoya sipariş emriÇıkış
Alternatif senaryo:Müşteri alışverişi tamamlamadan, alışveriş sepetini saklar, çıkar
Aykırı senaryo (exceptional):Müşteri girişi başarısız olur; giriş yinelenir
Aykırı senaryo (exceptional):Ödeme işlemi başarısız olur; müşterinin başka bir ödeme yöntemi girmesi..
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 60
eKitapçı: Nesne modelleri
Sınıfların belirlenmesiUse case’lerde geçen sınıfların belirlenmesiNe sınıftır, hangi özellikler sınıfta olmalıdır?
Sınıflar, nesneleri ifade etmelidir, eylemleri değilFiziki nesneler (araç, gereç, ürün, vs.)Kişiler (öğrenci, öğretim üyesi, müşteri, ve bunların rolleri, gibi)Organizasyonlar (üniversite, şirket, bölüm, vb.)Yer (bina, oda, koltuk, vb.)Olaylar (farenin tıklanması, servis isteği, alım siparişi, vb.)Kavramlar (çokboyutlu uzaylar, işlemler, hava raporu haritaları, vb.)
Eylemler, sınıfların metotları olarak modellenmeliBasit kural:
Sınıf -> İSİMLER (NOUN)Metotlar -> EYLEM (VERB)
11
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 61
eKitapçı: Sınıfların belirlenmesi
Müşterilerin kitapları, müzik CD’lerini, ve bilgisayar yazılımlarını İnternet üzerinden taramalarını ve satın almalarını sağlamakSistemin temel fonksiyonları:
Müşterilere satın almalarında yardımcı olacak bilgileri vermek,Müşterilerin kayıtlarını, siparişlerini, ve adresbilgilerini almak,Sistem yönetimi: kayıt girme, silme, ve değiştirme; müşteri bilgilerinin güncellenmesi
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 62
eKitapçı: Sınıflar
EKitapçı: Tüm sistemMüşteri: eKitapçı müşterileriKitap: eKitapçıda satılan kitaplarMuzikCDYazılım
Ayrıca:Sepet: Müşterinin almak istediklerini tutan
geçici listeSipariş: Müşterinin siparişiAdres: Müşteri adresi
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 63
eKitapçı: Classes
Müşteri
admüsteriNoşifregöndermeAdresifaturaAdresi
Adres
sokakşehirülkepostaKodu
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 64
eKitapçı: Classes
Kitap
adıyazaryayıncıyılbaskıciltISBNfiyat
MüzikCD
adısanatçıyayıncıyılsayıISBNfiyat
Yazılım
adıyayıncıyılversiyonISBNfiyat
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 65
eKitapçı: Classes
Kitap
yazarbaskıcilt
MüzikCD
sanatçısayı
Yazılım
versiyon
Öge
adıyayıncıyılISBNfiyat
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 66
eKitapçı: Class Diagram
Öge
SepetÖge
Öge ögeint sayı
Sepet
SiparisÖgesi ögeler[*]
ekle(Öge öge, int sayı)sil(Öge öge)sayıDeğiştir(Öge öge, int sayı)
*1
12
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 67
eKitapçı: Class Diagram
Sepet
MüşteriSipariş
Müşteri müşteriSepet ögelerfloat satışVergisifloat kargoÜcretifloat toplamÖdeme ödeme
* 1
11
Ödeme* 1
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 68
eKitapçı: Class Diagram (son)
Sepet
MüşteriEKitapçı1
SiprarişÖgesi
1
*
Öge
1
*Sipariş
1*
Kitap MüzikCD Yazılım
*
1
1
*
1
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 69
Ödev
Exercise 2.3 (Jia) Sayfa 52-53 (Teslim: 28 Eylül)Aşağıdaki sistemin nesnesel modelini geliştirin
Aktörleri ve ‘use case’leri belirleyin, UML ‘use case’diyagramını çizinSistemin UML ‘class diagram’ını çizin
Havayolu Rezervasyon Sistemi:Sistem bir müşterinin uçak seyahati rezervasyonu yapmasını sağlar. Müşteri, seyahatin başlangıçşehrini, gidilecek yeri, gidiş ve dönüş tarihlerini, uçuşsaatlerini, tercih edilen havayolu şirketini, kaç kişilik yer ayırtılacağını belirtir. Sistem müşterinin tercihlerine uygun uçuşları ve yer olup olmadığınılisteler. Müşteri uygun bir uçuşu ve yeri seçer, biletleri satın alır.
7 Ekim 2005 TOBB Ekonomi ve Teknoloji Üniversitesi, Bilgisayar Müh.Böl., Ankara 70
Özet
Nesnesel yazılım geliştirmede temel esaslar: modularity, abstraction, encapsulation, levels of abstraction. Amaç: karmaşıklığı azaltmak, esnekliği artırmak.Decomposition (sistemin parçalarına ayrılması): İki temel kıriter uygulanır, “cohesion” (modüller içinde sınıfların uyumluluğu) ve “coupling” (modüller arasında bağların gevşek olması). UML nesnesel modelleme için yaygın olarak kullanılan bir modelleme dilidir.Sistemin statik yapısı “class” diyagramları ile modellenir,Sistemin dinamik yapısı ise “sequence” ve “state” diyagramlarıkullanılarak modellenir. “Use case” diyagramları ise sistemin kullanım gereksinimlerini modellemek için kullanılır (to model “what” the system does, not “how”).