Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
Dispensa in PDF - Dipartimento di Scienze Ambientali, Informatica e ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Analisi<br />
Progetto<br />
Test<br />
Sviluppo<br />
Fase 1<br />
Analisi<br />
Progetto<br />
Test<br />
Fase 2<br />
Sviluppo<br />
Figura 4.28. Divisione <strong>in</strong> fasi e refactor<strong>in</strong>g.<br />
Carnielli Efrem: Programmazione a componenti<br />
Analisi<br />
Progetto<br />
Test<br />
Fase 3<br />
Sviluppo<br />
Unified Software Process (USP)<br />
……………………………<br />
Ogni fase è al suo <strong>in</strong>terno <strong>di</strong>visa <strong>in</strong> 4 microfasi: analisi, progettazione,<br />
implementazione e test. Ogni macrofase prevede un ciclo cont<strong>in</strong>uo su queste<br />
microfasi, f<strong>in</strong>ché non viene considerata term<strong>in</strong>a e si passa qu<strong>in</strong><strong>di</strong> alla quella<br />
successiva. Nell’eventualità si riscontr<strong>in</strong>o degli errori tali da bloccare la<br />
realizzazione <strong>di</strong> questa fase, è necessario fare qualche passo <strong>in</strong><strong>di</strong>etro e rielaborare<br />
le macrofasi precedenti per risolvere gli errori. Il proce<strong>di</strong>mento appena descritto è<br />
chiamato refactor<strong>in</strong>g.<br />
In sostanza il programma viene <strong>di</strong>viso <strong>in</strong> tante parti più piccole (le macrofasi) ed<br />
<strong>in</strong><strong>di</strong>pendenti tra loro, prestando attenzione al loro <strong>in</strong>terfacciamento.<br />
Devo aver un l<strong>in</strong>guaggio che mi permette <strong>di</strong> fare questa <strong>di</strong>visione <strong>in</strong><strong>di</strong>pendente.<br />
A questo scopo posso utilizzare la programmazione object oriented che consente la<br />
sud<strong>di</strong>visione del problema <strong>in</strong> fasi più piccole e la realizzazione della metodologia<br />
<strong>di</strong> sviluppo appena descritta. La granularità m<strong>in</strong>ima è l’oggetto cioè l’istanza <strong>di</strong><br />
ogni <strong>in</strong>terfaccia.<br />
La programmazione <strong>di</strong>venta una composizione <strong>di</strong> parti più piccole ed il problema<br />
è fare <strong>in</strong> modo che queste parti, oltre ad essere corrette <strong>di</strong> per se, si comport<strong>in</strong>o<br />
correttamente anche quando vengono messe assieme <strong>in</strong> un tutt’uno.<br />
4.3.3 Rispettare i contratti<br />
Per fare <strong>in</strong> modo che queste parti funzion<strong>in</strong>o bene assieme devo <strong>in</strong>trodurre il<br />
concetto <strong>di</strong> contratto.<br />
Com<strong>in</strong>ciamo col parlare <strong>di</strong> pre e post con<strong>di</strong>zioni. Pren<strong>di</strong>amo una qualsiasi<br />
operazione, generalizziamo un qualcosa che potrebbe essere una funzione, un<br />
oggetto, ecct. Tale operazione deve essere preceduta da delle pre con<strong>di</strong>zioni, cioè<br />
delle con<strong>di</strong>zioni prelim<strong>in</strong>ari che servono all’operazione, e seguita da post<br />
con<strong>di</strong>zioni, cioè con<strong>di</strong>zioni successive allo svolgimento dell’operazione che<br />
servono a chi chiama l’operazione.<br />
L’operazione qu<strong>in</strong><strong>di</strong> <strong>di</strong>venta un <strong>in</strong>variante.<br />
Facciamo un esempio. Consideriamo l’operazione aritmetica ra<strong>di</strong>ce quadrata.<br />
Possiamo vederla come una funzione dai reali positivi compreso lo zero, ai reali.<br />
109