Software development nel mondo industriale

27
Software Development nel mondo industriale: specificità e problematiche Ing.Mauro Inzerillo Maggio 2010

description

 

Transcript of Software development nel mondo industriale

Page 1: Software development nel mondo industriale

Software Development nel mondo industriale: specificità e

problematiche

Software Development nel mondo industriale: specificità e

problematiche

Ing.Mauro Inzerillo

Maggio 2010

Ing.Mauro Inzerillo

Maggio 2010

Page 2: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Chi sono, chi siamoChi sono, chi siamo

• Mi chiamo Mauro Inzerillo, sono

responsabile della business unit RED

Team

• Ci occupiamo di progettare e sviluppare

soluzioni IT per grandi aziende

• Parleremo di sviluppo industriale

• Mi chiamo Mauro Inzerillo, sono

responsabile della business unit RED

Team

• Ci occupiamo di progettare e sviluppare

soluzioni IT per grandi aziende

• Parleremo di sviluppo industriale

Page 3: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

sommariosommario

• Il software industriale• Modello di business dello sviluppo

software• Dove stanno i costi di sviluppo ?• Test live• Motivi ed obiettivi della progettazione

di sistemi

• Il software industriale• Modello di business dello sviluppo

software• Dove stanno i costi di sviluppo ?• Test live• Motivi ed obiettivi della progettazione

di sistemi

Page 4: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Cos’è il software industrialeCos’è il software industriale

• Vita attesa del software: anni

• Variabilità dei requisiti (sistema che evolve)

• Applicazione mission critical (dal buon

funzionamento del sistema dipendono una o più

funzioni aziendali fondamentali)

• Dimensione del sistema (programming in the

large)

• Vita attesa del software: anni

• Variabilità dei requisiti (sistema che evolve)

• Applicazione mission critical (dal buon

funzionamento del sistema dipendono una o più

funzioni aziendali fondamentali)

• Dimensione del sistema (programming in the

large)

Page 5: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Il problema della dimensioneIl problema della dimensione

• Le dimensioni di un sistema impattano ogni aspetto del sistema che costruiamo

• Esempi di problemi semplici– Costruire un aquilone (10 metri apertura

alare)

– Fare la cena (per 1.000 persone)

– Andare a Milano (1.000 persone)

• Le dimensioni di un sistema impattano ogni aspetto del sistema che costruiamo

• Esempi di problemi semplici– Costruire un aquilone (10 metri apertura

alare)

– Fare la cena (per 1.000 persone)

– Andare a Milano (1.000 persone)

Page 6: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Il problema della dimensioneIl problema della dimensione

