nikpez
Ominide
4 min. di lettura
Vota 5 / 5

Concetti Chiave

  • I principi di sviluppo del software includono l'uso di nomi significativi, costanti e commenti ben strutturati per garantire leggibilità e manutenzione.
  • Il modello a cascata del ciclo di vita del software segue fasi specifiche: analisi, progettazione, programmazione, integrazione e manutenzione.
  • Il processo di sviluppo prevede la composizione modulare del programma, l'uso di librerie e la distribuzione di programmi in formato oggetto per protezione della proprietà intellettuale.
  • La preparazione del testo origine coinvolge l'uso di editor per file .c/.cpp e la suddivisione del codice in moduli o unità di traduzione.
  • La fase di collegamento combina i moduli oggetto in un programma eseguibile, segnalando errori se mancano simboli o implementazioni necessarie.
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.

Domande da interrogazione

  1. Quali sono i principi fondamentali per scrivere programmi leggibili e mantenibili?
  2. I principi includono l'uso di nomi significativi, l'utilizzo di costanti, commenti sintetici e aggiornati, una corretta indentazione e la progettazione di funzioni che svolgono un'unica operazione.

  3. Quali sono le fasi del modello a cascata nel ciclo di vita del software?
  4. Le fasi includono l'analisi e specifica dei requisiti, progettazione, programmazione e test di unità, integrazione e test di sistema, e manutenzione.

  5. Come viene preparato il testo origine di un programma?
  6. Il testo origine viene preparato con un editor e memorizzato in file con estensione .c/.cpp, strutturato in moduli redatti da più programmatori e sottoposto a precompilazione e compilazione.

  7. Qual è il ruolo del preprocessore nella precompilazione?
  8. Il preprocessore elabora il testo sorgente modificandolo secondo direttive specifiche, producendo un codice sorgente che viene poi passato al compilatore.

  9. Cosa avviene durante la fase di collegamento (linkage)?
  10. I moduli oggetto vengono combinati con il supporto al tempo di esecuzione tramite un linker, che produce il testo eseguibile del programma e può segnalare errori se ci sono simboli non associati correttamente.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community