Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione...

67
Ingegneria del Software Prof. Paolo Ciancarini Corso di Ingegneria del Software CdL Informatica Università di Bologna

Transcript of Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione...

Page 1: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Ingegneria del Software

Prof. Paolo CiancariniCorso di Ingegneria del SoftwareCdL Informatica Università di Bologna

Page 2: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Obiettivi di questa lezione

• Cos'è l'ingegneria del software?• Il ciclo di vita del software• Il processo di sviluppo del software• Miti e leggende della produzione sw

Ingegneria del software 2

Page 3: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

From programming to sw engineering

Cosa è più difficile: scrivere software, oppureleggerlo (per es. per modificarlo)?

Ingegneria del software 3

Page 4: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Punto di vista: studente

Ingegneria del software 4

Page 5: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Punto di vista: tesista in azienda

Ingegneria del software 5

Page 6: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Punto di vista: professionista

Ingegneria del software 6

Page 7: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Da Quora (risposta di P Lovisek)

What is something no one admits about being a sw engineer?As a manager who is hiring and also leading mid-size team, I’ve observed this:• A lot of colleagues tend to have unexpectedly huge gaps in knowledge. I would

almost use the word “dilettante” for 30% of them. That itself is not a huge issue, asit’s easy to fill gaps with some effort. Some of them however somehow survive in corporate environment with their “good enough” knowledge and carry their gaps for years and decades.

• The thing is, before 25, you learn just enough to survive, typicallygoogle+stackoverflow combo. In later years, you become lazier, than you’ve gotkids and no time for in-depth study of your technologies and tools.

• There are also 2 related issues:– Companies are not likely to hire/pay more really extraordinary well-equipped guys. Mostly they just

want someone average. Therefore, being super-deep in your topics actually can hurt you in hiringprocess.

– Things are evolving so fast no one knows any more what makes sense to learn. Things will be different tomorrow. Old saying says, there’s nothing older than yesterday’s news. Well, there is: today’s technology.

Ingegneria del software 7

Page 8: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Ingegneria del software

• L’Ingegneria del Sw (Software Engineering) è unadisciplina metodologica, cioè studia i metodi diproduzione, le teorie alla base dei metodi, e glistrumenti di sviluppo e misura della qualità deisistemi software

• È anche una disciplina empirica, cioè basatasull’esperienza e sulla storia dei progetti passati

Ingegneria del software 8

Page 9: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Ingegnere del software• Nei paesi anglosassoni “software engineer” è una

professione riconosciuta• Oltre metà di tutti gli ingegneri USA sono “sw engineers”

Fonte: https://en.wikipedia.org/wiki/Software_engineering_demographics#United_States

http://computer-careers-review.toptenreviews.com/software-engineer-review.html dati al 2015

Ingegneria del software 9

https://evansdata.com/reports/viewRelease.php?reportID=9 dati al 2018

Page 10: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Confronto tra software engineers e altre professioni

https://money.usnews.com/careers/best-jobs/rankings/best-technology-jobs

Ingegneria del software 10

Page 11: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Produttività

• La produttività è il rapporto tra la quantità di beni o servizi prodotti ed il costo del lavoro necessario a produrli– Output/Input

• La produttività dello sviluppo software è il rapporto tra software prodotto e il costo dello sforzo di produrlo– LOC/effort

Ingegneria del software 11

Page 12: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Produttività nel software

Ingegneria del software 12

Page 13: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Standish Report 2003

La produttività dell’industria sw è bassa

• Da un’analisi di 13.522 progetti di costruzione sw:– 66% di tutti i progetti falliscono (non

hanno risultato utile)– 82% dei progetti superano i tempi previsti– 48% dei progetti producono sistemi senza

le funzioni richieste dai clienti – 55 miliardi $ di spreco considerando solo i

progetti USA

Ingegneria del software 13

Page 14: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Standish CHAOS reports

Ingegneria del software 14

Page 15: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Agile vs waterfall (CHAOS 2015)

Ingegneria del software 15

Page 16: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Perché falliscono i progetti sw

Ingegneria del software 16

Page 17: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Perché falliscono i progetti sw: i rischi

