Modulo
4
Problemi di design del software
Versione 2 CSE IIT, Kharagpur
Lezione
8
Concetti di base in
Progettazione del Software
Versione 2 CSE IIT, Kharagpur
Obiettivi Didattici Specifici
Alla fine di questa lezione, lo studente sarà in grado di:
• Identifica le attività di progettazione software.
• Identificare gli elementi da progettare durante la fase preliminare e dettagliata
design activities.
• Identificare le principali differenze tra le attività di analisi e di design
• Identificare gli elementi importanti sviluppati durante la fase di progettazione del software.
• Elenca le importanti caratteristiche desiderabili di un buon design software.
• Identificare le caratteristiche necessarie di un documento di design per facilitare
comprensibilità.
Progettazione software e le sue attività
La progettazione del software si occupa di trasformare i requisiti del cliente, poiché
descritto nel documento SRS, in una forma (un insieme di documenti) che sia adatta
per l'implementazione in un linguaggio di programmazione. Un buon design del software è
raramente arrivò utilizzando una procedura a singolo passaggio, ma piuttosto attraverso diversi
iterazioni attraverso una serie di passaggi. Le attività di design possono essere ampiamente classificate
in due parti importanti:
• Progettazione preliminare (o di alto livello) e
• Design dettagliato.
Attività di progettazione preliminare e dettagliata
Il significato e l'ambito di due attività di design (cioè, di alto livello e dettagliate)
Il design tende a variare considerevolmente da una metodologia all'altra. A livello superiore
il design significa identificazione di diversi moduli e le relazioni di controllo
tra di loro e la definizione delle interfacce tra questi moduli. Il
l'esito del design di alto livello è chiamato struttura del programma o software
architettura. Sono stati utilizzati molti tipi diversi di notazioni per rappresentare un
design ad alto livello. Un modo popolare è utilizzare un diagramma ad albero chiamato struttura
grafico per rappresentare la gerarchia di controllo in un design di alto livello. Tuttavia, altri
notazioni come il diagramma di Jackson [1975] o il diagramma di Warnier-Orr [1977, 1981]
può essere utilizzato. Durante la progettazione dettagliata, la struttura dei dati e gli algoritmi
dei diversi moduli sono progettati. Il risultato della fase di progettazione dettagliata
è solitamente conosciuto come il documento di specifica del modulo.
Differenza tra analisi e progettazione
L'obiettivo dell'analisi è comprendere il problema con l'intento di eliminare qualsiasi
deficienze nella specifica dei requisiti come incompletezze,
Versione 2 CSE IIT, Kharagpur
incongruenze, ecc. Il modello che stiamo cercando di costruire potrebbe essere o potrebbe non essere
Sii pronto.
L'obiettivo del design è produrre un modello che fornisca un'esperienza senza interruzioni
transizione alla fase di codifica, ovvero una volta che i requisiti sono stati analizzati e trovati
Per essere soddisfacente, viene creato un modello di design che può essere facilmente implementato.
Elementi sviluppati durante la fase di progettazione del software
Affinché un design possa essere facilmente implementato in un linguaggio di programmazione convenzionale,
i seguenti elementi devono essere progettati durante la fase di progettazione.
• Moduli diversi necessari per implementare la soluzione di design.
• Controlla la relazione tra i moduli identificati. La relazione è anche
noto come relazione di chiamata o relazione di invocazione tra moduli.
• Interfaccia tra diversi moduli. L'interfaccia tra diversi moduli
identifica i dati esatti scambiati tra i moduli.
• Data structures of the individual modules.
• Algoritmi necessari per implementare ogni singolo modulo.
Caratteristiche di un buon design software
La definizione di “un buon design software” può variare a seconda dell'applicazione
essere progettato. Ad esempio, la dimensione della memoria utilizzata da un programma può essere un
questione importante per caratterizzare una buona soluzione per il software embedded
sviluppo – poiché le applicazioni embedded sono spesso richieste per essere
implementato utilizzando memoria di dimensioni limitate a causa del costo, dello spazio o della potenza
considerazioni sul consumo. Per le applicazioni embedded, si può sacrificare
progettare la comprensibilità per raggiungere la compattezza del codice. Per incorporato
nelle applicazioni, fattori come la comprensibilità del design potrebbero passare in secondo piano mentre
giudicando la bontà del design. Pertanto, i criteri utilizzati per giudicare quanto sia buono un
La soluzione di design fornita può variare ampiamente a seconda dell'applicazione. Non solo
la bontà del design dipende dall'applicazione mirata, ma anche dal
la nozione di bontà di un design varía ampiamente tra gli ingegneri del software e
accademici. Tuttavia, la maggior parte dei ricercatori e degli ingegneri del software concorda su una
pochi tratti desiderabili che ogni buon design software dovrebbe avere in generale
l'applicazione deve possedere. Le caratteristiche sono elencate di seguito:
• Correttezza: un buon design dovrebbe implementare correttamente tutto il
funzionalità identificate nel documento SRS.
• Understandability:A good design is easily understandable.
Versione 2 CSE IIT, Kharagpur
• Efficiency:It should be efficient.
• Manutenibilità: dovrebbe essere facilmente soggetto a modifiche.
Possibilmente il criterio di bontà più importante è la correttezza del design. Un design
deve essere corretto per essere accettabile. Dato che una soluzione di design è corretta,
la comprensibilità di un design è probabilmente la questione più importante da affrontare
considerato mentre si giudica la bontà di un design. Un design che è facile da
è anche facile da sviluppare, mantenere e cambiare. Pertanto, a meno che un design
è facilmente comprensibile, richiederebbe uno sforzo notevole per essere implementato e
mantenerlo.
Caratteristiche di un documento di design
Per facilitare la comprensione, il design dovrebbe avere i seguenti
features:
• Dovrebbe usare nomi coerenti e significativi per vari design
componenti.
• Il design dovrebbe essere modulare. Il termine modularità significa che dovrebbe
usa un insieme di moduli pulitamente decomposto.
• Dovrebbe disporre i moduli in modo ordinato in una gerarchia, ad esempio in una forma simile a un albero.
diagramma.
Versione 2 CSE IIT, Kharagpur