Birleşik Modelleme Dili Sınıf ve Sıra Diyagramları
"Hiç kimse, UML'nin yaratıcıları bile, onun tamamını anlamıyor ya da kullanmıyor." (Fowler, 2004) |
Genel olarak diyagramların tartışılmasından sonra, bu bölüm iki yaygın Birleşik Modelleme Dili (UML) diyagram türünü kapsar: sınıf diyagramları ve sıra diyagramları.
Diyagramlar Nasıl Yardımcı Olur?
Diyagramlar en az iki önemli şekilde yardımcı olabilir:
- Oluşturacağınız yazılımı planlamanıza yardımcı olabilirler. Yazılımınızı planlamak için diyagramlar oluşturduktan sonra, bunları geliştirme ekibine neyin uygulanacağını / uygulanması gerektiğini iletmek ve planlarınızın iyi olup olmadığına karar vermek (değerlendirmek) için kullanabilirsiniz (örneğin, açıktır, mantıklıdır, projenizin istenen kalite özelliklerini yansıtır, vb.)
- Halihazırda oluşturduğunuz yazılımı tanımlamanıza yardımcı olabilirler. Yazılımınız zaten oluşturulmuşsa, diyagramlar dokümantasyon için ve yukarıda belirtildiği gibi yazılımınızın ne kadar tatmin edici olduğunu değerlendirmek için iyidir. Diyagramları dokümantasyona dahil etmenin amacı, yazılımınız hakkında birilerine bir şeyler iletmektir. İletişim kurmaya çalışabileceğiniz pek çok farklı kitle vardır.
Diyagramlarınız için örnek hedef kitleler arasında projedeki diğer geliştiriciler, amiriniz veya yöneticiniz, ekibe katılmak isteyebilecek geliştiriciler, sisteminizle entegre olmak isteyen geliştiriciler, meraklı son kullanıcılar ve yazılım mühendisliği öğrencileri yer alır. Kullandığınız entegre geliştirme ortamına (IDE)/araçlarına bağlı olarak, diyagramlar kodunuzdan otomatik olarak oluşturulabilir, bu da dokümantasyon bakımını daha kolay ve daha olası hale getirmeye yardımcı olur.
Diyagramlar Neyi İyi Yapmalı?
Diyagramların faydalı olabilmesi için hedef kitlenize açık ve uygun bir ayrıntı düzeyinde iletişim kurması gerekir. Hedef kitleniz diyagramınızı anlamıyorsa veya yanlış anlıyorsa, diyagramınız başarısız olmuştur.
UML Nedir?
Birleşik Modelleme Dili, diyagramlar aracılığıyla yazılımı tanımlamak ve tasarlamak için kullanılan bir grafik gösterim ailesidir. Özellikle nesne yönelimli yazılımlar için geçerlidir, ancak UML'nin bazı bölümleri birçok yazılım türüne uygulanabilir. Her birinin belirli bir amacı olan farklı UML diyagramları için farklı UML notasyonları kullanılır. UML ilk olarak 1994 yılında yayınlanmış, 1997 yılında Object Management Group'un (OMG) bir standardı haline gelmiş ve 2005 yılında bir ISO standardı olmuştur. UML şu anda 2. sürümdedir.
Neden UML Kullanılmalı?
UML kullanarak diyagram oluşturmanın birçok faydası vardır:
- UML size (1) uygulamanızın yapılandırılmış olması için yazılım tasarlama notasyonu ve (2) tasarımın iyi olup olmadığını değerlendirebilmeniz için mevcut yazılım tasarımını tanımlama notasyonu verir.
- UML diyagramı sizi yazılım tasarımı hakkında yapılandırılmış bir şekilde düşünmeye zorlar. İnsanlar zihinlerinde yazılım tasarlamaya çalıştıklarında, tasarımın düşünmek istedikleri yönlerini düşünerek bu konuda özensiz davranabilirler. UML sizi yazılım tasarımının daha zor kısımlarıyla yüzleşmeye teşvik edebilir.
- UML diyagramı, yazılımın farklı tasarım seviyelerinde (örneğin, sınıf seviyesi, bileşen seviyesi, paket seviyesi) bir görünümünü verir.
- UML, yazılım profesyonelleri arasında ortak bir dil sağlar. UML iyi bilindiği için, geliştiricilere ve yöneticilere yazılım hakkında ayrıntılı iletişim kurmanın bir yolunu sunar. Bununla birlikte, UML gösteriminin nasıl kullanıldığına dair farklılıklarla karşılaşmayı bekleyin - UML gösterimini hatırlamak zor olabilir; geliştiriciler hatalar yapacak veya gösterimi kendi düşünce tarzlarına uyarlayacaklardır. Notasyonunuzun ne anlama geldiğine dair bir açıklama veya gösterge sunmak yardımcı olabilir.
- UML diyagramları, kodlara bakmalarını istemeden insanlara yazılımınızın yapısı hakkında bilgi vermenin bir yolunu sunar. Bu, örneğin yeni geliştiricileri işe alırken veya yöneticilerle iletişim kurarken güzeldir.
Neden UML Kullanmayalım?
Bazı IDE’ler kodunuzdan otomatik olarak bazı UML diyagramları oluşturur. Bu güzel bir özelliktir çünkü kodunuz değiştiğinde diyagramınızı yeniden oluşturmak kolaydır. Bununla birlikte, oluşturulan diyagramlar bazen istediğinizden daha fazla ayrıntıya sahip olabilir, bu da onları iletişim için daha az iyi hale getirir. |
UML şeması oluşturmanın bazı dezavantajları vardır:
- İnsanlar UML gösterimlerini çeşitlendirme eğilimindedir, bu da kafa karışıklığına neden olabilir. Bu sorundan kaçınmak için bazı ipuçları (1) notasyonunuzu basit tutmak ve (2) daha karmaşık notasyonları açıklamaktır.
- UML gösterimini doğru yapmak çok zaman alabilir. Diyagramların iletişim kurmak için olduğunu unutmayın. Diyagramı oluşturmak, kodu farklı bir şekilde açıklamaktan daha uzun sürüyorsa, diyagram yardımcı olmuyor demektir.
- UML diyagramları çok fazla bakım gerektirebilir. Yazılım tasarımınız sık sık değişiyorsa, doğru olmalarını istiyorsanız UML diyagramlarınız da değişmelidir. Neyse ki, bazı IDE'ler kodunuzdan bazı UML diyagramları oluşturabilir.
Sınıf Diyagramları
Bir sınıf diyagramı, bir sistemin sınıflarını ve bunlar arasında var olan statik ilişkileri tanımlar. Sınıf diyagramları ayrıca bir sınıfın özelliklerini ve işlemlerini de gösterir. Özellikler bir sınıfın yapısını (örneğin, örnek değişkenler), işlemler ise sınıf tarafından sağlanan işlevselliği (örneğin, yöntemler; Fowler, 2004) temsil eder.
Şekil 4.1'de örnek bir sınıf diyagramı gösterilmektedir. Diyagramda, üç sınıf arasında ilişkiler vardır: Customer, Order ve SharedOrder. Bir Siparişin bir Müşterisi vardır, ancak aynı Müşteri birden fazla Siparişte yer alabilir. SharedOrder, birden fazla Müşteriye sahip olabilen bir Sipariş türüdür. Sınıfların öznitelikleri (örn. id) ve işlemleri (örn. getId()) vardır.
Bir sonraki bölüm, örnekte gösterilen gösterimsel unsurların her birini açıklamaktadır.
UML Sınıf Diyagramı Gösterimi
Bu bölüm, en yaygın UML sınıf diyagramı gösterimlerinden bazılarını içerir.
Notlar. Notlar, sınıf diyagramlarına yorum yerleştirmek içindir.
Not. Nitelikler bir sınıf kutusu içinde listelenen özelliklerdir, işlemler ise yöntemlerdir. + işareti genel bir yöntemi, - işareti özel yöntemi ve # işareti korumalı yöntemi gösterir. Notasyon, öznitelik türlerini (örn. int, Token, vb.), yöntem parametrelerini ve dönüş türlerini ve öznitelikler için varsayılan değerleri içerir.
Not. İlişkilendirme, bir sınıfın diğer sınıfın nesne(ler)ine bir özellik şeklinde referans içermesi anlamına gelir. Bu örnekte, Class1'in Class2'ye referans verip vermediği veya tam tersinin olup olmadığı bize söylenmemektedir.
Not. Ok, Sınıf1'in bir Sınıf2'ye sahip olduğunu gösterir.
Not. Sınıf1'in örnek1 adında bir özelliği vardır. Bu, Class2'nin bir örneğidir.
Not. Sınıf1, Sınıf2'nin sıfır veya bir örneğini içeren instance1 adlı bir özelliğe sahiptir.
Not. Sınıf1'in sıfır veya daha fazla örneği, Sınıf2'nin sıfır veya bir örneğini içeren instance1 adlı özelliklere sahiptir.
Not. Sınıf1, Sınıf2'nin sıfır veya daha fazla örneğine sahiptir. Sınıf2, Sınıf1'in tam olarak bir örneğine sahiptir.
Not. Sınıf2, Sınıf1'in bir alt sınıfıdır; Sınıf2 bir Sınıf1'dir.
Gerçek Dünyadan Sınıf Diyagramı Örnekleri
Bu PDF'ler gerçek yazılımlar için sınıf diyagramları içerir.
- EvoloPy: An open-source nature-inspired optimization framework in Python (Faris et al., 2016).
- Processing: A Python framework for the seamless integration of geoprocessing tools in QGIS (Graser & Olaya, 2015).
- Java-based graphical user interface for MRUI, a software package for quantitation of in vivo/medical magnetic resonance spectroscopy signals (Naressi et al., 2001).
- RepoMiner: A language-agnostic Python framework to mine software repositories for defect prediction [PDF] (Palma et al., 2021).
- pyfao56: FAO-56 evapotranspiration in Python [PDF] (Thorp, 2022).
Bağlantılardan herhangi biri bozuksa Wayback Machine'i deneyin.
Sıra Diyagramları
Herhangi bir diyagram oluştururken, hedef kitlenizi ve ne iletmeye çalıştığınızı bilin. Eğer hedef kitleniz bir insansa, küçük ayrıntıları kavramak için sınırlı kapasiteleri (ve muhtemelen sınırlı zamanları) vardır. Onlara neyin en önemli olduğunu anlayacakları şekilde göstermeye odaklanın. |
Sıra diyagramı, nesneler arasındaki etkileşimleri açıklar. Diyagram genellikle tek bir kullanım durumunu veya senaryoyu gösterir. Sıra diyagramları bir tür etkileşim diyagramıdır ve nesne uygulama ayrıntılarını göstermek için o kadar iyi değildir.
Bu bölümde örnek bir sıra diyagramı ve yaygın olarak kullanılan sıra diyagramı notasyonu verilmektedir. Daha ayrıntılı bilgi için Fowler'a (2004) bakınız.
Şekil 4.10'daki örnek sıra diyagramı, Yönetici, Çalışan ve Sipariş sınıflarının örnekleri arasındaki etkileşimleri temsil etmektedir. Yönetici Çalışandan bir durum güncellemesi ister, Çalışan buna uyar, Çalışan bir Sipariş oluşturur, Yönetici Çalışandan dükkanı kapatmasını ister, Çalışan Siparişi kapatır.
Örnekte, sütunlar (katılımcılar olarak adlandırılır) nesnelerdir, ancak durum her zaman böyle değildir. Örneğin, bir katılımcı bir kullanıcı olabilir. Kullanıcılar, eğer insan iseler, bazen çubuk figürler olarak temsil edilirler (kutu olmadan). Nesne olmayan bir başka olası katılımcı da bir veritabanı olabilir (bazı durumlarda veritabanı bir nesne olarak kabul edilir). Diyagramları oluştururken en önemli şey kurallara veya geleneklere uymak değil, izleyicilerinizle iletişim kurmaktır.
UML Sıra Diyagramı Gösterimi
Not. Bir sekans diyagramının "sütunları" birer katılımcıdır. Katılımcılar genellikle nesnelerdir. Katılımcının adı kutuya yazılır.
Not. Dikey kesikli çizgi katılımcının yaşam süresini temsil etmektedir. Üst kısım yaşamın başlangıcı, alt kısım ise sonudur. Katılımcı silindiğinde yaşam sona erer.
Not. Bir katılımcıdan diğerine etkileşim, oklu düz çizgi ile gösterilir. Genellikle bir yöntem çağrısıdır.
Not. Yaşam çizgisi üzerindeki kutu katılımcının ne zaman aktif olduğunu gösterir. Yöntemin çağrı yığınında olduğunu gösterir.
Not. Oklu kesikli çizgi yöntem dönüşünü gösterir. Yalnızca etkileşim hakkında önemli bir şeyi iletmeye yardımcı olduğunda kullanın.
Not. Kendini çağıran yöntem. Oklu düz çizgi katılımcının kendi yaşam çizgisine işaret eder.
Not. Katılımcının yaşamının sonu. Yaşam çizgisi üzerinde bir X işareti ile gösterilir.
Gerçek Dünyadan Sıra Diyagramı Örnekleri
Bu PDF'ler gerçek yazılım için sıra diyagramları içerir.
- Py4JFML: A Python wrapper for using the IEEE Std 1855-2016 through JFML [PDF] (Alcalá-Fdez et al., 2019).
- COFFEE—An MPI-parallelized Python package for the numerical evolution of differential equations (Doulis et al., 2019).
- Teetool—A probabilistic trajectory analysis tool (Eerland et al., 2017).
- GEMS: A Python library for automation of multidisciplinary design optimization process generation [PDF] (Gallard et al., 2018).
Bağlantılardan herhangi biri bozuksa Wayback Machine'i deneyin.
Özet
UML diyagramları, kodunuzun nasıl çalıştığını anlatmak için yardımcı olabilir. Sınıf diyagramları ve sıra diyagramları yaygın olarak kullanılan iki UML diyagramı türüdür. Her diyagram türü kod tasarımının bir kısmını vurgularken diğer kısımlarını dışarıda bırakır. UML diyagramları insanlarla iletişim kurmak içindir, bilgisayarlarla değil.
Yorumlar
Yorum Gönder