OOAD - Modellazione funzionale

Il Functional Modeling offre la prospettiva del processo del modello di analisi orientato agli oggetti e una panoramica di ciò che il sistema dovrebbe fare. Definisce la funzione dei processi interni del sistema con l'ausilio di Data Flow Diagrams (DFD). Descrive la derivazione funzionale dei valori dei dati senza indicare come vengono derivati ​​quando vengono calcolati o perché devono essere calcolati.

Diagrammi del flusso di dati

La modellazione funzionale è rappresentata attraverso una gerarchia di DFD. Il DFD è una rappresentazione grafica di un sistema che mostra gli input al sistema, l'elaborazione sugli input, gli output del sistema e gli archivi dati interni. I DFD illustrano la serie di trasformazioni o calcoli eseguiti sugli oggetti o sul sistema, nonché i controlli e gli oggetti esterni che influenzano la trasformazione.

Rumbaugh et al. hanno definito DFD come, "Un diagramma di flusso di dati è un grafico che mostra il flusso dei valori dei dati dalle loro origini negli oggetti attraverso processi che li trasformano nelle loro destinazioni su altri oggetti."

Le quattro parti principali di un DFD sono:

  • Processes,
  • Flussi di dati,
  • Attori e
  • Archivi dati.

Le altre parti di un DFD sono:

  • Vincoli e
  • Flussi di controllo.

Caratteristiche di un DFD

Processi

I processi sono le attività di calcolo che trasformano i valori dei dati. Un intero sistema può essere visualizzato come un processo di alto livello. Un processo può essere ulteriormente suddiviso in componenti più piccoli. Il processo di livello più basso può essere una semplice funzione.

Representation in DFD - Un processo è rappresentato come un'ellisse con il suo nome scritto al suo interno e contiene un numero fisso di valori di dati di input e output.

Example - La figura seguente mostra un processo Compute_HCF_LCM che accetta due numeri interi come input e restituisce i rispettivi HCF (fattore comune più alto) e LCM (multiplo minimo comune).

Flussi di dati

Il flusso di dati rappresenta il flusso di dati tra due processi. Potrebbe essere tra un attore e un processo o tra un archivio dati e un processo. Un flusso di dati denota il valore di un elemento di dati a un certo punto del calcolo. Questo valore non viene modificato dal flusso di dati.

Representation in DFD - Un flusso di dati è rappresentato da un arco diretto o da una freccia, etichettato con il nome dell'elemento di dati che trasporta.

Nella figura sopra, Integer_a e Integer_b rappresentano i flussi di dati di input al processo, mentre LCM e HCF sono i flussi di dati di output.

Un flusso di dati può essere biforcato nei seguenti casi:

  • Il valore di uscita viene inviato a più posizioni come mostrato nella figura seguente. Qui, le frecce di output sono prive di etichetta in quanto indicano lo stesso valore.

  • Il flusso di dati contiene un valore aggregato e ciascuno dei componenti viene inviato a posizioni diverse, come mostrato nella figura seguente. Qui, ciascuno dei componenti biforcuti è etichettato.

Attori

Gli attori sono gli oggetti attivi che interagiscono con il sistema producendo dati e inserendoli nel sistema oppure consumando dati prodotti dal sistema. In altre parole, gli attori fungono da fonti e serbatoi di dati.

Representation in DFD- Un attore è rappresentato da un rettangolo. Gli attori sono collegati agli ingressi e alle uscite e giacciono sul confine del DFD.

Example - La figura seguente mostra gli attori, ovvero Customer e Sales_Clerk in un sistema di vendita al banco.

Archivi dati

Gli archivi dati sono oggetti passivi che fungono da repository di dati. A differenza degli attori, non possono eseguire alcuna operazione. Sono utilizzati per memorizzare i dati e recuperare i dati memorizzati. Rappresentano una struttura dati, un file su disco o una tabella in un database.

Representation in DFD- Un archivio dati è rappresentato da due linee parallele contenenti il ​​nome dell'archivio dati. Ogni archivio dati è connesso ad almeno un processo. Le frecce di input contengono informazioni per modificare il contenuto dell'archivio dati, mentre le frecce di output contengono informazioni recuperate dall'archivio dati. Quando una parte delle informazioni deve essere recuperata, la freccia di output viene etichettata. Una freccia senza etichetta indica il recupero completo dei dati. Una freccia bidirezionale implica sia il recupero che l'aggiornamento.

Example- La figura seguente mostra un archivio dati, Sales_Record, che archivia i dettagli di tutte le vendite. L'input all'archivio dati comprende i dettagli delle vendite come articolo, importo di fatturazione, data, ecc. Per trovare le vendite medie, il processo recupera i record delle vendite e calcola la media.

Vincoli

I vincoli specificano le condizioni o le restrizioni che devono essere soddisfatte nel tempo. Consentono di aggiungere nuove regole o modificare quelle esistenti. I vincoli possono apparire in tutti e tre i modelli di analisi orientata agli oggetti.

  • Nella modellazione a oggetti, i vincoli definiscono la relazione tra gli oggetti. Possono anche definire la relazione tra i diversi valori che un oggetto può assumere in momenti diversi.

  • Nella modellazione dinamica, i vincoli definiscono la relazione tra gli stati e gli eventi di oggetti diversi.

  • Nella modellazione funzionale, i vincoli definiscono le restrizioni sulle trasformazioni e sui calcoli.

Representation - Un vincolo viene visualizzato come una stringa all'interno di parentesi graffe.

Example- La figura seguente mostra una porzione di DFD per il calcolo dello stipendio dei dipendenti di un'azienda che ha deciso di dare incentivi a tutti i dipendenti del reparto vendite e incrementare lo stipendio di tutti i dipendenti del reparto risorse umane. Si può vedere che il vincolo {Dept: Sales} fa sì che l'incentivo venga calcolato solo se il dipartimento è vendite e il vincolo {Dept: HR} fa calcolare l'incremento solo se il dipartimento è HR.

Flussi di controllo

Un processo può essere associato a un determinato valore booleano e viene valutato solo se il valore è vero, sebbene non sia un input diretto al processo. Questi valori booleani sono chiamati flussi di controllo.

Representation in DFD - I flussi di controllo sono rappresentati da un arco tratteggiato dal processo che produce il valore booleano al processo da essi controllato.

Example- La figura seguente rappresenta un DFD per la divisione aritmetica. Il Divisor è testato per diverso da zero. Se non è zero, il flusso di controllo OK ha un valore True e successivamente il processo Divide calcola il Quoziente e il Resto.

Sviluppo del modello DFD di un sistema

Per sviluppare il modello DFD di un sistema, viene costruita una gerarchia di DFD. Il DFD di primo livello comprende un singolo processo e gli attori che interagiscono con esso.

Ad ogni successivo livello inferiore, vengono gradualmente inclusi ulteriori dettagli. Un processo viene scomposto in sottoprocessi, i flussi di dati tra i sottoprocessi vengono identificati, i flussi di controllo vengono determinati e gli archivi dati vengono definiti. Durante la scomposizione di un processo, il flusso di dati in entrata o in uscita dal processo deve corrispondere al flusso di dati al livello successivo di DFD.

Example- Consideriamo un sistema software, Wholesaler Software, che automatizza le transazioni di un negozio all'ingrosso. Il negozio vende all'ingrosso e ha una clientela composta da commercianti e proprietari di negozi al dettaglio. Ad ogni cliente viene chiesto di registrarsi con i propri dati e viene assegnato un codice cliente univoco, C_Code. Una volta conclusa una vendita, il negozio ne registra i dettagli e invia la merce per la spedizione. Ogni anno, il negozio distribuisce regali di Natale ai suoi clienti, che comprendono una moneta d'argento o una moneta d'oro a seconda delle vendite totali e della decisione del proprietario.

Il modello funzionale per il software all'ingrosso è fornito di seguito. La figura seguente mostra il DFD di primo livello. Mostra il software come un singolo processo e gli attori che interagiscono con esso.

Gli attori del sistema sono:

  • Customers
  • Salesperson
  • Proprietor

Nel DFD di livello successivo, come mostrato nella figura seguente, vengono identificati i principali processi del sistema, vengono definiti gli archivi dati e viene stabilita l'interazione dei processi con gli attori e vengono stabiliti gli archivi dati.

Nel sistema è possibile identificare tre processi, che sono:

  • Registrare i clienti
  • Process Sales
  • Accertare regali

Gli archivi dati che saranno richiesti sono:

  • Dettagli cliente
  • Dettagli di vendita
  • Dettagli regalo

La figura seguente mostra i dettagli del processo di registrazione del cliente. Ci sono tre processi in esso, Verifica dettagli, Genera C_Code e Aggiorna dettagli cliente. Quando vengono inseriti i dettagli del cliente, vengono verificati. Se i dati sono corretti, viene generato C_Code e vengono aggiornati i dettagli del cliente dell'archivio dati.

La figura seguente mostra l'espansione del processo Acquisisci doni. Ha due processi in esso, Trova le vendite totali e Decidi il tipo di moneta regalo. Il processo Trova vendite totali calcola le vendite totali annuali corrispondenti a ciascun cliente e registra i dati. Prendendo questo record e la decisione del proprietario come input, le monete regalo vengono assegnate tramite il processo Decidi tipo di moneta regalo.

Vantaggi e svantaggi di DFD

Vantaggi Svantaggi
I DFD rappresentano i confini di un sistema e quindi sono utili per rappresentare la relazione tra gli oggetti esterni ei processi all'interno del sistema. La creazione dei DFD richiede molto tempo, il che potrebbe non essere fattibile per scopi pratici.
Aiutano gli utenti ad avere una conoscenza del sistema. I DFD non forniscono alcuna informazione sul comportamento dipendente dal tempo, ovvero non specificano quando vengono eseguite le trasformazioni.
La rappresentazione grafica serve come modello per i programmatori per sviluppare un sistema. Non fanno luce sulla frequenza dei calcoli o sulle ragioni dei calcoli.
I DFD forniscono informazioni dettagliate sui processi di sistema. La preparazione dei DFD è un processo complesso che richiede una notevole esperienza. Inoltre, è difficile da capire per una persona non tecnica.
Vengono utilizzati come parte della documentazione del sistema. Il metodo di preparazione è soggettivo e lascia ampio spazio all'imprecisione.

Relazione tra modelli oggetto, dinamici e funzionali

Il modello a oggetti, il modello dinamico e il modello funzionale sono complementari tra loro per un'analisi orientata agli oggetti completa.

  • La modellazione a oggetti sviluppa la struttura statica del sistema software in termini di oggetti. Quindi mostra gli "agenti" di un sistema.

  • La modellazione dinamica sviluppa il comportamento temporale degli oggetti in risposta ad eventi esterni. Mostra le sequenze di operazioni eseguite sugli oggetti.

  • Il modello funzionale offre una panoramica di ciò che il sistema dovrebbe fare.

Modello funzionale e modello a oggetti

Le quattro parti principali di un modello funzionale in termini di modello a oggetti sono:

  • Process - I processi implicano i metodi degli oggetti che devono essere implementati.

  • Actors - Gli attori sono gli oggetti nel modello a oggetti.

  • Data Stores - Questi sono oggetti nel modello a oggetti o attributi degli oggetti.

  • Data Flows- I flussi di dati da o verso gli attori rappresentano operazioni su o da parte di oggetti. I flussi di dati da o verso gli archivi dati rappresentano query o aggiornamenti.

Modello funzionale e modello dinamico

Il modello dinamico indica quando vengono eseguite le operazioni, mentre il modello funzionale indica come vengono eseguite e quali argomenti sono necessari. Poiché gli attori sono oggetti attivi, il modello dinamico deve specificare quando agisce. Gli archivi dati sono oggetti passivi e rispondono solo ad aggiornamenti e query; pertanto il modello dinamico non ha bisogno di specificare quando agiscono.

Modello a oggetti e modello dinamico

Il modello dinamico mostra lo stato degli oggetti e le operazioni eseguite sulle occorrenze degli eventi e sui successivi cambi di stato. Lo stato dell'oggetto come risultato delle modifiche viene mostrato nel modello a oggetti.