Costruire sistemi software significa costruire modelli del mondo reale. Questi modelli devono essere semplici e precisi, in modo che un computer possa interpretarli.
Ecco esempi di situazioni reali di cui potremmo costruire una versione informatica:
Dall'altra parte costruiamo un modello che descrive come il sistema deve svolgere i compiti del dominio che il sistema modella, es. il COMPORTAMENTO del sistema. Tale modello è realizzato come sequenze di istruzioni di un linguaggio di programmazione. Istruzioni logicamente correlate vengono raggruppate insieme in funzioni o subroutine.
Questo approccio allo sviluppo di software è chiamato approccio
Un problema con questo approccio si presenta quando i dati ed il comportamento del sistema diventano complessi:
Modifiche alla struttura dei dati possono influenzare molte delle funzioni (e viceversa). Non è ovvio allo sviluppatore del software quali funzioni sono influenzate e come.
Il problema è che abbiamo costruito due modelli di una singola realtà, e questi modelli separati devono essere mantenuti consistenti durante le modifiche ed estensioni del sistema.
Inoltre, l'approccio predominante per strutturare le funzioni è di formare gerarchie di funzioni usando la decomposizione funzionale (o astrazione funzionale, se vista nel verso opposto). Ci&ogreave; conduce ad un sistema strutturato intorno alla sequenza in cui i vari compiti vengono svolti. Tuttavia, in molti casi questo non risulta essere molto stabile nel tempo.
© Ericsson Telecom AB, 1995, Stockholm, Sweden