Simülasyon diyagramları. UML: teoriden pratiğe

Simülasyon diyagramları.  UML: teoriden pratiğe
Simülasyon diyagramları. UML: teoriden pratiğe
UML grafik dil geliştirme sırasında oluşturulan tüm yapıtların belirtimi, görselleştirilmesi, tasarımı ve belgelenmesi için genel amaçlı modelleme aracı yazılım sistemleri.

UML'yi ayrıntılı olarak açıklayan birçok iyi kitap var (hatta bazen çok ayrıntılı), hızlı hatırlama için şemalar, varlıklar ve aralarındaki ilişkiler hakkındaki temel kavramları tek bir yerde toplamak istiyorum, kopya kağıdı gibi bir şey.

Not, kitaplardan materyaller kullanır: Ivanov D. Yu., Novikov F. A. Birleşik modelleme dili UML Ve Leonenkov. UML Eğitimi.

Editör ile başlayalım. Linux altında farklı UML editörleri denedim, en çok UMLet'i beğendim, Java ile yazılmış olmasına rağmen çok hızlı hareket ediyor ve varlık boşluklarının çoğu içinde. Ayrıca Java ile yazılmış, işlevsel olarak zengin, ancak daha fazla yavaşlayan platformlar arası bir UML düzenleyicisi olan ArgoUML de vardır.

durdum UMLet altına kurun Arch Linux Ve ubuntu:

# Arch Linux altında yaourt -S umlet # Ubuntu altında sudo apt-get install umlet

UML'de, tüm varlıklar aşağıdaki türlere ayrılabilir:

  • yapısal;
  • davranışsal;
  • gruplama;
  • ek açıklama;

UML, dört ana ilişki türü kullanır:

Bağımlılık- bağımsız varlığın değiştirilmesinin bağımlı varlığı bir şekilde etkilediğini gösterir. Grafiksel olarak, bir bağımlılık ilişkisi, bağımlı varlıktan bağımsız varlığa işaret eden bir okla noktalı bir çizgi olarak gösterilir.

Dernek- bir varlık doğrudan bir başkasıyla (veya diğerleriyle - ilişkilendirme yalnızca ikili olamaz) ilişkiliyse gerçekleşir. Grafiksel olarak, bir ilişkilendirme, ilgili varlıkları birbirine bağlayan çeşitli eklemelerle düz bir çizgi olarak gösterilir.

genelleme biri diğerinin belirli (uzmanlaşmış) bir durumu olan iki varlık arasındaki bir ilişkidir. Grafiksel olarak, genelleştirme, belirliden (alt sınıftan) genele (üst sınıfa) yönlendirilen, sonunda üçgen boş bir ok bulunan bir çizgi olarak tasvir edilir.

Uygulamalar- uygulama ilişkisi, bir varlığın diğerinin uygulaması olduğunu gösterir. Grafiksel olarak, uygulama, uygulayıcı varlıktan uygulanan varlığa yönlendirilen, sonunda üçgen bir boş ok bulunan noktalı bir çizgi olarak tasvir edilir.

İÇİNDE UML 2 tanımlanmış 13 grafik türleri. Standartlara göre, her grafiğin sol tarafında bir dikdörtgen (sağ alt köşesi eğimli) olan bir kenarlığı olmalıdır. üst köşe, grafik kimliğini (etiketi) ve başlığı belirtir.

Sistemin yapısını gösteren diyagramlar:

  • Bileşen şeması (bileşen şeması, etiket bileşen);
  • Dağıtım şeması (dağıtım şeması, etiket dağıtım);
  • Sınıf diyagramı (sınıf diyagramı, etiket sınıf);
  • Nesne diyagramı (nesne diyagramı, etiket nesne);
  • İç yapı diyagramı (kompozit yapı diyagramı, etiket sınıf);

Sistem davranışını gösteren diyagramlar:

  • Senkronizasyon şeması (etkileşim şeması, etiket zamanlama);
  • Etkinlik diyagramı (aktivite diyagramı, etiket aktivite);
  • dizi diyagramı (dizi diyagramı, etiket SD);
  • İletişim şeması (iletişim şeması, etiket iletişim);
  • Otomat diyagramı (durum makinesi diyagramı, etiket durum makinesi);
  • Etkileşime genel bakış diyagramı, etiket etkileşim);

Grafikler öne çıkıyor:

  • Kullanım durumu diyagramı (kullanım durumu diyagramı, kullanım durumu etiketi);
  • Paket şeması (paket şeması, etiket paket);

kullanım şeması

kullanım şeması(kullanım durumu diyagramı), sistemin işlevsel amacının en genel temsilidir.

Kullanım durumu diyagramını bir sistemin modeli olarak düşünürsek, onu bir kara kutu modeliyle ilişkilendirebiliriz. Her kullanım durumu, karşılık gelen aktörle etkileşime girdiğinde tasarlanan sistem tarafından gerçekleştirilmesi gereken bir dizi eylem tanımlar.

Kullanım şeması iki tür temel varlık kullanır: aralarında aşağıdaki temel ilişki türlerinin kurulduğu kullanım senaryoları ve aktörler.

ilişkilendirme ilişkisi- Bu ilişki, bir kullanım senaryosunun bir örneğiyle etkileşim kurarken bir aktörün hangi özel rolü oynadığını belirler. Bir ilişkilendirme ilişkisi, aktör ile kullanım senaryosu arasında düz bir çizgi ile belirtilir. Bu satırda ek olabilir sözleşmeler isim ve çokluk gibi.

Uzatma ilişkisi- tek bir kullanım durumunun örneklerinin, özellikleri bu örneklerin bir araya getirilme biçimine göre belirlenen daha genel bir kullanım durumuyla ilişkisini tanımlar. Bu nedenle, kullanım durumu A'dan kullanım durumu B'ye bir genişleme ilişkisi varsa, bu, kullanım durumu B'nin bir örneğinin özelliklerinin, genişletilmiş kullanım durumu A'daki özelliklerin varlığı nedeniyle tamamlanabileceği anlamına gelir.

Kullanım senaryoları arasındaki bir uzantı ilişkisi, orijinal kullanım senaryosunun bir uzantısı olan kullanım senaryosundan uzağa bakan bir okla (bağımlılık ilişkisi durumu) kesikli bir çizgi ile gösterilir.

genelleme ilişkisi A kullanım durumunun bir kısmının B kullanım durumu için genelleştirilebileceğini belirtmeye hizmet eder. Bu durumda, kullanım durumu A, kullanım durumu B'nin bir uzmanlığı olacaktır. Bu durumda B, A'nın atası veya ebeveyni olarak adlandırılır ve kullanım A, kullanım durumu B'nin V kullanımının soyundan gelmektedir.

Grafiksel olarak, bu ilişki, ana kullanım durumunu işaret eden açık bir üçgen oku olan düz bir çizgi ile temsil edilir.

Kullanım durumları arasındaki genelleştirme ilişkisi, alt kullanım durumlarının üst kullanım durumlarının tüm özniteliklerine ve davranışlarına sahip olduğunun not edilmesi gerektiğinde kullanılır.

içerme ilişkisi iki kullanım durumu arasında, bir kullanım durumu için belirtilen bazı davranışların, başka bir kullanım durumu davranış sırasına bir bileşen olarak dahil edildiğini belirtir.

Kullanım durumu A'dan kullanım durumu B'ye uzanan bir dahil etme ilişkisi, kullanım durumu A'nın her örneğinin kullanım durumu B için belirtilen işlevsel özellikleri içerdiğini gösterir.

Grafik olarak, bu ilişki, temel kullanım durumundan dahil edilen kullanım durumuna işaret eden bir okla (bağımlılık ilişkisi değişkeni) noktalı bir çizgi ile temsil edilir.

sınıf diyagramı

sınıf diyagramı(sınıf diyagramı) - sistemin statik yapısını tanımlamanın ana yolu.

Sınıf diyagramı, bir ana varlık türü kullanır: aralarında aşağıdaki ana ilişki türlerinin kurulduğu sınıflar (sınıfların çok sayıda özel durumu dahil: arayüzler, ilkel türler, ilişkilendirme sınıfları vb.): bağımlılıklar, ilişkilendirmeler, genellemeler, uygulamalar.

bağımlılık ilişkisi genellikle iki model öğesi veya bu türden iki öğe grubu arasında bir ilişkilendirme, genelleme veya uygulama ilişkisi olmayan bazı anlamsal ilişkileri gösterir. Bağımlılık ilişkisi, bir model öğesindeki bazı değişikliklerin başka bir bağımlı model öğesinde değişiklik gerektirebileceği bir durumda kullanılır.

Bağımlılık ilişkisi, bir ucunda bir ok bulunan karşılık gelen öğeler arasında kesikli bir çizgi ile grafiksel olarak temsil edilir ve ok, bağımlılığın istemci sınıfından bağımsız veya kaynak sınıfına işaret eder.

Okun üstünde özel olabilir anahtar kelimeler(klişeler):

  • "erişim" - müşteri sınıfları için kaynak sınıfın genel özniteliklerinin ve işlemlerinin kullanılabilirliğini göstermeye yarar;
  • "bağlama" - müşteri sınıfı, sonraki parametreleştirmesi için bazı şablonlar kullanabilir;
  • "türet" - istemci sınıfının öznitelikleri, kaynak sınıfın özniteliklerinden hesaplanabilir;
  • "içe aktarma" - kaynak sınıfın genel öznitelikleri ve işlemleri, sanki doğrudan içinde bildirilmişler gibi, müşteri sınıfının bir parçası haline gelir;
  • "rafine" - istemci sınıfının, tarihsel nedenlerle kaynak sınıfın bir ayrıntılandırması olarak hizmet ettiğini belirtir. Ek Bilgiler proje süresince.

