Nesneye yönelİk analİz ve tasarima gİrİş
GİRİŞ Nesneye Yönelik Analiz : Ele alınan problemdeki nesneleri (kavramları) belirleyip tanımlama aşaması. Bu aşamada amaç problemi çözmek değil, anlamaktır. Nesneye Yönelik Tasarım : Yazılım aşaması için sınıflar oluşturulur. Sınıfların içerikleri (özellik ve davranışlar) ve sınıflar arası ilişkiler tam olarak tanımlanır. Tasarım tamamlandıktan sonra nesneye yönelik bir programla dili ile kodlama yapılır.
BİR YAZILIMIN KALİTESİ Kullanıcı Açısından İstenen işi doğru yapması Kolay kullanılabilir olması Gerektiği kadar hızlı çalışması Sistem kaynaklarını aşırı kullanmaması Sağlam olması Kolay güncellenebilir olması Yazılım Geliştiren Açısından Bakımı kolay olmalı Proje yeterli bir sürede tamamlanmalı Modüller, yeni projelerde tekrar kullanılabilmeli Geliştirme maliyeti düşük tutulabilmeli
NESNEYE YÖNELİK ANALİZ VE TASARIM NEDEN GEREKLİ? Problemler: Donanım maliyetleri azalırken yazılım maliyetleri artmakta Yazılımların boyutları ve karmaşıklıkları artmakta Bakım maliyetleri çok yüksek Donanım problemi çok azken, yazılım hataları sıklaşmakta
NESNEYE YÖNELİK YÖNTEMİN YARARI İnsanlar günlük hayattaki kavramları, konuşma dili ile anlatırlar. Programcılar, problemle ilgili kavram ve varlıkları, programlama dili ile bilgisayara ifade etmeye çalışırlar. Bunun için tasarım aşamasında, ifade etmeyi sağlayacak modeller oluşturulur. Nesneye yönelik yöntem, bu modellerin oluşturulmasında ve gerektiğinde sistemin güncellenmesinde avantajlar sağlar. Problem Uzayı Soyutlama Modelleme Gerçekleme Çözüm Uzayı Gerçek Dünya Programcı Bilgisayar
YAPISAL PROGRAMLAMA YÖNTEMİ BASIC, Pascal, C gibi diller destekler. Öncelikle, sistemin yapması gereken iş belirlenir. Karmaşık, büyük boyutlu işler ,daha küçük ve basit işlere bölünerek gerçeklenir. Gerçek dünyanın modellenmesi (soyutlama), fonksiyonlar ile yapılır.
NESNEYE YÖNELİK PROGRAMLAMA YÖNTEMİ Gerçek dünya, nesnelerden oluşmaktadır. Çözülecek problemi oluşturan nesneler, gerçek dünyadaki yapılarına benzer şekilde bilgisayarda modellenmelidir (Soyutlama, nesneler ile yapılır). Nesne: Özellikler (Nitelikler veya durum bilgileri) İşlemler (Davranışlar ve yetenekler)
YÖNTEMLERİN DEĞERLENDİRİLMESİ-1 Karmaşık yapıyı fonksiyonlara bölmek programlamayı kolaylaştırabilir ancak karmaşıklık sadece boyutlara değil, birimler arası ilişkiler ve bilgi akışı karmaşıklığına da bağlıdır. Gerçek dünya sadece fonksiyonlardan oluşmaz. Sistemin gerçeğe yakın modelini yaratmak için yapısal yöntemler yetersiz kalır.
YÖNTEMLERİN DEĞERLENDİRİLMESİ-2 Tasarımda verilerin yerine fonksiyonel yapının ağırlık kazanması, hatalar nedeniyle verilerin bozulma olasılığını arttırır. Veri gizleme olanakları yapısal yöntemde kısıtlı olmasına karşın, nesneye yönelik yöntemde özel mekanizmalar bulunmaktadır. Ayrıca veri ile işlemlere verilen ağırlıklar nesneye yönelik yöntemde istenildiği gibi ayarlanabilir. Sistemin ihtiyaçlarına cevap verecek boyut, kapasite ve kabiliyette veri yapıları, ancak nesneye yönelik yöntemle sağlanabilir. Güncellemeler gerektiğinde, yeni eklentiler yapmak ve eski öğeleri yeni eklenen unsurlarla uyum içinde kullanmak yapısal programlamada oldukça zordur.
SONUÇ Analiz ve tasarım süreçleri boyunca sorulması gereken soru “Bu sistem ne iş yapar?” değil, “Bu sistem hangi nesnelerden oluşur?” olmalıdır. Nesneye Yönelik yöntem ile; Gerçek dünya çok daha doğru ve gerçekçi bir şekilde modellenebilir. Daha “kaliteli” yazılımlar oluşturulabilir. Günümüzün ve yakın geleceğin artan ihtiyaçlarına daha uygun, takım çalışmasına yatkın; çalışma, yönetme ve çözüm üretme olanakları sağlanabilir.
Unified Modeling Language (UML) Bütünleşİk Modelleme Dİlİ
YAZILIM MODELLENMESİ Model gerçeğin basitleştirilmiş halidir. Model sayesinde anlaşılması güç yazılımları basit bir dille ifade edebiliriz. Bu da yazılımın anlaşılmasını kolaylaştırır, sistem gereksinimlerini ve davranışlarını daha iyi anlamamızı ve hatalarımızı kolaylıkla görüp en düşük seviyeye indirgememizi sağlar.
UML NEDİR? UML yazılım mühendisliğinde nesneye yönelik sistemleri modellemede kullanılan açık standart olmuş bir görsel modelleme dilidir. Yazılım geliştirmenin çözümlemeden bakıma kadar tüm aşamalarında ekipler ve bireyler arasındaki iletişimin düzgün yürütülmesi için kullanılmaktadır. Yazılımın yaşam döngüsü içinde farklı görev gruplarının projeye ve sisteme farklı bakış açıları vardır. Bundan dolayı UML çeşitli bakış açılarını ifade eden diyagramlar içermektedir Çok zengin bir dil olmasından dolayı, Yazılım Mühendisliği’nin bir çok yönden ihtiyaçlarını karşılamaktadır.
UML’NİN GELİŞİM SÜRECİ 1989-1994 yılları yazılım mühendisliğinde metot savaşları olarak bilinen bir dönemdir. 90’ların ortalarına doğru öne çıkan 3 yöntem vardır. Booch : Yaratıcısı Grady Booch’dur. Tasarım ve gerçekleştirimde mükemmel. OMT (Object Modelling Technology) : Yaratıcısı Jim Rumbaugh. Analiz ve veri yoğunluğu çok olan sistemler için uygun OOSE (Object Oriented Software Engineering) : Yaratıcısı Ivar Jacobson. Use-Case adı verilen güçlü bir teknik içeriyordu. 1994-1995 yıllarında bu üç kişi (Üç Amigolar) Rational Firması çatısı altında toplanıp kendi yöntemlerinin olumlu taraflarını birleştirerek UML’yi geliştirdiler. 1997’de OMG(Object Management Group) UML’yi sahiplendi ve açık standart olarak geliştirmeye başladı.
UML’NİN TARİHİ
UML’YE NEDEN GEREK VAR? Hataların kolaylıkla fark edilip en düşük seviyeye indirgenmesi.(Risk, zaman, maliyet) Yazılım üretiminde başarı oranının düşük olması. (%16 ) Yazılımda paylaşım önemlidir. Tüm ekibin aynı dili konuşabilmesi gerekmektedir. Sistemin tamamını basit bir dille ve görsellikle görebilmek ve tasarlayabilmek gerekli. Modellenmiş ve dokümante edilmiş bir yazılımın tanıtımının kolay olması. Yazılım kalitesini arttırma.
UML’NİN AVANTAJLARI-1 Kodlama kolaylığı sağlar. Kullanılan tekrar kod sayısı ayırt edilebilir bu sayede verim sağlanır. Mantıksal hataların minimum seviyeye düşürülmesini sağlar. Geliştirme maliyetinin düşmesini sağlar. Resmin tamamının görülmesini sağlar.
UML’NİN AVANTAJLARI-2 UML diyagramları ile yazılım tamamını görebileceğimiz için verimli bellek kullanımı sağlanabilir. Karmaşık sistemlerde değişiklik yapmayı kolaylaştırır. UML ile dokümanlaştırılmış kodları düzenlemek daha az zaman alacaktır. UML diyagramlarını kullanan yazılımcılar aynı dili konuşacaklarından kolay iletişim sağlanır.
UML DİYAGRAMLARI Use Case Diyagramları (Kullanım Vakaları Diyagramları) Class Diyagramları (Sınıf Diyagramları) State Diyagramları (Durum Diyagramları) Sequence Diyagramları (Ardışıl Diyagram) Colloboration Diyagramları (Etkileşim Diyagramları) Package Diyagramları (Paket Diyagramları) Component Diyagramları (Bileşen Diyagramları) Deployment Diyagramları (Dağıtım Diyagramları)
USE CASE DİYAGRAMLARI Analiz aşamasında Use Case Diyagramları kullanılır. Tasarım aşamasında ise modellerin 3 tipi ortaya konulur. Sınıf Diyagramları Durum Diyagramları Etkileşim Diyagramları (Sequence ve Colloboration Diyagramları)
USE CASE DİYAGRAMLARI Sistemin çok basit bir şekilde modellenmesini ve islerin detayının(senaryonun) metin olarak anlatılmasını içerir. Aktörden gelen bazı isteklere karşı sistemin yaptığı aktiviteleri gösterir. Gelişmenin erken safhalarında yapılandırılır. Amaç Sistemin içeriğini belirtmek. Sistemin gereksinimlerini elde etmek. Sistemin mimarisini geçerli kılmak. Analistler ve uzmanlar tarafından geliştirilir.
USE CASE DİYAGRAMLARI BİLEŞENLERİ Aktör Aktörler genelde belirli bir rol ifade ederler. Diğer aktörlerle bağlantılı olabilirler bu bağlantı bir ok ile gösterilir. Sistem sınırları dışında gösterilir.
USE CASE DİYAGRAMLARI BİLEŞENLERİ Sistem fonksiyonelliğinin büyük bir parçasını gösterir. Diğer bir use case ile genişletilebilir. Diğer bir use case içerebilir. Sistem sınırları içinde gösterilir. Use case
USE CASE DİYAGRAMLARI BİLEŞENLERİ Sistem sınırı İçerisinde sistemin ismi yazılıdır. Sistemin kapsamını gösterir. Bağıntı ilişkisi Aktör ve use case ler arasındaki bağıntıyı gösteren çizgidir. Sistem * *
USE CASE DİYAGRAMLARI BİLEŞENLERİ Inclusion(içerme) Bu metotla bir use case içindeki adımlardan birini başka bir use case içinde kullanabiliriz. Inclusion yöntemini kullanmak için <<include>> şeklindeki bir ifade kullanılır. Kullanmak istediğimiz use case 'ler arasına çektiğimiz noktalı çizginin üzerine <<include>> yazısını yazarız. Extension(eklenti) Bu metodla varolan bir Use Case 'e yeni yeni adımlar ekleyerek yeni use case 'ler yaratılır. Inclusion'da olduğu gibi extension 'ları göstermek için yine use case 'ler arasına noktalı çizgiler konur ve üzerine <<extension>> ibaresi yazılır. <<include>> <<extension>>
USE CASE DİYAGRAMLARI BİLEŞENLERİ Genelleme ilişkisi: Özelleşmiş use case ile daha genel use case arasındaki ilişkidir. Özelleşmiş use case den temel use case e doğru bir ok ile gösterilir.