Language
English       Italian
Follow us:
 
Cerca
Home > Soluzioni > Software Factories

Software Factories

Competenze e servizi per implementare Software Factory di successo per migliorare la produttività e la qualità dello sviluppo.

Sin da quando sono state introdotte, 4ward ha investito pesantemente sulle Software Factory, acquisendone consistenti esperienze di allestimento, avviamento e personalizzazione.

Nell’Ottobre del 2007, Jezz Santos e Edward Bakkera hanno introdotto il concetto di Software Factory come estensione di Visual Studio Team System per automatizzare lo sviluppo software in determinati dominii applicativi. Da qui sono nati vari insiemi di componenti personalizzabili comprendenti codice riutilizzabile, documentazione, varie tipologie di implementazione specifiche per le situazioni più ricorrenti, wizard, generatori di codice e designer visuali.

I vantaggi principali conseguenti all’impiego delle Software Factory sono riscontrabili su diversi piani:
- Riduzione dei rischi, incremento dei livelli di riuso: partendo da componenti già collaudati e sviluppati sulla base delle Best Practice rilevate su scala internazionale, si eliminano i rischi di commettere errori di impostazione e codifica nella messa a punto delle applicazioni. Il riutilizzo dei componenti viene guidato direttamente dalla Software Factory, aiutando così molto concretamente gli sviluppatori nel loro lavoro.
- Rispetto degli standard nei processi di sviluppo e nella codifica: grazie alle Sofware Factory viene generato codice che segue la struttura di progetto e le linee guida conformi a quelle definite dall’azienda, permettendo agli sviluppatori di concentrarsi sulle attività legate alla stesura della Business Logic. Analogamente, i processi di creazione del codice vengono guidati dalla Software Factory seguendo le pratiche più efficienti ed affidabili.
- Guida nelle decisioni architetturali complesse: le Software Factory aiutano a definire l’architettura delle soluzioni sin dall’inizio del ciclo di sviluppo, anche nel caso di semplici interventi di personalizzazione, riducendo il lavoro ed i rischi a carico dei team di sviluppo.
- Valorizzazione del Know how e degli skill esistenti: utilizzando le Software Factory, alle quali viene demandato il compito di affrontare i problemi di natura più tecnologica, utilizzando il codice già predefinito o quello generato automaticamente, gli sviluppatori possono operare in modo produttivo senza dover affrontare gli aspetti squisitamente tecnologici delle applicazioni. Discorso analogo vale per quanto riguarda gli skill necessari a produrre nel nuovo ambiente di sviluppo.
- Outsourcing e Offshoring: negli scenari che prevedono l’assegnazione di parte dello sviluppo all’esterno della propria organizzazione, le Software Factory consentono di migliorare il controllo dei processi di outsourcing/offshoring in quanto la generazione assistita del codice porta a risultati strutturalmente uniformi indipendentemente da chi li ha prodotti, semplificandone le successive attività di controllo e di mantenimento.
 
Creare una Software Factory significa partire da un prodotto o da un prototipo relativo allo specifico dominio che si vuole automatizzare, ad esempio un sito web di e-Commerce, analizzarlo e scomporlo in elementi automatizzabili e non, per poi identificare le singole parti o blocchi da generare. Il passaggio successivo consiste nell’utilizzare gli specifici Toolkit di creazione delle Software Factory e l’insieme di estensioni a disposizione per assemblare il processo produttivo tramite il quale arrivare al prodotto finito.

I punti critici di tale attività sono riscontrabili su diversi fronti:

- Aspetti culturali:
alla base delle Software Factory ci deve essere un eccellente impianto di Application Lifecycle Management, che copra gli aspetti di tracciabilità, automazione dei processi e controllo, con la relativa reportistica. In tale contesto, le Software Factory offrono importanti contributi nell’incrementare la qualità e la produttività, riducendo al tempo stesso i costi di mantenimento e di implementazione grazie anche all’automazione della generazione del codice.

- Aspetti organizzativi: dato per assodato che i benefici conseguiti debbono risultare documentabili e quantificabili, i tre criteri da utilizzare per valutare i miglioramenti conseguiti sono:

  • Rispetto dei tempi e dei Budget previsti
  • Soddisfazione dei requisiti espliciti ed intrinsechi
  • Livelli di qualità raggiunti.

