Analisi del software e strumenti di progettazione

L'analisi e la progettazione del software includono tutte le attività che aiutano a trasformare la specifica dei requisiti in implementazione. Le specifiche dei requisiti specificano tutte le aspettative funzionali e non funzionali dal software. Queste specifiche dei requisiti si presentano sotto forma di documenti leggibili e comprensibili, a cui un computer non ha nulla a che fare.

L'analisi e la progettazione del software è la fase intermedia, che aiuta a trasformare i requisiti leggibili dall'uomo in codice reale.

Vediamo alcuni strumenti di analisi e progettazione utilizzati dai progettisti di software:

Diagramma del flusso di dati

Il diagramma del flusso di dati è una rappresentazione grafica del flusso di dati in un sistema informativo. È in grado di rappresentare il flusso di dati in entrata, il flusso di dati in uscita e i dati memorizzati. Il DFD non menziona nulla sul modo in cui i dati fluiscono attraverso il sistema.

C'è una differenza evidente tra DFD e diagramma di flusso. Il diagramma di flusso rappresenta il flusso di controllo nei moduli del programma. I DFD rappresentano il flusso di dati nel sistema a vari livelli. DFD non contiene alcun elemento di controllo o ramo.

Tipi di DFD

I diagrammi del flusso di dati sono logici o fisici.

  • Logical DFD - Questo tipo di DFD si concentra sul processo di sistema e sul flusso di dati nel sistema, ad esempio in un sistema software bancario, il modo in cui i dati vengono spostati tra entità diverse.
  • Physical DFD- Questo tipo di DFD mostra come il flusso di dati è effettivamente implementato nel sistema. È più specifico e vicino all'implementazione.

Componenti DFD

DFD può rappresentare l'origine, la destinazione, l'archiviazione e il flusso di dati utilizzando il seguente set di componenti:

  • Entities- Le entità sono l'origine e la destinazione dei dati informativi. Le entità sono rappresentate da rettangoli con i rispettivi nomi.
  • Process - Le attività e le azioni intraprese sui dati sono rappresentate da rettangoli circolari o con bordi arrotondati.
  • Data Storage - Esistono due varianti di archiviazione dei dati: può essere rappresentata come un rettangolo con l'assenza di entrambi i lati più piccoli o come un rettangolo aperto con un solo lato mancante.
  • Data Flow- Il movimento dei dati è indicato da frecce appuntite. Il movimento dei dati è mostrato dalla base della freccia come origine verso la punta della freccia come destinazione.

Livelli di DFD

  • Level 0- Il DFD con il livello di astrazione più alto è noto come DFD di livello 0, che descrive l'intero sistema informativo come un diagramma che nasconde tutti i dettagli sottostanti. I DFD di livello 0 sono noti anche come DFD a livello di contesto.
  • Level 1- Il DFD di livello 0 è suddiviso in DFD di livello 1 più specifico. Il DFD di livello 1 descrive i moduli di base nel sistema e il flusso di dati tra i vari moduli. Il livello 1 DFD menziona anche i processi di base e le fonti di informazione.
  • Level 2 - A questo livello, DFD mostra come i dati fluiscono all'interno dei moduli menzionati nel Livello 1.

    I DFD di livello superiore possono essere trasformati in DFD di livello inferiore più specifici con un livello di comprensione più profondo a meno che non si raggiunga il livello di specifica desiderato.

Grafici di struttura

Il grafico della struttura è un grafico derivato dal diagramma del flusso di dati. Rappresenta il sistema in modo più dettagliato rispetto a DFD. Suddivide l'intero sistema in moduli funzionali più bassi, descrive le funzioni e le sottofunzioni di ciascun modulo del sistema con maggiore dettaglio rispetto a DFD.

Il grafico della struttura rappresenta la struttura gerarchica dei moduli. Ad ogni livello viene eseguita un'attività specifica.

Ecco i simboli utilizzati nella costruzione dei grafici della struttura:

  • Module- Rappresenta un processo, una subroutine o un'attività. Un modulo di controllo si dirama a più di un sottomodulo. I moduli libreria sono riutilizzabili e richiamabili da qualsiasi modulo.
  • Condition- È rappresentato da un piccolo diamante alla base del modulo. Descrive che il modulo di controllo può selezionare qualsiasi sottoprogramma in base a una determinata condizione.
  • Jump - Viene mostrata una freccia che punta all'interno del modulo per indicare che il controllo salterà al centro del sottomodulo.
  • Loop- Una freccia curva rappresenta il loop nel modulo. Tutti i sottomoduli coperti dal loop ripetono l'esecuzione del modulo.
  • Data flow - Una freccia diretta con un cerchio vuoto all'estremità rappresenta il flusso di dati.
  • Control flow - Una freccia diretta con un cerchio pieno all'estremità rappresenta il flusso di controllo.

