Sviluppo sistema esperto
Lo sviluppo di un sistema esperto può essere realizzato seguendo due distinti approcci, quello di un sistema esperto di grandi dimensioni, capace di risolvere anche problemi complessi, e quello di un sistema esperto di piccole dimensioni ma specializzato su un argomento.
- Sistemi esperti di grandi dimensioni. Sono sistemi caratterizzati da una elevata capacità di calcolo e di memoria. Sono, pertanto, molto costosi e possono girare soltanto su computer potenti. Essendo molto costosi possono essere realizzati prevalentemente per finalità sperimentali oppure essere applicati in campi ove sia immediato il ritorno economico (es. previsioni e analisi finanziarie automatiche).
- Sistemi esperti di piccole dimensioni. Sono sistemi caratterizzati da una base dati di ridotte dimensioni che consente, comunque, di fornire supporto decisionali in specifiche attività lavorative e professionali ( es. calcolo tributario, diagnosi mediche, ecc. ). I costi di progettazione sono inferiori. Questi sistemi non richiedono elevate capacità hardware e possono girare sui personal computer.
Per lo sviluppo di un sistema esperto sono necessarie due distinte figure professionali. Il progettista informatico ( knowledge engineer ) e lo specialista della materia ( domain expert ). Il knowledge engineer si occupa di sviluppare il software del sistema esperto ( algoritmi, interfacce, database, ecc. ) dal punto di vista tecnico. Il domain expert, viceversa, si occupa di alimentare i dati nel database di conoscenza del sistema esperto. Ad esempio, per sviluppare un sistema esperto di diagnosi medica è necessaria la presenza dell'analista informatico ( knowledge engineer ) e del medico specialista ( domain expert ). Le due funzioni sono, ovviamente, svolte da gruppi di specialisti e non da singoli individui. Le principali fasi dello sviluppo di un sistema esperto sono le seguenti:
- Lista dei problemi. In questa fase l'esperto stende una lista di problemi che si presentano nel relativo settore cui è dedicato il sistema esperto.
- Concentualizzazione. Ogni singolo problema viene trasformato in un concetto e viene rappresentato. A ogni problema è associata una lista di soluzioni e di possibili casistiche. Il problema può anche essere suddiviso in sotto-problemi più semplici per agevolare la sequenza di azioni necessarie a giungere o individuare la soluzione.
- Formalizzazione. Ogni problema concettualizzato viene formalizzato con gli strumenti di analisi informatica che precedono lo sviluppo del programma.
- Sviluppo. È la fase di sviluppo informatico vero e proprio in cui l'analisi viene trasformata in un codice eseguibile dal computer mediante un linguaggio di programmazione.
- Test. Nella fase di test il sistema esperto viene messo alla prova. Un gruppo di utenti finali espone dei quesiti e il sistema esperto fornisce le possibili soluzioni. Se le soluzioni individuate dal sistema esperto sono identiche a quelle fornito dallo specialista ( domain expert ) allora il sistema esperto è considerato efficace. In questa fase sono anche verificate e corrette eventuali anomalie. E', inoltre, verificato il livello di usabilità del software da parte degli utenti finali.
Utente. Nello sviluppo di un sistema esperto è importante anche la figura dell'utente. Il sistema esperto deve saper rispondere alle reali necessità dell'utente finale ed esprimersi, almeno in parte, nel linguaggio dell'utente, evitando l'abuso del linguaggio burocratico o tecnocratico degli esperti. Poiché né il knowledge engineer, né l'esperto, possiedono la visione dell'utente, è necessaria fin dalla fase di progettazione anche la presenza di una figura esperta in comunicazione e marketing ( communication manager ) in grado di interpretare le esigenze reali degli utenti.