ilişkilendirme ilişkisi sınıflar arasında bazı ilişkilerin varlığına karşılık gelir. Bu ilişki, belirli bir ilişkinin bireysel özelliklerini karakterize eden ek özel semboller içeren düz bir çizgi ile gösterilir. ek olarak özel karakterler ilişkilendirmenin adı ve birlikteliğin rol sınıflarının adları ve çokluğu kullanılabilir. Bir derneğin adı, atamasının isteğe bağlı bir unsurudur.

Toplama ilişkisi sınıflardan biri diğer varlıkları bileşen olarak içeren bir varlıksa, birkaç sınıf arasında gerçekleşir. "Parça-bütün" tipindeki sistem ilişkilerini temsil etmek için kullanılır.

Kompozisyon ilişkisi toplama ilişkisinin özel bir durumudur. Bu ilişki, kurucu parçaların bir anlamda bütünün içinde olduğu parça-bütün ilişkisinin özel bir biçimini vurgulamaya hizmet eder. Aralarındaki ilişkinin özgüllüğü, parçaların bütünden ayrı hareket edememesi, yani bütünün yok edilmesiyle onu oluşturan tüm parçaların da yok edilmesi gerçeğinde yatmaktadır.

genelleme ilişkisi daha genel bir unsur (ebeveyn veya ata) ile daha spesifik veya özel eleman(çocuk veya torun). Bir sınıf diyagramına uygulandığı şekliyle bu ilişki, sınıfların hiyerarşik yapısını ve özelliklerinin ve davranışlarının kalıtımını açıklar. Bu, soyundan gelen sınıfın, ata sınıfının tüm özelliklerine ve davranışına sahip olduğunu ve ayrıca ata sınıfında bulunmayan kendi özelliklerine ve davranışına sahip olduğunu varsayar.

otomat diyagramı

otomat diyagramı(durum makine diyagramı) veya durum diyagramı UML 1'de (durum şeması diyagramı), UML'de davranışı ayrıntılı olarak tanımlamanın bir yoludur. Özünde, adından da anlaşılacağı gibi, otomat diyagramları durumların ve geçişlerin bir grafiğidir. durum makinesi birçok ek detay ve detayla dolu.

Durum diyagramı, yalnızca bir sınıfın durumlarını değiştirme sürecini veya daha doğrusu belirli bir sınıfın bir örneğini, yani belirli bir nesnenin durumundaki tüm olası değişiklikleri modeller. Bu durumda, bir nesnenin durumundaki bir değişiklik, diğer nesnelerden veya dışarıdan gelen dış etkilerden kaynaklanabilir. Durum diyagramlarının kullanıldığı, bir nesnenin bu tür dış etkilere verdiği tepkiyi tanımlamaktır.

Otomat şemasında, bir ana varlık türü kullanılır - durumlar ve bir tür ilişki - geçişler, ancak her ikisi için de birçok çeşit, özel durum ve ek atama vardır. Otomat, simüle edilmiş sistemin dinamik yönlerini, köşeleri durumlara karşılık gelen ve yaylar geçişlere karşılık gelen yönlendirilmiş bir grafik biçiminde temsil eder.

Başlangıç ​​hali temsil etmek özel durum içermeyen durum ev içi eylem(sözde durumlar). Nesne, zamanın ilk anında varsayılan olarak bu durumdadır. Durum değiştirme sürecinin başladığı grafiksel alanın durum diyagramını göstermeye yarar.

Nihai (son) durum, aynı zamanda herhangi bir iç eylem (sahte durum) içermeyen bir durumun özel bir durumudur. Bitiş zamanında otomatın tamamlanmasından sonra nesne varsayılan olarak bu durumda olacaktır.

etkinlik şeması

Tasarlanan veya analiz edilen bir sistemin davranışını modellerken, yalnızca durumlarını değiştirme sürecini sunmak değil, aynı zamanda sistem tarafından gerçekleştirilen işlemlerin algoritmik ve mantıksal uygulama özelliklerini detaylandırmak da gerekli hale gelir.

etkinlik şeması(aktivite diyagramı), görsel olarak bir algoritmanın eski güzel bir akış şemasına benzeyen davranışı tanımlamanın başka bir yoludur. İşlemleri gerçekleştirme sürecini simüle etmek için kullanılır.

Etkinlik diyagramlarını kullanmanın ana yönü, yürütülmesi için algoritmalar sunmak gerektiğinde, sınıf işlemlerinin uygulanmasının özelliklerini görselleştirmektir.

Etkinlik şemasında, bir ana varlık türü kullanılır - eylem ve bir tür ilişki - geçişler (kontrol transferleri). Ayrıca çatallar, birleşmeler, bağlantılar, dallanmalar gibi yapılar da kullanılır. İsim olarak tavsiye edilir basit eylem açıklayıcı kelimelerle bir fiil kullanın.

dizi diyagramı

dizi diyagramı(dizi diyagramı), sistemin davranışını "örneklerle" tanımlamanın bir yoludur.

Aslında, bir dizi diyagramı, sistemin belirli bir oturumunun (veya böyle bir protokolün bir parçasının) protokolünün bir kaydıdır. Nesne yönelimli programlamada, çalışma zamanındaki en önemli şey, birlikte çalışan nesneler arasında mesajların iletilmesidir. Bu şemada görüntülenen mesajların gönderilme sırasıdır, dolayısıyla adıdır.

Sekans diyagramında, bir ana varlık türü kullanılır - etkileşimli sınıflandırıcıların örnekleri (esas olarak sınıflar, bileşenler ve aktörler) ve bir tür ilişki - mesajların değiş tokuş edildiği bağlantılar.

