sabato 2 febbraio 2008

Software: prodotto artigianale o industriale?

WIKIPEDIA: L'IT, acronimo di Information Technology, indica l'uso della tecnologia nella gestione e nel trattamento dell'informazione, specie nelle grandi organizzazioni. In particolare l'IT riguarda l'uso di apparecchi digitali e di programmi software che ci consentono di creare, memorizzare, scambiare e utilizzare informazioni (o dati) nei più disparati formati: dati numerici, testuali, comunicazioni vocali e molto altro.


Se andiamo a considerare l’Information Technology e il suo sviluppo, come uno dei parametri sui quali valutare l’andamento futuro dell’economia e dei mercati globali e al contempo leggiamo la definizione che ne da Wikipedia, ci si accorge dell’importanza che il software ha acquisito negli ultimi anni e del ruolo strategico che è chiamato e che andrà ad occupare in futuro.
Andando ad analizzare la storia del software si può constatare come quest’ultimo è un prodotto recente rispetto a tutti gli altri prodotti dell’ingegno umano che sono entrati a far parte della vita quotidiana come i prodotti dell’elettronica, della meccanica e dell’edilizia. Lo sviluppo di questi ultimi prodotti ha subito un’evoluzione che li ha visti nascere dal nulla, crescere grazie all’artigianato per poi approdare ad una produzione industriale che ne garantisce il corretto funzionamento e il pieno controllo sotto ogni punto di vista. L’industrializzazione di tali prodotti è stata resa senza dubbio possibile dalla formalizzazione di tecniche per la gestione della loro progettazione, realizzazione e manutenzione. Tali tecniche sono poi diventate la materia delle scienze ingegneristiche dei settori in questione.
Comparando il software ai settori prima citati ci si può benissimo rendere conto che il delicatissimo passaggio evolutivo che tale prodotto sta subendo è proprio quello dalla produzione artigianale (che contraddistingue finora la gran parte delle applicazioni piccole e medie, ma a volte anche grandi) alla produzione industriale. Passaggio indispensabile nella lotta al miglioramento continuo che è necessario intraprendere per questa tipologia di prodotti. Tale passaggio, come negli altri casi può avvenire soltanto seguendo i principi dettati da una disciplina ormai matura per essere applicata come l’Ingegneria del Software.
Per applicare la disciplina in questione è necessario un cambiamento nella concezione che si è avuta finora dello sviluppo del software e non è neppure pensabile l’applicazione di strategie simili a quelle delle altre ingegnerie proprio per l’estrema diversità del prodotto che si prefiggono di realizzare.
Il software al contrario di ingranaggi, case e circuiti ha caratteristiche di invisibilità, compenetrabilità che ne rendono facile la perdita di controllo ma è anche fortemente riutilizzabile se progettato correttamente. Progettare un software non è come progettare una casa, mentre per quest’ultima una variazione di progetto può essere dovuta solo ad errori o ad eventi congiunturali, nel caso del software la sua evoluzione e il suo cambiamento è da considerarsi parte integrante del progetto stesso ed è quindi necessario impiantare a priori strategie di gestione di questi cambiamenti.
Il risultato che si otterrà dall’applicazione di tecniche ingegneristiche nella produzione del software è quello di ottenere un prodotto conforme al progetto e agli standard, facilmente gestibile ed ampliabile, il prodotto che verrà creato abbatterà i costi di sviluppo ma soprattutto quelli di manutenzione che al momento attuale sono stimati in oltre il 60% del costo globale del progetto. Il prodotto ottenuto con l’applicazione dei giusti criteri sarà classificabile senza ombra di dubbio come prodotto industriale.

sabato 24 novembre 2007

WPF/E

Fra le novità introdotte da .NET 3.0 sono stato positivamente colpito da una tecnologia che a detta di alcuni dovrebbe rivoluzionare lo strato di presentazione delle applicazioni WEB, rendendole senza dubbio più accattivanti e performanti. Sto parlando ovviamente di WPF\E.

Leggendo alcuni articoli sembra che tale tecnologia (che va a soppiantare anche il "vecchio!!!" AJAX) possa essere considerata come punto di convergenza per lo sviluppo di interfacce.

Le domande che pongo a tutti voi (sicuramente molto più esperti di me) sono le seguenti:

1) Quali sono i contro da tenere in considerazione nell’utilizzo di tale tecnologia nello sviluppo di nuove applicazioni?

2) Conviene iniziare un processo di migrazione delle applicazioni già esistenti, se si quali sono i fattori di cui tener conto?

Ringrazio tutti coloro che vogliano aiutarmi, sperando di essere all'altezza della discussione.