OOAD - Fonksiyonel Modelleme

Fonksiyonel Modelleme, nesneye yönelik analiz modelinin süreç perspektifini ve sistemin ne yapması gerektiğine dair genel bir bakış sağlar. Veri Akış Diyagramları (DFD'ler) yardımıyla sistemdeki iç süreçlerin işlevini tanımlar. Veri değerlerinin, hesaplandıklarında nasıl türetildiklerini veya neden hesaplanmaları gerektiğini belirtmeden fonksiyonel türetilmesini gösterir.

Veri Akış Şemaları

Fonksiyonel Modelleme, DFD'lerin bir hiyerarşisi aracılığıyla temsil edilir. DFD, sisteme girişleri, girişler üzerindeki işlemleri, sistemin çıktılarını ve dahili veri depolarını gösteren bir sistemin grafiksel bir temsilidir. DFD'ler, nesneler veya sistem üzerinde gerçekleştirilen dönüşümler veya hesaplamalar dizisini ve dönüşümü etkileyen harici kontrolleri ve nesneleri gösterir.

Rumbaugh vd. DFD'yi şu şekilde tanımlamışlardır: "Bir veri akış diyagramı, nesnelerdeki kaynaklarından gelen veri değerlerinin akışını, onları diğer nesneler üzerindeki hedeflerine dönüştüren süreçler yoluyla gösteren bir grafiktir."

Bir DFD'nin dört ana bölümü şunlardır:

  • Processes,
  • Veri Akışları,
  • Aktörler ve
  • Veri Depoları.

DFD'nin diğer kısımları -

  • Kısıtlamalar ve
  • Kontrol Akışları.

DFD'nin özellikleri

Süreçler

Süreçler, veri değerlerini dönüştüren hesaplama etkinlikleridir. Bütün bir sistem üst düzey bir süreç olarak görselleştirilebilir. Bir işlem ayrıca daha küçük bileşenlere bölünebilir. En düşük seviyeli süreç basit bir işlev olabilir.

Representation in DFD - Bir süreç, içinde adı yazılı olan bir elips olarak temsil edilir ve sabit sayıda girdi ve çıktı verisi değeri içerir.

Example - Aşağıdaki şekil, iki tamsayıyı giriş olarak kabul eden ve bunların HCF (en yüksek ortak faktör) ve LCM (en az ortak çoklu) çıkışlarını veren bir İşlem Compute_HCF_LCM'yi göstermektedir.

Veri Akışları

Veri akışı, iki işlem arasındaki veri akışını temsil eder. Bir aktör ile bir süreç arasında veya bir veri deposu ile bir süreç arasında olabilir. Bir veri akışı, hesaplamanın bir noktasında bir veri öğesinin değerini belirtir. Bu değer, veri akışı tarafından değiştirilmez.

Representation in DFD - Bir veri akışı, taşıdığı veri öğesinin adıyla etiketlenmiş, yönlendirilmiş bir yay veya bir okla temsil edilir.

Yukarıdaki şekilde, Tamsayı_a ve Tamsayı_b, sürece giriş veri akışlarını temsil ederken, LCM ve HCF çıktı veri akışlarıdır.

Aşağıdaki durumlarda bir veri akışı çatallanabilir -

  • Çıkış değeri, aşağıdaki şekilde gösterildiği gibi birkaç yere gönderilir. Burada, aynı değeri gösterdikleri için çıkış okları etiketsizdir.

  • Veri akışı toplu bir değer içerir ve bileşenlerin her biri aşağıdaki şekilde gösterildiği gibi farklı yerlere gönderilir. Burada çatallı bileşenlerin her biri etiketlenmiştir.

Aktörler

Aktörler, ya veri üreterek ve sisteme girerek ya da sistem tarafından üretilen verileri tüketerek sistemle etkileşime giren aktif nesnelerdir. Başka bir deyişle, aktörler verilerin kaynağı ve yutağı olarak hizmet eder.

Representation in DFD- Bir oyuncu bir dikdörtgenle temsil edilir. Aktörler giriş ve çıkışlara bağlıdır ve DFD'nin sınırında yer alır.

Example - Aşağıdaki şekil, bir sayaç satış sistemindeki aktörler, Müşteri ve Sales_Clerk'i göstermektedir.

Veri Depoları

Veri depoları, bir veri deposu görevi gören pasif nesnelerdir. Oyuncuların aksine herhangi bir işlem yapamazlar. Verileri saklamak ve saklanan verileri almak için kullanılırlar. Bir veri yapısını, bir disk dosyasını veya bir veritabanındaki bir tabloyu temsil ederler.

Representation in DFD- Bir veri deposu, veri deposunun adını içeren iki paralel çizgi ile temsil edilir. Her veri deposu en az bir işleme bağlıdır. Giriş okları, veri deposunun içeriğini değiştirmek için bilgiler içerirken, çıkış okları veri deposundan alınan bilgileri içerir. Bilginin bir kısmı alınacağı zaman, çıktı oku etiketlenir. Etiketsiz bir ok, tam veri almayı gösterir. İki yönlü bir ok, hem alma hem de güncelleme anlamına gelir.

Example- Aşağıdaki şekil, tüm satışların ayrıntılarını saklayan Sales_Record veri deposunu göstermektedir. Veri deposuna giriş, kalem, fatura tutarı, tarih vb. Gibi satış ayrıntılarından oluşur. Ortalama satışları bulmak için süreç, satış kayıtlarını alır ve ortalamayı hesaplar.

Kısıtlamalar

Kısıtlamalar, zaman içinde yerine getirilmesi gereken koşulları veya kısıtlamaları belirtir. Yeni kuralların eklenmesine veya mevcut olanların değiştirilmesine izin verirler. Kısıtlamalar, nesne yönelimli analizin üç modelinde de görünebilir.

  • Nesne Modellemede, kısıtlamalar nesneler arasındaki ilişkiyi tanımlar. Bir nesnenin farklı zamanlarda alabileceği farklı değerler arasındaki ilişkiyi de tanımlayabilirler.

  • Dinamik Modellemede, kısıtlamalar, farklı nesnelerin durumları ve olayları arasındaki ilişkiyi tanımlar.

  • Fonksiyonel Modellemede kısıtlar, dönüşümler ve hesaplamalar üzerindeki kısıtlamaları tanımlar.

Representation - Bir kısıtlama, kaşlı ayraçlar içinde bir dizge olarak oluşturulur.

Example- Aşağıdaki şekil, satış departmanının tüm çalışanlarına teşvik vermeye ve İK departmanının tüm çalışanlarının maaşını artırmaya karar veren bir şirketin çalışanlarının maaşını hesaplamak için DFD'nin bir bölümünü göstermektedir. {Dept: Sales} kısıtlamasının sadece departman satış ise teşvikin hesaplanmasına neden olduğu ve {Dept: HR} kısıtının ise artışın sadece departman İK ise hesaplanmasına neden olduğu görülmektedir.

Kontrol Akışları

Bir süreç, belirli bir Boolean değeriyle ilişkilendirilebilir ve yalnızca değer doğruysa değerlendirilir, ancak bu sürece doğrudan bir girdi değildir. Bu Boole değerlerine kontrol akışları denir.

Representation in DFD - Kontrol akışları, Boole değerini üreten süreçten onlar tarafından kontrol edilen sürece kadar noktalı bir yay ile temsil edilir.

Example- Aşağıdaki şekil, aritmetik bölme için bir DFD'yi temsil etmektedir. Bölen, sıfır olmayan için test edilir. Sıfır değilse, OK kontrol akışı True değerine sahiptir ve daha sonra Bölme işlemi Bölümü ve Kalanı hesaplar.

Bir Sistemin DFD Modelini Geliştirme

Bir sistemin DFD modelini geliştirmek için, bir DFD hiyerarşisi oluşturulur. Üst düzey DFD, tek bir süreçten ve bununla etkileşime giren aktörlerden oluşur.

Birbirini izleyen her alt düzeyde, daha fazla ayrıntı kademeli olarak dahil edilir. Bir süreç alt süreçlere ayrıştırılır, alt süreçler arasındaki veri akışları belirlenir, kontrol akışları belirlenir ve veri depoları tanımlanır. Bir süreci ayrıştırırken, sürece giren veya çıkan veri akışı, DFD'nin bir sonraki düzeyindeki veri akışıyla eşleşmelidir.

Example- Bir toptan satış mağazasının işlemlerini otomatikleştiren bir yazılım sistemi olan Toptancı Yazılımı düşünelim. Mağaza toplu olarak satılır ve tüccarlar ve perakende mağaza sahiplerinden oluşan bir müşteri kitlesine sahiptir. Her müşteriden kendi ayrıntılarıyla kaydolması istenir ve kendisine benzersiz bir müşteri kodu, C_Code verilir. Bir satış yapıldıktan sonra, mağaza ayrıntılarını kaydeder ve malları sevkiyat için gönderir. Mağaza her yıl müşterilerine toplam satışa ve mal sahibinin kararına bağlı olarak bir gümüş para veya bir altın madeni paradan oluşan Noel hediyeleri dağıtır.

Toptan Satış Yazılımının işlevsel modeli aşağıda verilmiştir. Aşağıdaki şekil üst düzey DFD'yi göstermektedir. Yazılımı tek bir süreç olarak ve onunla etkileşime giren aktörleri gösterir.

Sistemdeki aktörler -

  • Customers
  • Salesperson
  • Proprietor

Bir sonraki seviye DFD'de, aşağıdaki şekilde gösterildiği gibi, sistemin ana süreçleri tanımlanır, veri depoları tanımlanır ve süreçlerin aktörlerle etkileşimi ve veri depoları oluşturulur.

Sistemde üç süreç tanımlanabilir, bunlar:

  • Müşterileri Kaydet
  • Satış Süreci
  • Kesin Hediyeler

Gerekli olacak veri depoları şunlardır:

  • Müşteri detayları
  • Satış Ayrıntıları
  • Hediye Detayları

Aşağıdaki şekil Müşteriyi Kaydet işleminin ayrıntılarını gösterir. İçinde üç işlem vardır: Ayrıntıları Doğrula, Kod Oluşturma ve Müşteri Ayrıntılarını Güncelle. Müşterinin detayları girildiğinde doğrulanır. Veriler doğruysa, C_Code oluşturulur ve Müşteri Ayrıntıları veri deposu güncellenir.

Aşağıdaki şekil, Kesin Hediyeler sürecinin genişlemesini göstermektedir. İçinde Toplam Satışı Bul ve Hediye Coin Türüne Karar Ver olmak üzere iki süreci vardır. Toplam Satış Bul işlemi, her müşteriye karşılık gelen yıllık toplam satışları hesaplar ve verileri kaydeder. Bu kayıt ve mal sahibinin kararı girdi olarak alınarak, hediye jetonları, Hediye Jetonuna Karar Verme işlemi ile tahsis edilir.

DFD'nin Avantaj ve Dezavantajları

Avantajlar Dezavantajları
DFD'ler bir sistemin sınırlarını tasvir eder ve bu nedenle, harici nesneler ile sistem içindeki işlemler arasındaki ilişkiyi tasvir etmede yardımcı olur. DFD'lerin oluşturulması uzun zaman alır ve bu, pratik amaçlar için uygun olmayabilir.
Kullanıcıların sistem hakkında bilgi sahibi olmalarına yardımcı olurlar. DFD'ler, zamana bağlı davranış hakkında herhangi bir bilgi sağlamaz, yani dönüşümlerin ne zaman yapıldığını belirtmezler.
Grafiksel temsil, programcıların bir sistem geliştirmesi için bir taslak görevi görür. Hesaplamaların sıklığına veya hesaplamaların nedenlerine ışık tutmazlar.
DFD'ler, sistem süreçleri hakkında ayrıntılı bilgi sağlar. DFD'lerin hazırlanması, önemli ölçüde uzmanlık gerektiren karmaşık bir süreçtir. Ayrıca, teknik bilgisi olmayan bir kişinin anlaması zordur.
Sistem dokümantasyonunun bir parçası olarak kullanılırlar. Hazırlama yöntemi özneldir ve geniş kapsamın belirsiz olmasını sağlar.

Nesne, Dinamik ve İşlevsel Modeller arasındaki İlişki

Nesne Modeli, Dinamik Model ve İşlevsel Model, eksiksiz bir Nesne Yönelimli Analiz için birbirini tamamlar.

  • Nesne modelleme, yazılım sisteminin nesneler açısından statik yapısını geliştirir. Böylece bir sistemin “uygulayıcılarını” gösterir.

  • Dinamik Modelleme, dış olaylara yanıt olarak nesnelerin zamansal davranışını geliştirir. Nesneler üzerinde gerçekleştirilen işlemlerin sırasını gösterir.

  • İşlevsel model, sistemin ne yapması gerektiğine dair bir genel bakış sağlar.

Fonksiyonel Model ve Nesne Modeli

İşlevsel Modelin nesne modeli açısından dört ana bölümü şunlardır:

  • Process - Süreçler, uygulanması gereken nesnelerin yöntemlerini ifade eder.

  • Actors - Aktörler, nesne modelindeki nesnelerdir.

  • Data Stores - Bunlar, nesne modelindeki nesneler veya nesnelerin nitelikleridir.

  • Data Flows- Aktörlere veya aktörlerden veri akışları, nesneler üzerindeki veya nesneler tarafından gerçekleştirilen işlemleri temsil eder. Veri depolarına giden veya gelen veri akışları, sorguları veya güncellemeleri temsil eder.

Fonksiyonel Model ve Dinamik Model

Dinamik model, işlemlerin ne zaman yapıldığını belirtirken, fonksiyonel model bunların nasıl gerçekleştirildiğini ve hangi argümanların gerekli olduğunu belirtir. Aktörler aktif nesneler olduğundan, dinamik model ne zaman hareket ettiğini belirtmelidir. Veri depoları pasif nesnelerdir ve yalnızca güncellemelere ve sorgulara yanıt verirler; bu nedenle dinamik modelin ne zaman hareket edeceklerini belirtmesi gerekmez.

Nesne Modeli ve Dinamik Model

Dinamik model, nesnelerin durumunu ve olayların oluşumunda gerçekleştirilen işlemleri ve durumlardaki sonraki değişiklikleri gösterir. Değişikliklerin bir sonucu olarak nesnenin durumu, nesne modelinde gösterilir.