Strategie di progettazione

Strategia top-down

La strategia top-down utilizza l'approccio modulare per sviluppare il design di un sistema. Si chiama così perché parte dal modulo superiore o di livello più alto e si sposta verso i moduli di livello più basso.

In questa tecnica, viene identificato il modulo di livello più alto o il modulo principale per lo sviluppo del software. Il modulo principale è suddiviso in diversi sottomoduli o segmenti più piccoli e più semplici in base al compito svolto da ciascun modulo. Quindi, ogni sottomodulo è ulteriormente suddiviso in diversi sottomoduli di livello inferiore successivo. Questo processo di divisione di ogni modulo in più sottomoduli continua fino a quando i moduli di livello più basso, che non possono essere ulteriormente suddivisi, non vengono identificati.

Strategia dal basso verso l'alto

La strategia Bottom-Up segue l'approccio modulare per sviluppare il design del sistema. Si chiama così perché parte dai moduli di livello inferiore o più elementari e si sposta verso i moduli di livello più alto.

In questa tecnica,

  • Vengono identificati i moduli al livello più elementare o più basso.

  • Questi moduli vengono quindi raggruppati in base alla funzione svolta da ciascun modulo per formare i successivi moduli di livello superiore.

  • Quindi, questi moduli vengono ulteriormente combinati per formare i successivi moduli di livello superiore.

  • Questo processo di raggruppamento di diversi moduli più semplici per formare moduli di livello superiore continua fino a quando non viene raggiunto il modulo principale del processo di sviluppo del sistema.

Design strutturato

La progettazione strutturata è una metodologia basata sul flusso di dati che aiuta a identificare l'input e l'output del sistema di sviluppo. L'obiettivo principale del design strutturato è ridurre al minimo la complessità e aumentare la modularità di un programma. Il design strutturato aiuta anche a descrivere gli aspetti funzionali del sistema.

Nella progettazione strutturata, le specifiche del sistema fungono da base per rappresentare graficamente il flusso di dati e la sequenza dei processi coinvolti nello sviluppo di un software con l'aiuto dei DFD. Dopo aver sviluppato i DFD per il sistema software, il passaggio successivo consiste nello sviluppare il grafico della struttura.

Modularizzazione

La progettazione strutturata divide il programma in moduli piccoli e indipendenti. Questi sono organizzati dall'alto verso il basso con i dettagli mostrati in basso.

Pertanto, la progettazione strutturata utilizza un approccio chiamato Modularizzazione o scomposizione per ridurre al minimo la complessità e gestire il problema suddividendolo in segmenti più piccoli.

Advantages

  • Le interfacce critiche vengono testate per prime.
  • Fornisce astrazione.
  • Consente a più programmatori di lavorare contemporaneamente.
  • Consente il riutilizzo del codice.
  • Fornisce controllo e migliora il morale.
  • Rende più facile l'identificazione della struttura.

Grafici strutturati

I grafici strutturati sono uno strumento consigliato per la progettazione di sistemi modulari top down che definiscono i vari moduli di sviluppo del sistema e la relazione tra ciascun modulo. Mostra il modulo di sistema e la loro relazione tra di loro.

Consiste in un diagramma costituito da caselle rettangolari che rappresentano i moduli, frecce di collegamento o linee.

  • Control Module - È un modulo di livello superiore che dirige i moduli di livello inferiore, chiamati subordinate modules.

  • Library Module - È un modulo riutilizzabile e può essere richiamato da più di un punto nel grafico.

Abbiamo due diversi approcci per progettare un grafico strutturato:

  • Transform-Centered Structured Charts - Vengono utilizzati quando tutte le transazioni seguono lo stesso percorso.

  • Transaction–Centered Structured Charts - Vengono utilizzati quando tutte le transazioni non seguono lo stesso percorso.

Obiettivi dell'utilizzo dei diagrammi di flusso della struttura

  • Per incoraggiare un design top-down.

  • Supportare il concetto di moduli e identificare i moduli appropriati.

  • Per mostrare le dimensioni e la complessità del sistema.

  • Per identificare il numero di funzioni e moduli facilmente identificabili all'interno di ciascuna funzione.

  • Descrivere se ciascuna funzione identificabile è un'entità gestibile o deve essere suddivisa in componenti più piccole.

Fattori che influenzano la complessità del sistema

Per sviluppare una buona qualità del software di sistema, è necessario sviluppare un buon design. Pertanto, l'obiettivo principale durante lo sviluppo del design del sistema è la qualità del design del software. Un progetto software di buona qualità è quello che riduce al minimo la complessità e il costo nello sviluppo del software.

I due concetti importanti relativi allo sviluppo del sistema che aiutano a determinare la complessità di un sistema sono coupling e cohesion.

Accoppiamento

L'accoppiamento è la misura dell'indipendenza dei componenti. Definisce il grado di dipendenza di ogni modulo di sviluppo del sistema dall'altro. In pratica, ciò significa che più forte è l'accoppiamento tra i moduli in un sistema, più difficile è implementare e mantenere il sistema.

Ogni modulo dovrebbe avere un'interfaccia semplice e pulita con altri moduli e che il numero minimo di elementi di dati dovrebbe essere condiviso tra i moduli.

Alto accoppiamento

Questi tipi di sistemi hanno interconnessioni con unità di programma dipendenti l'una dall'altra. Le modifiche a un sottosistema comportano un impatto elevato sull'altro sottosistema.

Basso accoppiamento

Questi tipi di sistemi sono costituiti da componenti indipendenti o quasi indipendenti. Una modifica in un sottosistema non influisce su nessun altro sottosistema.

Misure di accoppiamento

  • Content Coupling - Quando un componente ne modifica effettivamente un altro, il componente modificato dipende completamente dalla modifica di uno.

  • Common Coupling - Quando la quantità di accoppiamento viene ridotta in qualche modo organizzando la progettazione del sistema in modo che i dati siano accessibili da un archivio dati comune.

  • Control Coupling - Quando un componente passa i parametri per controllare l'attività di un altro componente.

  • Stamp Coupling - Quando le strutture dati vengono utilizzate per passare informazioni da un componente a un altro.

  • Data Coupling - Quando vengono passati solo i dati, i componenti sono collegati da questo accoppiamento.

Coesione

La coesione è la misura della vicinanza del rapporto tra i suoi componenti. Definisce la quantità di dipendenza dei componenti di un modulo l'uno dall'altro. In pratica, ciò significa che il progettista di sistemi deve garantire che:

  • Non suddividono i processi essenziali in moduli frammentati.

  • Non riuniscono processi non correlati rappresentati come processi sul DFD in moduli privi di significato.

I moduli migliori sono quelli funzionalmente coesi. I moduli peggiori sono quelli che sono casualmente coesi.

Il peggior grado di coesione

La coesione coincidente si trova in un componente le cui parti non sono correlate a un altro.

  • Logical Cohesion - È il punto in cui più funzioni o elementi di dati correlati logicamente vengono inseriti nello stesso componente.

  • Temporal Cohesion - È quando un componente utilizzato per inizializzare un sistema o impostare variabili esegue diverse funzioni in sequenza, ma le funzioni sono correlate dalla temporizzazione coinvolta.

  • Procedurally Cohesion - È quando le funzioni sono raggruppate in un componente solo per garantire questo ordine.

  • Sequential Cohesion - È quando l'output da una parte di un componente è l'input per la parte successiva di esso.