martedì 24 settembre 2013

Il valore di un Framework software

In informatica, un Framework software e' lo scheletro di un'applicazione che deve essere esteso e customizzato per ottenere la soluzione specifica ad un dato problema riguardante un ambito applicativo.

L'utilizzo di un framework impone allo sviluppatore una precisa metodologia di implementazione del software facilitandone nel contempo il lavoro:  si e' sollevati dalla necessità di rifare molte funzionalità comuni dato che vengono fornite dalle componenti di base del framework stesso (infrastruttura) e ci si può concentrare maggiormente sui problemi riguardanti lo specifico scenario in esame e le funzionalità applicative richieste.

Un framework è sicuramente sempre estendibile seguendo le direttive ed i modelli di programmazione pre-definiti (pattern)  e, se il codice è OpenSource, è anche customizzabile nei suoi moduli fondamentali chiamati Engine o Core.

L'arricchimento delle funzionalità del framework avviene seguendo le specifiche e sviluppando i moduli software di cui si ha bisogno, le nuove implementazioni ereditano la filosofia di funzionamento dei moduli Core.
Le caratteristiche principali di un buon framework sono:
  • il livello di maturità della infrastruttura Core
  • il rispetto degli standard, dei protocolli e delle best practices di quell'ambito tecnologico ed applicativo
  • l'alta configurabilità (configuring, not coding)
  • la facilità con cui si riescono a realizzare ed aggiungere i nuovi moduli (plugin)
  • la chiarezza e la completezza dei pattern
  • le facilities di contorno (debugging, monitoring, logging, console, ecc.)
  • la qualità della documentazione fornita che ne facilità l'uso
  • l'esistenza di un supporto tecnico o di una community di sviluppatori a cui rivolgersi
  • l'esistenza di una roadmap evolutiva che prevede anche l'adeguamento verso le nuove versioni del software di base
  • la retro-compatibilità delle nuove versioni.
Ad oggi, esistono Framework applicativi di tutti i tipi, per tutti gli ambiti applicativi e tecnologici a diversi livelli di qualità e maturità.
La maggior parte nascono e vengono evoluti in un contesto di community OpenSource ma i più consolidati sono spesso utilizzati esplicitamente o re-impacchettati anche all'interno di soluzioni commerciali di tipo Enterprise in ambito Business.

Image courtesy of Stuart Miles / FreeDigitalPhotos.net