Come si sviluppano e progettano i sistemi informatici

Come si sviluppano e progettano i sistemi informatici

Lo sviluppo di un sistema informatico è un processo complesso; gli elementi critici di tale processo sono:

  1. la comprensione del dominio di interesse,
  2. i problemi di gestione del processo di sviluppo
  3. la capacità di descrivere e controllare il comportamento del sistema sviluppato.

Ciascun sistema informatico viene costruito per risolvere un problema nell’ambito di un certo dominio di interesse. Tali problemi presentano spesso numerosi elementi che accrescono la loro complessità, come la presenza di numerose esigenze spesso in contrapposizione fra di loro e la presenza di requisiti non funzionali, quali quelli di usabilità, prestazioni, costo e affidabilità. Inoltre accade spesso che gli utilizzatori del sistema e i suoi progettisti parlino un linguaggio completamente differente, così che i primi abbiano difficoltà ad esprimere con precisione le proprie necessità, mentre i secondi non riescano a spiegare correttamente cosa si apprestano a realizzare.

Come si sviluppano e progettano i sistemi informatici

Questa difficoltà di comprensione è difficilmente attenuata da specifiche prolisse espresse in forma testuale, mentre di maggiore utilità possono essere modelli del sistema espressi in un linguaggio formale o prototipi del sistema stesso.

I sistemi informatici inoltre possono avere una struttura interna complessa ed essere composti da migliaia di moduli, ciascuno dei quali contiene migliaia di linee di codice. La produzione di tali sistemi richiede il contributo di numerosi sviluppatori, il cui lavoro deve essere gestito, coordinato e integrato per arrivare al prodotto finale: la comunicazione fra i diversi sviluppatori è un elemento di successo importante nello sviluppo del sistema, e la descrizione del sistema per mezzo di modelli formali può portare un contributo significativo in tale senso.

Un sistema software è un sistema che può assumere uno fra un determinato numero di stati: tale numero è però incredibilmente alto a causa dell’esplosione combinatoria derivante dal numero di oggetti che compongono il sistema. La complessità strutturale del sistema induce quindi una complessità comportamentale. Di conseguenza un sistema informatico può eseguire transizioni di stato del tutto inattese in conseguenza di un input esterno non previsto, venendosi a trovare in uno stato di errore, uno stato a partire dal quale il successivo comportamento del sistema risulta imprevedibile.

La risposta a questo problema è nella decomposizione del sistema in componenti più piccole la cui descrizione possa essere raffinata separatamente dalle altre, e il cui comportamento complessivo possa essere descritto in termini semplici e precisi a partire dal comportamento delle singole parti.

Nell’approccio tradizionale la decomposizione di un sistema è realizzata da un punto di vista funzionale: l’elemento atomico di tale decomposizione è la funzione o procedura e ciascuna funzione può essere decomposta in altre più semplici. L’attenzione del progettista del sistema si concentra quindi sul flusso di controllo e sulla decomposizione algoritmica: tale modalità di decomposizione tende a produrre sistemi difficilmente manutenibili, con un grado di resistenza basso verso l’evoluzione dei requisiti.

Elementi necessari allo sviluppo di sistemi informatici

Gli elementi necessari e fondamnetali per il corretto sviluppo di sistemi informatici, secondo una metodologia orientata agli oggetti (Object oriented), sono i seguenti:

  • un linguaggio di modellazione che consente di descrivere il sistema da sviluppare organizzando tale descrizione per mezzo di oggetti;
  • un processo di sviluppo che indica il flusso di lavoro nel corso delle fasi del progetto di sviluppo, specificando quando produrre determinati modelli;
  • un insieme di principi di analisi e progettazione o patterns che codificano soluzioni note e testate a problemi caratteristici, consentendo di applicare tali soluzioni al problema in esame e semplificando in tal modo la produzione di porzioni di un modello del sistema.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *