nikpez di nikpez
Ominide 738 punti

Produzione del software

Principi da seguire per costruire programmi leggibili e facilmente mantenibili
- Utilizzare nomi significativi (per costanti, tipi, variabili, funzioni/procedure,…)
- Utilizzare le costanti
- Uso dei commenti:
- Sintetici
- Significativi
- Aggiornati con la variazione del codice
- Indentare con cura
- Ogni funzione/procedura deve fare una ed una sola cosa

Ciclo di vita del software
Modello a cascata:
- Analisi e specifica dei requisiti (si risponde alla domanda: che cosa?)
- Progettazione (si risponde alla domanda: come?)
- Programmazione e test di unità
- Integrazione e test di sistema
- Manutenzione (correttiva, adattativa, evolutiva)
(Fasi trasversali: Documentazione, Piano di test, Gestione e controllo del progetto)

- Il ciclo di sviluppo di un programma prevede una serie di fasi atte a conferire alcune significative flessibilità:

- la composizione di un programma di grosse dimensioni attraverso più moduli;
- l’uso di librerie di funzioni già compilate;
- il collegamento di moduli eventualmente scritti con differente linguaggio origine;
- la possibilità di porre in commercio programmi o moduli nella forma oggetto e non in forma origine; è questa una scelta di molti produttori di software per motivi di tutela della proprietà.

1. Preparazione del testo origine
- Il testo origine viene preparato mediante un editor e viene memorizzato in file con estensione .c/.cpp.
- Il codice sorgente di una applicazione viene, in generale, strutturato in più moduli (detti anche unità di traduzione), redatti da più programmatori.
- Ciascuna unità di traduzione viene sottoposta separatamente alle successive fasi di precompilazione e compilazione.
- La struttura di un generico modulo è schematicamente la seguente:
- Direttive di precompilazione
- Dichiarazioni di nomi di tipo
- Dichiarazioni di costanti e di variabili
- Dichiarazioni di funzioni (prototipi)
- Definizioni di costanti e di variabili
- Definizioni di funzioni

2. Precompilazione
- il testo origine (sorgente) contenuto nel file .c/.cpp viene
elaborato da un programma detto preprocessore (o
precompilatore) che modifica il codice secondo alcune
direttive fornitegli dal programmatore;
- le direttive al preprocessore sono contenute nelle righe di
testo che cominciano col carattere ‘# ‘;
- l’output del precompilatore è codice sorgente che va al

compilatore vero e proprio.

3. Compilazione delle unità
- le unità del programma vengono compilate separatamente mediante
l’attivazione del compilatore;
- per ciascuna unità di traduzione, il testo origine viene trasformato in testo
oggetto e memorizzato in un file con estensione .obj (oppure .o)
I file oggetto
- Il formato dei file oggetto è indipendente dal linguaggio ad alto livello
- Un file oggetto contiene, oltre al codice macchina:
- una tabella dei simboli (funzioni e variabili esterne o globali) definiti nel
corrispondente file sorgente
- una tabella dei simboli utilizzati ma non definiti nel modulo (quindi
definiti in altri moduli)

4. Collegamento (linkage)
- I diversi moduli oggetto costituenti il programma (p1.obj,…, pn.obj) vengono
combinati fra loro ed assieme al supporto al tempo di esecuzione, mediante
un programma collegatore (linker).
- Il collegatore produce il testo eseguibile del programma in unico file (per
esempio prog.exe)
- Anche se il programma consta di un solo file sorgente, alcune librerie sono
necessarie (ad es. per l’ingresso-uscita dei dati)
- Il linker può segnalare errori, tipicamente perché non è possibile associare
ad un simbolo richiesto da un modulo alcun simbolo tra quelli esportati da
tutti gli altri moduli.
- Ciò può avvenire, per esempio, in uno dei seguenti casi:
- ci si è dimenticati di indicare qualche file .obj al linker
- manca l’implementazione di qualche funzione
- esistono più definizioni di uno stesso nome di funzione o variabile globale.

Registrati via email