sabato 15 dicembre 2007

Plugin

Questo termine sta prendendo sempre più piede.. diciamo che è una moda nata parecchi anni fà quando ci si era resi conto che i clienti oggi chiedevano A domani A+B dopo domani A+B+C.

E spostandoci su una linea temporale un pò più ampia si arrivava ad avere la somma dell'intero alfabeto (comprese lettere cirilliche).

Questo in un primo momento venne interpretato come "è stata fatta male l'analisi iniziale".
Col passare del tempo divenne "prevenire è meglio che curare".

Sta di fatto che studiare un'applicazione fatta a "plugin" consente parecchi vantaggi.

  1. Scrivere meno codice
  2. Scrivere un codice più finalizzato
  3. Modificare in modo più finalizzato
  4. Gestire in modo più accurato eventuali abilitazioni alle funzionalità
  5. Diminuire eventuali SLA per la gestione di Bug Fix
  6. Aggiungere nuove funzionalità con maggior semplicità
E' anche vero però che strutturare un applicazione a plugin richiede un bel pò di dimestichezza con il concetto di plugin stesso.

La mia personalissima definizione, di plugin è :
un qualcosa che interagisca con l'applicativo padre e che tuttavia rimanga il più possibile autonomo nella gestione di quello in cui è specializzato.

Per fare un esempio abbiamo l'applicativo calcolatrice, che esegue le principali 4 operazioni.
Un plugin potrebbe essere la radice quadrata.

Scrivere meno codice
Questo è vero fino ad un certo punto, ma in buona sostanza i plugin sono e rimangono piccoli applicativi che si occupano di svolgere funzioni specializzate.
Si scrive molto probabilmente meno codice perchè si risce a creare un maggior disaccoppiamento fra l'applicazione padre ed il plugin. (quindi) Il plugin stesso è fatto da poco codice, anche se
l'applicazione padre dovrà contere il codice necessario per dialogare con il plugin.

Scrivere un codice più finalizzato
Questo è sicuramente il punto più importante della programmazione a plugin... si specializzano le funzionalità in modo che queste non debbano essere ripetute in altre parti dell'applicativo.
L'anagrafica degli utenti, per esempio, deve essere una funzionalità unica all'interno di un applicazione, e deve essere sempre richiamata in modo da non dover replicarne il codice.
Realizzare un anagrafica utenti tramite plugin consente inoltre di poter dare, all'applicazione padre, la possibilità di gestire la profilazione abilitando o meno quella funzionalità.

Modificare in modo più finalizzato
Quante volte abbiamo dovuto ricompilare TUTTO ?? Già abbiamo fatto il nostro bravo applicativo, ci vengono richieste delle modifiche su una funzionalità. E noi dobbiamo
-rimettere mano al codice di tutta l'applicazione
-verificare tutte le funzionalità che collidono con quanto abbiamo fatto (regression)
-generare un nuovo test book sulla regression.. e via via via ...
In questo caso, se è stata fatta una strutturazione concreta, non c'e' bisogno di approfondire così tanto il nostro intervento.

Dobbiamo modificare il plugin, agire solo su di lui, e non dobbiamo fare una regression totale,
ma concentrarci solo su una minor porzione di codice.
(certo il test book serve lo stesso, ma non occorre verificare tutta l'applicazione...)

Gestire in modo più accurato eventuali abilitazioni alle funzionalità.
Posto l'esempio di un applicazione dedicata ad un ufficio strutturato (manger, leaders, developers)
potrebbe essere necessario creare delle profilazioni con realativi livelli abilitativi.
Un applicazione realizzata a plugin consente una notevole facilitazione, l'abilitazione potrebbe essere resa proprio tramite il processo di caricamento dei plug.
Rendendo così l'applicativo dinamico, in base ai profili fin già dal caricamento dell'applicativo stesso.
Si pensi ad un prodotto di consuntivazione dove:
developer > compila il rapportino
leader > verifica stato di compilazione, e report giornaglieri
manger > controlla lo stato dei vari leader , dei progetti e dei report.

Chiaramente una corretta profilazione consete ad ogni tipologia di utenza di non vedere ciò
che non gli è consentito.

Diminuire eventuali SLA per la gestione di Bug Fix
Gli SLA... siamo tutti affetti da questo male... o questo bene.
Intervenire su una sola funzionalità difettosa non coincide con l'intervenire su tutto un applicativo. Questo è un dato di fatto indiscutibile.

Aggiungere nuove funzionalità con maggior semplicità
Mentre questa è vera e propria filosofia, ma è anche quanto di più vicino alla realtà.

In un applicazione fatta a plugin è molto più semplice creare una nuova funzionalità limitando notevolmente gli impatti su tutto il resto dell'applicazione, e non solo.
Questo consente anche il vantaggio di gestire le nuove funzionalità in completa autonomia rispetto al resto dell'applicazione.

Ogni nuova funzionalità realizzata tramite un plugin dovrà essere vista come un nuovo progetto,
e naturalmente dovrà presentare quanto necessario per essere individata dal padre e qundi usta.

Nessun commento: