Sei sulla pagina 1di 10

01/10/18

Ingegneria del Softw are:


Introduzione

Software: Prodotto e Processo


Ingegneria del Software:
Terminologia

Softw are: rilevanza


800
Mondo • Le economie di tutti
700
USA
600 USA-DOD i paesi sviluppati
500 sono dipendenti dal
400
300 software
200
• rappresenta una
100
0
della voci rilevanti
1980 1985 1990 1995 2000 del PIL di tutti i
paesi sviluppati

◆ Ogni giorno un numero sempre più alto di sistemi


contengono software o dipendono da software

Produzione Software: Evoluzione

• Arte: applicazioni sviluppate da singole


persone e utilizzate dagli stessi sviluppatori
• Artigianato: applicazioni sviluppate da piccoli
gruppi specializzati per un cliente
• Industria: diffusione del software in diversi
settori; crescita di dimensioni, complessità e
criticità delle applicazioni; mercato e
concorrenza; necessità di migliorare la
produttività e la qualità; gestione dei progetti;
evoluzione del software

1
01/10/18

Programmi vs Prodotti (Sommerville)

• Programma: l’autore è anche l’utente


(e.g., non è documentato, quasi mai è
testato, non c’è progetto)
– non ci serve un approccio formale
• Prodotto software: usato da persone
diverse da chi lo ha sviluppato
– è software industriale il cui costo è circa 10
volte il costo del corrispondente programma
– dobbiamo avere un approccio formale allo
sviluppo

Prodotti Softw are


• Prodotti generici
– sistemi stand-alone prodotti da una organizzazione e
venduti a un mercato di massa
• Prodotti specifici
– sistemi commissionati da uno specifico utente e
sviluppati specificatamente per questo da un qualche
contraente

La fetta maggiore della spesa è nei prodotti


generici ma il maggior sforzo di sviluppo è nei
prodotti specifici

Softw are: prodotto (1)


• Devoto, Oli - Dizionario della lingua italiana 1971
– s o f t w a r e : I l c o r r e d o d e i lin g u a g g i e d e i p r o g r a m m i d i c u i è m u n it o u n
s is t e m a e le t t r o n ic o p e r l’e la b o r a z io n e d e i d a t i
• Oxford Advanced Learner’s Dictionary 1992
– s o f t w a r e : d a t a , p r o g r a m m e s , e t c . n o t f o r m in g p a r t o f a c o m p u t e r b u t u s e d
w h e n o p e r a t in g it
• Wikipedia 2011
– 2 0 1 1 : I l s o f t w a r e è u n p r o g r a m m a o u n in s ie m e d i p r o g r a m m i in g r a d o d i
f u n z io n a r e s u u n c o m p u t e r o q u a ls ia s i a lt r o a p p a r a t o c o n c a p a c it à d i

e la b o r a z io n e ( s m a r t p h o n e , c o n s o le , n a v ig a t o r i s a t e llit a r i e c o s ì v ia )
– 2 0 1 8 : S o f t w a r e è u n t e r m in e g e n e r ic o c h e p u ò r if e r ir s i a lle is t r u z io n i
m e m o r iz z a t e s u u n o o p iù s u p p o r t i in f o r m a t ic i e c h e p o s s o n o e s s e r e
r a p p r e s e n t a t e d a u n o o p iù p r o g r a m m i, o p iù im p r o p r ia m e n t e a l s e m p lic e

d a t o o in f o r m a z io n e

2
01/10/18

Softw are: prodotto (2)


• Standard IEEE (Institute of Electrical and Electronics
Engineers) 610.12-1990
– software: the set of computer programs, procedures and possibly
associate documentation and data pertaining to the operation of a
computer system;
– software product:
1. T h e c o m p le t e s e t o f c o m p u t e r p r o g r a m s , p r o c e d u r e s a n d p o s s ib ly

a s s o c ia t e d o c u m e n t a t io n a n d d a t a d e s ig n e d f o r d e liv e r y t o a u s e r .
2. A n y o f t h e in d iv id u a l it e m s in 1 .

…non solo il codice !


…ma tutti gli ‘artefatti’ che lo accompagnano e che sono prodotti durante
l’intero sviluppo: codice, documentazione, casi di test, specifiche di
progetto, procedure di gestione, manuali utente …

N atura del Softw are


• Differenze con prodotti industriali classici
– Intangibile
– Malleabile
– Ad alta intensità di lavoro umano
– Spesso costruito ad hoc invece che assemblato
– Manutenzione = cambiamento

Alcuni m iti del Softw are


• Miti del management
– Abbiamo i più moderni computer …
– Se siamo in ritardo possiamo recuperare aumentando
il numero di programmatori
• Miti del cliente
– Un’affermazione generica degli scopi è sufficiente per
cominciare a scrivere programmi
– I mutamenti nei requisiti di un progetto si gestiscono
facilmente grazie alla flessibilità del software
• Miti del programmatore
– Una volta messo in opera il programma, il lavoro è
finito
– Il solo prodotto di un progetto concluso è il programma

3
01/10/18

Problemi della produzione software: Costi


• Il software ha costi elevati
– Sono i costi delle risorse usate: ore lavoro (manpower),
hardware, software e risorse di supporto. Il manpower è
dominante!
• Il costo è espresso in mesi/uomo
– Il testing impiega fino al 40% dei costi di sviluppo
– La manutenzione costa più dello sviluppo (circa il 90%
dei costi di sviluppo)
• Per sistemi che rimangono a lungo in esercizio i costi di
manutenzione possono essere svariate volte il costo di
produzione
• Produttività media
– da 300 a 1000 linee di codice rilasciate per mese/uomo

Softw are e costi (B. Boehm )


100 %
Hardware
Sviluppo

Manutenzione

1965 1985

4
01/10/18

Problemi della produzione software:


ritardi e abbandoni (1)
• Ritardi nelle consegne e aumenti dei costi
stimati
– US Air Force sistema di comando e controllo (da un
report 1981):
• stima iniziale della azienda vincitrice per la fornitura:
400.000$,
• costo successivamente rinegoziato:
– a 7 0 0 .0 0 0 $ ,
– p o i a 2 .5 0 0 .0 0 0 $

– c o s t o f in a le 3 . 2 0 0 . 0 0 0 $ .
• …costo finale circa 10 volte la stima iniziale !!
• …e con notevole ritardo rispetto alla stima iniziale

Problem i della produzione


softw are: ritardi e abbandoni (2)
• Una azienda nel settore della grande
distribuzione di prodotti aveva richiesto un
sistema che, stima iniziale, sarebbe stato
sviluppato in 9 mesi al prezzo di 250.000 $ (da
un report 1989)
– Due anni dopo, e dopo una spesa di 2.500.000 $, il
lavoro non era stato ancora completato e fu stimato
che erano necessari altri 3.600.000 $ (!!)
– Il progetto fu abbandonato !
• Da un report USA del 1989
– su 600 aziende contattate, più del 35% avevano
progetti ‘runaway’ (in ritardo o fuori dal budget e lo 15

schedule stimato)

Problem i della produzione


softw are: affidabilità
• Il software è (spesso) inaffidabile
– Molti malfunzionamenti sono rilevati durante
l’operatività del sistema
– Da un’analisi del ministero della difesa USA
risulta che più del 70 % di tutti i
malfunzionamenti sono dovuti al software (in
sistemi con complicati e sofisticati apparati
meccanici, elettrici, idraulici ….)
• …. l’Ariane 5 …
• …. la sonda MARINER …..

5
01/10/18

N ecessità di un approccio
ingegneristico
• Necessità di applicare principi ingegneristici
alla produzione software per sviluppare:

– il giusto prodotto

– al giusto costo
– nel tempo giusto

– con la giusta qualità

Ingegneria del Softw are: Scopo


• Riguarda la costruzione di software:
– di grandi dimensioni
– di notevole complessità
– sviluppati tramite lavoro di gruppo
• Progetti software di questo tipo hanno:
– versioni multiple
– lunga durata
– frequenti cambiamenti
• e lim in a z io n e d i d if e t t i

• a d a t t a m e n t o a n u o v i a m b ie n t i

• m ig lio r a m e n t i e n u o v e f u n z io n a lit à

Multi-person construction of multi-version software (D.L. Parnas.


Some Software Engineering Principles. In Structured Analysis and
Design, State of the Art Report. Infotech International. 1978)

Ingegneria del Software: Contesto


• Software Engineering Ì System Engineering
– La maggior parte del SWè collocata all’interno di un “sistema”
misto HW/ SW
– L’obiettivo finale di chi produce è creare tale sistema che
soddisfa globalmente i requisiti dell’utente
– Coinvolgimento nella definizione dei requisiti del sistema
• Conoscenza del dominio applicativo
– Èessenziale per un efficace sviluppo del SW
– Il SWè utile quando riesce a condensare nei suoi algoritmi la
conoscenza del dominio applicativo
– Altrimenti inutile o dannoso
• P e r e s e m p io , s is t e m a d i c o n t r o llo d i u n a e r o p la n o

6
01/10/18

Ingegneria del Software: Definizioni


• Applicazione di una strategia sistematica, disciplinata e
misurabile allo sviluppo, esercizio e manutenzione del
software (programmi, procedure, regole e associata
documentazione, dati)
– IEEE (Institute of Electrical and Electronics Engineers)
Standard Glossary of Software Engineering Terminology, 1993
• La disciplina tecnologica e manageriale che riguarda la
produzione sistematica e la manutenzione dei prodotti
software che vengono sviluppati e modificati entro i
tempi e i costi preventivati
– D. Farley

Ingegneria del Softw are:


Fondam enti
L’ingegneria del
software si occupa dei
metodi (o tecniche),
delle metodologie, dei
processi e degli
strumenti per la
gestione professionale
(sviluppo,
manutenzione, ritiro)
del software

Ingegneria del Softw are: Principi


• Rigore: concetto primitivo (precisione, accuratezza)
• Formalità: oltre il rigore (fondamento matematico)
• Separazione di aspetti diversi: affrontare separatamente i
vari lati di un problema complesso
• Modularità: suddividere un sistema complesso in parti più
semplici
• Astrazione: si identificano gli aspetti cruciali in un certo
istante ignorando gli altri
• Anticipazione del cambiamento: la progettazione deve
favorire l’evoluzione del SW
• Generalità: tentare di risolvere il problema nella sua
accezione più generale
• Incrementalità: lavorare per passi successivi

7
01/10/18

M etodi e M etodologie
• Metodo (o tecnica): procedimento generale per risolvere
classi di problemi specificati di volta in volta
– linee guida o regole che governano le attività
– il metodo dei minimi quadrati, il metodo di Montecarlo, il metodo
di Newton, come fare il brodo di carne, come fare il lesso, ...
• Metodologia: insieme di principi, di metodi, degli
elementi di cui una o più discipline si servono per
garantire la correttezza e l’efficacia del proprio
procedere
– e.g., la metodologia della macerazione carbonica permette di
ottenere vini novelli, freschi, profumati, …

Strum enti, Procedure, Paradigm i


• Strumento (tool): un artefatto, un sistema per fare
qualcosa in modo migliore
– e.g., il frullatore per fare la maionese, un cavatappi per aprire una
bottiglia
– supporti SWpratici all’applicazione
• Procedura: una combinazione di strumenti e metodi
che assieme permettono di produrre un certo prodotto
– e.g., la ricetta della Saker Torte: montare a neve le chiare di 4
uova ...
• Paradigma: un particolare approccio o filosofia per fare
qualcosa
– e.g., è lo stile della cucina, noi riconosciamo la cucina Francese,
quella Italiana, quella Cinese …

Processo
Un processo è un particolare metodo per fare qualcosa
costituito da una sequenza di passi che coinvolgono attività,
vincoli e risorse (Pfleeger)

Processo: una particolare metodologia operativa che


nella tecnica definisce le singole operazioni fondamentali
per ottenere un prodotto industriale (Zingarelli)

Processo software: un metodo per sviluppare del software


(Sommerville)

8
01/10/18

Processo softw are


• Insieme organizzato di attività che sovrintendono
alla costruzione del prodotto da parte del team di
sviluppo utilizzando metodi, tecniche,
metodologie e strumenti.
• È suddiviso in varie fasi secondo uno schema di
riferimento (il ciclo di vita del software)
• Descritto da un modello: informale, semi-formale
o formale (maturità del processo)

Processo softw are: Standard


IEEE 610.12-1990
• Sofware development process: The process by which
user needs are translated into a software product. The
process involves translating user needs into software
requirements, transforming the software requirements
into design, implementing the design in code, testing the
code, and sometimes, installing and checking out the
software for operational use.
• Note: These activities may overlap or be performed
iteratively.
• See also: incremental development; rapid prototyping,
spiral model, waterfall model.

C lassi di Progetti (B. Boehm )


C la s s e lin e e d i c o d ic e P e r s o n e (m e d ia ) M esi

S m a ll 2000 1 -2 4 -5
I n t e r m e d ia t e 8000 2 -6 8 -9
M e d iu m 32000 6 -1 6 14

L a rg e 128000 1 6 -5 1 24
V e ry L a rg e 512000 6 0 -1 5 7 4 1 -4 2

... … … …

◆ Necessità del project management (Complementi di IS)


• project planning (def. attività, risorse da allocare, tempi)

• project monitoring e controllo


• metriche di prodotto e di processo per misurare e controllare...

9
01/10/18

C ASE (C om puter-Aided
Softw are Engineering)
• Sistemi Software che intendono fornire un supporto
automatico per le attività di un processo software
• Upper-CASE
– Strumenti che supportano le attività delle fasi di analisi e
specifica
Includonodei requisiti
editor graficie per
progettazione
svilupparedi un processo
modelli sosftware.
di sistema,
dizionari dei dati per gestire entità del progetto
• Lower-CASE
– Strumenti che supportano le attività delle fasi finali del processo,
come programming, testing e debugging. Includono generatori di
graphical UI perlalaricerca
per supportare costruzione di interfacce
di program utente, debuggers
fault, traduttori automatici
per generare nuove versioni di un programma

D om ande???

10

Potrebbero piacerti anche