12.07.2015 Views

Yazılım Geliştirme Teknikleri ile Yazılım Üretimi

Yazılım Geliştirme Teknikleri ile Yazılım Üretimi

Yazılım Geliştirme Teknikleri ile Yazılım Üretimi

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Yazılım</strong> <strong>Geliştirme</strong> <strong>Teknikleri</strong> <strong>ile</strong> <strong>Yazılım</strong> <strong>Üretimi</strong>Bir sistemin analizi yada yeni bir yazılım yaratımı müşteriden gelen talep <strong>ile</strong> olur.Müşteri yazılım geliştiric<strong>ile</strong>rine ihtiyaçlarını ifade eder ilk aşamada. İhtiyaç belirlemede,düşünülen sistemin tam olarak bir canlandırması çizilmeli ihtiyaçların ifadesi yapılmalı sistemgelişiminde temel olarak kullanılacak formal doküman oluşturulmalıdır.Bir yazılım gelişiminin aşamalarını daha ayrıntılı biçimde aşağıda görebiliriz. Buşemaya Fision metodu diyoruz.Gereklilikler dokümanı(Requriments documents)ANALİZNesne Modeli(Object Model)Arayüz Modeli(İnterface Model)DATADİZAYNNesne etk<strong>ile</strong>şim grafikleri(Object İnteraction graphs)Görünürlük grafikleri(Visibility Graphs )Sınıf tanımları(Class descriptions)Alt SistemDİCTİONARYMiras grafikleri(İnheritance Graphs)UYGULAMAProgram1


İhtiyaçlarınbelirlenmesiAnaliz Tasarım Uygulama Bakımİlk adım olan gerekliliklerin yada ihtaçlar dökümanının belirlenmesi aşamasınabakalım. Müşteriden gelen talep doğrultuda ilk önce bu requriment document denen aşamanıngeçilmesi gerekir bunu başarabilmek için örnek sorular aşağıdadır.İhtiyaçların belirlemesinde sorulab<strong>ile</strong>cek sorular:Problemin kapsamı: <strong>Yazılım</strong> ne için? <strong>Yazılım</strong>a neden ihtiyaç duyulmuştur?İhtiyaçlar: Düşünülen kullanıcı tipi kimlerdir? Sistem neler yapabilmelidir? Ara yüze konulacaklar?Uygulama kontexti: Düşünülen donanım nedir? Düşünülen işletim sistemi nedir?Kabullenişler: Hangi kabullenişler sistemin tasarlandığı şekilde çalışmasını sağlar?Performans Yanıt süresi, Hafıza ve disk yeri talebi, Cpu talebi nelerdir?Gereklilik dökümanı belirlendiksen sonra analiz aşamasına geçebiliriz.2


Analiz aşamasının detaylı gösterimi3


Prosedüre yönelik Analiz nedir?Prosedüre yönelimli analiz sistemi etk<strong>ile</strong>şimdeki prosürlerle datayı ayrı olarakdüşünür. Örneğin C dilinde datalar Structure’lara function’larda prosedürlere denk gelir.Burada data dictionary kayıtlı olan prosedürlerin kullandığı bilginin tanımlarını içerir. Buyaklaşım programcıyı , sistem b<strong>ile</strong>şenlerini , b<strong>ile</strong>şenler arasındaki ilişk<strong>ile</strong>ri ve nasılb<strong>ile</strong>şenlerle sistemin tasarlanıp işleneceği konusundan uzaklaştırır. Bu analiz tipindeprosedürlerden gelen tüm bilgi tek bir mantıksal analiz dökumanı içerisinde saklanır.Prosedür Prosedür ProsedürGlobal DataNesneye yönelimli analiz nedir?Bu sorunun cevabını verebilmek için ilk önce nesnenin ne demek olduğuna bir gözatalım. Geleneksel olarak programcılıkta bilgi ve kod bir birinden ayrı tutulur fakat nesneyeyönelimli programlamada data ve tek bir görünür nesne haline gelmiştir. Bu şekilde data vekod paketleri halindeki nesneler birbirleriyle mesajlar aracılığıyla <strong>ile</strong>tişim kurarlar. Birnesnenin yapab<strong>ile</strong>ceği her şey bu mesaj ara yüzleriyle temsil edilir böylece bir nesneyikullanmak için içinde neler olduğunu bilmek zorunda kalmayız bu bize daha sonra nesnelerüzerinde yapab<strong>ile</strong>ceğimiz değişiklikler açısından esneklik sağlar. Bu şekilde nesnelere sadecemesajlar üzerinden erişim sağlayarak bir tür data gizliliği sağlanır buna kapsülleme(encapsulation) denir.Tüm bu yapılanların amacı yazılımı en kolay şekilde nasıl tekrar yazab<strong>ile</strong>ceğimizsorusana cevap vermektir. Unutmamak gerekir ki “yazılım yazılmaz yeniden yazılır(Softwareis not written , its rewritten)”. Nesneye yönelimli programlamada amaç programı küçüksınıflara ayırarak sistemin esnekliğini artırmak buna bağlı tekrar yazma gibi durumları ortadankaldırarak yazılım geliştirme sürecine en aza indirmektir ve dolasıyla masrafları düşürmektir.Nesneye yönelik programlamada anlamamız gereken bir başka konuda sınıflardır.Kısaca söylemek gerekirse nesneler sınıfların tekil birer örnekleridir. Bu ne demektir? Birörnekle konuya açıklık getirelim mesela elimizde bir ev sınıfı olsun bizde ev sınıfındanpencere diye bir nesne çağıralım. Pencere bir ev sınıfı nesnesi örneğidir, ev sınıfı bu nesneninyapab<strong>ile</strong>ceği işleri ve kendisini tanımlar. Bir sınıf birden fazla nesne üretebilir ve ev sınıfınesnelerinin anlayab<strong>ile</strong>ceği mesajlar üretir. Bu tip sınıflardan nesne örnekleri yaratma olayınanesneye yönelik programlamada”Factory” denir. Nesnelerin gönderdikleri mesajlar içindekikodlara ver<strong>ile</strong>n addır ve bu mesajlarla genelde argumanlarda yollanır bunlar genelde4


