Introduzione: Lo scopo della fase di progettazione nel ciclo di vita dello sviluppo del software è di produrre una soluzione ad un problema dato nel documento SRS (Software Requirement Specification). L’output della fase di design è il Documento di Design del Sofware (SDD).

Fondamentalmente, il design è un processo iterativo in due parti. La prima parte è la progettazione concettuale che dice al cliente cosa farà il sistema. La seconda è la progettazione tecnica che permette ai costruttori del sistema di capire l’hardware e il software effettivi necessari per risolvere il problema del cliente.

Design concettuale del sistema:

  • Scritto in un linguaggio semplice, cioè un linguaggio comprensibile al cliente.
  • Dettagliata spiegazione delle caratteristiche del sistema.
  • Descrive la funzionalità del sistema.
  • È indipendente dall’implementazione.
  • Collega il documento dei requisiti.

Progettazione tecnica del sistema:

  • Componente hardware e design.
  • Funzionalità e gerarchia del componente software.
  • Architettura software
  • Architettura di rete
  • Struttura dei dati e flusso dei dati.
  • Componente I/O del sistema.
  • Mostra interfaccia.

Modularizzazione: La modularizzazione è il processo di dividere un sistema software in più moduli indipendenti dove ogni modulo lavora indipendentemente. Ci sono molti vantaggi della modularizzazione nell’ingegneria del software. Alcuni di questi sono dati qui sotto:

  • Facile capire il sistema.
  • La manutenzione del sistema è facile.
  • Un modulo può essere usato molte volte secondo i loro requisiti. Non c’è bisogno di scriverlo ancora e ancora.

Accoppiamento: L’accoppiamento è la misura del grado di interdipendenza tra i moduli. Un buon software avrà un basso accoppiamento.

Tipi di accoppiamento:

  • Accoppiamento di dati: Se la dipendenza tra i moduli si basa sul fatto che essi comunicano passando solo dati, allora si dice che i moduli sono accoppiati dati. Nell’accoppiamento dati, i componenti sono indipendenti l’uno dall’altro e comunicano attraverso i dati. Le comunicazioni dei moduli non contengono dati vaganti. Esempio-sistema di fatturazione dei clienti.
  • Accoppiamento del timbro Nell’accoppiamento del timbro, la struttura completa dei dati viene passata da un modulo a un altro modulo. Pertanto, coinvolge i dati tramp. Può essere necessario a causa di fattori di efficienza – questa scelta è fatta dal progettista perspicace, non da un programmatore pigro.
  • Accoppiamento di controllo: Se i moduli comunicano passando informazioni di controllo, allora si dice che sono control coupled. Può essere cattivo se i parametri indicano un comportamento completamente diverso e buono se i parametri permettono il factoring e il riutilizzo delle funzionalità. Esempio: funzione di ordinamento che prende la funzione di confronto come argomento.
  • Accoppiamento esterno: Nell’accoppiamento esterno, i moduli dipendono da altri moduli, esterni al software in sviluppo o ad un particolare tipo di hardware. Es. protocollo, file esterno, formato del dispositivo, ecc.
  • Accoppiamento comune: I moduli hanno dati condivisi come strutture di dati globali, i cambiamenti nei dati globali significano risalire a tutti i moduli che accedono a quei dati per valutare l’effetto del cambiamento. Quindi ha degli svantaggi come la difficoltà di riutilizzare i moduli, la ridotta capacità di controllare gli accessi ai dati e la ridotta manutenibilità.
  • Accoppiamento di contenuto: In un accoppiamento di contenuto, un modulo può modificare i dati di un altro modulo o il flusso di controllo viene passato da un modulo all’altro modulo. Questa è la forma peggiore di accoppiamento e dovrebbe essere evitata.

Coesione: La coesione è una misura del grado in cui gli elementi del modulo sono collegati funzionalmente. È il grado in cui tutti gli elementi diretti a svolgere un unico compito sono contenuti nel componente. Fondamentalmente, la coesione è la colla interna che tiene insieme il modulo. Un buon progetto di software avrà un’alta coesione.

Tipi di coesione:

  • Coesione funzionale: Ogni elemento essenziale per una singola computazione è contenuto nel componente. Una coesione funzionale esegue il compito e le funzioni. È una situazione ideale.
  • Coesione sequenziale: Un elemento emette alcuni dati che diventano l’input per un altro elemento, cioè il flusso di dati tra le parti. Si verifica naturalmente nei linguaggi di programmazione funzionale.
  • Coesione comunicazionale: Due elementi operano sugli stessi dati di input o contribuiscono agli stessi dati di output. Esempio: aggiornare un record nel database e inviarlo alla stampante.
  • Coesione procedurale: Elementi di coesione procedurale assicurano l’ordine di esecuzione. Le azioni sono ancora debolmente connesse e difficilmente riutilizzabili. Es: calcolare la GPA dello studente, stampare il record dello studente, calcolare la GPA cumulativa, stampare la GPA cumulativa.
  • Coesione temporale: Gli elementi sono collegati dai loro tempi coinvolti. Un modulo collegato con coesione temporale tutti i compiti devono essere eseguiti nello stesso lasso di tempo. Questa coesione contiene il codice per inizializzare tutte le parti del sistema. Molte attività diverse si verificano, tutte al tempo di init.
  • Coesione logica: Gli elementi sono collegati logicamente e non funzionalmente. Es- Un componente legge input da nastro, disco e rete. Tutto il codice per queste funzioni è nello stesso componente. Le operazioni sono correlate, ma le funzioni sono significativamente diverse.
  • Coesione coincidente: Gli elementi non sono correlati. Gli elementi non hanno alcuna relazione concettuale oltre alla posizione nel codice sorgente. È accidentale e la peggiore forma di coesione. Ex- stampare la prossima linea e invertire i caratteri di una stringa in un singolo componente.

Attenzione lettore! Non smettere di imparare ora. Impara tutti i concetti importanti di teoria CS per le interviste SDE con il corso di teoria CS ad un prezzo adatto agli studenti e diventa pronto per l’industria.

Tag dell’articolo :

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.