Diagramma HIPO

Il diagramma HIPO (Hierarchical Input Process Output) è una combinazione di due metodi organizzati per analizzare il sistema e fornire i mezzi di documentazione. Il modello HIPO è stato sviluppato da IBM nell'anno 1970.

Il diagramma HIPO rappresenta la gerarchia dei moduli nel sistema software. L'analista utilizza il diagramma HIPO per ottenere una visione di alto livello delle funzioni del sistema. Decompone le funzioni in sotto-funzioni in modo gerarchico. Raffigura le funzioni svolte dal sistema.

I diagrammi HIPO sono utili a scopo di documentazione. La loro rappresentazione grafica rende più facile per designer e manager avere un'idea pittorica della struttura del sistema.

A differenza del diagramma IPO (Input Process Output), che rappresenta il flusso di controllo e dati in un modulo, HIPO non fornisce alcuna informazione sul flusso di dati o sul flusso di controllo.

Esempio

Entrambe le parti del diagramma HIPO, della presentazione gerarchica e del diagramma IPO vengono utilizzate per la progettazione della struttura del programma software e per la documentazione dello stesso.

Inglese strutturato

La maggior parte dei programmatori non è a conoscenza del quadro generale del software, quindi si basa solo su ciò che i loro manager dicono loro di fare. È responsabilità della gestione superiore del software fornire informazioni accurate ai programmatori per sviluppare codice accurato ma veloce.

Altre forme di metodi, che utilizzano grafici o diagrammi, possono talvolta essere interpretati in modo diverso da persone diverse.

Quindi, analisti e progettisti del software escogitano strumenti come l'inglese strutturato. Non è altro che la descrizione di ciò che è necessario per codificare e di come codificarlo. L'inglese strutturato aiuta il programmatore a scrivere codice senza errori.

Altre forme di metodi, che utilizzano grafici o diagrammi, possono talvolta essere interpretati in modo diverso da persone diverse. Qui, sia l'inglese strutturato che lo pseudo-codice cercano di mitigare questo divario di comprensione.

L'inglese strutturato è il Utilizza parole inglesi semplici nel paradigma di programmazione strutturata. Non è il codice definitivo, ma una sorta di descrizione di ciò che è necessario per codificare e come codificarlo. Di seguito sono riportati alcuni segni di programmazione strutturata.

IF-THEN-ELSE,  
DO-WHILE-UNTIL

L'analista utilizza la stessa variabile e il nome dei dati, che sono memorizzati nel Dizionario dei dati, rendendo molto più semplice scrivere e comprendere il codice.

Esempio

Prendiamo lo stesso esempio di autenticazione del cliente nell'ambiente di acquisto online. Questa procedura per autenticare il cliente può essere scritta in inglese strutturato come:

Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
   Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
   PRINT error message
   Call procedure NEW_CUSTOMER_REQUEST()
ENDIF

Il codice scritto in inglese strutturato è più simile all'inglese parlato giorno per giorno. Non può essere implementato direttamente come codice di software. L'inglese strutturato è indipendente dal linguaggio di programmazione.

Pseudo-codice

Lo pseudo codice è scritto più vicino al linguaggio di programmazione. Può essere considerato un linguaggio di programmazione aumentato, pieno di commenti e descrizioni.

Lo pseudo codice evita la dichiarazione delle variabili ma vengono scritti utilizzando alcuni costrutti del linguaggio di programmazione reale, come C, Fortran, Pascal ecc.

Lo pseudo codice contiene più dettagli di programmazione rispetto all'inglese strutturato. Fornisce un metodo per eseguire l'attività, come se un computer stesse eseguendo il codice.

Esempio

Programma per stampare Fibonacci fino a n numeri.

void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
   if a greater than b 
   {
      Increase b by a;
      Print b;
   } 
   else if b greater than a
   {
      increase a by b;
      print a;
   }
}

Tabelle delle decisioni

Una tabella decisionale rappresenta le condizioni e le rispettive azioni da intraprendere per affrontarle, in un formato tabellare strutturato.

È un potente strumento per eseguire il debug e prevenire gli errori. Aiuta a raggruppare informazioni simili in una singola tabella e quindi combinando le tabelle offre un processo decisionale facile e conveniente.

Creazione della tabella delle decisioni

Per creare la tabella decisionale, lo sviluppatore deve seguire i quattro passaggi di base:

  • Identificare tutte le possibili condizioni da affrontare
  • Determina le azioni per tutte le condizioni identificate
  • Crea il numero massimo di regole possibili
  • Definisci l'azione per ogni regola

Le tabelle delle decisioni dovrebbero essere verificate dagli utenti finali e possono essere semplificate ultimamente eliminando regole e azioni duplicate.

Esempio

Facciamo un semplice esempio del problema quotidiano con la nostra connettività Internet. Iniziamo identificando tutti i problemi che possono sorgere durante l'avvio di Internet e le rispettive possibili soluzioni.

Elenchiamo tutti i possibili problemi nelle condizioni della colonna e le azioni prospettiche nella colonna Azioni.

Condizioni / azioni Regole
Condizioni Spettacoli collegati N N N N Y Y Y Y
Ping sta funzionando N N Y Y N N Y Y
Apre il sito web Y N Y N Y N Y N
Azioni Verificare il cavo di rete X
Controlla il router Internet X X X X
Riavvia il browser web X
Contatta il fornitore di servizi X X X X X X
Nessuna azione
Tabella: Tabella decisionale - Risoluzione dei problemi Internet interna

Modello Entità-Relazione

Il modello Entità-Relazione è un tipo di modello di database basato sulla nozione di entità del mondo reale e relazione tra di loro. Possiamo mappare lo scenario del mondo reale sul modello di database ER. ER Model crea un insieme di entità con i loro attributi, un insieme di vincoli e relazioni tra di loro.

Il modello ER è utilizzato al meglio per la progettazione concettuale del database. Il modello ER può essere rappresentato come segue:

  • Entity - Un'entità in ER Model è un essere del mondo reale, che ha alcune proprietà chiamate attributes. Ogni attributo è definito dal corrispondente insieme di valori, chiamatodomain.

    Ad esempio, considera un database scolastico. Qui, uno studente è un'entità. Lo studente ha vari attributi come nome, id, età e classe ecc.

  • Relationship - Viene chiamata l'associazione logica tra entità relationship. Le relazioni vengono mappate con le entità in vari modi. Le cardinalità di mappatura definiscono il numero di associazioni tra due entità.

    Mappatura delle cardinalità:

    • uno a uno
    • uno a molti
    • molti a uno
    • molti a molti

Dizionario dei dati

Il dizionario dei dati è la raccolta centralizzata di informazioni sui dati. Memorizza il significato e l'origine dei dati, la sua relazione con altri dati, il formato dei dati per l'utilizzo, ecc. Il dizionario dei dati ha definizioni rigorose di tutti i nomi per facilitare i progettisti di software e utenti.

Il dizionario dei dati viene spesso definito come repository di metadati (dati sui dati). Viene creato insieme al modello DFD (Data Flow Diagram) del programma software e si prevede che venga aggiornato ogni volta che DFD viene modificato o aggiornato.

Requisiti del dizionario dei dati

I dati vengono referenziati tramite dizionario dati durante la progettazione e l'implementazione del software. Il dizionario dei dati elimina ogni possibilità di ambiguità. Aiuta a mantenere sincronizzato il lavoro di programmatori e progettisti utilizzando lo stesso riferimento a oggetti ovunque nel programma.

Il dizionario dei dati fornisce una modalità di documentazione per il sistema di database completo in un unico posto. La convalida del DFD viene eseguita utilizzando il dizionario dei dati.

Contenuti

Il dizionario dei dati dovrebbe contenere informazioni su quanto segue

  • Flusso di dati
  • Struttura dati
  • Elementi di dati
  • Archivi dati
  • Elaborazione dati

Il flusso di dati è descritto mediante DFD come studiato in precedenza e rappresentato in forma algebrica come descritto.

= Composto da
{} Ripetizione
() Opzionale
+ E
[/] O

Esempio

Indirizzo = numero civico + (via / area) + città + stato

ID corso = numero del corso + nome del corso + livello del corso + voti del corso

Elementi di dati

Gli elementi dei dati sono costituiti da nome e descrizioni di dati e elementi di controllo, archivi di dati interni o esterni, ecc. Con i seguenti dettagli:

  • Nome principale
  • Nome secondario (alias)
  • Caso d'uso (come e dove utilizzarlo)
  • Descrizione del contenuto (notazione ecc.)
  • Informazioni supplementari (valori preimpostati, vincoli ecc.)

Archivio dati

Memorizza le informazioni da dove i dati entrano nel sistema ed escono dal sistema. Il Data Store può includere:

  • Files
    • Interno al software.
    • Esterno al software ma sulla stessa macchina.
    • Esterno al software e al sistema, situato su una macchina diversa.
  • Tables
    • Convenzione di denominazione
    • Proprietà di indicizzazione

Elaborazione dati

Esistono due tipi di trattamento dei dati:

  • Logical: Come lo vede l'utente
  • Physical: Come lo vede il software