nesnenin neyi,ne zaman ne kadar yapacağı gibi sorulardır. Örnek olarak bir temizle mesajı“hangi pencere” veya “ne zaman” sorularının cevaplarıyla gelebilir.Nesneye yönelik programlamada yaratmamış olduğumuz sınıfları daha spesifik altsınıflara ayırabiliriz. Bunlara alt sınıflar(sub classes) denir, alt sınıflar yaratılığı atasına(parent class) ait tüm var olan mesajları ve davranışları da alır bu olaya miras (İnheritance)denir. Yani daha üst sınıflara ait mesajlar yeniden(reuse) kullanılabilir ve kendi alt sınıfımızaait spesifik yeni mesajlar yaratabiliriz. Mesela ev sınıfımızdan bir oda alt sınıfı yaratalım evsınıfından kalma bir evde “renk” mesajı oda sınıfında kullanılabilir veya oda için “yatak” gibibir yeni mesaj tanımlayabiliriz.Piyasada nesne yönelimli bir çok programlama dili vardır özellikle bu sayı her günartan yeni internet yazılım geliştirme ortamıyla büyük bir artış göstermiştir. Ancak eskidenberi gelmiş kabul gören ve çok kullanılan üç programla dili vardır.C++: C’nin Object oriented versiyonudur.Java: Sun microsystems’in geliştirmiş olduğu bu dilin İBM, Microsoft, Symantecgibi versiyonlarıda bulıunmaktadır. Bu dilin çok tutulmasının nedeni internet veinternet uygulamalarında ve web browserlarla son derce uyumlu ve güvenilirolarak çalışabilir olmasıdır.Smalltalk: Tam standardı oturmamıştır bu yüzden üç ayrı ticari sürümü vardır.VisualWorks ParcPlace-Digitalk, Inc.Smalltalk/V and Visual Smalltalk f ParcPlace-Digitalk Inc.VisualAge IBMNesneye yönelimli analiz bir nesneye yönelimli sistem analiz tekniğidir. Birbiriyle<strong>ile</strong>tişimde olan nesnelerin esas karakteristiğini ortaya koymada etkili bir tekniktir. Temelkavramları sistem bilgisinin biçimsel tanımı ve davranış biçimi modellemedir. Burada datalararası ilişk<strong>ile</strong>r mesajlarla , argümanlar aracılığıyla yapılan metotlarla olur.DATAMetodMetodDATAMetodMetod Metod MetodDATA5


Mesajların içerdiği metotlar gittiği yerdeki mesaj alıcı tarafından işlenir. Oo analizintemel kavramları sistem bilgisinin formal tanımına ve davranış biçimi modellemeye dayanır.NYA’de modellenen tüm b<strong>ile</strong>şenler sistemin önemini kavratacak şekilde tasarlanır yanisistem nasıl uygulanacağı sorusu yerine gerçek ne olduğu sorusu üzerine inşa edilirNesneye yönelik analiz , prosedüre yönelik analizden farklı olarak sistemi “nasıl”sorusundan ziyade ne sorusu üzerine inşa eder böylece erken bir tasarım aşamasına geçiştenprogramcıyı alı koyar.Nesneye Yönelik Sistem modellemin b<strong>ile</strong>şenleri:OSA (Object-Oriented System Analysis): Kısaca NYA diyeb<strong>ile</strong>ceğimiz bu kısım nesneyönelik teknikleri kullanarak sistemin analizini içerir.OSS (Object-OIriented System Spesification): Formal şartların geliştirilmesinde kullanılantekniktir.OSD (Object-Oriented System Design): OSA modellerini isten<strong>ile</strong>n özelliklerde tasarımmodellerine aktarılmasını içerir.OSI (Object-Oriented System İmplementation): OSD modellerinin uygulamaya dökülmesidir.OST (Object-oriented Systems Testing): Muhtemel hataları bulmak için yapılır.OSE: (Object-oriented Systems Evolution): Sistem bitirilip üretim aşamasına geçtikten sonraçalışmasının izlenmesidir.OSR (Object-oriented Systems Reverse Engineering): Bitirilmiş Sistemin tersine aşamalardangeçir<strong>ile</strong>bilmesidir.NYA’nın formal Temeli:Daha önce NYA’nın temel kavramlarının sistem data ve davranış biçimimodellemenin formal tanımlarına dayandığını söylemiştim. Formal tanımlara dayananmodeller model güvenirliğinin testi ve analizin tamamlanabilirliğinde kolaylık sağlar. Formalmodelleme istikrarlı bir yorumlama sağladığından analizc<strong>ile</strong>re iyi bir <strong>ile</strong>tişim ortamı kurabilirdaha da ötesi analizc<strong>ile</strong>r dışındaki gruplarla da iyi bir <strong>ile</strong>tişim ortamı geliştirebilir.Nesneye Yönelik Analiz B<strong>ile</strong>şenleri:Nesneye yönelik analiz bize gerçek dünyadaki herhangi problemi modelleme bizegerekli tüm öğeleri verir. Bir bütün olarak gözüken NYA aslında üç ana parçadan oluşur:1) Object-Relation Model(ORM) : ORM gerçek dünyanın tüm üyelerini sınıfları , nesneleri ,nesneler ve sınıflar arası ilişk<strong>ile</strong>ri nesnelerin ve sınıfların tanımlarını göstermemizeyarayan yoldur.2) Object-Behaviour Model(OBM): OBM adından da anlaşılacağı gibi nesnelrindavranışlarını tanımlayan yoldur yani nesnenin mümkün durumları ve başka bir durumanasıl ve neden geçeğini açıklar.3) Object-İnteraction Model(OİM): OİM nesnelerin diğer nesnelerle olan etk<strong>ile</strong>şimlerinitanımlayan yoldur.6


Object-Relation Model:OSA’nın statik kısmıdır . Nesnelerin hangi sınıflara ait olduğunu nesenler arasıilişk<strong>ile</strong>ri belirler. ORM sınıflar , nesneler , kısıtlar , ilişk<strong>ile</strong>r , ilişki setleri ve açıklamalardanoluşur.ORM: ORM aşağıdak<strong>ile</strong>ri kapsar.-Nesneler-Nesne SınıflarıLeksikal Nesne Sınıflarıİlişkisel Nesne SınıflarıYüksek Seviye Nesne Sınıfları-İlişk<strong>ile</strong>r-İlişki Setleri ve özel formlarıGenelleme /ÖzelleştirmeRollerToplamsallıkTümsellik-KısıtlarKatılım KısıtlarıTekrarlanma KısıtlarıNesne-Sınıfı Kardinalite KısıtlarıÖzelleştirilmiş Nesne SınıflarıGenel Kısıtlar-Yüksek seviye ilişki setleri-NotlarNesneler:Nesneler siyah noktalarla ifade edilir ve özeldirler. Özelden kasıt tek olmalarıdır tekbir şeyi ifade ederler genel bir tanım olamaz.Ahmet İstanbul 7:20Yukarıdak<strong>ile</strong>rin her biri nesnedir fakat aşağıdak<strong>ile</strong>r değildir.İsim Yer SaatBuradaki örneklere sınıf deriz çünkü belirli nesleri belirmezler daha çok nesneleringenel isimleridirler .Nesneler soyut veya somut olabilirler nesneleri üç ana gruba ayırabiliriz.Concrete Nesne: Canlılar , cansızlar , eşyalar , ağaçlar , binalar , insanlar , hatvanlar kısacasısomut nesnelerin hepsidir.Conseptual Nesne: Tarih , yüzde , sözleşmeler , organizasyonlar gibi soyut nesnelere ver<strong>ile</strong>naddır.7


Event and State Nesne: Sıcaklık derecesi , yağmur yağması , ürün satma gibi durumlar veolaylara denir.Nesne Sınıfları:Nesne sınıfları dikdörtgenlerle ifade edilir. Nesne sınıfları ortak özellikleri olan nesnesetlerine denir. Nesne sınıfı olmak için ORM’nin belirlediği kısıtlara uyulması gerekir.Zamanla bir nesne bir kaç sınıfın üyesi olabilir buna sınıf göçü denir. Bir nesne sınıfı içindekinesne sayısı nesne sınıfı kardinalite kısıtları tarafından belirlenir. Nesneler ilişki setleriylebirbirine bağlanabilir.İsim Balık SaatLexical , ilişkisel ve yüksek seviye olmak üzere nesne sınıfları da alt bölümlere ayrılır.Lexical Nesne Sınıfları:Lexical sınıftaki nesneler gösterimleriyle birebir ifade ed<strong>ile</strong>bilirler çok geneldeğildirler. Örneğin renk sınıfı bu sınıfta sadece aklımıza renkler gelir ama bir taşıt sınıfılexical değildir çünkü araç kara,hava,deniz taşıtı veya daha da çeşitlendireb<strong>ile</strong>ceğimiz altsınıflara da ait olabilir. Genel sınıf gösterimiyle aynı gösterimdedirler fakat dikdörtgenleriçine aynı anlama gelen birden fazla kelimeyi girebiliriz. Gösterimde kelimelerin arasınadikine çizgi koyarız ve noktalı dikdörtgenlerle belirtiriz lexical nesne sınıfını.Kent | Şehir | İlRenkLexical nesne sınıfı diğer ilişki setleriyle etk<strong>ile</strong>şebilir ve diğer normal nesne sınıflarının sahipolduğu katılım kısıtlarına sahiptir. Ayrıca kesikli diktörtgenin köşelerine yazılan kardinalitekısıtlarına sahiptirler.İlişkisel Sınıf:Bazen nesne sınıfıyla ilişki seti arasındaki fark hafif seçimseldir. Böyle bir durumdaOSA bize bir ilişki setine bir nesne sınıfı gibi davranmamıza olanak verir. Bunlara ilişkiselnesne sınıfı denir.Satın AlmaHayvanatBahçesisürer0:* 1Satın AlırHayvanVar11Var1:*AlımTarihi1FaturaNosu8


