• Non ci sono risultati.

Fondamenti Teorici

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti Teorici"

Copied!
14
0
0

Testo completo

(1)

Fondamenti Teorici

Antonio Pescapè e Marcello Esposito Parte Quarta

v1.0

(2)

Agenda

• Ambiente di sviluppo del software

• Le fasi di sviluppo del programma

• La documentazione dei programmi

• Errori di programmazione

• Errori nei programmi

• Tecniche per limitare gli errori

• Testing

(3)

Ambiente di sviluppo del software

•Lo sviluppo del software viene assistito nelle sue fasi da distinti moduli del software di base: editor, compilatore, file system,

sistema per la diagnosi degli errori, supporto al run-time, debugger.

Può inoltre essere presente un apposito software per la gestione ed il controllo del processo di progettazione.

•L’insieme di questi elementi viene di solito indicato come ambiente di sviluppo del programma.

•Ambiente di sviluppo più sofisticati mettono a disposizione del programmatore strumenti (tools tools) di supporto per tutte le fasi di progettazione, di realizzazione e di gestione del software (CASE, CASE,

Computer

Computer Aided Aided Software Engineering Software Engineering)

(4)

Esempio: il Dev-C++

(5)

Il ciclo di vita di un programma

Scrittura Compilazione

Collegamento

Scrittura Compilazione

prog1.cpp prog1.obj

prog2.pas prog2.obj

prog.exe

Run Time Support

prog3.obj

(6)

L’esecuzione

Execute

prog.exe

dati in

dati out

Dopo la fase di esecuzione, così come dopo la fase di

compilazione, potrebbe essere necessario intraprendere la

fase di debugging.

(7)

Editing e compilazione

• Preparazione del programma Preparazione del programma

• Compilazione Compilazione

• Editing del testo origine e memorizzazione in un file p.org

• Editor, che è un text-editor e non un word processor

• Traduzione in linguaggio oggetto di ciò che è memorizzato in p.org

• Analisi di correttezza sintattica, segnalando eventuali errori

• Memorizza il testo oggetto in un file p.obj

• Il compilatore è una realtà che corre nell’ambiente del SO. Può essere riguardato come un suo sottoprogramma :

intestazione : nomelinguaggio (input, output, opzioni)

attivazione : nomelinguaggio (p.org, p.obj, opzioni di compilazione)

(8)

Collegamento

•Il collegatore (linker) procede alla collazione dei moduli di programma oggetto costituenti il programma eseguibile

•Collega tra di loro:

•i moduli dell’utente ( prog1.obj );

•eventuali moduli di altri utenti ( prog2.obj );

•librerie di funzioni disponibili ( prog3.obj );

•il supporto al tempo di esecuzione.

• Al termine, il tutto viene memorizzato in un file eseguibile: prog.exe

• Il linker è concettualmente chiamato con una istruzione del sistema operativo del tipo

link (p.obj1, p.obj2, ..., p.objn, opzioni )

(9)

Esecuzione

•Richiamando il programma prog.exe, l’eseguibile viene

caricato in memoria ed attivato; all’atto della terminazione del programma il controllo torna al SO

•Il supporto al tempo di esecuzione gestisce i collegamenti con il SO e garantisce la diagnostica degli errori dinamici come ad

esempio l’overflow e l’invasione di memoria. Gestisce inoltre le

operazioni di I/O, le allocazioni e le deallocazioni dinamiche ed in

generale tutte le operazioni non direttamente programmate nel

testo origine.

(10)

Correzione degli errori

• La fase di testing ha lo scopo di far emergere la presenze di errori o malfuzionamenti.

• La fase di debugging è una delle fasi del processo di correzione e consiste nel far girare il programma controllandolo con l’apposito software (di debug). In questo modo è possibile visualizzare gli stati

intermedi attraverso i quali evolve il programma

stesso: ad esempio, è possibile visualizzare i valori delle variabili del programma dopo l’esecuzione di ciascuna istruzione ( trace). trace

• La fase di debugging ha lo scopo di ricercare ed

individuare le cause dei malfunzionamenti.

(11)

La documentazione dei programmi (1)

n Leggibilità

u interazione uomo- uomo - macchina macchina e interazione uomo- uomo - uomo uomo

u Tecniche di costruzione dei programmi (top-down, decomposizione modulare, ...)

n All’interno dei programmi: Motivazioni Motivazioni (cosa si intende (cosa si intende fare)

fare) , Asserzioni Asserzioni (condizioni cui devono soddisfare alcuni (condizioni cui devono soddisfare alcuni dati)

dati) , e Commenti relativi ai dati Commenti relativi ai dati (definire gli attributi (definire gli attributi delle variabili)

delle variabili) .

n Mi raccomando....cauti con i commenti

(12)

La documentazione dei programmi (2)

Albero di attivazione delle procedure Albero di attivazione delle procedure

Albero di struttura dei moduli Albero di struttura dei moduli

Albero delle relazioni d’uso Albero delle relazioni d’uso

Documentazione Esterna (cosa fa il Documentazione Esterna (cosa fa il programma)

programma)

Documentazione Interna (come lo fa) Documentazione Interna (come lo fa)

Documentazione delle biblioteche Documentazione delle biblioteche

(13)

Errori di programmazione

Errori nella definizione del problema Errori nella definizione del problema

Errori nella scelta dell’algoritmo Errori nella scelta dell’algoritmo

Errori nella stesura del programma Errori nella stesura del programma

Errori nei dati Errori nei dati

Errori attribuibili al sistema Errori attribuibili al sistema (…molto rari) (…molto rari)

(14)

Errori nei programmi

Errori sintattici Errori sintattici

Errori segnalati in fase di esecuzione Errori segnalati in fase di esecuzione

(a/0 (a/0

invece che a/b) invece che a/b)

Errori nei risultati Errori nei risultati

Riferimenti

Documenti correlati

Possiamo non sapere nulla della vita di Hikmet, e tuttavia nelle immagini risuona un’esistenza senza giornata di calma, risuona un’esistenza in cui varcare

Come si può notare, l'approccio alla dimensione della coscienza diventa sempre più analitico ed ulteriori atti sono sottoposti ad indagine; ciò consente di esaminare

a) Si inizializzi il pallottoliere: si spostino sulla sinistra della prima riga un numero di palline pari al primo addendo, si spostino sulla sinistra della seconda riga un numero

n Una volta in questo registro, l’istruzione deve essere interpretata dall’unità di controllo per procedere alla eventuale fase di preparazione degli operandi ed alla fase

Tipico controllo effettuato è il controllo di parità : le parole codice lecite hanno tutte un numero pari di bit “1”, quelle. illecite un

Obtain bound on running time of algorithm on random input as a function of input size N.. – Hard (or impossible) to accurately model real instances by random

Non ti accorgi che allungando verso il basso il braccino della “o” hai eseguito una strada più lunga di quanto occorra, trasformando quindi la “o”in “a”. La

x Anemie emolitiche: anemie emolitiche da causa intrinseca (eritropatie enzimatiche, difetti di membrana del globulo rosso) e da causa estrinseca (anemie immunoemolitiche, anemie