• Non ci sono risultati.

Specifica del sottoprogramma

N/A
N/A
Protected

Academic year: 2021

Condividi "Specifica del sottoprogramma"

Copied!
10
0
0

Testo completo

(1)

Programmazione I g z

a.a 2008-2009

docente: Carmine Gravino

Sviluppo dei Programmi pp g

… alcune note su:

decomposizione funzionale decomposizione funzionale

e integrazione di sottoprogrammi

Presentazione realizzata dal Prof. Andrea De Lucia

1

(2)

... il ciclo di vita del software ... il ciclo di vita del software

Analisi e Analisi e Specifica

Progettazione

Codifica

Verifica

Manutenzione

2

(3)

Decomposizione funzionale

™ In fase di progettazione e raffinamento dell’algoritmo

( i fi ) i ò d id di ffi

(stepwise refinement) si può decidere di raffinare azioni complesse utilizzando dei sottoprogrammi;

™ Esempio:

...

C l l il f i l di l d f

Calcola il fattoriale di n e assegnalo ad fn Calcola il fattoriale di m e assegnalo ad fm

C l l il i di f f l

Calcola il massimo di fn e fm e assegnalo a max

™ in questi casi, il primo passo è quello di definire la specifica dei sottoprogrammi ...

3

(4)

Specifica del sottoprogramma

-

Ad esempio per il sottoprogramma fattoriale …

)Parametri di ingresso: n )Parametri di ingresso: n )Parametri di uscita: fatt )Precondizione: n >= 0 )Precondizione: n >= 0

)Postcondizione: se n = 0 allora fatt = 1

altrimenti fatt = n * (n-1) * … * 2 * 1 altrimenti fatt n (n 1) … 2 1

I t d è ibil d fi i l’i t f i (il

- In questo modo, è possibile definire l’interfaccia (il prototipo) del sottoprogramma:

) int fattoriale(int n);

… nell’esempio si è deciso di realizzare una funzione in cui il 4 parametro di uscita è restituito come valore di ritorno

(5)

Come si prosegue ?

™ Definita l’interfaccia tra i sottoprogrammi, sono ibili d t d lt ti

possibili due strade alternative:

)Continuare a raffinare l’algoritmo da cui è scaturita la decomposizione funzionale, ad esempio:

...

f f i l ( )

fn = fattoriale(n);

fm = fattoriale(m);

C l l il i di f f l

Calcola il massimo di fn e fm e assegnalo a max

)Progettare l’algoritmo del sottoprogramma …

‹… nel nostro caso il fattoriale ...

5

(6)

Verifica f

-

Finora abbiamo visto come selezionare i casi di prova e verificare programmi costituiti dal solo main

e verificare programmi costituiti dal solo main ...

- Come integrare e verificare un programma costituito

d iù i ?

da più sottoprogrammi ?

- Prima ipotesi: integra il programma con tutti i

sottoprogrammi e verificalo nel suo insieme (strategia big-bang)

)poco efficace …

)difficile il debuggingdifficile il debugging ...

… strategie più efficaci se si considera la struttura delle

hi t t tt i ( hit tt d l )

6 chiamate tra sottoprogrammi (architettura del programma) ...

(7)

Strategia bottom-up g p

main

b 1 b 2

subpr1 subpr2 subpr3

subpr4 subpr5 subpr6

-

verificare prima i sottoprogrammi terminali (più in

b ) i i i lli di li ll i

basso) e poi via via quelli di livello superiore ...

)un sottoprogramma può essere verificato se tutti i

tt i h ( hi ) t ti ifi ti

7 sottoprogrammi che usa (chiama) sono stati verificati

(8)

Strategia bottom-up e driver g p

-

per ogni sottoprogramma da verificare è necessario costruire un programma (detto driver) che:

)acquisisce i dati di ingresso necessari alacquisisce i dati di ingresso necessari al sottoprogramma;

)invoca il sottoprogramma passandogli i dati di )invoca il sottoprogramma passandogli i dati di

ingresso e ottenendo i dati di uscita;

) i li i d ti di it d l tt

)visualizza i dati di uscita del sottoprogramma

… occorre individuare i casi di prova dalla specifica del sottoprogramma ...

8 sottoprogramma ...

(9)

Esempio driver per sottoprogramma p p p g fattoriale

#include <stdio.h>

main() {

int n;

int n;

printf(“Inserisci un intero positivo: ”);

scanf(“%d”, &n);

scanf( %d , &n);

printf( “Fattoriale di %d: %d \n”, n, fattoriale(n));

}

… possibili casi di prova con valori di n pari a -2, 0, 4 ...

9

(10)

Vantaggi di strategie di integrazione gg g g z

- Vantaggi:

migliore localizzazione di errori

)nella strategia bottom-up se un sottoprogramma è stato verificato (bene), è improbabile che un

lf i t h i ifi i it ll

malfunzionamento che si verifica in seguito alla sua integrazione con un sottoprogramma chiamante (di livello superiore) sia causato da un errore nel codice livello superiore) sia causato da un errore nel codice del sottoprogramma già verificato

- Costi maggiori di progettazione ma costi minori diCosti maggiori di progettazione, ma costi minori di debugging rispetto alla strategia big-bang

Altre strategie di integrazione - Altre strategie di integrazione ...

)top-down

) d i h

10 )sandwich

Riferimenti

Documenti correlati

Servizi generali e  istituzionali – Sistema 

Prevedere uno stanziamento in rapporto al gettito 2010 pari a: 25 per mille nel 2012, 25 per mille nel 2013, 25 per mille.

Dialogo e Supporto ai Mediatori Culturali: i Professori della Scuola (Tutor REACH/CLP). Avvio (2009) e consolidamento dei rapporti con

2-3 coordinate geografiche del punto di verifica riferite al meridiano di Greenwich (sistema ED50), espresse nel formato. &#34;ggN/Sppss&#34;

4-5 coordinate geografiche del punto di verifica riferite al meridiano di Greenwich (sistema ED50), espresse nel formato. &#34;ggN/Sppss&#34;

- la stipula del contratto del Lotto 1 della procedura aperta per l’affidamento dei servizi assicurativi dell’Istituto suddivisa in tre lotti con la società Unipolsai

- L'affidamento del servizio di verifiche periodiche biennali degli impianti ascensori delle Sedi Inail di: Agrigento, Caltanissetta, Caltagirone, Catania, Messina,

Presenzia il Presidente della Repubblica, Sergio Mattarella Roma, 19 febbraio 2016h. Sala Conferenze del Palazzo