Örneğin hayvanat bahçesi hayvan satın alır ilişki seti Satın Alma nesne sınıfı olarakkabul ed<strong>ile</strong>bilir. Nesne sınıfı Satın Alma , Satın alım tarihi ve Fatura Nosuna sahip olduğunubelirten vb. ilişk<strong>ile</strong>re katılabilir.Yüksek Seviye Nesne Sınıfı:Yüksek sınıf ise diğer tüm ilişki sınıflarını , kısıtları , notları içerir ve içi taralıdikdörtgenler biçimde gösterilir. Yüksek seviye nesne sınıfları açık ve kapalı olmak üzere ikişekilde gösterilir. Açık gösterimde Yüksek-Seviye Nesne Sınıfının tamamıyla neler içerdiğinigörebiliriz; kapalı gösterim bütün içeriği saklar.Aşağıda Telefon yüksek seviye nesne sınıfının açık gösterimi vardır ve Telefonpriziyle ilişkisini aktarır.TelefonTelefon PriziTakılır0:1 0:1Bağlantı kablosu11TakılırSahip1 SahipBaz Tuş Paneli Tuş1 1 12 111SahipTakılır1:*Tuş Etiketi1Ahize Kablosu1Takılır1AhizeBu aşağıdaki ise Telefon yüksek seviye nesne sınıfının kapalı formda gösterimidir.Telefon PriziTelefonBir ilişki setinin kapalı gösterimde yüksek seviyeli bir nesne sınıfına geçerken etiketsiz kesikliçizgiyle gösterildiğine dikkat edin.9


İlişk<strong>ile</strong>r:İlişk<strong>ile</strong>r nesneler arasındaki mantısal bağlantıları gösterir. Örneğin: Ali fort ka kullanırcümlesindeki kullanır ilişkimizdir. ORM’de ilişk<strong>ile</strong>r çizgiyle gösterilir ve bir ad verilir. Adgenellikle ilşkiyi anlatan bir cümledir. İlişkinin adında bağladığı her iki nesnenin adınıdakapsamasına dikkat edilmelidir.Ali ford ka kullanır.Ali ford kaİkili İlişkiİlişkinin bağladığı nesne sayısına göre ilişki çeşidi değişir. İki nesne bağlanırsa ikili üç nesnebağlanırsa üçlü dört bağlanırsa dörtlü vb. gider.Ali 15 Mayıs 1997’den beri ford ka kullanır.Ali ford ka15 Mayıs 1997Üçlü İlişkiİlişki Setleri:olur.Bir ilişki setinde ise ilişk<strong>ile</strong>r nesne sınıfları arasında kurulur ve gösterimi şu şekildeİnsanlarİnsanlar araç sahibi olurAraçŞekilden de görüldüğü üzere ilişki elmas şekliyle ifade edilir. Gerek ilişk<strong>ile</strong>rde olsun gerekilişki setlerinde ilişk<strong>ile</strong>r bir tane olmak zorunda değildir. Birden çok nesne yada sınıf arasındailişki kurulabilir. İkili ilişk<strong>ile</strong>re binary , üçlülere ternary , dörtlülere quartary vs. denir.Yüksek seviye bir sınıf diğer tüm ilişki türlerini , kısıtları , sınıfları ve nesneleri içerir.Modeli basitleştirmeye yarar.İlişki setlerinin özel biçimleri vardır bunları özetlemek gerekirse:“İs a” ilişki setleri Generelazation/Specilazation tipidir.“is part of” ilişki setleri Aggregation tipidir“is member of” ilişki setleri Association tipidir.10


Genelleme:Genelleştirme/Özelleştirme is a ilişki setini belirtir ve nesneye yönelik programlamanıntemellerindendir. Genelleştirme/özelleştirmedeki ana fikir bir nesne sınıfının (özelleştirme)bir diğerinin altsınıfı olmasıdır. (genelleştirme)ORM’de genelleme/özelleştirme bi uçu genellemeye giden ve karşı tabanı da özelleştirmeyegiden saydam bir üçgen <strong>ile</strong> belirtilir. İs a ilişki seti açıkça yazılmaz çünkü ilişki saydamüçgende kapsanmıştır. İs a ilişkisinin yönü özelleştirmeden genelleştirmeye doğrudur.Aşağıdaki örnekte taşıt bir genellemedir ve uçak ise ,uçağın özel bir tür taşıt olduğunu ifadeeden , özelleştirmedir. Uçak nesne sınıfındaki her nesne taşıt nesne sınıfınında bir üyesiolduğundan uçak sınıfı taşıt sınıfının alt kümesidir denir. Başka bir deyişle taşıt uçağın ,genellemesi ve uçakta taşıtın özelleştirmesidir.TaşıtUçakDiyagramda hiçbir katılım kısıdının olmadığı fark ed<strong>ile</strong>bilir; çoğu zaman bunlargüvenle göz ardı ed<strong>ile</strong>bilir. Özelleştirmede , özelleştirme nesne sınıfındaki her nesnegenelleme nesne sınıfında da olduğundan ,her zaman katılım kısıdı 1:1’dir. Bu durumda heruçak bir taşıttır. Genellemede iki olanak vardır. En çok kullanılanı 0:1’dir. Diğer olasılık isegenelleme sınıfındaki nesne setlerinin her zaman özelleştirme sınıfındak<strong>ile</strong>rle aynı olmasıdır.Bu durumda katılım kısıtı 1:1’dir. Unutmamalıdır ki modellenen sistemin katılım kısıtlarıgenelde tüm dünya için geçerli değildir. Örneğin eğer modellediğimiz sadece uçaklarlailg<strong>ile</strong>nen bir bilgisayar sistemiyse 1:1 katılım kısıtı uygun olacaktır. Buna rağmen gerçekdünyada bütün taşıtlar uçak değildir fakat bu sistemde bütün taşıtlar uçaktır.Çoklu Genelleme/ÖzelleştirmelerBir nesne sınıfı birden fazla nesne <strong>ile</strong> is a ilişkisine sahip olabilir. Bu durum ORM’de şeffafüçgenin tabanından özelleşen nesne sınıflarına ve genelemedeki nesne sınıfına giden köşedençizgi çekerek belirtilir.Aşağıdaki örnekte Bakıcı nesne sınıfının birçok özelleştirmesi vardır. Bu ilişki seti “Eğitmenbir bakıcıdır ve besleyici bir bakıcıdır ve veteriner bir bakıcıdır.” şeklinde okunur.BakıcıEğitmen Besleyici Veteriner11


Buradaki örnek ise bir özelleştirme için çoklu genellemeleri temsil eder.AtEşekÇok sık meydana geldiklerinden daha önceden tanımlı dört tip özelleştirme kısıtı vardır:-Birleşim (Union)-Ortak hariç tutma (Mutual exclusion)-Bölüşüm (Partition , Hem union hem mutual exclusion )-Kesişim (İntersection)Diyagram bu tiplerden hiç birine sahip olmadığı sürece özelleştirme sınıflarının sayısında hiçbir kısıtlama olmaz. Bu örnekte bir çalışan bir eğitmen olab<strong>ile</strong>ceği gibi besleyici de olabilir.Başka bir çalışan eğitmen , Besleyici ve tur rehberi olabilir. Bir çalışan herhangi birözelleştirmenin sahibi olmayabilir. Bir yönetici bir çalışan olabilir fakat bu diyagram üzerindehiç bir özelleştirme sınıfına dahil değildir.Miras nesneye yönelik programlamanın temel elemanlarından olduğundan bu özellik OSA’datam olarak desteklenmiştir. Özünde özelleştirme nesne sınıfları ilişki setlerini miras olarak alırve genelleme nesne sınıflarından gelen , davranışları ve kesişimleride kapsayan , diğer tümortak özellikleri de miras olarak alır.Roller:Bir rol ilişkiye katılan tüm nesnelere özel bir isim veren ilşki setinin yanına yazılan biretikettir. Bir rol ORM’de ilişki setinde uygulandığı nesne sınıfının yanına yazılarak belirtilir.HayvanKatır1:*Ebeveyn HayvanÇocuğu var2BebekHayvan12


Bir rol genelleme /özelleştirme ilişkisini modellemenin kısa yoludur.. Yukarıdaki örnekaşağıdaki gibide modellenebilirdi.HayvanEbeveynHayvan1:*Çocuğu var2Bebek HayvanRolü içeren ilişki normal katılım kısıtlarına sahiptir.Toplamsallık (Aggregation):Toplamsallık ilişki setinin is a part of veya subpart of bölümünü temsil eder. Butoplamsallık sınıfındaki herhangi nesnenin , alt sınıflardaki diğer nesnelerden oluştuğunugösterir.Örneğin Toplamsal sınıf bina , temel , ilk kat , ikinci kat gibi alt sınıflara bölünebilir.Toplamsallık ilişki seti ORM’de köşelerinden birinden toplamsallık sınıfına giden ve karşıttabanda her biri alt sınıflara giden çizg<strong>ile</strong>rden oluşan içi dolu bir üçgenle temsil edilir.Örneğin :Bina11111 1Temel İlk Kat İkinci Kat13


Bu ilişki seti “Temel binanın alt sınıfıdır ve ilk kat binanın bir alt sınıfıdır ve ikinci katbinanın alt sınıfıdır.” diye okunur.Toplamsallık ilişki seti katılım kısıtlarına sahiptir. Her bir alt sınıfın yanındaki kısıttoplamsallık sınıfında her bir alt sınıftaki nesneyle kaç tane ilişkili olab<strong>ile</strong>ceğini belirtir.Kısıtlar:Kısıtlar olmadan da bir sistem diğer b<strong>ile</strong>şenlerle geliştir<strong>ile</strong>bilir. Kısıtların amacısistemin çalışmasını daha tatminkar hale getirmektir. ÖrneğinİnsanlarYaş>=18kullanırAraçİnsanlar için araç kullanma yaşı 18 ve üstü belirtilmesi bir kısıttır. Kısıtlarında çeşitlerivardır. Kardinalite kısıtı :Sınıftaki neslerin sayılarıyla ilgili kısıttır. Katılım (participatiant) ve ön görünüm (Co-occurance) kısıtları ilişk<strong>ile</strong>rle ilgikısıtlardır. Genel kısıtlar: Diğer kısıt türleri buna girer.Notlar: Semantik dizilimde bir anlamları yoktur sadece okuyucuya açıklayıcı bilgi vermekamacıyla italik harflerle yazılır.Object Behaviour Model:OSM ‘nin ,sistem içindeki nesnelerin davranışını açıklaya yönelik bölümüdür.OBM’nin üç ana b<strong>ile</strong>şeni vardır:i) Nesnelerin varoluşlarından doğan durumlar.ii) Nesnelerin bir durumdan bir başkasına geçmesine neden olan şartlar.iii) Geçişlerde ve durumlarda nesnenin yaptığı hareketler.OBM b<strong>ile</strong>şenleri:OBM b<strong>ile</strong>şenlerinden ilki olan nesnelerin durumlarına kısa bir gözatalım.Durumlar (States) nesnelerin pozisyonlarını , hareketlerini , evrelerini kısacasıbulundukları hali tarif eder.Durumları belirlemek için belirli bir yol olmamasına rağmen nesnelerin durumhallerini çıkarabiliriz. Örneğin “Ali okula arabayla gidiyor.” cümlesinde durumlar için gitmeişi bir durumdur çünkü bir yapılan bir hareketi belirtir. Aynı şekilde Ali’nin pozisyonu içinarabada diyebiliriz bu da bir durumdur yada başka bir düşünceyle okula arabayla gitme işininbir faz olarak alınabilir işte bu yüzdendir ki durumları belirtmek biraz sezgiseldir.Durumların gösterimi kenarları yuvarlatılmış dikdörtgen şeklindedir.14


Durum İsmiDurumların olumlu ve olumsuz olmak şeklinde iki halleri vardır. Bu haller kapalı –açık , hazır – hazır değil gibi düşünülebilir. Daha düşük seviyedeki durumlar , geçişler ,kısıtlar ve notların b<strong>ile</strong>şiminden oluşan durumlara yüksek seviyeli durumlar denir.Genel akışda bir durumdan diğerine geçerken biri aktif yapılırken diğeri inaktif yapılırama istisnalarda mevcuttur. Üç tür akış istisnası mevcuttur; çoklu threatler (multiple threats ),önceki durum birleşimleri (Prior state conjuction ) , sonraki durum birleşimleri ( Subsequantstate conjuctions ) . Kısaca bu üç öğeden bahsedelim. Threadler yürütme veya kontrol akışınaver<strong>ile</strong>n addır. Çok threatlerde bir nesne bir durumdan diğerine geçerken bir durumu bitirmekzorunda değildir. Bunun karşılığı günlük hayatta iki işi aynı anda yapmak olabilir. Örneğin:ADAMKoltukta oturmakTelevizyon izlemekAçıktıYemek yemekEğlenceistediBu akıştan da anlaşılacağı gibi koltukta oturma durumundan yemek yeme durumunageçmek için ilk durumu bitirmek zorunda değiliz koltukta otururken yemeğimizi deyiyebiliriz.Yemek yeme durumundan bizi televizyon izleme durumuna geçiren eğlence geçişbuna tetik diyebiliriz. Aynı şekilde yemek yerken televizyonda izleyebiliriz. Akışta görülensonu yarım daire biçiminde oklar durum geçişlerinde çoklu durum threadlarını işaret eder veönceki durumun bitmediğini ifade eder.İkinci akış istisnası olan önceki durum birleşimleri ise bir geçişin gerçekleşebilmesiiçin bir kaç ön durumun oluşması gereken durumlardır.Ödev çalışıyorHaberler saati geldiHaberleri izlemeYıkanıyorBu gibi bir durum önceki durum birleşimine istisnasına örnektir. Bu akıştan dagörüldüğü üzere önceki iki durum bitirildikten sonra haber saati geçişiyle bir başka durumageçebiliriz buna bir nevi ön koşul diyebiliriz.15


Son akış istisnası ise sonraki durum birleşenleri de adından anlaşılacağı üzere bittiğizaman birden fazla durumu aktif hale getiren durumlara ver<strong>ile</strong>n isimdir.Yemek yiyor.Haberleri izlemeHaberler saati bitti.Müzik dinliyor.Uyuyor.Haberlerin bitmesi yemek yeme , müzik dinleme ve uyuma gibi üç farklı durumageçişi sağlamış.Geçişler(Transitions):Nesneye yönelik sistem analizinde nesneler geçişler üzerinden durum değiştirirler.Gösterimi ikiye bölünmüş dikdörtgen şeklindedir. İlk kısma triger yani tetik denir burasıdurum değiştirmenin başlaması için gerekli koşulu barındırır. Alt kısım ise tetik sonucuver<strong>ile</strong>n tepkinin açıklamasını içerir. Tetik (triger) şartları ve olayları içeren mantıksal kısımdırve olaylar önlerinde @ sembolünü taşırlar. Hareket (action) kısmı ise bir alt durumageçemeden önceki yapılacak hareketleri içermelidir. Durumlardan farklı olarak hareketlerbitmelidir. Geçiş simgesinin sol üst köşesinde geçiş belirteci vardır bu sadece geçişin isminibelirtir ve braketler içine yazılır. İlk geçişin önceki durumu yoktur ve her zaman aktiftir. Songeçişin ise hiçbir sonraki durumu yoktur ve kendinden önceki tüm durumları bitirir. Dahaaşağı seviyedeki durum , not ve kısıtlardan oluşan geçişlere yüksek seviyeli geçişler denir.Tipik bir geçişin gösterimi aşağıdadır.[Belirteç]Triger açıklamasıAction açıklamasıİlk Geçişler (İnitial Transitions):Dükkan[0]Açılış ZamanıKapıyı açAçılışİlk geçiş şekli16