Si tratta pertanto di definire le metriche e gli strumenti con i quali rilevare i dati di partenza e monitorarne l’evoluzione nel tempo per dimostrare i miglioramenti ottenuti grazie all’adozione della Software Factory.

-Aspetti tecnologici: nel rilasciare sul mercato le proprie Software Factory, Microsoft ha concepito alcuni scenari di riferimento, una serie di dominii ed alcune funzioni, lasciando aperta la possibilità di estendere ciascuno di essi. Nel corso dei progetti realizzati, su sollecitazione dei propri clienti e dei casi reali che si è trovata a dover risolvere, 4ward ha cominciato a sviluppare varie estensioni alle Software Factory di base, ampliandone notevolmente le capacità.
 
4ward Software Factory Automation Extension è l’esclusivo Tool messo a punto da 4ward per rendere più sicura ed efficiente la creazione di nuove estensioni alle Software Factory di base, potenziandone le componenti, le funzioni di guida, i Pattern e la disponibilità di Best Practice. In tal modo vengono realizzate anche tutte le parti personalizzate richieste dai singoli clienti o progetti, esaltandone le possibilità di riuso.
Le Software Factory di base sono le seguenti:

  • Web Service Software Factory: per web service basati su .NET 3.5 (WCF)
  • Web Client Software Factory: per interfacce web facilmente personalizzabili e basate su pattern ben definiti e conosciuti
  • NHibernate Software Factory: per data layer basati sull’omonimo OR/M open source
  • Smart Client Software Factory: per interfacce componibili basate sul look&feel di Outlook e sui servizi
  • Biztalk Software Factory: per applicazioni Biztalk che seguano le best practice
  • Sharepoint Software Factory: per realizzare facilmente portali di aggregazione basati su Sharepoint

Quasi ognuna di queste sono state ampliate da 4ward, in particolare tutte quelle comunemente utilizzate in ambienti SOA. In particolare sono state arricchite le capacità di accesso ai dati tramite NHibernate, la connettività tra servizi tramite MSMQ, l’utilizzo componenti di terze parti per la creazione di User Interface
 

Nella creazione di nuove Software Factory o nel potenziamento di quelle esistenti, 4ward svolge l’analisi del prodotto e del relativo dominio (web, windows, web service) e valuta, assieme al cliente, la fattibilità della sua automazione.

La fase successiva consiste nella definizione dei requisiti della Software Factory e nella pianificazione delle iterazioni che comporranno il rilascio. In questa fase vengono raccolti i pattern, le best practice, la naming convention e tutte le altre componenti dello sviluppo software già presenti presso il cliente in modo da poterle analizzare ed inserire nella Software Factory.
La creazione è un processo iterattivo dove il cliente può vedere i risultati fin da subito e può modificare i requisiti basandosi sull’esperienza reale di utilizzo.

Software Factory e SOA: un caso reale

Grazie ad un attento impiego delle Software Factory si può semplificare considerevolmente la creazione di applicazioni concepite in base alle architetture orientate ai servizi (SOA), riducendo i costi ed i rischi di implementazione, oltre agli skill necessari per la definizione della SOA.
In questi anni, 4ward ha maturato una consistente esperienza nella realizzazione di Software Factory mirate alla produzione di componenti per architetture basate sui servizi. Così, ad oggi, 4ward dispone di una serie di componenti personalizzati che possono essere utilizzati ed integrati fra loro per allestire una catena di produzione del software in maniera simile a quanto si fa nell’industria.

In particolare, prendendo ad esempio l’architettura rappresentata nella figura, è possibile individuarvi alcuni domini specifici come:

  • B2B
  • Frontend
  • Servizi
  • Infrastruttura
     
Per ognuno di questi è stata creata una Software Factory in grado di sfruttare tutti i vantaggi per:
  • Nascondere la complessità dell’infrastruttura;
  • Utilizzare pattern architetturali predefiniti e consolidati;
  • Ridurre i tempi di sviluppo;
  • Ridurre gli skill necessari in ambito SOA;
  • Uniformare il codice generato.
Di seguito lo schema di base dell'architettura realizzata: