La suite MDD Tools per lo sviluppo in modalità Model Driven è in una fase di
diffusione costantemente crescente e di continua
evoluzione.
Come tutti gli strumenti in evoluzione è opportuno fare il punto della situazione per quanto riguarda la diffusione degli strumenti, con particolare attenzione agli inevitabili fenomeni di frammentazione (utilizzo di differenti versioni dello strumento in uno stesso periodo, nei vari progetti).
Segue un'analisi di questi aspetti.
L'analisi prende in considerazione i progetti con attività nella finestra temporale
luglio 2011 - dicembre 2011
Diffusione
I
dati di diffusione degli MDD Tools sono interessanti.
Alcuni numeri:
- numero di componenti MDD attivi:
- totali:oltre 200
- di tipo guigen: circa 70-80
- di tipo servicegen: circa 70-80
- di tipo datagen: circa 50-60
Nel grafico seguente si può notare
l'andamento del numero di utilizzatori nel tempo (finestra temporale maggiore - dall'inizio del rilevamento tramite tracking):
Frammentazione
Con il termine "
frammentazione" si mira a valutare la
distribuzione delle varie versioni di prodotto tra gli utilizzatori, in un determinato lasso temporale. Un elevato valore di frammentazione rappresenta un problema di gestione nell'evoluzione del prodotto, sia dal punto di vista della manutenzione/evoluzione, sia dal punto di vista del supporto all'utilizzo.
Nell'analisi seguente si analizza anche la presenza "in circolo" di versioni non "stable": una elevata presenza di tali versioni rappresenta un ulteriore aggravamento delle complicazioni di cui sopra.
Nei
grafici seguenti è possibile verificare la
distribuzione percentuale (in termini di utilizzi sui progetti) delle varie versioni
dei singoli plugin. Poichè continuare ad utilizzare una versione "latest" in presenza della corrispondente versione "stable" è considerata una
anomalia, nel conteggio le versioni latest sono assimilate alla corrispondente versione stabile.
GuiGen

Dall'analisi dei dati si evince una
buona penetrazione delle versioni minor più recenti: l'utilizzo delle versioni 1.6.x rappresenta circa l'89% dei casi mentre i restanti 9 progetti utilizzano la versione precedente (1.5.0). Le versioni precedenti alla 1.5.0 non sono tracciate in quanto non era ancora attivo il rilevamento dell utilizzo.
Focalizzandosi sulle versioni di fix rilasciate per il ramo 1.6.x, si evince un dato abbastanza positivo, poichè l'adozione delle fix più recenti è abbastanza buona, anche per release relativamente giovani (fine 2011).
Per quanto riguarda invece la presenza di versioni "latest" in presenza di versioni "stable" corrispondenti invece il dato è meno positivo: la tendenza a mantenere allineata la versione con quella più stabile è scarsa. Ad esempio per la v. 1.6.3 il rapporto tra utilizzi di versione 1.6.3 stable e 1.6.3 latest è di 1 a 3, mentre per la 1.6.1 (ormai stabile da tempo) il rapporto è di 1 a 2. Anche il numero delle versioni latest è elevato, confermando ulteriormente il problema. Si ricorda che il supporto all'utilizzo viene erogato solo sulle versioni stable.
In sintesi il possibile punto di miglioramento sul fronte guigen sta in due azioni che si raccomanda ai progetti di valutare:
- aggiornamento delle versioni latest alla versione stable corrispondente
- adozione dell'ultima fix disponibile, fissata la minor release
ServiceGen

Dall'analisi dei dati si evince una buona penetrazione delle versioni minor più recenti (cosiderato che la 1.2.0 è stata rilasciata a dicembre 2011): l'utilizzo della versione 1.2.o rappresenta già circa il'20% dei casi mentre il restante 80% è attestato sulla versione 1.1.x.
Focalizzandosi sulle versioni di fix rilasciate per il ramo 1.1.x, si evince un dato abbastanza positivo, poichè l'adozione delle fix più recenti è abbastanza buona.
Per quanto riguarda invece la presenza di versioni "latest" in presenza di versioni "stable" corrispondenti invece il dato è meno positivo: la tendenza a mantenere allineata la versione con quella più stabile è scarsa. Ad esempio per la v. 1.2.0 il rapporto tra utilizzi di versione 1.2.0 stable e 1.2.0 latest è di 1 a 1, mentre per la 1.1.1 (ormai stabile da tempo) il rapporto è di 1 a 2. Anche il numero delle versioni latest è elevato, confermando ulteriormente il problema. Si ricorda che il supporto all'utilizzo viene erogato solo sulle versioni stable.
In sintesi il possibile punto di miglioramento sul fronte guigen sta in due azioni che si raccomanda ai progetti di valutare:
- aggiornamento delle versioni latest alla versione stable corrispondente
- adozione dell'ultima fix disponibile, fissata la minor release
DataGen

Dall'analisi dei dati si evince una buona penetrazione delle versioni minor più recenti (cosiderato che la 1.2.0 è stata rilasciata a dicembre 2011): l'utilizzo della versione 1.2.0 rappresenta già circa il'33% dei casi mentre il 57% è attestato sulla versione 1.1.x (e il restante 10% su versioni precedenti).
Focalizzandosi sulle versioni di fix rilasciate per il ramo 1.1.x, si evince un dato abbastanza positivo, poichè l'adozione delle fix più recenti è abbastanza buona (pur essendoci stata in realtà una sola release correttiva).
Per quanto riguarda invece la presenza di versioni "latest" in presenza di versioni "stable" corrispondenti invece il dato è meno positivo: la tendenza a mantenere allineata la versione con quella più stabile è scarsa. Il fenomeno è particolarmente evidente sulla versione 1.1.0, con un rapporto tra utilizzi di versione 1.1.0 stable e 1.1.0 latest è di 1 a 4. Anche il numero delle versioni latest è, in quel caso, elevato, confermando ulteriormente il problema. Si ricorda che il supporto all'utilizzo viene erogato solo sulle versioni stable.
In sintesi il possibile punto di miglioramento sul fronte guigen sta in due azioni che si raccomanda ai progetti di valutare:
- aggiornamento delle versioni latest alla versione stable corrispondente
- adozione dell'ultima fix disponibile, fissata la minor release
Conclusioni
Dall'analisi dei dati relativi ai tre tool emerge che il punto comune di miglioramento sta nella opportunità per i progetti di effettuare l'upgrade dalle versioni latest alle corrispondenti versioni stable. Tale aggiornamento è di interesse dei progetti in quanto è condizione necessaria per ottenere supporto e poter segnalare bug.
Al netto di questa "stabilizzazione", il fatto che le ultime versioni abbiano una diffusione abbastanza buona unita all'alto grado di retrocompatibilità che i tool conservano nella loro evoluzione permette di ipotizzare politiche di
deprecation / end of life delle versioni precedenti non eccessivamente conservative.