Eccomi di ritorno dall'aperitivo post Architect Forum, e non potevo non postare le mie
impressioni sulla giornata. (Nota a latere, all'ape non solo stato l'unico
ubriacone del gruppo: mi ha fatto compagnia Adrian prendendo un Negroni pure lui
)
Giornata all'insegna dei ritardi e degli scioperi: l'evento è iniziato alle
10:30 ed è finito alle 16:45 a causa dello sciopero dell'ATM (ma questi quanti
scioperi fanno all'anno??.. mah...)
Iniziamo a parlare degli speaker: Ingo e Beat sono grandiosi, molto chiari, soprattutto Beat,
che pur essendo uno svizzero di Losanna, parla inglese benissimo, senza
nessun'accento, mentre Ingo ha un po' di accento tedesco.
Il sunto della giornata è stato che lo sviluppo sw deve spostarsi
dall'approccio "artigianale" a quello "industriale", ma il
focus delle sw factories non è tanto sullo sviluppo di
framework omnicomprensivi e generici, ma nello sviluppo di tool
specializzati e specifici al dominio
applicativo nel quale si sviluppa.
L'esempio col quale Beat ha iniziato la sessione però la dice lunga sul tipo
di problemi risolti da questo approccio. Ha paragonato lo sviluppo software allo
sviluppo di un AirBus: la maggiorparte delle parti funzionali sono fissate
(motori, ali, fusoliera, cockpit), mentre altre sono "customizzabili"
(allestimento degli interni, colore della fusoliera).
E' un ottimo paragone
se un'azienda è specializzata in software di gestione documentale, in CRM, in
CMS, ma non se uno fa il consulente o lavora in un azienda che lavora su
progetti: questi raramente vedono problematiche simili se si escludono quelle
ovvie di accesso ai dati, webservices, ecc...
Da queste necessità nascono due tipologie di prodotti al supporto
dello sviluppo:
- DSL o Domain Specific Languages: sono
linguaggi specifici per la risoluzione di un problema, ad esempip Ingo ha
sviluppato un linguaggio specifico per modellare il pattern MVC.
- GAT/GAX o Guidance Automation Toolkit, Guidance
Automation Extension: è un toolkit che permette di rendere formale
l'applicazione di una best practice o una guidance
Entrambi sono SDK o software per sviluppare del codice che aiuti a sviluppare
altro codice.
Il primo (DSL) serve per modellare un linguaggio col quale
definire un modello che poi si possa trasformare in maniera automatica in codice
(l'esempio è stato l'UIP, ma si può applicare ovunque si possa modellare un
problema).
Il secondo (GAT) risolve un problema differente,
cioè l'applicazione di una Guidance o Best Practice: l'esempio portato è stato
lo sviluppo di un webservice. In generale è necessario seguire una serie di step
predefiniti per raggiungere un certo risultato. Con questo toolkit si possono
automatizzare le "ricette" riducendo quindi il numero di linee di codice che
devono essere realizzate. Inoltre si riduce anche il livello di conoscenze
necessarie per realizzare un webservice: con il WebService Guidance Automation
Package si può creare un webservice che supporata uno svariato numero di
bindings senza sapre nulla di cosa siano i webservices.
E' un argomento che mi interessa parecchio, ma penso che passeranno ancora
parecchi anni prima che il mercato recepisca questi concetti e li usi nella
maniera per come sono stati concepiti: al momento i clienti sono stati viziati
dai commerciali e per loro tutto è possibile.
Tornando al paragone
dell'AirBus, il tipico cliente di software personalizzato chiede che il suo
"airbus" sia 30mt più corto e con 3 ali, e il commerciale tipico gli risponde:
"Certo, lo tagliamo un po' e la 3a ala ci sta benissimo sul tetto, tanto c'è
tanto spazio", ed il team di sviluppo deve farlo.
Ma se si
va verso un'approccio più industriale del software, è necessario che anche i
clienti, e soprattutto i commerciali capiscano che alcune cose sono
immodificabili, altre sono "configurabili" (cioè già pensate dal team di
progetto, e attivabili su richiesta) e altre "customizzabili" secondo le
richieste del cliente.
Vi lascio qualche link per approfondire l'argomento: