Progettazione di sistemi distribuiti basata su componenti e riuso
Il quadro metodologico generale descritto nell’articolo circa la Progettazione e realizzazione di sistemi a oggetti distribuiti, si sta arricchendo da alcuni anni di un approccio basato sul riuso di componenti che, implicito nei principi di incapsulamento propri di un modello ad oggetti, sta trovando campo di applicazione pratico a diversi livelli di astrazione.
La figura seguente, tratta dalla letteratura scentifica, illustra i diversi ambiti nei quali questo approccio trova applicazione. Gli ambiti sono classificati in rapporto alla fase realizzativa nella quale sono usati (astratta o concreta) e in rapporto alla loro specificità rispetto a particolari domini applicativi.
In particolare:
- le tassonomie di dominio descrivono in modo normalizzato semplici domini applicativi, costituendo valide basi di riuso di specifiche;
- i modelli di dominio strutturano concetti e relazioni fra concetti afferenti ad un’area applicativa;
- gli stili architetturali offrono linee guida riusabili nella progettazione di parti di sistemi informatici;
- i pattern di oggetti individuano strutture ricorrenti di oggetti, idonei per risolvere problemi architetturali specifici. Esempi di pattern sono i sistemi generali di interfacciamento fra due sistemi, i meccanismi generali di creazione, manipolazione e distribuzione di oggetti, i meccanismi generali di interpretazione di messaggi espressi con particolari grammatiche.
- i framework applicativi individuano insiemi precostituiti di oggetti (oggetti di business) utili nell’ambito della realizzazione di sistemi informatici afferenti a specifici domini applicativi (quali la sanità, le banche, la logistica, la distribuzione);
- i kit di programmazione sono costituiti da librerie di oggetti riusabili nell’ambito dello sviluppo di applicazioni.
Questo approccio generale orientato al riuso richiede non ambiguità nel significato dei servizi offerti dai componenti disponibili e chiari meccanismi di classificazione e di reperimento di componenti utili nell’ambito della realizzazione di un sistema. Ma richiede soprattutto una cultura da parte dei progettisti di applicazioni orientata al riuso piuttosto che al “fare”, sia nell’approccio alla progettazione, sia nella conoscenza dei componenti praticamente disponibili.