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.