İlk geçişler ilk durumları harekete geçirir önceki durumları yoktur ve her zaman hazırhaldedir. Bitmiş durumlar ağının ilk başlangıdır ve her ne zaman tetiklenirse ilk geçiş başlar.İlk geçiş ateşlendikten sonra ilk durum veya durumlar aktifleşir.Bir çok durumda ilk geçişler durum ağının başlangıçıdır bu bazı oluşum olaylarının olduğunugösterir yani bir nesne veya nesneler sistemde gözükmeye başlar (Böylece ilk değerlerinialabilirler). Buna genelde tetik denir ve @ sembolüyle gösterilir.Müşteri[0]@ içeri girerRaflara giderBir şeylerArama[1]İstrediğini bulurRaftan alır[3]CıkışyapılırÖdeme[2]Başka şeylere ihtiyaçıvar veya yokParası yeter mi bakarİlk geçiş için şekilBazen ilk durum aksiyonu boş olabilir böyle bir durumda ilk durumu düşey düz bir çizgiylebelirtiririz.YürümeSon Geçişler:İlk geçişin kısa gösterimiSon geçiş hiç bir alt duruma birleşimi olmayan geçişlere denir.@LOGINParola SorDoğrulama@LOGOUTÇıkışı Onayla17


Son durumlarda da ilk durumlarda oldoğu gibi eğer geçişin aksiyon kısmı boşsa kısa olarakDüşey düz çizgiyle belirtilir.Öğrenci@Mezun olduÖğrenciAşağıdaki veteriner nesne sınıfında iki durum arasındaki geçişi aşağıda daha iyigörebiliriz burada dikkat edilmesi gereken şey Action kısmındaki hareketlerin bitmeden diğerduruma geçişin sağlanmamasıdır.VETERİNERMüsait@ hasta hayvan getirilirekipmanları alırtemizlenirmaskesini takarHasta hayvanabakarBurada geçiş anlık değildir bunu geçiş zamanlama diyagramından daha iyi anlarız .Hasta hayvan t1 anında getirilmiştir ama veteriner müsait olmasına rağmen t2 anına kadarharekete geçmemiştir bu geçikme gri kutuyla gösterilmiştir t2 ve t3 anları arasındaekipmanlarını almış temizlenmiş ve maskesini takmıştır. Tüm bu aşamalardan sonra altduruma geçebilmiş ve hasta hayvanın tedavisine başlamıştır.Müsait durumdaGeçiş DurumundaHasta HayvanaMüdahale DurumundaEkipmanları alırTemizlenirMaskesini takart1 t2 t318


Burada tetik şartlar ve olaylara biraz daha değinelim.Tetikler genelde sistem şartlarını ve olaylarını tarif eden mantıksal cümlelerdir. Birgeçişin trigeri gerçekleştiğinde True (doğru) olur ve geçiş başlar. Koşulara bağlı tetiklerleolaylara bağlı tetikler arasındaki önemli ayrımın yapılması gerekir.Koşullar sistemin durumu nesnenin durumu veya varlığı veya nesneler arasındakiilişk<strong>ile</strong>rin varlığı hakkındaki mantıksal ifadelerdir. Koşulara örnek vermek gerekirse hesap 1.000.000 TL altında müşterinin kredi kartı var.Koşullara bağlı tetiklerde koşulun doğru olduğu herhangi bir anda geçiş başlayabilir. Koşuldoğru olduğunda geçiş başlayacaktır ve tetik hangisinin daha önce olduğuna bakmadanateşlenecektir.Bu ilk örnekte ilk önce geçiş doğru olur daha sonra koşul sağlanır ve geçiş başlar.Geçiş doğruKoşul doğruGeçiş Başlarİkinci örnekte ise ilk önce koşul doğrulanmıştır fakat geçiş doğrulanmasına kadar geçişbaşlamamıştır.Koşul doğruGeçiş doğruGeçiş BaşlarBu örnekte ise geçişin geçerliliğini kaybettikten son koşulun sağlanmasıyla geçişinbaşlamayacağını gösterir.Geçiş doğruKoşul doğruOlaylar:Olaylar nesnelerin veya ilişk<strong>ile</strong>rin oluşturulmasını silinmesini aktivetin başlatılmasınıbitirilmesini ve mesajların diğer nesneler tarafından kabulünü içeren sistem değişiklerinever<strong>ile</strong>n addır.19


Çalışan kovulur.Müşteri bir hesap açar.Olaya dayalı tetik sadece geçiş doğrulandığında belirli bir anda koşul sağlanırsa ateşlenir.Butip geçiş başlatan olay tetiklerine olay monitorleri adı verilir ve önünde @ işaretiyle belirtilir.Olay OlurGeçiş olurGeçiş ateşlenirOlay geçişten önce veya sonra olursa geçiş ateşlenmez.Olay OlurOlay OlurGeçiş olurGeçiş Hiç bir Zaman Başlamazİstisnalar ( Exceptions):İstisnalar ( Exceptions) normal sistem akışında yeri olmayan olay veya şartlardır.Bunu akış istisnasıyla karıştırmamak lazımdır. Akış istisnası durumlarını sistem içinde normalkarşılanır fakat istisnalar bu istisnayi hali belirtmek için içinde dikine çizgi bulunan oklabelirtilir. İstisnaları daha iyi açıklamak için bir örnek verelim. Elimizde dışarı çıkmayısevmeyen bir adamımız olsun.ADAMTelevizyon izleKoltukta oturuyorSıkıldıKitap okuMüzik dinleDışarı çık20


Dışarı çıkma hali adamımız için bir istisna olacağından bu bir istisna (exception)olarak kabul edilir ve durum ağında birden fazla istisna mümkündür.Threadler:Threadler yapılışın veya kontrolün akışıdır. Bir nesne bir anda birden çok durumda veyageçişte olabilir böyle bir durum çoklu threadlerin ortaya çıkmasıyla sonuçlanır. OBM de birdurumdan geçiş yapılmışsa b<strong>ile</strong> geçişin yapıldığı durum halen var olabilir. Bu durum birucunda yarım halka bulunan ok <strong>ile</strong> belirtilir.Koşuyor)Walkman’i açtıMüzik dinliyorBurada görüldüğü gibi koşucu hala koşuyor olabilir ve aynı andada walkmani açıp müzikdinleyebilir Bu durumda başka bir thread başlatılmış ve koşucu birden fazla durumdadır.Çoklu threadlar geçiş bittiğinde birden fazla duruma gidildiğinde de ortaya çıkar ayrıntılariçin aşağıdaki örneği inceliyelim.Motor kapalıKontağı çevirdiMotor çalışıyor Elektrik geldi Eksoz DumanıbaşladıKoşuyorWalkman’i açtıKoşucu YorulduMüzik DinliyorDinleniyorWalkmani KapatıldıPiller bitti21


Bu örnekte koşucu koşmayı bırakmış ve hala müzik dinliyor olabilir. Bir insan varlığınınbitmesi için son geçişe gelinmesi ve ya bir istisna tarafından bitirilmesi gerekir.Threadler bir çok yolla birleştir<strong>ile</strong>bilir. Aşağıdaki örnek bir insanın sinema içinde durumundaiken bir threadle pop-corn alma durumuna geçişinini ve tekrar threadları tekrar sinema içindedurumunda birleştirilmesini anlatır. Var olan temel bir duruma geçiş olduğunda bağlananthread yok olur ve durum kalır. Burada , sinema içinde temel durumundan pop-corn almadurumuna tekrar bağlanmasında görebiliriz.Film saatiSinema içiAçıktıFilm bittiPop-corn aldıPop-corn almaSinema dışıBuradaki örnek tetiği film bitti olan geçişin aksiyonunu hazır olduğunda binayı terket veyaPop-corn alma durumu bitmeden sinema dışı durumuna geçişi engelleyen herhangi biraksiyon olarak kabul eder. Bu halde thread sinema içinde durumunda hapsedilmiştir.Threadlerin birleştiği bir başka durum ise bir geçişin başlaması için birden çok durumungerektiği durumlardır. Aşağıdaki örnekte bunu görebiliriz.Dükkan içindePara varPara kadar yiyecek aldındıKasada22


Aldıklarının parası verildiDükkan dışındaKISITLAR:Kısıtlar da ORM’de olduğu gibidir. Ortaya çıkab<strong>ile</strong>cek hatalı durumları engellemekiçin konur. Karar verilmemiş ve kararsız durumlar için genel bir çözüm yolu gösterir. Örnekolarak üsteki örnekte sıkılan adam her seferinde televizyon izleyebilir . Bu soruna herseferinde tüm durumları günde en az bir kere yapması koşulunu koyarak aşabiliriz. Fakat geneunutmamalıdır ki adamımız dışarı çıkmayı sevmediğinden bunu bir notla belirtebiliriz.ADAMTelevizyon izleKoltukta oturuyorSıkıldıKitap okuMüzik dinleGerçek Zamanlı Kısıtlar:Sıkça Sıkıldığında Belirli olayların her durumu bir günde nesne en az tarafından bir kere yapmalıdır. veya bir nesne üzerinde yapıldığını Dışarı göstermek çıkDışarı çıkma birden fazla seçmemekte fayda vardır.isteriz. Bunlara gerçek zamanlı kısıtlar denir. Bu kısıtlar tipik olarak ilk durumlar ağıtamamlandıktan sonra modele eklenir ve durum ağ diyagramında “{}” süslü parantezlerarasında text olarak gösterilir.Gerçek zaman kısıtları bütün bir geçişşe , bir tetiğe , bir aksiyona , bir duruma veya yolişaretç<strong>ile</strong>rine uygulanabiilir.Şekil birde bütün bir geçişe uygulanan gerçek zamanlı kısıtı görebiliriz. Bu şekil aslanterbiyecisinin boş durumundan aslanı arama durumuna geçişinin 5 dakikadan daha uzunsüremeyeceğini gösterir.Aslan TerbiyecisiBoş@ aslan kaçar{ < 5 Dakika }organize arama grubuAslanı araŞekil 1 Bütün geçişe uygulanmış Gerçek Zaman Kısıtı23


Tetiğe uygulanan gerçek zamanlı bir kısıta , geçişin tetiklendiği anla nesnenin o ankidurumunu terk edip geçişe giridiği an arasında kalan izin ver<strong>ile</strong>n zaman denir. Aşağıdakişekilde ise gerçek zaman kısıtı geçişin aksiyon kısmına uygulanmıştır. Bu örnekte bir kerehasta hayvan geldiğinde veteriner boş durumundan çıkar ve ekipmanların toplanması,maskenin takılması 5 dakika içinde gerçekleşir.VeterinerBoş@ hasta hayvan gelirekimanı toparlamaskeyi takHasta hayvana bakGerçek zaman kısıtları bir aksiyonlar bütününe veya tek bir durumu veya geçişi kapsarsa yolişaretç<strong>ile</strong>ri (path markers) kullanılır. Bir geçişten çıkan ok üzerinde bulunan yol işaretç<strong>ile</strong>ri altbir duruma geçişe girişi belirtir. Geçişlere giren yol işaretç<strong>ile</strong>ri ise ilk durumdan çıkışzamanını belirtir. Aşağıdaki örnekte bunu görebiliriz.BakıcıYem hazırla{a}@ besleme zamanı 1Yılanları beslea dan b’ye < 1 saat@ besleme zamanı 1 Yem hazırla {b} @ besleme zamanı 124

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!