Olası mesaj türleri (resim larin.in'den alınmıştır):

İletişim Şeması

İletişim Şeması(iletişim diyagramı) - bir dizi diyagramına anlamsal olarak eşdeğer olan davranışı tanımlamanın bir yolu. Aslında, bu, yalnızca diğer grafik araçlarla ifade edilen, sınıflandırıcıların etkileşimli örneklerinin mesaj alışverişi dizisinin aynı açıklamasıdır.

Bu nedenle, iletişim diyagramında ve sıra diyagramında, bir ana varlık türü kullanılır - etkileşimli sınıflandırıcı örnekleri ve bir tür ilişki - bağlantılar. Bununla birlikte, burada vurgu zaman üzerinde değil, belirli örnekler arasındaki ilişkilerin yapısı üzerindedir.

Bileşen Şeması

Bileşen Şeması(bileşen diyagramı) - simüle edilmiş sistemi oluşturan modüller (mantıksal veya fiziksel) arasındaki ilişkiyi gösterir.

Bir bileşen diyagramındaki ana varlık türü, bileşenler arasındaki ilişkinin gösterildiği arayüzlerin yanı sıra bileşenlerin kendileridir. Bileşen şemasında aşağıdaki ilişkiler geçerlidir:

  • bileşenler ve arabirimler arasındaki uygulamalar (bileşen, arabirimi uygular);
  • bileşenler ve arabirimler arasındaki bağımlılıklar (bir bileşen, bir arabirim kullanır);

Yerleştirme şeması

Yerleştirme şeması(dağıtım diyagramı), sistem öğelerinin bileşimini ve ilişkilerini görüntülemenin yanı sıra, yürütme sırasında bilgi işlem kaynaklarına fiziksel olarak nasıl yerleştirildiklerini gösterir.

Yerleştirme diyagramında, bileşen diyagramına kıyasla iki tür varlık eklenir: bileşenin bir uygulaması olan bir yapı ve bir düğüm (düğüm türünü veya belirli bir örneği tanımlayan bir sınıflandırıcı olabilir), yanı sıra düğümler arasında, çalışma zamanında düğümlerin fiziksel olarak bağlı olduğunu gösteren bir ilişkilendirme ilişkisi.

Nesne Diyagramı

Nesne Diyagramı(nesne diyagramı) - bir sınıf diyagramının bir örneğidir.

Nesne diyagramında, bir ana varlık türü kullanılır: nesneler (sınıf örnekleri), aralarında belirli ilişkilerin belirtildiği (çoğunlukla ilişkilendirme örnekleri). Nesne diyagramları yardımcı niteliktedir - aslında bunlar, sistemin işleyişinde belirli bir anda hangi nesnelerin var olduğunu ve aralarındaki ilişkileri gösteren örneklerdir (bellek dökümleri diyebilir).

iç yapı şeması(kompozit yapı diyagramı), öncelikle sınıflar ve bileşenler olmak üzere yapısal sınıflandırıcıların daha ayrıntılı bir sunumu için kullanılır.

Yapısal bir sınıflandırıcı, sınıflandırıcının adı en üstte olacak şekilde bir dikdörtgen olarak gösterilir. İçinde parçalar var. Birkaç parça olabilir. Parçalar birbirleriyle etkileşime girebilir. Bu, çeşitli türdeki konektörlerle gösterilir. Konektörün takıldığı parçanın dış kenarındaki yere port denir. Bağlantı noktaları ayrıca yapısal sınıflandırıcının dış sınırında bulunur.

Etkileşime Genel Bakış Şeması(etkileşime genel bakış diyagramı), genişletilmiş bir sözdizimine sahip bir tür etkinlik diyagramıdır: genel bir etkileşim diyagramının öğeleri olarak, dizi diyagramları tarafından tanımlanan etkileşimlere (etkileşim kullanımı) bağlantılar hareket edebilir.

zamanlama tablosu

zamanlama tablosu(zamanlama diyagramı), çeşitli sınıflandırıcı örneklerinin durumlarındaki değişime ve bunların zaman senkronizasyonuna özel dikkat gösterilen bir dizi diyagramının özel bir şeklidir.

Paket şeması

Paket şeması(paket diyagramı), modelin kendisinin karmaşıklığını yönetmenize izin veren tek araçtır.

Notasyonun ana unsurları, çeşitli klişelere sahip paketler ve bağımlılıklardır.

Varlık-ilişki modeli (ER-modeli)

analog sınıf diyagramları(UML) olabilir acil servis modeli veritabanlarının tasarımında kullanılan (ilişkisel model).

Varlık-ilişki modeli (ER modeli), konu alanının kavramsal şemalarını tanımlamanıza izin veren bir veri modelidir. ER modeli, üst düzey (kavramsal) veritabanı tasarımında kullanılır. Onun yardımıyla, kilit varlıkları vurgulayabilir ve bu varlıklar arasında kurulabilecek ilişkileri belirleyebilirsiniz. wikipedi

Konu alanının herhangi bir parçası, aralarında bazı ilişkilerin olduğu bir dizi varlık olarak temsil edilebilir.

Temel konseptler:

Öz(varlık), onu diğer varlıklardan ayıracak şekilde tanımlanabilen bir varlıktır, örneğin, MÜŞTERİ 777. Bir varlık aslında bir dizi özelliktir.

Varlık seti(varlık kümesi) - aynı türden (aynı özelliklere sahip) bir dizi varlık.

Bağlantı(ilişki), birden fazla varlık arasında kurulan bir ilişkidir.

İhtisas(etki alanı) - özniteliğin değer kümesi (etki alanı).

Üç tür ikili bağlantı vardır:

  • bire bir- bir sınıfa ait bir varlığın tek bir örneği, başka bir sınıfa ait bir varlığın tek bir örneği ile ilişkilidir, örneğin, HEAD - DEPARTMENT;
  • 1'den N'ye veya birden çoğa- bir sınıftaki bir varlığın tek bir örneği, başka bir sınıftaki bir varlığın birçok örneğiyle ilişkilidir, örneğin BÖLÜM - ÇALIŞAN;
  • N'den M'ye veya çoktan çoğa- bir sınıfın bir varlığının birçok örneği, başka bir sınıfın bir varlığının birçok örneği ile ilişkilidir, örneğin, EMPLOYEE - PROJECT;
  • UML'deki temel kavramlar sözlüğü

    nesne- benzersizliği olan ve durumu ve davranışı kapsayan bir varlık.

    sınıf- durumu tanımlayan ortak özniteliklere ve davranışı tanımlayan işlemlere sahip bir dizi nesnenin açıklaması.

    arayüz- tüketici tarafından talep edilebilecek ve hizmet sağlayıcı tarafından sağlanabilecek bir dizi hizmeti tanımlayan, adlandırılmış bir dizi işlem.

    İşbirliği- bir hedefe ulaşmak için etkileşime giren bir dizi nesne.

    Aktör- modellenen sistemin dışında olan ve onunla doğrudan etkileşime giren bir varlık.

    bileşen- iyi tanımlanmış gerekli ve sağlanan arayüzler setine sahip sistemin modüler bir parçası.

    eser- geliştirme sürecinde kullanılan veya üretilen bir bilgi unsuru yazılım. Başka bir deyişle, yapı, bir model öğesinden (sınıf veya bileşen gibi) türetilen fiziksel bir uygulama birimidir.

    düğüm- yapıların yerleştirildiği ve gerekirse yürütüldüğü bir bilgi işlem kaynağı.

    Davranışsal varlıklar, davranışı tanımlamayı amaçlar. Yalnızca iki temel davranışsal varlık vardır: durum ve eylem.

    durum- bir nesnenin yaşam döngüsünde, nesnenin belirli bir koşulu karşıladığı ve kendi etkinliğini gerçekleştirdiği veya bir olayın gerçekleşmesini beklediği bir dönem.

    aksiyon- ilkel atomik hesaplama.

    makine sonlu sayıda durum ve geçişe sahip ayrık bir uzay olarak modellenen varlığın davranışını temsil etmek için gerekli bir dizi kavramı tanımlayan bir pakettir.

    sınıflandırıcı aynı türden bir dizi nesne için bir tanımlayıcıdır.

    Ekstra okuma

    • Fowler M. UML. Temel bilgiler, 3. baskı
    • Butch G., Rambo D., Jacobson I. UML dili. Kullanici rehberi

UML, 1997 sonbaharında Object Management Group (OMG) tarafından benimsenen ve birçok nesne yönelimli CASE ürünü tarafından desteklenen yazılım sistemlerinin görsel modellemesi için artık standart notasyondur.

UML standardı, modelleme için aşağıdaki diyagram setini sunar:

Kullanım durumu diyagramı (kullanım durumu diyagramı) - bir kuruluşun veya kuruluşun iş süreçlerini modellemek ve oluşturulan bilgi sistemi için gereksinimleri belirlemek için;

sınıf diyagramı (sınıf diyagramı) - sistem sınıflarının statik yapısını ve aralarındaki ilişkileri modellemek için;

sistem davranış diyagramı (davranış diyagramları);

etkileşim diyagramları;

Sıra diyagramları - tek bir kullanım durumunda nesneler arasındaki mesajlaşma sürecini modellemek için;

işbirliği diyagramı (işbirliği diyagramı) - aynı kullanım durumundaki nesneler arasındaki mesajlaşma sürecini modellemek için;

durum çizelgesi diyagramı - bir durumdan diğerine geçiş sırasında sistem nesnelerinin davranışını modellemek için;

etkinlik diyagramı - çeşitli kullanım durumları veya modelleme etkinlikleri çerçevesinde sistemin davranışını modellemek için;

uygulama şeması (uygulama şemaları):

Bileşen diyagramları (bileşen diyagramları) - bir bilgi sisteminin bileşenlerinin (alt sistemler) hiyerarşisini modellemek için;

dağıtım şeması (dağıtım şeması) - tasarlanan bilgi sisteminin fiziksel mimarisini modellemek için.

Şek. 1.1, bu kurs projesinde geliştirilecek ana diyagramlar dahil olmak üzere bilgi sisteminin entegre bir modelini sunar.

Pirinç. 1. UML dilinin gösteriminde entegre bir bilgi sistemi modeli

4.2. Kullanım örneği diyagramı

Kullanım durumu, bazı harici nesneler (aktör) tarafından tetiklenen bir olaya yanıt olarak sistem tarafından gerçekleştirilen bir eylemler dizisidir. Bir kullanım durumu, bir kullanıcı ile bir sistem arasındaki tipik bir etkileşimi tanımlar. En basit durumda, kullanım durumu, kullanıcı ile bu bilgi sisteminde uygulamak istediği işlevleri tartışma sürecinde belirlenir. UML'de bir kullanım durumu aşağıdaki gibi tasvir edilmiştir:

İncir. 2. Kullanım Örneği

Bir aktör, bir kullanıcının sistemle ilgili olarak oynadığı bir roldür. Aktörler, belirli kişileri veya iş unvanlarını değil, rolleri temsil eder. Kullanım senaryosu diyagramlarında stilize edilmiş insan figürleri olarak tasvir edilseler de bir aktör dışsal da olabilir. bilgi sistemi, verilen sistemden bazı bilgilere ihtiyaç duyan. Aktörleri yalnızca bazı kullanım durumlarına gerçekten ihtiyaç duyduklarında bir diyagramda göstermelisiniz. UML'de aktörler şekiller olarak temsil edilir:



Şek. 3. Karakter oyuncusu)

Aktörler üç ana türe ayrılır:

Kullanıcılar

sistemler;

Bununla etkileşime giren diğer sistemler;

Sistemdeki herhangi bir olayın tetiklenmesi ona bağlıysa, zaman bir aktör haline gelir.

4.2.1. Kullanım Durumları ve Aktörler Arasındaki İlişkiler

UML'de, kullanım durumu diyagramları, diyagram öğeleri arasındaki çeşitli ilişki türlerini destekler:

İletişim (iletişim),

Dahil etme (dahil etme),

uzatma (uzatma),

genelleme.

iletişim iletişim kullanım durumu ile aktör arasındaki ilişkidir. UML'de, iletişim bağlantıları tek yönlü bir ilişki (düz çizgi) kullanılarak gösterilir.

Şekil 4. İletişim bağlantısı örneği

Dahil etme bağlantısı birden fazla kullanım durumunda tekrarlanan bazı sistem davranışının olduğu durumlarda kullanılır. Bu tür bağlantıların yardımıyla, genellikle yeniden kullanılabilir bir işlev modellenir.

Uzatma bağlantısı Bir sistemin normal davranışındaki değişiklikleri tanımlamak için kullanılır. Bir kullanım durumunun isteğe bağlı olarak kullanılmasına izin verir işlevsellik başka bir kullanım durumu.

Şekil 5. Dahil etme ve genişletme ilişkisine bir örnek

İletişim genellemesi birkaç aktörün veya sınıfın ortak özelliklere sahip olduğunu gösterir.

Şekil 6. Genelleme ilişkisine bir örnek

4.3.



Etkileşim diyagramları Etkileşen nesne gruplarının davranışını tanımlar. Tipik olarak, bir etkileşim diyagramı yalnızca tek bir kullanım durumundaki nesnelerin davranışını kapsar. Böyle bir diyagram, bir dizi nesneyi ve bunların birbirleriyle değiş tokuş ettikleri mesajları görüntüler.

İleti gönderici nesnenin, alıcı nesneden işlemlerinden birini gerçekleştirmesini talep ettiği araçtır.

Bilgi (bilgilendirici) mesajı alıcı nesneye durumunu güncellemesi için bazı bilgiler sağlayan bir mesajdır.

İstek mesajı (sorgulayıcı) alıcı nesne hakkında bazı bilgilerin çıktısını isteyen bir mesajdır.

Zorunlu mesaj alıcıdan bir eylem gerçekleştirmesini isteyen bir mesajdır.

İki tür etkileşim diyagramı vardır: sıra diyagramları ve işbirliği diyagramları.

4.3.1. Sıra diyagramları

dizi diyagramı tek bir kullanım durumunda meydana gelen olayların akışını yansıtır.

Belirli bir senaryoda (kullanım durumu) yer alan tüm aktörler (aktörler, sınıflar veya nesneler) diyagramın üst kısmında gösterilir. Oklar, bir aktör ile bir nesne arasında veya gerekli işlevleri yerine getirmek için nesneler arasında iletilen mesajlara karşılık gelir.

Bir dizi diyagramında, bir nesne, noktalı bir çizginin çizildiği bir dikdörtgen olarak tasvir edilir. dikey çizgi. Bu hat denir bir nesnenin yaşam çizgisi . Etkileşim sürecindeki bir nesnenin yaşam döngüsünün bir parçasıdır.

Her mesaj, iki nesnenin yaşam çizgileri arasında bir ok olarak temsil edilir. Mesajlar, sayfada yukarıdan aşağıya doğru göründükleri sırayla görünür. Her mesaj en az mesaj adıyla etiketlenir. İsteğe bağlı olarak, bağımsız değişkenler ve bazı kontrol bilgileri de ekleyebilirsiniz. Aynı cankurtaran çizgisini işaret eden mesaj okuyla, bir nesnenin kendisine gönderdiği bir mesaj olan öz-delegasyonu gösterebilirsiniz.

Pirinç. 7. Dizi Diyagramı Örneği

4.3.2. işbirliği diyagramı

İşbirliği Diyagramları belirli bir senaryo (kullanım durumu) içindeki olayların akışını görüntüler. İletiler zamana göre sıralanır, ancak işbirliği diyagramları daha çok nesneler arasındaki ilişkilere odaklanır. Bir işbirliği diyagramı, bir dizi diyagramının sahip olduğu tüm bilgileri gösterir, ancak bir işbirliği diyagramı olayların akışını farklı bir şekilde tanımlar. Ondan nesneler arasında var olan bağlantıları anlamak daha kolaydır.

Tıpkı bir dizi diyagramında olduğu gibi, bir işbirliği diyagramında oklar, çerçeve içinde alınıp verilen mesajları temsil eder. bu seçenek kullanmak. Zaman sıraları, mesajların numaralandırılmasıyla belirtilir.

Pirinç. 8. Bir işbirliği şeması örneği

4.4. sınıf diyagramı

4.4.1. Genel bilgi

sınıf diyagramı sistem sınıflarının türlerini ve aralarında var olan çeşitli statik bağlantı türlerini tanımlar. Sınıf diyagramları ayrıca sınıf özniteliklerini, sınıf işlemlerini ve sınıflar arasındaki ilişkilere yerleştirilen kısıtlamaları gösterir.

UML'deki bir sınıf diyagramı, düğümleri projenin statik yapısının öğeleri (sınıflar, arayüzler) ve yaylar, düğümler arasındaki ilişkiler (ilişkiler, kalıtım, bağımlılıklar) olan bir grafiktir.

Sınıf diyagramı aşağıdaki öğeleri gösterir:

· Paket (paket) - modelin mantıksal olarak birbiriyle ilişkili bir dizi öğesi;

· Sınıf (sınıf) - benzer nesnelerden oluşan bir grubun ortak özelliklerinin açıklaması;

· Arayüz (arayüz) - belirli bir arayüzle ilişkili rastgele bir sınıfa ait bir nesnenin diğer nesnelere sağladığı bir dizi işlemi belirten soyut bir sınıf.

4.4.2. Sınıf

Sınıf veri ve davranış gibi benzer özelliklere sahip varlıklar (nesneler) grubudur. Bir sınıfın bireysel bir üyesi, sınıfın bir nesnesi veya sadece bir nesne olarak adlandırılır.

Bir nesnenin UML'deki davranışı, bir nesnenin dış dünyayla ve nesnenin kendi verileriyle etkileşimi için herhangi bir kuralı ifade eder.

Diyagramlarda, bir sınıf, yatay çizgilerle 3 bölüme ayrılmış, düz kenarlı bir dikdörtgen olarak tasvir edilmiştir:

En üstteki bölüm (ad bölümü), sınıfın adını ve diğer genel özellikleri (özellikle klişe) içerir.

Orta bölüm, özelliklerin bir listesini içerir

En altta, davranışını (sınıf tarafından gerçekleştirilen eylemler) yansıtan sınıf işlemlerinin bir listesi bulunur.

Öznitelik ve işlem bölümlerinden herhangi biri gösterilmeyebilir (veya her ikisi de). Eksik bölüm için, bir bölme çizgisi çizmenize ve içindeki öğelerin varlığını veya yokluğunu bir şekilde belirtmenize gerek yoktur.

İstisnalar gibi ek bölümler, belirli bir uygulamanın takdirine bağlı olarak tanıtılabilir.

Pirinç. 9. Sınıf Diyagramı Örneği

4.4.2.1.Sınıf klişeleri

Sınıf klişeleştirme, sınıfları kategorilere ayırmak için kullanılan bir mekanizmadır.

UML, üç ana sınıf klişesini tanımlar:

Sınır (sınır);

Varlık (varlık);

Kontrol (yönetim).

4.4.2.2.Sınır sınıfları

Sınır sınıfları, sistemin sınırında yer alan sınıflardır ve tüm çevre. Bunlar, ekranlar, raporlar, donanımla (yazıcılar veya tarayıcılar gibi) arayüzler ve diğer sistemlerle arayüzlerdir.

Sınır sınıflarını bulmak için kullanım durumu diyagramlarını keşfetmeniz gerekir. Bir aktör ile bir kullanım durumu arasındaki her etkileşimin en az bir sınır sınıfı olması gerekir. Aktörün sistemle etkileşime girmesini sağlayan bu sınıftır.

4.4.2.3.Varlık sınıfları

Varlık sınıfları saklanan bilgileri içerir. Kullanıcı için en büyük anlamı taşırlar ve bu nedenle adlarında genellikle konu alanındaki terimler kullanılır. Genellikle, her varlık sınıfı için veritabanında bir tablo oluşturulur.

4.4.2.4.Kontrol sınıfları

Kontrol sınıfları, diğer sınıfların eylemlerini koordine etmekten sorumludur. Tipik olarak, her kullanım durumu, o kullanım durumu için olayların sırasını kontrol eden bir kontrol sınıfına sahiptir. Kontrol sınıfı koordinasyondan sorumludur, ancak diğer sınıflar göndermediği için kendi içinde herhangi bir işlevsellik taşımaz. Büyük bir sayı mesajlar. Bunun yerine, kendisi birçok mesaj gönderir. Yönetici sınıfı, sorumluluğu diğer sınıflara devreder, bu nedenle genellikle yönetici sınıfı olarak anılır.

Sistemde, çeşitli kullanım durumlarında ortak olan başka kontrol sınıfları olabilir. Örneğin, güvenlikle ilgili olayları izlemekten sorumlu bir SecurityManager sınıfı olabilir. TransactionManager sınıfı, veritabanı işlemleriyle ilgili mesajların koordinasyonunu yönetir. Kaynak paylaşımı, dağıtılmış veri işleme veya hata işleme gibi sistemin işleyişinin diğer öğeleriyle ilgilenecek başka yöneticiler olabilir.

Yukarıda belirtilen klişelere ek olarak, kendinizinkini de oluşturabilirsiniz.

4.4.2.5.Öznitellikler

Nitelik, bir sınıfla ilişkili bir bilgi parçasıdır. Nitelikler, kapsüllenmiş sınıf verilerini depolar.

Öznitelikler sınıfın içinde bulunduğundan, diğer sınıflardan gizlenirler. Bu nedenle, hangi sınıfların öznitelikleri okuma ve değiştirme hakkına sahip olduğunu belirtmek gerekebilir. Bu özelliğe öznitelik görünürlüğü adı verilir.

Öznitelik, bu parametre için dört olası değere sahip olabilir:

Herkese açık (genel, açık). Bu görünürlük değeri, özniteliğin diğer tüm sınıflar tarafından görülebileceğini varsayar. Herhangi bir sınıf, bir özniteliğin değerini görüntüleyebilir veya değiştirebilir. UML notasyonuna göre, ortak bir özelliğin önünde bir "+" işareti bulunur.

Özel (kapalı, gizli). Karşılık gelen öznitelik başka hiçbir sınıf tarafından görülmez. Özel bir öznitelik, UML gösterimine göre "-" işaretiyle gösterilir.

