OOAD - Nesneye Yönelik Tasarım
Analiz aşamasından sonra kavramsal model, nesne yönelimli tasarım (OOD) kullanılarak nesne yönelimli bir modele dönüştürülür. OOD'de, analiz modelindeki teknolojiden bağımsız kavramlar, uygulama sınıfları ile eşleştirilir, kısıtlamalar belirlenir ve arayüzler tasarlanarak çözüm alanı için bir model elde edilir. Özetle, sistemin beton teknolojiler üzerine nasıl inşa edileceğini belirten ayrıntılı bir açıklama yapılır.
Nesneye yönelik tasarım aşamaları şu şekilde tanımlanabilir:
- Sistem bağlamının tanımı
- Sistem mimarisinin tasarlanması
- Sistemdeki nesnelerin tanımlanması
- Tasarım modellerinin yapımı
- Nesne arayüzlerinin spesifikasyonu
Sistem tasarımı
Nesneye yönelik sistem tasarımı, bir sistemin bağlamını tanımlamayı ve ardından sistemin mimarisini tasarlamayı içerir.
Context- Bir sistemin bağlamı statik ve dinamik bir bölüme sahiptir. Sistemin statik bağlamı, bir alt sistemler hiyerarşisine genişletilen tüm sistemin basit bir blok diyagramı kullanılarak tasarlanmıştır. Alt sistem modeli, UML paketleri ile temsil edilir. Dinamik bağlam, sistemin çevresi ile nasıl etkileşime girdiğini açıklar. Kullanılarak modellenmiştiruse case diagrams.
System Architecture- Sistem mimarisi, alan bilgisi kadar mimari tasarım esaslarına uygun olarak sistemin içeriği esas alınarak tasarlanır. Tipik olarak, bir sistem katmanlara bölünür ve her katman, alt sistemleri oluşturmak için ayrıştırılır.
Nesne Tabanlı Ayrıştırma
Ayrıştırma, büyük bir karmaşık sistemi böl ve yönet ilkelerine göre daha az karmaşıklığa sahip daha küçük bileşenlerden oluşan bir hiyerarşiye bölmek anlamına gelir. Sistemin her bir ana bileşenine bir alt sistem adı verilir. Nesneye yönelik ayrıştırma, bir sistemdeki bireysel özerk nesneleri ve bu nesneler arasındaki iletişimi tanımlar.
Ayrışmanın avantajları -
Tek tek bileşenler daha az karmaşıktır ve bu nedenle daha anlaşılır ve yönetilebilirdir.
Özel becerilere sahip iş gücünün bölünmesini sağlar.
Diğer alt sistemleri etkilemeden alt sistemlerin değiştirilmesine veya değiştirilmesine izin verir.
Eş Zamanlılığı Tanımlama
Eşzamanlılık, birden fazla nesnenin aynı anda olay almasına ve birden fazla etkinliğin aynı anda yürütülmesine izin verir. Eşzamanlılık tanımlanır ve dinamik modelde temsil edilir.
Eşzamanlılığı etkinleştirmek için her bir eşzamanlı öğeye ayrı bir kontrol dizisi atanır. Eşzamanlılık nesne düzeyinde ise, iki eşzamanlı nesneye iki farklı kontrol dizisi atanır. Tek bir nesnenin iki işlemi doğası gereği eşzamanlıysa, o nesne farklı iş parçacıkları arasında bölünür.
Eşzamanlılık, veri bütünlüğü, kilitlenme ve açlık sorunları ile ilişkilidir. Bu nedenle, eşzamanlılık gerekli olduğunda net bir strateji oluşturulmalıdır. Ayrıca, eşzamanlılığın tasarım aşamasında tanımlanması gerekir ve uygulama aşamasına bırakılamaz.
Kalıpları Tanımlama
Uygulamaları tasarlarken, bazı problem kategorileri için genel kabul görmüş bazı çözümler benimsenmiştir. Bunlar tasarım kalıplarıdır. Bir kalıp, belirli türdeki uygulama geliştirme problemlerinde kullanılabilen, belgelenmiş bir yapı taşları seti olarak tanımlanabilir.
Yaygın olarak kullanılan bazı tasarım modelleri şunlardır:
- Cephe deseni
- Model görünümü ayırma modeli
- Gözlemci deseni
- Model görünümü denetleyici modeli
- Abone kalıbı yayınlayın
- Proxy kalıbı
Olayları Kontrol Etme
Sistem tasarımı sırasında, sistem nesnelerinde meydana gelebilecek olayların tanımlanması ve uygun şekilde ele alınması gerekir.
Bir olay, zaman ve uzayda bir konumu olan önemli bir olayın belirtimidir.
Modellenebilecek dört tür olay vardır:
Signal Event - Bir nesne tarafından fırlatılan ve başka bir nesne tarafından yakalanan adlandırılmış bir nesne.
Call Event - Bir işlemin gönderilmesini temsil eden eşzamanlı bir olay.
Time Event - Zamanın geçişini temsil eden bir olay.
Change Event - Durumdaki değişikliği temsil eden bir olay.
Sınır Koşullarını Yönetme
Sistem tasarım aşaması, sistemin bir bütün olarak ve her bir alt sistemin başlatılmasını ve sonlandırılmasını ele almalıdır. Belgelenen farklı yönler aşağıdaki gibidir -
Sistemin başlatılması, yani sistemin başlatılmamış durumdan sabit duruma geçişi.
Sistemin sonlandırılması, yani çalışan tüm konuların kapatılması, kaynakların temizlenmesi ve gönderilecek mesajlar.
Sistemin ilk yapılandırması ve gerektiğinde sistemin yeniden yapılandırılması.
Sistemin arızalarını veya istenmeyen sonlandırmayı öngörmek.
Sınır koşulları, sınır kullanım durumları kullanılarak modellenmiştir.
Nesne Tasarımı
Alt sistemler hiyerarşisi geliştirildikten sonra sistemdeki nesneler tanımlanarak detayları tasarlanır. Burada tasarımcı, sistem tasarımı sırasında seçilen stratejiyi detaylandırır. Vurgu, uygulama alanı kavramlarından bilgisayar konseptlerine doğru kaymaktadır. Analiz sırasında belirlenen nesneler, yürütme süresini, bellek tüketimini ve genel maliyeti en aza indirgemek amacıyla uygulama için belirlenir.
Nesne tasarımı aşağıdaki aşamaları içerir -
- Nesne tanımlama
- Nesne gösterimi, yani tasarım modellerinin oluşturulması
- İşlemlerin sınıflandırılması
- Algoritma tasarımı
- İlişkilerin tasarımı
- Dış etkileşimler için kontrolün uygulanması
- Sınıfları ve ilişkilendirmeleri modüllere paketleyin
Nesne Tanımlama
Nesne tasarımının ilk adımı nesne tanımlamadır. Nesneye yönelik analiz aşamalarında tanımlanan nesneler, sınıflara ayrılır ve gerçek uygulamaya uygun olmaları için rafine edilir.
Bu aşamanın işlevleri -
Her alt sistem veya paketteki sınıfları tanımlama ve iyileştirme
Sınıflar arasındaki bağlantıları ve ilişkileri tanımlama
Sınıflar arasındaki hiyerarşik ilişkilerin tasarlanması, yani genelleme / uzmanlaşma ve miras
Toplamaları tasarlama
Nesne Gösterimi
Sınıflar tanımlandıktan sonra, nesne modelleme teknikleri kullanılarak temsil edilmeleri gerekir. Bu aşama esas olarak UML diyagramlarının oluşturulmasını içerir.
Üretilmesi gereken iki tür tasarım modeli vardır -
Static Models - Sınıf diyagramları ve nesne diyagramları kullanarak bir sistemin statik yapısını tanımlamak.
Dynamic Models - Bir sistemin dinamik yapısını tanımlamak ve etkileşim diyagramları ve durum çizelgesi diyagramları kullanarak sınıflar arasındaki etkileşimi göstermek.
Operasyonların Sınıflandırılması
Bu adımda OOA aşamasında geliştirilen üç model, yani nesne modeli, dinamik model ve fonksiyonel model birleştirilerek nesneler üzerinde gerçekleştirilecek işlem tanımlanır. Bir işlem nasıl yapılacağını değil neyin yapılacağını belirtir.
İşlemlerle ilgili olarak aşağıdaki görevler gerçekleştirilir -
Sistemdeki her nesnenin durum geçiş diyagramı geliştirilir.
Nesnelerin aldığı olaylar için işlemler tanımlanır.
Bir olayın aynı veya farklı nesnelerde diğer olayları tetiklediği durumlar belirlenir.
Eylemler içindeki alt işlemler tanımlanır.
Ana eylemler, veri akış diyagramlarına genişletilmiştir.
Algoritma Tasarımı
Nesnelerdeki işlemler algoritmalar kullanılarak tanımlanır. Algoritma, bir işlemde ortaya konan problemi çözen aşamalı bir prosedürdür. Algoritmalar, nasıl yapılacağına odaklanır.
Belirli bir işleme karşılık gelen birden fazla algoritma olabilir. Alternatif algoritmalar tanımlandıktan sonra, verilen problem alanı için optimal algoritma seçilir. En uygun algoritmayı seçmek için ölçütler şunlardır:
Computational Complexity - Karmaşıklık, bir algoritmanın verimliliğini hesaplama süresi ve bellek gereksinimleri açısından belirler.
Flexibility - Esneklik, seçilen algoritmanın çeşitli ortamlarda uygunluk kaybı olmadan uygun şekilde uygulanıp uygulanamayacağını belirler.
Understandability - Bu, seçilen algoritmanın anlaşılmasının ve uygulanmasının kolay olup olmadığını belirler.
İlişkilerin Tasarımı
İlişkileri uygulama stratejisi, nesne tasarım aşamasında yazılmalıdır. Ele alınan ana ilişkiler, ilişkilendirmeler, toplamalar ve kalıtımlardan oluşur.
Tasarımcı, ilişkilendirmelerle ilgili olarak aşağıdakileri yapmalıdır -
Bir ilişkilendirmenin tek yönlü veya çift yönlü olup olmadığını belirleyin.
İlişkilendirme yolunu analiz edin ve gerekirse güncelleyin.
Çoktan çoğa ilişkiler olması durumunda ilişkilendirmeleri ayrı bir nesne olarak uygulayın; veya bire bir veya bire çok ilişkiler olması durumunda diğer nesneye bağlantı olarak.
Kalıtımlarla ilgili olarak, tasarımcı aşağıdakileri yapmalıdır:
Sınıfları ve ilişkilerini ayarlayın.
Soyut sınıfları tanımlayın.
Davranışların ihtiyaç duyulduğunda paylaşılması için hükümler koyun.
Kontrolün Uygulanması
Nesne tasarımcısı, durum grafiği modelinin stratejisine iyileştirmeler ekleyebilir. Sistem tasarımında dinamik modeli gerçekleştirmek için temel bir strateji yapılır. Nesne tasarımı sırasında, bu strateji uygun uygulama için uygun şekilde süslenir.
Dinamik modelin uygulanmasına yönelik yaklaşımlar şunlardır:
Represent State as a Location within a Program- Bu, kontrol konumunun program durumunu tanımladığı geleneksel prosedür odaklı yaklaşımdır. Sonlu durum makinesi bir program olarak uygulanabilir. Bir geçiş bir girdi deyimi oluşturur, ana kontrol yolu talimat dizisini oluşturur, dallar koşulları oluşturur ve geriye doğru yollar döngüleri veya yinelemeleri oluşturur.
State Machine Engine- Bu yaklaşım, bir durum makinesi motor sınıfı aracılığıyla doğrudan bir durum makinesini temsil eder. Bu sınıf, durum makinesini uygulama tarafından sağlanan bir dizi geçiş ve eylem aracılığıyla yürütür.
Control as Concurrent Tasks- Bu yaklaşımda, bir nesne programlama dilinde veya işletim sisteminde bir görev olarak uygulanır. Burada, görevler arası çağrı olarak bir olay uygulanır. Gerçek nesnelerin içsel eşzamanlılığını korur.
Ambalaj Sınıfları
Herhangi bir büyük projede, bir uygulamanın modüllere veya paketlere titizlikle bölümlenmesi önemlidir. Nesne tasarımı sırasında, sınıflar ve nesneler, birden çok grubun bir proje üzerinde işbirliği içinde çalışmasını sağlamak için paketler halinde gruplanır.
Ambalajın farklı yönleri şunlardır:
Hiding Internal Information from Outside View - Bir sınıfın "kara kutu" olarak görülmesine izin verir ve sınıfın herhangi bir istemcisinin kodu değiştirmesine gerek kalmadan sınıf uygulamasının değiştirilmesine izin verir.
Coherence of Elements - Sınıf, işlem veya modül gibi bir öğe, tutarlı bir plan üzerinde organize edilmişse ve tüm parçaları, ortak bir amaca hizmet edecek şekilde içsel olarak birbiriyle ilişkiliyse tutarlıdır.
Construction of Physical Modules - Aşağıdaki yönergeler fiziksel modüller oluştururken yardımcı olur -
Bir modüldeki sınıflar, aynı bileşik nesnedeki benzer şeyleri veya bileşenleri temsil etmelidir.
Yakın bağlantılı sınıflar aynı modülde olmalıdır.
Bağlantısız veya zayıf bağlantılı sınıflar ayrı modüllere yerleştirilmelidir.
Modüller iyi bir bütünlüğe, yani bileşenleri arasında yüksek işbirliğine sahip olmalıdır.
Bir modülün diğer modüllerle düşük bağlantısı olmalıdır, yani modüller arasında etkileşim veya karşılıklı bağımlılık minimum olmalıdır.
Tasarım Optimizasyonu
Analiz modeli, sistem hakkındaki mantıksal bilgileri yakalarken tasarım modeli, verimli bilgi erişimini desteklemek için ayrıntılar ekler. Bir tasarım uygulanmadan önce, uygulamayı daha verimli hale getirmek için optimize edilmelidir. Optimizasyonun amacı, maliyeti zaman, alan ve diğer ölçütler açısından en aza indirmektir.
Bununla birlikte, tasarım optimizasyonu fazla olmamalıdır, çünkü uygulama kolaylığı, sürdürülebilirlik ve genişletilebilirlik de önemli konulardır. Mükemmel şekilde optimize edilmiş bir tasarımın daha verimli olduğu, ancak daha az okunabilir ve yeniden kullanılabilir olduğu sıklıkla görülür. Bu yüzden tasarımcı ikisi arasında bir denge kurmalıdır.
Tasarım optimizasyonu için yapılabilecek çeşitli şeyler şunlardır:
- Gereksiz ilişkilendirmeler ekleyin
- Kullanılamayan ilişkilendirmeleri atla
- Algoritmaların optimizasyonu
- Karmaşık ifadelerin yeniden hesaplanmasını önlemek için türetilmiş öznitelikleri kaydedin
Yedekli Derneklerin Eklenmesi
Tasarım optimizasyonu sırasında, yeni ilişkilendirmeler türetmenin erişim maliyetlerini düşürüp düşürmeyeceği kontrol edilir. Bu gereksiz çağrışımlar herhangi bir bilgi eklemeyebilir, ancak genel modelin verimliliğini artırabilirler.
Kullanılamayan İlişkilendirmelerin İhmal Edilmesi
Çok fazla ilişkinin varlığı, bir sistemi çözülemez hale getirebilir ve dolayısıyla sistemin genel verimliliğini azaltabilir. Böylece optimizasyon sırasında tüm kullanılamayan ilişkilendirmeler kaldırılır.
Algoritmaların Optimizasyonu
Nesne yönelimli sistemlerde, veri yapısının ve algoritmaların optimizasyonu ortak bir şekilde yapılır. Sınıf tasarımı oluşturulduktan sonra, işlemlerin ve algoritmaların optimize edilmesi gerekir.
Algoritmaların optimizasyonu şu şekilde elde edilir -
- Hesaplama görevlerinin sırasının yeniden düzenlenmesi
- İşlevsel modelde ortaya konulandan döngülerin yürütme sırasının tersine çevrilmesi
- Algoritma içindeki ölü yolların kaldırılması
Türetilmiş Özniteliklerin Kaydedilmesi ve Saklanması
Türetilmiş öznitelikler, değerleri diğer özniteliklerin (temel öznitelikler) bir işlevi olarak hesaplanan özniteliklerdir. Türetilmiş özniteliklerin değerlerinin her ihtiyaç duyulduğunda yeniden hesaplanması zaman alıcı bir işlemdir. Bundan kaçınmak için değerler hesaplanabilir ve hesaplanmış formlarında saklanabilir.
Bununla birlikte, bu, güncelleme anormallikleri, yani, türetilen özelliklerin değerlerinde karşılık gelen bir değişiklik olmaksızın temel özelliklerin değerlerinde bir değişiklik meydana getirebilir. Bunu önlemek için aşağıdaki adımlar atılır -
Temel özellik değerinin her güncellemesinde, türetilen özellik de yeniden hesaplanır.
Türetilen tüm öznitelikler, her güncellemeden sonra değil, bir grupta periyodik olarak yeniden hesaplanır ve güncellenir.
Tasarım Dokümantasyonu
Belgeleme, yazılımın yapım prosedürünü kaydeden herhangi bir yazılım geliştirme sürecinin önemli bir parçasıdır. Tasarımı başkalarına iletmek için önemsiz olmayan herhangi bir yazılım sistemi için tasarım kararlarının belgelenmesi gerekir.
Kullanım Alanları
İkincil bir ürün olmasına rağmen, özellikle aşağıdaki alanlarda iyi bir dokümantasyon zorunludur -
- Bir dizi geliştirici tarafından geliştirilen yazılımın tasarımında
- Yinelemeli yazılım geliştirme stratejilerinde
- Bir yazılım projesinin sonraki sürümlerini geliştirirken
- Bir yazılımı değerlendirmek için
- Test koşullarını ve alanlarını bulmak için
- Yazılımın bakımı için.
İçindekiler
Yararlı bir belge esas olarak aşağıdaki içerikleri içermelidir -
High–level system architecture - Süreç şemaları ve modül şemaları
Key abstractions and mechanisms - Sınıf diyagramları ve nesne diyagramları.
Scenarios that illustrate the behavior of the main aspects - Davranış diyagramları
Özellikleri
İyi bir dokümantasyonun özellikleri şunlardır:
Kısa ve aynı zamanda, açık, tutarlı ve eksiksiz
Sistemin gereksinim özelliklerine göre izlenebilir
Well-structured
Açıklayıcı yerine şematik