Quali sono i rischi principali di chi sviluppa software?– Mancanza di feedback da parte del cliente/utente– Turnover dello staff e in particolare del team di sviluppo– Realizzare funzioni non richieste– Ritardi nella consegna– Superare il budget di progetto– Realizzare un sistema inusabile– Realizzare un sistema incapace di funzionare insieme

con altri sistemi esistenti

Ingegneria del software 17

Page 18: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Turnover dello staffDurate media degli impieghi (2017):

Facebook 2.02 anniGoogle 1.90 anni Oracle 1.89 anni Apple 1.85 anni Amazon 1.84 anni Twitter 1.83 anni Microsoft 1.81 anni AirBnb 1.64 anni Snap Inc. 1.62 anni Uber: 1.23 anni

Fonte: http://www.businessinsider.com/employee-retention-rate-top-tech-companies-2017-8?IR=T&utm_content=bufferf5cb9&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer

Ingegneria del software 18

Page 19: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Analisi dei rischi nel ciclo di vita del software

Ingegneria del software 19

Page 20: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

• A causa dell’impatto dei rischi, i costi software spesso dominano i costi di produzione di un sistema; in particolare, i costi sw sono spesso maggiori dei costi dell’hardware sottostante

• È più costoso mantenere il software che svilupparlo: nel caso di sistemi con vita duratura, i costi di manutenzione sono un multiplo dei costi di sviluppo (es.: 3 volte)

• L’ingegneria del software si preoccupa di produrre software con costi “accettabili”

I costi del software

Ingegneria del software 20

Page 21: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

I problemi

I problemi principali che affronta l’IdSw riguardano

• I metodi di analisi e progettazione dei prodotti sw– Quale metodo è il più adatto in una data situazione?

• Lo studio del processo di sviluppo del sw– Come posso migliorare il mio processo di sviluppo?

• Lo sviluppo degli strumenti di produzione del sw• Gli aspetti economici dei prodotti e dei processi

– Quanto costa produrre un certo sistema?

• La standardizzazione di processi e tecnologieIngegneria del software 21

Page 22: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Le competenze richieste nello sviluppo del sw

• Software requirements – requisiti • Software design – progettazione • Software construction – scrittura • Software testing• Software maintenance – evoluzione e manutenzione • Software configuration management • Software engineering (project) management • Software engineering process – processo di sviluppo• Software engineering tools and methods• Software quality

Ingegneria del software 22

Page 23: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Temi dell’ingegneria del sw• Il ciclo di vita del software• Il processo di sviluppo del software e gli strumenti

– Cattura, specifica, analisi e gestione dei requisiti– Progettazione dell’architettura e dei moduli– Codifica e debugging– Testing– Deployment

• Manutenzione• Gestione della configurazione• Project management• Qualità del software

Ingegneria del software 23

Page 24: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Parti interessate (stakeholders)

Tipi di stakeholders– Progettisti professionisti– Management– Personale tecnico– Decisori– Utenti– Finanziatori– …

Ad ogni stakeholder corrisponde almeno uno specifico punto di vista (view) e varie decisioni Ingegneria del software 24

Page 25: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Decisioni degli stakeholders

Fonte: alistair.cockburn.us/Foundations+for+Software+EngineeringIngegneria del software 25

Page 26: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Processi di produzione• I processi di produzione si creano e poi evolvono• Prodotti e processi possono essere descritti e

valutati da un punto di vista qualitativo• Processi di produzione a diversi livelli:

– Ciclo di vita industriale– Ciclo di sviluppo: analisi dei requisiti, design, testing– Progettazione di un servizio sw (es.: e-commerce)– Progettazione di un modulo e del relativo test

Ingegneria del software 26

Page 27: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

DiscussioneCome si costruisce un prodotto software?

Ingegneria del software 27

Page 28: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Sviluppare iterativamente

Controllare le modifiche

Usarearchitetture

di componentiGestire irequisiti

Modellaregraficamente

Verificarela qualità

Principi guida dello sviluppo software

Ingegneria del software 28

Page 29: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Modelli del software

Un modello è una descrizione che:• permette di studiare quali problemi

possono capitare durante la costruzione di un sistema

• permette a tutte le parti interessate al sistema di comunicare tra loro usando una terminologia comune

Ingegneria del software 29

Page 30: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Sviluppare iterativamente

Ingegneria del software 30

Page 31: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Il ciclo di vita del software

• Requisiti: analisi e specifica• La progettazione: modellazione

dell’architettura e dei singoli componenti• La codifica ed il debugging• Il testing e la verifica• Il deployment (= la messa in opera)• La manutezione

Ingegneria del software 31

Page 32: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Costi di Sviluppo (Boehm citato da Schach)

Maintenance 67%

Integration6%

Design6%

Modulecoding5%

Moduletesting7%

Problem Def3%

Requirements4%

Planning2%

Ingegneria del software 32

Page 33: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Costo per linea di codice

0 1 2 3 410

20

30

40

50

60

70

80Unit cost vs. size (assuming $5,000/PM)

system

utility

applicationDolla

rs p

er li

ne o

f sou

rce

code

Software size in 1,000 lines of code1 10 100 1000 10000

Ingegneria del software 33

Page 34: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Durata

0 1 2 3 40

10

20

30

40

50

60

1 10 100 1000 10000Software size in 1,000 lines of source code

Requ

ired

deve

lopm

ent

time

in m

onth

s

application

utility

system

Required development time vs. size

Ingegneria del software 34

Page 35: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Produttività

0 1 2 3 40,00

0,01

0,02

0,03

1 10 100 1000 10000 0

Software size in 1,000 lines of source code

Line

s of

cod

e pe

r prg

ram

mer

per

day

application

utility

system

(11.8)

(5.8)

(2.8)

30

20

10

0

Productivity vs. size

Ingegneria del software 35

Page 36: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Fare la cosa giusta

Di tutte le funzionalità di un'applicazione sw:• Il 7% è usato continuamente• Il 13% è usato spesso• Il 16% è usato saltuariamente• Il 19% è usato raramente• Il 45% non è mai usatoFonte: Standish Group, Chaos report 2002

Ingegneria del software 36

Page 37: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

La manutenzione

• Tutti i prodotti hanno bisogno di manutenzione a causa del cambiamento

• I tipi principali di manutenzione:– Perfettiva o preventiva (65%): migliorare il prodotto– Adattiva (18%): rispondere a modifiche ambientali– Correttiva (17%): correggere errori trovati dopo la

consegna

Il mondo cambia continuamenteLa manutenzione è “normale”

Ingegneria del software 37

Page 38: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Attributi dei prodotti software• Attributi esterni (visibili all’utente)

– Costo (e tipo di licenza)– Prestazioni– Garanzia

• Attributi interni (visibili ai progettisti)– Dimensione (size)– Sforzo di produzione (effort)– Durata della produzione (dall’inizio alla consegna)– Mantenibilità– Modularità

Ingegneria del software 38

Page 39: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Bilanciamento degli attributi

• L’importanza relativa degli attributi di prodotto dipende dal prodotto e dall’ambiente in cui verrà usato

• A volte certi attributi sono più importanti– Nei sistemi in tempo reale con requisiti di

sicurezza, gli attributi chiave sono l’affidabilità e l’efficienza

• Se un attributo dev’essere particolarmente curato e “spinto”, i costi di sviluppo tenderanno a crescere esponenzialmente

Ingegneria del software 39

Page 40: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Il costo dell’efficienzaCosto

EfficienzaIngegneria del software 40

Page 41: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Il costo della qualità

Prodotto Dimensione del team di sviluppo

Dimensione del team di testing

NT 3.1 200 140

NT 3.5 300 230

NT 3.51 450 325

NT 4.0 800 700

Win2k 1400 1700Ingegneria del software 41

Page 42: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Discussione• Come si organizza un processo di

sviluppo del software?

Ingegneria del software 42

Page 43: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Gli standard per lo sviluppodel software

Standard principali software engineering IEEE•IEEE 610 Standard glossary sw engineering•IEEE 828 Sw configuration management•IEEE 829 Sw test documentation•IEEE 830 Recommended practice for sw Requirements Specifications•IEEE 1008 Sw unit testing•IEEE 1219 Sw maintenance•IEEE 1471 Recommended practice for sw Architectural Descriptions•IEEE 1517 Sw reuse processes

Ingegneria del software 43

Page 44: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Processi a ciclo di vita

• Lo standard IEEE12207 definisce le fasiprincipali dei processi a ciclo di vita:– Primarie: Acquisition, supply, development,

operation, maintenance– Supporto: audit, configuration

management, documentation, quality assurance, verification, validation

– Organizzative: management, infrastructure, improvement, training

Ingegneria del software 44

Page 45: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Lo standard IEEE12207

Acquisition

Maintenance

Supply

Operating

Development

InfrastructureManagement Improvement

Documentation

Quality

Config. mngmt

TrainingIngegneria del software 45

Page 46: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Ciclo di vita di un rilascio sw

• Un rilascio software (software release) è una versione di un prodotto che viene immessa sul mercato

• Il ciclo di vita della release è l’insieme delle fasi del suo sviluppo e della sua vita operativa

Ingegneria del software 46

Page 47: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Le attività di sviluppo• Le attività di sviluppo del software differiscono

in funzione dell’organizzazione che sviluppa e del sw da produrre, ma di solito includono:– Specifica delle funzionalità richieste (requisiti)– Progetto della struttura modulare e delle interfacce– Implementazione: codifica moduli e integrazione– Verifica e validazione– Evoluzione e manutenzione

• Per poterle gestire vanno esplicitamentemodellate

Ingegneria del software 47

Page 48: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Ingegneria del software 48

Page 49: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Il processo di sviluppo del sw• Processo software: insieme dei ruoli,

delle attività e dei documenti necessari per creare un sistema software

• Esempi di ruoli: stakeholder, progettista, sviluppatore, tester, manutentore, ecc.

• Esempi di documenti: codice sorgente, codice eseguibile, specifica, commenti, risultati di test, ecc.

Ingegneria del software 49

Page 50: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Le attività di sviluppo nel mondo• Cusumano e altri nel 2003 hanno analizzato 104 progetti software

in quattro regioni India Japan US Europe Total Practice / No. of Projects 24 27 31 22 104 Architectural Specification 83.3% 70.4% 54.8% 72.7% 69.2% Functional Specification 95.8% 92.6% 74.2% 81.8% 85.6% Detailed Design 100.0% 85.2% 32.3% 68.2% 69.2% Code Generation 62.5% 40.7% 51.6% 54.5% 51.9% Design Review 100.0% 100.0% 77.4% 77.3% 88.5% Code Review 95.8% 74.1% 71.0% 81.8% 79.8% Subcycles 79.2% 44.4% 54.8% 86.4% 64.4% Beta Testing 66.7% 66.7% 77.4% 81.8% 73.1% Pair Testing 54.2% 44.4% 35.5% 31.8% 41.3% Pair Programming 58.3% 22.2% 35.5% 27.2% 35.3% Daily Builds

At the Start 16.7% 22.2% 35.5% 9.1% 22.1% In the Build 12.5% 25.9% 29.0% 27.3% 24.0% At the End 29.2% 37.0% 35.5% 40.9% 35.6%

Regression Testing 91.7% 96.3% 71.0% 77.3% 83.7%

Ingegneria del software 50

Page 51: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

La produttività nel mondo• Sugli stessi 104 progetti Cusumano raccolse i

seguenti dati di produttività e qualità:

India Japan US Europe Total No. of Projects 24 27 31 22 104 LOC/programmer month 209 469 270 436 374 Defects/KLOC (12 mon. after delivery)

0.263 0.020 0.400 0.225 0.150

Ingegneria del software 51

Page 52: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Ingegneria del software 52

Page 53: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Miti e leggende dell'ingegneria del sw

• Il "silver bullet" è il proiettile d'argento che uccide i lupi mannari

• "Trovare un silver bullet" è sinonimo di “trovare una soluzione finale” ad un problema

• Costruire software è difficile: qual è il silver bullet dell’ingegneria del sw?

Ingegneria del software 53

Page 54: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Fred Brooks

• Fred Brooks, premio Turing 1999, fu progettista del sistema IBM 360

• Dalle sue esperienze trasse spunto per scrivere il libro “The Mytical Man Month” e l’articolo “No silver bullet”

Ingegneria del software 54

Page 55: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Miti e leggende

• Se il progetto ritarda, possiamo aggiungereprogrammatori e rispettare la consegna– Legge di Brooks: “Aggiungere personale ad un

progetto in ritardo lo fa ritardare ancor di più”

Ingegneria del software 55

Page 56: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Miti e leggende• Per cominciare a scrivere un programma, basta

un’idea generica dei suoi obiettivi - ai dettaglisi pensa dopo– La cattiva definizione della specifica dei requisiti

è la maggior causa di fallimenti progettuali

Ingegneria del software 56

Page 57: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Miti e leggende• Se i requisiti di un progetto cambiano, non è un

problema tenerne conto perché il software è flessibile

Costo

Alto

Moderato

Piccolo

Requisiti Design Implementazione

Momento di modifica

Ingegneria del software 57

Page 58: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Miti e leggende• L’ unico prodotto (deliverable) di un progetto di

successo è un programma funzionante

Piano Requisiti Progetto

Strutture dati

Specifiche di test

Programmafunzionante

Listati

Ingegneria del software 58

Page 59: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Miti e leggende• Se il software “funziona”, la manutenzione è

minima e si può gestire errore per errore, quando capita di trovarne uno

Costi di manutenzione preventivati Costi di manutenzione reali

10-15%55-70%

Ingegneria del software 59

Page 60: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Sommario• Produrre software è costoso• La produttività dell’industria del sw è

bassa– Le consegne sono spesso in ritardo– I costi software spesso sforano il budget– La documentazione è inadeguata– Il software è spesso difficile da usare

• Soluzione: migliorare il processo software

Ingegneria del software 60

Page 61: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Domande di autotest• Quali sono le fasi tipiche del ciclo di vita di un

sistema software? E quelle dello sviluppo?• Qual è la fase solitamente più costosa?• In quale fase dello sviluppo è più pericoloso

commettere un errore?• In quale fase dello sviluppo è più semplice

correggere un errore?• Cos'è un processo di sviluppo del software?• Quali sono i tipici documenti prodotti durante un

processo software?• Cos'è la legge di Brooks?Ingegneria del software 61

Page 62: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Lettura consigliata

F.Brooks, No Silver Bullets, IEEE Computer, 20:4, 1987

Ingegneria del software 62

Page 63: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Riferimenti• Software Engineering Body of Knowledge, IEEE, 2014• F.Brooks, The Mythical Man Month, AddisonWesley, 1995• M.Cusumano, The Business of Software: What Every

Manager, Programmer, and Entrepreneur Must Know in Good Times and Bad, Free Press, 2004

• IEEE/EIA 12207.0, "Standard for Information Technology – Software Life Cycle Processes”

Ingegneria del software 63

Page 64: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Principali pubblicazioni scientifiche

• IEEE Transactions on Software Engineering• ACM Transactions on Software Engineering

and Methodology• Int. Conference on Software Engineering

Ingegneria del software 64

Page 65: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Pubblicazioni di ricerca sul sw engineering

Riviste:• IEEE Transactions on sw

engineering• ACM Transactions on software

engineering and methodology• IEEE Software• Empirical Software Engineering• Automated Software Engineering• Journal of Object Technology• ACM SIGSOFT

Conferenze:• International Conference of

Software Engineering• Fundamentals of Software

engineering• SPLASH• International Conference on

Software and System Process

Ingegneria del software 65

Page 66: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Siti utili• www.sigsoft.org/seworld• www.computer.org/web/swebok• swebokwiki.org/Main_Page

Ingegneria del software 66

Page 67: Ingegneria del Softwarecs.unibo.it/~cianca/ · •Da un’analisi di 13.522 progetti di costruzione sw: –66% di tutti i progetti falliscono(non hanno risultato utile) –82% dei

Domande?

Ingegneria del software 67