Korumalı (korumalı). Böyle bir öznitelik yalnızca sınıfın kendisi ve soyundan gelenler tarafından kullanılabilir. Korumalı bir öznitelik için UML gösterimi "#" işaretidir.

Paket veya Uygulama (toplu). Verilen özniteliğin paylaşıldığını, ancak yalnızca kendi paketi içinde olduğunu varsayalım. Bu görünürlük türü herhangi bir özel simge ile gösterilmez.

Kapalılık veya güvenlik yardımıyla, öznitelik değerinin sistemin tüm sınıfları tarafından değiştirildiği durumdan kaçınmak mümkündür. Bunun yerine, öznitelik değiştirme mantığı, özniteliğin kendisiyle aynı sınıfa sarılır. Ayarladığınız görünürlük seçenekleri, oluşturulan kodu etkileyecektir.

4.4.2.6.Operasyonlar

İşlemler, sınıfla ilgili davranışı uygular. Bir işlemin üç bölümü vardır - ad, parametreler ve dönüş türü.

Parametreler, işlemin girdi olarak aldığı argümanlardır. Dönüş türü, işlemin eyleminin sonucunu ifade eder.

Bir sınıf diyagramı, hem işlem adlarını hem de işlem adlarını parametreleri ve dönüş türüyle birlikte gösterebilir. Diyagram üzerindeki yükü azaltmak için, bazılarında sadece işlem adlarını, bazılarında ise tam imzalarını göstermek faydalıdır.

UML'de işlemler aşağıdaki gösterime sahiptir:

İşlem Adı (bağımsız değişken: bağımsız değişken veri türü, bağımsız değişken2: bağımsız değişken2 veri türü,...): dönüş türü

Dikkate alınması gereken dört farklı işlem türü vardır:

Uygulama işlemleri;

Yönetim işlemleri;

Erişim işlemleri;

Yardımcı işlemler.

Uygulama işlemleri

Uygulayıcı operasyonları bazı iş fonksiyonlarını uygular. Bu tür işlemler, etkileşim diyagramları incelenerek bulunabilir. Bu tür diyagramlar, iş işlevlerine odaklanır ve diyagramdaki her mesaj büyük olasılıkla bir uygulama işlemiyle ilişkilendirilebilir.

Her uygulama işlemi, karşılık gelen gereksinime göre kolayca izlenebilir olmalıdır. Bu, simülasyonun çeşitli aşamalarında elde edilir. İşlem, etkileşim diyagramındaki mesajdan türetilir, mesajlar Detaylı Açıklama kullanım durumuna göre oluşturulan bir olaylar akışı ve ikincisi gereksinimlere dayalıdır. Bu zincirin tamamını izleyebilmek, her gereksinimin kodda uygulanmasını ve her kod parçasının bazı gereksinimleri gerçekleştirmesini sağlamaya yardımcı olur.

Yönetim işlemleri

Yönetici işlemleri, nesnelerin oluşturulmasını ve yok edilmesini yönetir. Sınıf kurucuları ve yıkıcıları bu kategoriye girer.

Erişim işlemleri

Nitelikler genellikle özel veya korumalıdır. Ancak, diğer sınıfların bazen değerlerini görüntülemesi veya değiştirmesi gerekir. Bunun için erişim işlemleri var. Bu yaklaşım, öznitelikleri bir sınıf içinde güvenli bir şekilde kapsüllemeyi mümkün kılar, onları diğer sınıflardan korur, ancak yine de olmalarına izin verir. kontrollü erişim. Bir sınıfın her özelliği için Get ve Set işlemleri (değer alma ve değiştirme) oluşturmak bir standarttır.

Yardımcı işlemler

Yardımcı (yardımcı işlemler), bir sınıfın sorumluluklarını yerine getirmesi için gerekli olan ancak diğer sınıfların hakkında hiçbir şey bilmemesi gereken işlemleridir. Bunlar özel ve korumalı sınıf işlemleridir.

İşlemleri tanımlamak için aşağıdakileri yapın:

1. Dizi diyagramlarını ve işbirlikçi diyagramları çalışın. Bu şemalardaki mesajların çoğu uygulama işlemleridir. Yansıtıcı mesajlar yardımcı işlemler olacaktır.

2. Kontrol işlemlerini düşünün. Yapıcılar ve yıkıcılar eklemeniz gerekebilir.

3. Erişim işlemlerini düşünün. Diğer sınıfların çalışması gereken her sınıf özelliği için Get ve Set işlemleri oluşturmanız gerekir.

4.4.2.7.Bağlantılar

Bir ilişki, sınıflar arasındaki anlamsal bir ilişkidir. Bir sınıfa, başka bir sınıfın öznitelikleri, işlemleri ve ilişkileri hakkında bilgi edinme yeteneği verir. Diğer bir deyişle, bir sınıfın diğerine sıralı veya işbirlikçi diyagramda mesaj gönderebilmesi için aralarında bir bağlantı olması gerekir.

Sınıflar arasında kurulabilecek dört tür ilişki vardır: ilişkilendirmeler, bağımlılıklar, toplamalar ve genellemeler.

iletişim derneği

Dernek, sınıflar arasındaki anlamsal bir ilişkidir. Sınıf diyagramında sıradan bir çizgi olarak çizilirler.

Pirinç. 10. İletişim birliği

İlişkilendirmeler, örnekteki gibi çift yönlü veya tek yönlü olabilir. UML'de çift yönlü ilişkiler, oksuz basit bir çizgi olarak veya çizginin her iki yanında oklarla çizilir. Tek yönlü bir ilişkinin yönünü gösteren yalnızca bir oku vardır.

Bir ilişkinin yönü, dizi diyagramları ve kooperatif diyagramları incelenerek belirlenebilir. Eğer üzerlerindeki tüm mesajlar sadece bir sınıf tarafından gönderilip sadece başka bir sınıf tarafından alınıyorsa ve bunun tersi bir durum söz konusu değilse, bu sınıflar arasında tek yönlü bir iletişim vardır. Ters yönde en az bir mesaj gönderilirse, ilişkilendirme çift yönlü olmalıdır.

Dernekler dönüşlü olabilir. Dönüşlü ilişkilendirme, bir sınıfın bir örneğinin aynı sınıfın diğer örnekleriyle etkileşime girdiği anlamına gelir.

iletişim bağımlılığı

Bağımlılık ilişkileri de sınıflar arasındaki ilişkiyi yansıtır, ancak bunlar her zaman tek yönlüdür ve bir sınıfın diğerinde yapılan tanımlara bağlı olduğunu gösterir. Örneğin, A sınıfı, B sınıfının yöntemlerini kullanır. Ardından, B sınıfı değiştiğinde, A sınıfında karşılık gelen değişiklikleri yapmak gerekir.

Bağımlılık, iki diyagram öğesi arasına çizilen noktalı bir çizgiyle temsil edilir ve bir okun ucuna sabitlenmiş öğenin, o okun başında sabitlenmiş öğeye bağımlı olduğu söylenir.

Pirinç. 11. İletişim bağımlılığı

Bu sınıflar için kod oluşturulurken bunlara yeni nitelikler eklenmez. Ancak, iletişimi desteklemek için gereken dile özgü operatörler oluşturulacaktır.

İletişim toplama

Toplamalar, daha sıkı bir ilişkilendirme biçimidir. Agregasyon, bütün ile onun parçası arasındaki bağlantıdır. Örneğin, bir Araba sınıfınızın yanı sıra Motor, Lastik sınıflarınız ve diğer araba parçaları sınıflarınız olabilir. Sonuç olarak, Car sınıfındaki bir nesne, Engine sınıfındaki bir nesneden, Tires'in dört nesnesinden vb. oluşacaktır. Toplamalar, bir tamsayı olan bir sınıf için eşkenar dörtgenli bir çizgi olarak görselleştirilir:

Pirinç. 11. İletişim toplama

Basit toplamaya ek olarak, UML, kompozisyon adı verilen daha güçlü bir toplama biçimi sunar. Kompozisyona göre, bir nesne parçası yalnızca tek bir bütüne ait olabilir ve ayrıca kural olarak, yaşam döngüsü parçalar bütünün döngüsüyle örtüşür: onunla yaşar ve onunla ölürler. Bütünün herhangi bir şekilde çıkarılması, parçalarına kadar uzanır.

Bu art arda silme, genellikle toplama tanımının bir parçası olarak kabul edilir, ancak rol çokluğu 1..1 olduğunda her zaman ima edilir; örneğin, bir Müşterinin silinmesi gerekiyorsa, bu silme işlemi Siparişlere (ve ardından Sipariş Satırlarına) yayılmalıdır.

UML veya Birleşik Modelleme Dili, yazılım geliştirme alanında nesne modelleme için grafiksel bir tanımlama dilidir. Ancak UML'nin kullanımı BT ile sınırlı değildir, UML'nin bir başka geniş pratik uygulama alanı, iş süreci modelleme, sistem tasarımı ve organizasyon yapılarının haritalanmasıdır. UML, yazılım geliştiricilerin sunum için grafik gösterim üzerinde anlaşmasını sağlar. Genel konseptler ve tasarım ve geliştirmeye odaklanın.

UML'nin Faydaları

  • UML, modellenmekte olan sistemin öğeleri için grafik semboller kullanır ve UML diyagramlarının anlaşılması oldukça kolaydır;
  • UML, çeşitli yönleri dikkate alarak sistemleri mümkün olan hemen her açıdan tanımlamayı mümkün kılar;
  • UML nesne yönelimlidir: analiz ve oluşturma yöntemleri anlamsal olarak modern OOP dillerinde kullanılan programlama yöntemlerine yakındır;
  • UML açık bir standarttır. Standart, sistemleri açıklamak için en modern gereksinimleri karşılayarak sürümden sürüme gelişir ve gelişir;
  • ek metin girmenize izin veren bir uzatma mekanizması içerir ve grafik türleri, bu da UML'yi yalnızca BT alanında kullanmayı mümkün kılar.

UML Diyagramı Türleri

UML'de 14 diyagram tipi vardır. 2 kategoriye ayrılabilirler:

  • yapısal temsil eden bilgi yapısı;
  • davranışsal, sistemin davranışını ve etkileşimlerin çeşitli yönlerini temsil eder. Davranış diyagramlarının ayrı bir alt türü etkileşim diyagramları.

UML diyagram türlerinin hiyerarşisi, bir sınıf diyagramı ile temsil edilir

Yapısal diyagramlar

  1. sınıf diyagramı nesne yönelimli modellemede önemli bir unsurdur. Bu diyagramın yardımıyla (aslında, sınıflar, onların Öznitellikler, yöntemler ve sınıflar arasındaki bağımlılıklar), etki alanı modelini ve modellenen sistemin yapısını açıklar.
  2. Bileşen Şeması program kodunun büyük bloklara (yapısal bileşenler) bölünmesini görüntüler ve bağımlılıklar onların arasında. Bileşenler paketler, modüller, kitaplıklar, dosyalar vb. olabilir.
  3. nesne diyagramı Simüle edilmiş sistemin belirli bir zamanda tam veya kısmi bir kesimini gösterir. Sınıf örneklerini (nesneleri), durumlarını ( şimdiki değerler nitelikler) ve bunlar arasındaki ilişki.
  4. Bileşik yapı diyagramı sınıfların iç yapısını ve mümkünse bu yapının elemanları arasındaki etkileşimleri gösterir.
  5. Paket şeması paketleri ve aralarındaki ilişkileri gösterir. Bu tür bir diyagram, model öğelerini belirli kriterlere göre gruplar halinde birleştirerek modelin yapısını basitleştirmeye (ve buna göre onunla çalışmaya) hizmet eder.
  6. Dağıtım Şeması model dağıtımı yazılım bileşenleri (eserler) bilgi işlem kaynakları/donanım bileşenlerinde ( düğümler).
  7. Profil diyagramı UML'nin çeşitli konu alanlarına ve faaliyet alanlarına uyarlanmasına izin veren bir genişletilebilirlik mekanizmasını açıklar.

UML Sınıf Diyagramı Örneği

Davranış Diyagramları

  1. etkinlik şeması eylemleri gösterir ( hareketler) bazı faaliyetler ( aktivite). Faaliyet diyagramları, iş süreçlerini, teknolojik süreçleri, seri ve paralel hesaplamayı modellemek için kullanılır.
  2. Kullanım örneği diyagramı(veya kullanım örneği diyagramı) aktörler (aktörler) arasındaki ilişkiyi ve simüle edilen sistemin kullanım durumlarını (yeteneklerini) açıklar. Diyagramın temel amacı, müşteriler, geliştiriciler ve son kullanıcılar için sistemi, yeteneklerini ve davranışlarını ortaklaşa tartışmanın mümkün olacağı evrensel bir araç olmaktır.
  3. Durum diyagramı bir varlığın dinamik davranışını tasvir eder ve bu varlığın mevcut durumuna bağlı olarak çeşitli olaylara nasıl tepki verdiğini gösterir. Aslında, bu atom teorisinden bir durum diyagramıdır.
  4. İletişim Şeması(V erken sürümler işbirliği diyagramı), bileşik yapının parçaları arasındaki etkileşimleri ve işbirliğinin rollerini gösterir. Diyagram, öğeler (nesneler) arasındaki ilişkiyi açıkça gösterir.
  5. dizi diyagramı nesne etkileşimlerinin sırasını görselleştirmek için kullanılır. Belirli bir nesnenin yaşam döngüsünü ve bazı kullanım durumlarında aktörlerin (aktörlerin) etkileşimini, değiş tokuş ettikleri mesajların sırasını gösterir.
  6. Etkileşime Genel Bakış Şeması dizi diyagramının ve kontrol akış yapısının bir parçasını içerir. Nesnelerin etkileşimini farklı bakış açılarından değerlendirmeye yardımcı olur.
  7. zamanlama tablosu- zamanlama konusunda uzmanlaşmış ayrı bir etkileşim diyagramları alt türü. Bu tür diyagramlar, nesnelerin belirli bir süre boyunca davranışını incelemek için kullanılır.
Sanırım herkes çocuklukta böyle bir söz duymuş " Yedi kez ölçün, bir kez kesin". Programlamada da aynıdır. Uygulamayı yürütmek için zaman harcamadan önce düşünmek her zaman daha iyidir. Genellikle uygulama sırasında sınıflar oluşturmanız, etkileşimlerini icat etmeniz gerekir. Ve çoğu zaman bunun görsel bir temsili sorunu çözmeye yardımcı olabilir en doğru şekilde.İşte burada yardımcı oluyoruz UML.

UML nedir?

resimlere bakarsanız arama motorları, anlaşılıyor ki UML- bu şemalar, oklar ve karelerle ilgili bir şey. Önemli olan, UML'nin şu şekilde çevrilmesidir: Birleştirilmiş Modelleme Dili. Birleşik kelimesi burada önemlidir. Yani resimlerimiz sadece bizim tarafımızdan değil, UML bilen başkaları tarafından da anlaşılacaktır. Görünüşe göre bu, diyagram çizmek için çok uluslararası bir dil.

Wikipedia'nın dediği gibi

UML, yazılım geliştirme, iş süreci modelleme, sistem mühendisliği ve organizasyonel yapıların haritalanması alanlarında nesne modelleme için grafiksel bir tanımlama dilidir.
Herkesin düşünmediği veya tahmin edemediği en ilginç şey, UML'nin spesifikasyonlara sahip olmasıdır. Üstelik bir UML2 özelliği bile var. Spesifikasyon hakkında daha fazla bilgi Object Management Group web sitesinde bulunabilir. Aslında, bu grup UML belirtimlerinin geliştirilmesiyle uğraşmaktadır. UML'nin sınıfların yapısını açıklamakla sınırlı olmaması da ilginçtir. Pek çok UML diyagramı türü vardır. UML diyagram türlerinin kısa bir açıklaması aynı Wikipedia: UML diyagramlarında veya Timur Batyrshinov'un videosunda görülebilir. UML Diyagramlarına Genel Bakış. UML aynı zamanda çeşitli süreçlerin tanımlanmasında yaygın olarak kullanılmaktadır, örneğin burada: JWT kullanarak çoklu oturum açma. UML sınıf diyagramlarının kullanımına geri dönersek, kalıpların aynı UML diyagramları tarafından gösterildiği Head First: Design Patterns kitabına dikkat çekmeye değer. Görünüşe göre UML gerçekten kullanılıyor. Ve uygulamasını bilmek ve anlamak oldukça yararlı bir beceri olduğu ortaya çıktı.

Başvuru

IDE'den gelen bu UML ile nasıl çalışabileceğinizi görelim. IDE olarak, IntelliJ Fikir. Eğer kullanırsan IntelliJ Idea Ultimate, o zaman eklentiyi "kutudan çıkar çıkmaz" yükleyeceğiz UML Desteği". Otomatik olarak güzel sınıf diyagramları oluşturmanıza olanak tanır. Örneğin, Ctrl + N veya "Gezin" -> "Sınıf" menü öğesi aracılığıyla sınıfa gidin Dizi Listesi. Şimdi, aracılığıyla bağlam menüsü sınıf adına göre "Diyagram" -> "Diyagram açılır penceresini göster"i seçin. Sonuç olarak, güzel bir tablo elde ederiz:

Peki ya kendinizi çizmek istiyorsanız ve hatta Idea'nın Ultimate sürümü yoksa? IntelliJ Idea Community Edition kullanıyorsak, başka seçeneğimiz yok. Bunu yapmak için, böyle bir UML şemasının nasıl çalıştığını anlamanız gerekir. İlk önce Graphviz'i kurmamız gerekiyor. Bir dizi grafik görselleştirme yardımcı programıdır. Kullanacağımız eklenti tarafından kullanılır. Kurulumdan sonra bir dizin eklemeniz gerekir. çöp Kutusu yüklü dizinden grafikviz v Çevre değişkeniçevre YOL. Bundan sonra, IntelliJ Idea'da menüden Dosya -> Ayarlar'ı seçin. "Ayarlar" penceresinde "Eklentiler" kategorisini seçin, "Depolara gözat" düğmesine tıklayın ve PlantUML entegrasyon eklentisini yükleyin. Bu neden bu kadar iyi bitkiUML? "adlı bir grafik tanımlama dili kullanır. nokta" ve bu onun daha çok yönlü olmasına izin verir, çünkü verilen dil sadece PlantUML kullanılmaz. Üstelik aşağıda yapacağımız her şeyi sadece IDE'de değil, aynı zamanda çevrimiçi servis planttext.com. PlantUML eklentisini kurduktan sonra "File" -> "New" üzerinden UML diyagramları oluşturabileceğiz. Bir "UML sınıfı" diyagramı oluşturalım. Bu sırada otomatik olarak örnek içeren bir şablon oluşturulur. İçeriğini silelim ve Habr'dan bir makaleyle donanmış olarak kendi içeriğimizi oluşturalım: Sınıf İlişkileri - UML'den koda. Ve bunu metinde nasıl tasvir edeceğinizi anlamak için, PlantUML kılavuzunu ele alalım: plantuml class-diagram . İçinde, en başında, bağlantıların nasıl tarif edileceğini gösteren bir levha var:

Bağlantıların kendileri hakkında, yine de buradan göz atabiliriz: "UML'deki sınıflar arasındaki ilişkiler. Örnekler". Bu materyallere dayanarak UML diyagramımızı oluşturmaya başlayalım. İki sınıfı açıklayan aşağıdaki içeriği ekleyin: @startuml class ArrayList ( ) class LinkedList() @enduml Idea'da sonucu görmek için "Görüntüle" -> " öğesini seçin Araç pencereleri" -> "PlantUML". Sınıfları gösteren sadece iki kare elde edeceğiz. Bildiğimiz gibi, bu sınıfların her ikisi de Liste arayüzünü uygular. Sınıfların bu ilişkisine uygulama (gerçekleştirme) denir. Gösterim için noktalı çizgili bir ok kullanılır böyle bir ilişki.Haydi onu çizelim: arayüz Liste Liste< | . . ArrayList List < | . . LinkedList List - один из дочерних классов Collection . То есть он наследуется от Collection. Эта связь называется обобщением (generalization). Выглядит как стрелка с обычной непрерывной линией. Изобразим её: interface Collection Collection < | -- List Для следующего типа связи добавим в описание класса ArrayList запись о özel paket element dizisi: ~ Object elementData Şimdi ArrayList'in bazı nesneler içerdiğini göstermek istiyoruz. Bu durumda, bağlantı türü - olacaktır. toplama(toplama). Bu durumda toplam ArrayList'tir, çünkü diğer nesneleri içerir. Kümeyi seçiyoruz çünkü listedeki nesneler liste olmadan da yaşayabilir: listenin ayrılmaz parçaları değildirler. Ömürleri listenin ömrüne bağlı değildir. Latince birim "toplanmış", yani bir şeyden oluşan bir şey olarak çevrilir. Örneğin hayatta pompa ve motordan oluşan bir pompalama ünitesi vardır. Ünitenin kendisi, bazı bileşenlerini bırakarak demonte edilebilir. Örneğin, satmak veya başka bir birim koymak. Yani listede. Bu da ünitede boş bir eşkenar dörtgen ve sürekli bir çizgi şeklinde ifade edilir. Bunu şu şekilde ifade edelim: class Object ( ) ArrayList o- Object Şimdi, ArrayList'ten farklı olarak, LinkedList sınıfının saklanan verilere atıfta bulunan Node kapsayıcılar içerdiğini göstermek istiyoruz. Bu durumda, Düğümler LinkedList'in bir parçasıdır ve ayrı yaşayamazlar. Düğüm doğrudan saklanan içerik değildir, ancak yalnızca ona bir referans içerir. Örneğin, LinkedList'e bir satır eklediğimizde, o satıra bir bağlantı içeren yeni bir Node ve önceki ve sonraki Node'a bir bağlantı ekleriz. Bu tür bağlantıya denir kompozisyon(kompozisyon). Bir kompoziti (parçalardan oluşan) görüntülemek için dolu bir robik çizilir, sürekli bir çizgi buna götürür. Şimdi bunu bağlantının metin görüntüsü olarak yazalım: class Node ( ) LinkedList * -- Node Ve şimdi başka bir önemli bağlantı türünü nasıl görüntüleyeceğimizi öğrenmemiz gerekiyor - bağımlılık(bağımlılık ilişkisi). Bir sınıf diğerini kullandığında, sınıf kullanılan sınıfı içermediğinde ve onun halefi olmadığında kullanılır. Örneğin, LinkedList ve ArrayList bir ListIterator oluşturabilir. Bunu noktalı oklar olarak gösterelim: class ListIterator ListIterator< . . . ArrayList : create ListIterator < . . . LinkedList : create Выглядеть после всего это будет следующим образом:

İstediğiniz kadar detaylandırabilirsiniz. Tüm tanımlar burada listelenmiştir: "PlantUML - Sınıf Şeması". Ayrıca böyle bir şema çizmenin doğaüstü hiçbir yanı yoktur ve görevleriniz üzerinde çalışırken bunu elle hızlıca çizebilirsiniz. Bu, uygulama mimarisi üzerinden düşünme becerilerini geliştirecek ve sınıf yapısı kusurlarını yanlış modeli uygulayarak bir gün geçirdikten sonra değil, erkenden belirlemeye yardımcı olacaktır. Bence bu denemek için iyi bir sebep?)

Otomasyon

Yemek yemek çeşitli yollar PlantUML diyagramlarının otomatik üretimi. Örneğin, içinde fikirler Bir SketchIT eklentisi var, ancak bunları doğru şekilde çizmiyor. Örneğin, arayüzlerin uygulanması yanlış çizilir (kalıtım olarak görüntülenir). Bunu projenizin yapı yaşam döngüsüne nasıl dahil edeceğinize dair çevrimiçi örnekler de var. için diyelim Uzman uml-java-docklet kullanan bir örnek var. Nasıl olduğunu göstermek için Maven Arketipini kullanacağız. hızlı oluşturma maven projesi Şu komutu çalıştıralım: mvn archetype:generate Bir filtre seçme sorusu üzerine ( Bir sayı seçin veya filtre uygulayın) sadece Enter tuşuna basarak varsayılandan çıkın. hep olacak" maven-arketip-hızlı başlangıç". En son sürümü seçiyoruz. Ardından, soruları yanıtlayın ve projenin oluşturulmasını tamamlayın:

Bu makalenin konusu Maven olmadığı için, Maven ile ilgili sorularınızın yanıtları Maven Kullanıcı Merkezi'nde bulunabilir. Oluşturulan projede, düzenleme için proje açıklama dosyasını açın, pom.xml. İçerisine uml-java-docklet kurulumunun açıklamasındaki içeriği kopyalayacağız. Açıklamada kullanılan yapı, Maven Central deposunda bulunamadı. Ama benim için şu işe yaradı: https://mvnrepository.com/artifact/com.chfourie/uml-java-doclet/1.0.0 . Yani, bu açıklamada sadece değiştirmeniz gerekir Grup kimliğiİle " bilgi.leadinglight" Açık " com.chfourie" ve sürümü koy " 1.0.0 ". Bundan sonra, dosyanın bulunduğu dizinde çalıştırabiliriz. pom.xml bu komutlar şunlardır: mvn clean install ve mvn javadoc:javadoc . Şimdi oluşturulan belgeleri (explorer target\site\apidocs\index.html) açarsak UML diyagramlarını göreceğiz. Bu arada, uygulama zaten burada doğru bir şekilde görüntüleniyor)

Çözüm

Gördüğünüz gibi UML, uygulamanızın yapısını görselleştirmenizi sağlar. Ayrıca UML sadece bununla da sınırlı değil. UML'nin yardımıyla şirketinizdeki çeşitli süreçleri tanımlayabilir veya yazdığınız fonksiyonun içinde çalıştığı iş sürecini tanımlayabilirsiniz. UML'nin ne kadar yararlı olduğuna kişisel olarak karar vermek size kalmış ama yine de zaman bulup daha detaylı tanımakta fayda olacaktır. #Viacheslav Bu yazının Rusça versiyonu: CodeGym'de UML diyagramı Java

Tüm UML diyagramlarışartlı olarak iki gruba ayrılabilir, bunlardan ilki genel diyagramlardır. Genel diyagramlar pratik olarak modelleme konusundan bağımsızdır ve konu alanı, karar alanı vb. dikkate alınmaksızın herhangi bir yazılım projesinde kullanılabilir.

1.5.1. kullanım şeması

kullanım şeması(kullanım durumu diyagramı), sistemin işlevsel amacının en genel temsilidir.

Kullanım şeması, ana modelleme sorusuna cevap vermeyi amaçlamaktadır: sistem dış dünyada ne yapar?

Kullanım şemasında, iki tür ana varlık kullanılır: aralarında aşağıdaki ana ilişki türlerinin kurulduğu kullanım senaryoları 1 ve aktörler 2:

  • aktör ve kullanım durumu 3 arasındaki ilişki;
  • aktörler arasında genelleme 4;
  • kullanım durumları arasında genelleme 5;
  • bağımlılıklar ( çeşitli tipler) kullanım durumları arasında 6 .

Diğerleri gibi bir kullanım şemasının da yorumları olabilir 7 . Ayrıca, çizelgelerin okunabilirliğini artırmak için bunu yapmanız şiddetle tavsiye edilir.

Kullanım şemasında kullanılan notasyonun ana unsurları aşağıda gösterilmiştir. Detaylı Açıklama Bölüm 2.2'de verilmiştir.

1.5.2. sınıf diyagramı

sınıf diyagramı(sınıf diyagramı), sistemin yapısını tanımlamanın ana yoludur.

UML öncelikle nesne yönelimli bir dil olduğundan ve sınıflar (tek değilse de) ana yapı taşı olduğundan, bu şaşırtıcı değildir.

Sınıf diyagramında, bir ana varlık türü kullanılır: aralarında aşağıdaki ana ilişki türlerinin kurulduğu sınıflar 1 (sınıfların çok sayıda özel durumu dahil: arabirimler, ilkel türler, ilişkilendirme sınıfları ve diğerleri):

  • 2. sınıflar arasındaki ilişki (birçok ek ayrıntıyla birlikte);
  • 3. sınıflar arasında genelleme;
  • 4. sınıflar arasında ve sınıflar ile arabirimler arasında (çeşitli türlerde) bağımlılıklar.

Sınıf şemasında kullanılan notasyonun bazı unsurları aşağıda gösterilmiştir. Ayrıntılı bir açıklama 3. bölümde verilmiştir.

1.5.3. otomat diyagramı

otomat diyagramı(durum makinesi diyagramı), durumların açık bir şekilde tahsisine ve durumlar arasındaki geçişlerin açıklamasına dayalı olarak UML'de davranışı ayrıntılı olarak tanımlamanın yollarından biridir.

Özünde, otomat diyagramları, adından da anlaşılacağı gibi, birçok ek detay ve detayla dolu bir durum geçiş grafiğidir (bkz. Bölüm 4).

Otomat şemasında, bir ana varlık türü kullanılır - durumlar 1 ve bir tür ilişki - geçişler 2 , ancak her ikisi için de birçok çeşit, özel durum ve ek atama tanımlanmıştır. Hepsini bir giriş incelemesinde listelemek mantıklı değil.

Otomat şemalarının tüm varyasyonlarının ayrıntılı bir açıklaması bölüm 4.2'de verilmiştir ve aşağıdaki şekil sadece otomat diyagramında kullanılan notasyonun ana öğelerini göstermektedir.

1.5.4. etkinlik şeması

etkinlik şeması(aktivite diyagramı) - kontrol akışlarının ve veri akışlarının göstergesine dayalı olarak davranışı tanımlamanın bir yolu.

Etkinlik diyagramı, görsel olarak eski güzel bir akış şemasına benzeyen davranışı tanımlamanın başka bir yoludur. Bununla birlikte, nesne yönelimli yaklaşımla tutarlı modernize edilmiş notasyon ve en önemlisi, yeni semantik bileşen (Petri ağlarının ücretsiz yorumu) nedeniyle, UML etkinlik diyagramı, sistemin davranışını açıklamak için güçlü bir araçtır.

Etkinlik şemasında, bir ana varlık türü kullanılır - eylem 1 ve bir tür ilişki - geçişler 2 (kontrol ve veri transferleri). Ayrıca varlıklara benzeyen çatallar, birleşmeler, bağlantılar, dallar 3 gibi yapılar da kullanılır, ancak bunlar aslında çok-yerli ilişkilerin bazı özel durumlarını tasvir etmenin grafiksel bir yoludur. Etkinlik diyagramı öğelerinin anlambilimi, Bölüm 4'te ayrıntılı olarak tartışılmaktadır. Etkinlik şemasında kullanılan notasyonun ana unsurları aşağıda gösterilmiştir.

1.5.5. dizi diyagramı

dizi diyagramı(dizi diyagramı), iletilen mesajların sırasının göstergesine dayalı olarak sistemin davranışını tanımlamanın bir yoludur.

Aslında, bir dizi diyagramı, sistemin belirli bir oturumunun (veya böyle bir protokolün bir parçasının) protokolünün bir kaydıdır. Nesne yönelimli programlamada, çalışma zamanındaki en önemli şey, birlikte çalışan nesneler arasında mesajların iletilmesidir. Bu şemada görüntülenen mesajların gönderilme sırasıdır, dolayısıyla adıdır.

Sekans diyagramında, bir ana varlık türü kullanılır - etkileşimli sınıflandırıcıların örnekleri 1 (esas olarak sınıflar, bileşenler ve aktörler) ve bir tür ilişki - mesajların değiş tokuş edildiği bağlantılar 2 3 . Mesaj göndermenin, grafik gösterimde bir ilişkiye karşılık gelen bir ok şeklinde farklılık gösteren birkaç yolu vardır.

Sekans diyagramının önemli bir yönü, zamanın geçişinin açık bir şekilde gösterilmesidir. Eşzamanlama diyagramları dışında diğer diyagram tiplerinden farklı olarak, bir dizi diyagramında yalnızca öğeler arasındaki grafiksel bağlantıların varlığı değil, aynı zamanda diyagramdaki öğelerin göreli konumu da önemlidir. Yani varsayılan olarak yukarıdan aşağıya yönlendirilmiş (görünmez) bir zaman ekseni olduğu kabul edilir ve daha sonra gönderilen mesaj aşağıda çizilir.

Zaman ekseni yatay olarak yönlendirilebilir, bu durumda zamanın soldan sağa doğru aktığı kabul edilir.

Aşağıdaki şekil, bir dizi diyagramında kullanılan notasyonun ana öğelerini göstermektedir. Etkileşen nesnelerin kendilerini belirtmek için, standart gösterim kullanılır - bir sınıflandırıcı örneğinin adını taşıyan bir dikdörtgen. Noktalı çizgi, oradan çıkana hayat çizgisi (can simidi) denir 4 . Bu, modeldeki bir ilişkinin tanımı değil, diyagram okuyucusunu doğru yöne yönlendirmeyi amaçlayan grafiksel bir açıklamadır. Yaşam çizgisi üzerine bindirilmiş dar şeritler şeklindeki figürler de simüle edilmiş varlıkların görüntüleri değildir. Bu, bir nesnenin yürütme oluşumuna 5 sahip olduğu veya başka bir deyişle bir nesnenin aktivasyonunun gerçekleştiği sürenin uzunluğunu gösteren grafiksel bir yorumdur. Bileşik etkileşim adımları (birleşik parça) 6, dizi diyagramının etkileşim protokolünün algoritmik yönlerini yansıtmasına izin verir. Sekans diyagramı gösterimi hakkında daha fazla ayrıntı için Bölüm 4'e bakın.

1.5.6. İletişim Şeması

İletişim Şeması(iletişim diyagramı) - bir dizi diyagramına anlamsal olarak eşdeğer olan davranışı tanımlamanın bir yolu.

Aslında, bu, yalnızca diğer grafik araçlarla ifade edilen, sınıflandırıcıların etkileşimli örneklerinin mesaj alışverişi dizisinin aynı açıklamasıdır. Ayrıca, çoğu araç otomatik olarak dizi diyagramlarını iletişim diyagramlarına dönüştürebilir ve bunun tersi de geçerlidir.

Bu nedenle, iletişim şemasında ve sıra şemasında, bir ana tip varlık kullanılır - etkileşimli sınıflandırıcıların örnekleri 1 ve bir tür ilişki - bağlantılar 2 . Bununla birlikte, burada vurgu zaman üzerinde değil, belirli örnekler arasındaki ilişkilerin yapısı üzerindedir.

Şekil, iletişim şemasında kullanılan notasyonun ana öğelerini göstermektedir. Etkileşen nesnelerin kendilerini belirtmek için, standart gösterim kullanılır - bir sınıflandırıcı örneğinin adını taşıyan bir dikdörtgen. İşbirliği şemasındaki öğelerin karşılıklı konumu önemli değildir - yalnızca mesajların iletildiği bağlantılar (çoğunlukla çağrışım örnekleri) önemlidir 3 . Mesajların sırasını zaman içinde görüntülemek için hiyerarşik ondalık numaralandırma kullanılır.

1.5.7. Bileşen Şeması

Bileşen Şeması(bileşen diyagramı) - simüle edilmiş sistemi oluşturan modüller (mantıksal veya fiziksel) arasındaki ilişkiyi gösterir.

Bileşen diyagramındaki ana varlık türü, bileşenlerin kendileri (1) ve ayrıca bileşenler arasındaki ilişkinin gösterildiği arayüzlerdir (2). Bileşen şemasında aşağıdaki ilişkiler geçerlidir:

  • bileşenler ve arabirimler arasındaki uygulamalar (bileşen, arabirimi uygular);
  • bileşenler ve arayüzler arasındaki bağımlılıklar (bir bileşen bir arayüz kullanır) 3 .

Şekil, bileşen şemasında kullanılan notasyonun ana öğelerini göstermektedir. Ayrıntılı bir açıklama 3. bölümde verilmiştir.

1.5.8. Yerleştirme şeması

Yerleştirme şeması(dağıtım diyagramı), sistem öğelerinin bileşimini ve ilişkilerini görüntülemenin yanı sıra, yürütme sırasında bilgi işlem kaynaklarına fiziksel olarak nasıl yerleştirildiklerini gösterir.

Böylece, yerleştirme diyagramında, bileşen diyagramına kıyasla iki tür varlık eklenir: yapı 1, bileşen 2 ve düğüm 3'ün uygulamasıdır (düğüm tipini tanımlayan bir sınıflandırıcı veya belirli bir örnek olabilir), yanı sıra düğümler 4 arasında, düğümlerin çalışma zamanında fiziksel olarak bağlantılı olduğunu gösteren bir ilişkilendirme ilişkisi.

Şekil, yerleştirme diyagramında kullanılan notasyonun ana öğelerini göstermektedir. Bir varlığın diğerinin parçası olduğunu göstermek için ya bir "dağıtım" bağımlılık ilişkisi 5 kullanılır ya da bir varlığın şekli başka bir varlığın 6 şeklinin içine yerleştirilir. Diyagramın ayrıntılı bir açıklaması 3. bölümde verilmiştir.