• La dimensione altera il problema– Competenze– Materiali (piattaforme: frameworks, third-party

libraries, server systems)– Strumenti (tools: versioning, change

management, ide, – Tecniche (rup, metodi agile, project

management)– Overhead (planning risorse, )

• La dimensione altera il problema– Competenze– Materiali (piattaforme: frameworks, third-party

libraries, server systems)– Strumenti (tools: versioning, change

management, ide, – Tecniche (rup, metodi agile, project

management)– Overhead (planning risorse, )

Page 7: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Il problema del timeframeIl problema del timeframe

• Cosa cambia con l'allungamento della durata attesa del software ?– Un insieme di persone diverse sarà

chiamata, in momenti diversi, a manutenere ed evolvere il sistema

– Una persona diversa è anche la stessa persona passato un sufficiente intervallo di tempo

• Cosa cambia con l'allungamento della durata attesa del software ?– Un insieme di persone diverse sarà

chiamata, in momenti diversi, a manutenere ed evolvere il sistema

– Una persona diversa è anche la stessa persona passato un sufficiente intervallo di tempo

Page 8: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Il problema del timeframeIl problema del timeframe

• i cambiamenti introdotti nel tempo introducono un nuovo asse– il software è stateful: quanto vedete nei sorgenti

accumula tutta la storia delle revisioni occorse nel tempo (anni)

• in momenti diversi (cambiano librerie, frameworks,persone)• da persone diverse• con interlocutori diversi

– il software dev’essere progettato per un cambiamento pianificato

• occorre individuare le direzioni del cambiamento• occorre modulare la complessità della soluzione con la

probabilità prevista del cambiamento

• i cambiamenti introdotti nel tempo introducono un nuovo asse– il software è stateful: quanto vedete nei sorgenti

accumula tutta la storia delle revisioni occorse nel tempo (anni)

• in momenti diversi (cambiano librerie, frameworks,persone)• da persone diverse• con interlocutori diversi

– il software dev’essere progettato per un cambiamento pianificato

• occorre individuare le direzioni del cambiamento• occorre modulare la complessità della soluzione con la

probabilità prevista del cambiamento

Page 9: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Il problema del timeframeIl problema del timeframe

• Changing requirements: le esigenze cambiano nel tempo–I cambiamenti devono implicare il

dispendio di tempo più basso possibile

–Il software deve opporre poca “inerzia” ai cambiamenti introdotti

• Changing requirements: le esigenze cambiano nel tempo–I cambiamenti devono implicare il

dispendio di tempo più basso possibile

–Il software deve opporre poca “inerzia” ai cambiamenti introdotti

Page 10: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

La dimensione economicaLa dimensione economica

• un cliente è disposto a pagare una cifra massima per un sw (valore aggiunto)

• il valore aggiunto è completamente scorrelato dalla complessità tecnica o dalla struttura interna del software

• oltre alla dimensione costo assume un valore fondamentale l’aspetto del tempo di consegna

• un fornitore deve conseguire un utile (differenza ricavi-costi) dallo sviluppo

• in un progetto il prezzo è fissato, il costo è dato dal prodotto costoPersona * gg.

• un cliente è disposto a pagare una cifra massima per un sw (valore aggiunto)

• il valore aggiunto è completamente scorrelato dalla complessità tecnica o dalla struttura interna del software

• oltre alla dimensione costo assume un valore fondamentale l’aspetto del tempo di consegna

• un fornitore deve conseguire un utile (differenza ricavi-costi) dallo sviluppo

• in un progetto il prezzo è fissato, il costo è dato dal prodotto costoPersona * gg.

Page 11: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

La dimensione economica del progettoLa dimensione economica del progetto

• Qualunque attività è un progetto, ossia

un’attività che ha

– Un obiettivo preciso

– Un tempo assegnato (disponibile: offerte,

gare, penali,…)

– Un budget assegnato (oltre, comincio ad

erodere il guadagno fino a perderci)

• Qualunque attività è un progetto, ossia

un’attività che ha

– Un obiettivo preciso

– Un tempo assegnato (disponibile: offerte,

gare, penali,…)

– Un budget assegnato (oltre, comincio ad

erodere il guadagno fino a perderci)

Page 12: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Tipico modello di business di un’azienda ITTipico modello di business di un’azienda IT

• La produzione di software è un’attività

labour intensive, i costi sono legati

essenzialmente al costo della manodopera

• L’industria sviluppa metodi, strumenti,

metodologie tali da minimizzare il costo

a parità di risultato

• La produzione di software è un’attività

labour intensive, i costi sono legati

essenzialmente al costo della manodopera

• L’industria sviluppa metodi, strumenti,

metodologie tali da minimizzare il costo

a parità di risultato

Page 13: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Dove stanno i costi ?Dove stanno i costi ?

• Il software industriale è un sistema complesso

• I costi di “primo sviluppo” assorbono il 30% del totale

• Il restante 70% è “manutenzione”

• Il software industriale è un sistema complesso

• I costi di “primo sviluppo” assorbono il 30% del totale

• Il restante 70% è “manutenzione”

costruzione

manutenzione

Page 14: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Dove stanno i costi ?Dove stanno i costi ?

• in cosa consiste la manutenzione ?–capire l’esistente–progettare la modifica–realizzare la modifica

• Qual è la parte preponderante ?

• in cosa consiste la manutenzione ?–capire l’esistente–progettare la modifica–realizzare la modifica

• Qual è la parte preponderante ?

Page 15: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Test liveTest live

• Modifichiamo un software esistente– Leggo un file contenente dati di attività di persone su

diversi progetti

– In output vengono mostrati i dati delle ore lavorate per ogni commessa

• Modifiche richieste

A)Aggiungere un campo “business unit” al file. Scrivere nell'output le ore lavorate per business unit

B)Leggere i dati da array e non da file

• Modifichiamo un software esistente– Leggo un file contenente dati di attività di persone su

diversi progetti

– In output vengono mostrati i dati delle ore lavorate per ogni commessa

• Modifiche richieste

A)Aggiungere un campo “business unit” al file. Scrivere nell'output le ore lavorate per business unit

B)Leggere i dati da array e non da file

Page 16: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

risultatirisultati

• la parte preponderante è CAPIRE• la modifica A era molto più semplice nel caso

flat – (% codice modificato, tempo assoluto)

• la modifica B era più semplice nel caso o.o.– (% codice modificato, tempo assoluto)

PERCHE’ ?

• la parte preponderante è CAPIRE• la modifica A era molto più semplice nel caso

flat – (% codice modificato, tempo assoluto)

• la modifica B era più semplice nel caso o.o.– (% codice modificato, tempo assoluto)

PERCHE’ ?

Page 17: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Le differenzeLe differenze

• Codice “flat”– La modifica A era facilmente applicabile

perchè i concetti implicati erano pochi e vicini

– La modifica B risultava meno semplice, dovendo praticamente riscrivere tutto il codice (concetti non isolati)

• Codice “flat”– La modifica A era facilmente applicabile

perchè i concetti implicati erano pochi e vicini

– La modifica B risultava meno semplice, dovendo praticamente riscrivere tutto il codice (concetti non isolati)

Page 18: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Le differenzeLe differenze

• Codice object oriented– La modifica A era facilmente applicabile ma

impattava molte più righe di codice e componenti (concetti presenti NON mappavano le future esigenze)

– La modifica B era facilmente applicabile, il concetto di alimentazione dati è incapsulato, disaccoppiando il resto del codice da tale aspetto

• Codice object oriented– La modifica A era facilmente applicabile ma

impattava molte più righe di codice e componenti (concetti presenti NON mappavano le future esigenze)

– La modifica B era facilmente applicabile, il concetto di alimentazione dati è incapsulato, disaccoppiando il resto del codice da tale aspetto

Page 19: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Lessons learnedLessons learned

• I requisiti di un sistema sono la chiave per poter sviluppare un sistema in maniera economicamente sostenibile (constraint di tempo, tecnologia, costo)

• Un “buon software” modula la sua complessità in ragione del mix di requisiti e risorse disponibili

• I requisiti di un sistema sono la chiave per poter sviluppare un sistema in maniera economicamente sostenibile (constraint di tempo, tecnologia, costo)

• Un “buon software” modula la sua complessità in ragione del mix di requisiti e risorse disponibili

Page 20: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Lessons learnedLessons learned

• I costi di un sistema sono primariamente determinati dalla comprensibilità del sistema

• La comprensione di un sistema è influenzata da– Leggibilità– Dimensione

• Numero componenti• Legami tra componenti

• I costi di un sistema sono primariamente determinati dalla comprensibilità del sistema

• La comprensione di un sistema è influenzata da– Leggibilità– Dimensione

• Numero componenti• Legami tra componenti

Page 21: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Lessons learnedLessons learned

• la semplicità paga sempre (a parità di requisiti)• Non sovradimensionare• la comprensibilità è il fattore chiave• la dimensione e la leggibilità sono le chiavi della

comprensibilità• NON SOVRADIMENSIONARE• NON SOVRADIMENSIONARE• NON SOVRADIMENSIONARE

• la semplicità paga sempre (a parità di requisiti)• Non sovradimensionare• la comprensibilità è il fattore chiave• la dimensione e la leggibilità sono le chiavi della

comprensibilità• NON SOVRADIMENSIONARE• NON SOVRADIMENSIONARE• NON SOVRADIMENSIONARE

Page 22: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Lesson learnedLesson learned

• La leggibilità (in senso lato) è la

caratteristica che regna sovrana su tutte le

altre, che, se assente, riesce a vanificare

ogni sforzo di comprensione e successiva

modifica di quanto presente

• La leggibilità (in senso lato) è la

caratteristica che regna sovrana su tutte le

altre, che, se assente, riesce a vanificare

ogni sforzo di comprensione e successiva

modifica di quanto presente

Page 23: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

ESEMPIO…ESEMPIO…

Page 24: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Sviluppare è…Sviluppare è…

• Una forma di comunicazione– Verso la macchina

– Verso altri esseri umani

• La seconda è enormemente più

importante della prima !

• Rivolgete il vostro sguardo di sviluppatori verso gli esseri umani

• Una forma di comunicazione– Verso la macchina

– Verso altri esseri umani

• La seconda è enormemente più

importante della prima !

• Rivolgete il vostro sguardo di sviluppatori verso gli esseri umani

Page 25: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

La regola del “7 +- 2”La regola del “7 +- 2”

• E’ stato ampiamente dimostrato da studi psicometrici che il cervello umano è in grado di elaborare ragionamenti con un numero molto limitato di “elementi” contemporanei

• Tale numero è 7 (+ o – 2)

• Tale numero è molto limitato e vincola grandemente la nostra capacità di comprensione di un sistema, specia al crescere della sua dimensione

• E’ stato ampiamente dimostrato da studi psicometrici che il cervello umano è in grado di elaborare ragionamenti con un numero molto limitato di “elementi” contemporanei

• Tale numero è 7 (+ o – 2)

• Tale numero è molto limitato e vincola grandemente la nostra capacità di comprensione di un sistema, specia al crescere della sua dimensione

Page 26: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Progettiamo sistemi perchè…Progettiamo sistemi perchè…

• Dal punto di vista del computer, non c’è alcuna esigenza di strutturare un sistema. Se a progettare fosse una “mente digitale”, non avrebbe alcuna esigenza di strutturazione

• Sono le nostre limitazioni cognitive a “costringerci” a progettare sistemi per farli funzionare nel tempo, a costi accettabili

• Dal punto di vista del computer, non c’è alcuna esigenza di strutturare un sistema. Se a progettare fosse una “mente digitale”, non avrebbe alcuna esigenza di strutturazione

• Sono le nostre limitazioni cognitive a “costringerci” a progettare sistemi per farli funzionare nel tempo, a costi accettabili

Page 27: Software development nel mondo industriale

13/05/2010 Software Development nel mondo industriale Gruppo Euris Spa

Rivisitazione dei concetti OORivisitazione dei concetti OO

• Ereditarietà– Diminuisce il numero di righe di codice tramite

fattorizzazione di classi base

• Polimorfismo– Diminuisce il numero di righe di codice

necessarie nei chiamanti tramite

• Incapsulamento– mi permette di capire meglio abbassando il

numero di componenti (percepite)

• Ereditarietà– Diminuisce il numero di righe di codice tramite

fattorizzazione di classi base

• Polimorfismo– Diminuisce il numero di righe di codice

necessarie nei chiamanti tramite

• Incapsulamento– mi permette di capire meglio abbassando il

numero di componenti (percepite)