15.06.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!