Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me
Showing posts with label uml diyagramları. Show all posts
Showing posts with label uml diyagramları. Show all posts

Bir sistemi tasarlarken direkt olarak sınıfları tasarlamaya geçmek içinden çıkılamayan bir karmaşıklığa yol açar. Zaten bir sistem yazılırken tüm sınıflar aynı yere yazılmaz. Bu sınıflar mantıksal olarak paketlere ayrılır ayrıca mantıksal parçalar birbirlerinden soyutlanarak yazılım sistemi tasarlanır. Bu amaca yönelik geliştirilmiş diyagramlardan biri de paket diyagramlarıdır. Bu diyagramlar ile mantıksal parçalar ve onların altındaki alt parçalar ile sistemin parçaları arasındaki etkileşim ortaya konmaya çalışılır.

Paket Diyagramları Nasıl Çizilir?
  • Her paket sol üst köşesinde küçük bir dikdörtgen olan bir dikdörtgen şeklinde çizilir.
  • Palet adları bu dikdörtgenler içerisine yazılır.
  • Paketler arasındaki bağımlılıklar kesikli ok ile bağımlı olan paketten bağlı olunun pakete doğru gösterilir.
  • Paketler mantıksal olarak daha üst paketler içerisinde yer alabilir.





Communication diyagramları, Sequence diyagramları gibi sistemin dinamik yapısını ortaya koymaya yarar. Sistemdeki nesnelerin arasındaki iletişimi ortaya koyar. Ancak Sequence diyagramlarından ayrıldığı temel nokta Communication diyagramlarında bir zaman çizelgesi olmamasıdır.

Communication Diyagramlar Nasıl Çizilir?
  • Çoğu UML diyagramında standart haline gelmiş olduğu gibi Communication diyagramlarda da nesneler dikdörtgen şeklinde çizilir.
  • Nesneler arasındaki iletişim yani yazılımsal anlamda metot çağırımları çağıran metottan çağırılan metoda doğru bir ok ile gösterilir. Bu ok üzerine metot bilgisi eklenir.
  • Bu diyagramda zaman çizelgesi olmadığından, dinamik yapıyı takip edebilmek için nesneler arasındaki iletişimlere numaralar verilir. Genel akıştan ayrılarak alt bir akış oluşuyorsa o zaman o akışın başladığı numara alt dallarına ayrılır. Örneğin 2 numaraları etkileşimde o nesne kendi içerisinde farklı işlemler yapacak ise bu işlemler 2.1, 2.2 gibi numaralandırılır.





Class diyagramlar sistemin statik yapısını ortaya koymaya yarar. Class diyagramlarda sınıflar ve nesneler arasındaki bağlantı ve sistemin yapısı ortaya konur. Sequence diyagramlarda ise sınıfların ve nesnelerin dinamik çalışma yapısı ortaya konmaya çalışılır. Sınıflar ve nesnelerin zaman çizelgesindeki etkileşimleri tasarlanır.

Sequence Diyagramlar Nasıl Çizilir?
  • Sınıf ve nesne gösterimleri class diyagramlarda olduğu gibi dikdörtgen şeklinde çizilir.
  • Sistemdeki her olay ayrı bir diyagram olarak çizilir ve bu olay içerisindeki kullanılan tüm sınıflar yatay bir düzlemde çizilir.
  • Zaman çizelgesi dikey olarak kesikli bir çizgi olarak çizilir.
  • Nesnelerin sistemde aktif olduğu yani kullanıldığı zamanları göstermek için ilgili sınıfın zaman çizgisi üzerine dikdörtgen çizilir.
  • Nesneler arasındaki etkileşim yani yazılım anlamında metot çağırımları, çağıran metottan çağırılan metoda doğru çizilen bir ok ile gösterilir.
  • Nesnelerin yaratılması veya yok edilmesi stereotype'lar ile gösterilir.
  • Metotların dönüş değerleri çağırılan metottan çağıran metoda doğru kesikli bir ok ile gösterilir. Bu gösterim opsiyoneldir. 
  • Sekron metot çağırımları içi dolu bir ok ile gösterilirken, asenkron metot çağırımları normal bir ok ile gösterilir.



Bu diyagramlar sistemin farklı zamanlardaki durumunu ortaya koymak için tasarlanırlar. Örneğin kullandığımız ATM'lerin sisteminin durumu bizim yaptığımız işlemlere değişir. Sürekli aynı durumda olmayan bir sistemdir ve sistemin bu durumlarını tasarlamak için durum diyagramları kullanılır.

Durum Diyagramları Nasıl Çizilir? (State Diagram Nasıl Çizilir?)
  • Sistemin başlangıç durumu içi dolu yuvarlak şeklinde çizilir.
  • Sistemin sonlanma durumu içi boş yuvarlağın içinde daha küçük içi dolu bir yuvarlak olacak şekilde çizilir.
  • Sistemin durumları kenarları yuvarlatılmış dikdörtgenler şeklinde çizilir.
  • Tetikleyici olaylar sistemin durumları arasına düz bir çizgi şeklinde çizilir. Bu olaylar ile sistemin durumu değişir. Olaylar ile ilgili açıklayıcı bilgi veya kodlamadaki metot karşılıkları çizgi üzerine yazılabilir.
  • Karar ifadeleri baklava şeklinde dikdörtgen olarak çizilir.




Use Case yani kullanım senaryosu diyagramları sistemin operasyonlarını ortaya koymaya yarar. Genellikle modellemenin ilk aşamasında oluşturulur. Bu yüzden sistemin detayını değil genel bir yapısını oluşturur. Bu modellemede detaylı bir dil kullanılmaz basitçe bir olayın nasıl olacağını anlatılır. Örneğin "müşteri bilgileri veritabanına kaydedilir" use case diyagramlarda bir aksiyondur. Burada bu bilgilerin nasıl kaydedileceği, hangi teknolojinin kullanılacağı gibi herhangi bir detayın önemi yoktur. Sadece operasyon ile ilgili genel bir bilgi verilir.
Use case diyagramlar çizilirken sistemin aktörleri ve operasyonlar belirlenir. Sistemin aktörleri sistem ile ilişkili olan ve sistemin dışında olan her şeydir. Örneğin sistemi kullanan müşteri veya sistem yöneticisi bir aktördür. Aynı zamanda sistem örneğin bir ödeme sistemine bağlıysa bu da bir aktördür. Operasyonlar ise aktörlerin sistem üzerinde gerçekleştirdikleri aktivitelerdir.

Use Case Diyagramlarının Çizimi
  • Aktörler basit bir çubuk adam şeklinde belirtilir.
  • Operasyonlar elips şeklinde belirtilir.
  • Aktörlerin hangi operasyonları yapabilecekleri, aktörler ile operasyonlar arasına düz bir çizgi çizilerek belirtilir. Buna association denir.
  • Elemanlar arasındaki bağımlılıklar kesikli çizgi ile gösterilir. Örneğin bir use case operasyonunun içerisinde bir başka use case operasyonunu kullanması durumunda bir bağımlılık oluşur.

Use Case Anlatımları
  • Varsayım : Anlatımı basitleştirmek için bir operasyon olmadan önce zaten rutin olarak yapılacak işlemlerin kısaca belirtildiği kısımdır. Örneğin müşterinin giriş yapıp yapmadığının kontrolü.
  • Ön Koşul : Operasyonun başlaması için gerekli şartların belirtildiği kısımdır. Örneğin para çekme işleminde limit dahilinde bir tutarın girilmesi gerektiği gibi.
  • Başlatma : Operasyonu başlatan eylemdir. Örneğin kullanıcının butona basması gibi.
  • İşlem : Sistem içerisinde yapılan işlemler. Örneğin girilen tutar, bakiyeden düşürülür. Daha sonra yeni bakiye veritabanına kaydedilir gibi.
  • Sonlanma : Belirtilen senaryoda başarılı veya başarısız durumların oluştuğu kısımdır. Bakiyenin yetersiz olması, veritabanına erişilememesi veya atm'den müşteriye paranın teslim edilmesi gibi durumlar senaryonun sonlanma koşulları olabilir.
  • Sonlanma Koşulu : Operasyonun başarılı tamamlanma koşuludur. Örneğin para çekme işlemi sonucunda yeni bakiyenin doğru bir şekilde hesaplanması gibi.
  • Alternatif Akışlar : Ana senaryo dışında oluşabilecek yan senaryoların belirtildiği kısımdır. Örneğin atm'de para kalmaması durumu veya veritabanından bakiyenin okunamaması durumu gibi.

UML (Unified Modelling Language) bir modelleme dilidir. İş sistemlerinin modellemesi için kullanılır. Yazılım alanında da sıklıkla kullanılmaktadır. 1990'lı yıllarda yazılım dillerinden bağımsız bir modelleme diline duyulan ihtiyaçtan dolayı geliştirilmiştir. İsminde bulunan birleştirilmiş sözcüğü, birden fazla geliştiricinin geliştirdiği modelleme dillerinin bir standart oluşturmak için birleştirilmesinden dolayı eklenmiştir. UML modelleme sistemlerine bir standart getirir.

UML Kullanmanın Faydaları
  • Proje başlangıcında modelleme bir zaman kaybı gibi görünsede ilerleyen süreçlerde çıkabilecek hataları azalttığı ve geliştirme süresini kısalttığı için proje süresinde ciddi bir iyileştirme sağlar.
  • Projedeki gereksinimlerin ve risklerin proje başlangıcında ortaya çıkmasını sağlayarak daha sonradan başarısız olacak bir projenin geliştirmesine başlamadan bu durumun görünmesini sağlar.
  • Projenin kalitesini arttırır.

UML Modelleri
UML modelleri üç ana kategoriye ayrılır.
  • Dinamik, Davranışsal Modelleme (Sistemin davranışını modelleme)
  • Statik, Yapısal Modelleme (Sistemin yapısını modelleme)
  • İşlevsel Modelleme (Sistemin aktörler ile birlikte nasıl etkileşim kuracağını modelleme)

Dinamik, Davranışsal Modelleme
  • Sequence (Etkileşim) Diyagramları
  • Communication (İletişim) Diyagramları
  • State (Durum) Diyagramları
  • Activity (Faaliyet) Diyagramları
  • Timing (Zamanlama) Diyagramları

Statik, Yapısal Modelleme
  • Class (Sınıf) Diyagramları
  • Object (Nesne) Diyagramları
  • Deployment (Dağıtım) Diyagramları
  • Composite Structure (Bileşke Yapı) Diyagramları
  • Component (Bileşen) Diyagramları

İşlevsel Modelleme
  • Use Case Diyagramları