INGEGNERIA DEL SOFTWARE – CIMITILE - A. 2018/2019
PARTE INTRODUTTIVA – IL SOFTWARE
Da chi fu introdotto il termine SW? Viene introdotto nell’anno 1958 da John Turkey (chimico/fisico e
matematico Statunitense che ebbe un RUOLO FONDAMENTALE nel 900 con la statistica)
Inizialmente era un termine usato per “gioco” entrò a far parte del DIZIONARIO di OXFORD
dall’anno 1960 VOCABOLO A TUTTI GLI EFFETTI
Il SW dello IEEE/ACM SW Engineering 2004 (Linee guida ):
Il Sw svolge un ruolo importante in QUASI tutti gli aspetti della realtà moderna. … Vengono spesi
CENTINAIA DI MILIARDI PER LO SVILUPPO SW
Definizione dell’Oxford English Dictionary Programmi e procedure che permettono al computer di
svolgere uno specifico task
Definizione Devoto Oli 1971 Il corredo dei Linguaggi e dei programmi di cui e munito un sistema
elettronico per l’elaborazione dei dati
Definizione dizionario Sabatini Coletti 1970 Insieme dei programmi che gestiscono e specializzano il
funzionamento dell’elaboratore
Definizione ISO/IEC/IEEE 24975 anno 2010 :
Software un insieme di procedure e programmi ASSOCIATE AD UNA DOCUMENTAZIONE e con DATI
PERTINENTI usati per le operazioni del SISTEMA di ELABORAZIONE
Computer Program un insieme di istruzioni che servono per abilitare l’HW affinché possa svolgere
elaborazioni e specifiche funzionalità logiche
Sw product E’ il SET COMPLETO DI PROGRAMMI PROCEDURE e DOCUMENTAZIONE sviluppate e alla
fine DISTRIBUITE ad un CUSTOMER RICHIEDENTE .
Definizione ISO 9000-3 (anno 1997)
Software è una CREAZIONE DELL’INTELLETTO , che include programmi e procedure (con relativi DATI e
DOCUMENTAZIONE) che permettono all ‘HW di raggiungere un obiettivo
insieme
Prodotto Sw di programmi e procedure rilasciate ad un utente
Ogni
Componente SW parte IDENTIFICABILE di un PRODOTTO SW
Il Sw può essere solo prodotto ?
- NO ma non è mai solo codice
Che cos’è un prodotto SW ?
- Sistema integrato di componenti SW
Un prodotto SW è costruito sulla base dell’esigenza dell’utente
Software ITEM una parte identificabile di un Prodotto Sw (fase di distribuzione)
Software Component una parte identificabile di un prodotto software in qualsiasi fase di sviluppo (
moduli , unità , dati ,documenti ecc…)
Al prodotto Sw è associato un diritto di Proprietà :
1) Copyright si possono implementare le COMPONENTI SW del PRODOTTO estrapolandoli con la
REVERSE-ENGINEERING
2) Brevetto per il SW garantisce maggior PROTEZIONE ( non si può fase come nel caso del Copyright)
Free Sw 1985 Richard Stallmann
Open Source 1991 Linus Torvald
Esistono 4 Libertà del SW 0 / 1 / 2 /3 :
LIVELLO 0 permette di ESEGUIRE SOLTANTO il PROGRAMMA per qualsiasi SCOPO
LIVELLO 1 permette di MODIFICARE il PROGRAMMA per ESIGENZE PERSONALI
LIVELLO 2 permette di RIDISTRIBUIRE COPIE DEL PROGRAMMA (INALTERATO) a supporto degli altri
LIVELLO 3 permette di RIDISTRIBUIRE COPIE DEL PROGRAMMA MODIFICATE
Differenza tra :
Software on Premises SW memorizzato ed Eseguito in LOCALE (quindi sul nostro PC)
Software as a Service SW memorizzato e/o eseguito in RETE
Definizione Industria del Software (o SETTORE SW) è il settore della PRODUZIONE E
COMMERCIALIZZAZIONE di BENI e SERVIZI SW
Classificazione di Software (adottata da Assintel e Assinform)
1) SW di sistema S.O. e Sistemi Embedded
2) Middleware Software di INFRASTRUTTURA fa da intermediario tra app e componenti
3) SW applicativo
N.B. Assintel è l’associazione di riferimento per le imprese
Assinform è l’associazione delle AZIENDE di ICT
Servizi di Cloud Computing 3 fondamentali modelli di servizio
1) IaaS offerte vere e proprie INFRASTRUTTURE SW
2) PaaS Piattaforme offerte come servizio in rete
3) SaaS Software as a SERVICE ( caso più semplice)
Business
Crescita del BPaaS process as a Service è una moderna variante del SaaS (lato Business)
Quando nasce l’ingegneria del SW ?
nel 1968 con una conferenza NATO in Germania (Fritz Bauer)
Perché ci si appoggia sempre all’Ingegneria del SW ? 3 motivazioni
- Il SW ARTIGIANALE senza seguire STEP PREDEFINITI E PRECISI è COSTOSO
- Tale sw non è per niente affidabile
- Può consumare tantissime RISORSE ( poco EFFICIENTE)
Definizione di Ingegneria del SW di Stephen Schach (1988):
- La disciplina che ha lo SCOPO di PRODURRE DEL SW di QUALITA’, A TEMPO DEBITO , con un
BUDGET PRESTABILITO e in GRADO DI SODDISFARE DEI REQUIREMENTS (requisiti ).
Per quali attività fondamentali viene chiamata in causa l’ingegneria ?
progettazione del SW , realizzazione del SW , Modifica del Sw
Definizione di Ingegneria del SW di IEEE Consiste nell’usare un APPROCCIO sistematico, disciplinato e
quantificabile nelle 3 attività fondamentali dell’IS (progettazione, realizzazione e modifica).
Chi è la società SQS ( SW Quality System ) ? Produce ogni anno un Report dei TOP TEN Fallimenti SW
LE PROPRIETA’ DEL SW – LA COMPLESSITA’
Le 5 proprietà essenziali del SW Furono individuate per la prima volta da Fred Brooks ( ing. Informatico
Statunitense) nell’anno 1987
• Complessità
• Invisibilità
• Changeability
• Conformità
• Discontinuità
Tutte queste proprietà essenziali sono raccomandate da ACM/IEEE nelle “linee guida”
• Complessità Un aspetto della Complessità del SW è sicuramente il numero di Linee di Codice ( LOC
) Tuttavia la complessità non è rispecchiata dal LOC : A parità di LOC due programmi possono
avere anche complessità abbastanza differente
Definizione di Complessità Ciclomatica v(G) = e-n+1 è una misurazione effettuata tramite una PRIMA
RAPPRENTAZIONE fatta con GRAFI ORIENTATI ( grafo di controllo del flusso del programma)
e numero di archi del grafo
n numero di nodi del grafo
v(G) “complessità ciclomatica del Grafo”
Alcune Strategie per affrontare la complessità : ASTRAZIONE , DECOMPOSIZIONE (MODULARIZZAZIONE) ,
LO SLICING , IL RIUSO
• Astrazione Lo strumento cognitivo di gran lunga più utilizzato per la gestione della complessità
L’ingegnere si concentra attraverso l’astrazione soltanto sulle caratteristiche di rilievo evitando ciò
che non è importante
Una definizione di Astrazione :
è una vista o una rappresentazione del sistema che include solo le caratteristiche di rilievo per la
prospettiva di un particolare osservatore. Poiché esistono vari osservatori esisteranno vari punti di vista
del Sistema ad essi associati
Il Processo di astrazione è l’insieme delle operazioni logico-funzionali che porta alla definizione
dell’Astrazione
3 Primitive per l’astrazione : La Classificazione , L’Aggregazione , La Generalizzazione
Schema dei livelli di Astrazione :
Nella PIRAMIDE abbiamo 3 livelli di ASTRAZIONE chiamati LOA. Per il Livello più in BASSO (LOA3) abbiamo
un insieme di ELEMENTI che saranno astratti da UN ELEMENTO DEL LIVELLO soprastante (LOA2) e così via.
si genera quindi una GERARCHIA DI ASTRAZIONI
Una definizione di Livello di Astrazione Il Grado di complessità con cui è visto il sistema
Un Livello di Astrazione non è altro che un SET DI PROPRIETA’ definite “OSSERVABILI”. Tale set cambia al
variare del livello di Astrazione
La Gerarchia LOA Più è alto il Livello LOA meno sono i dettagli Al livello più basso ci sono tutti i dettagli
del Sistema
Quando si parla di Tracciabilità Verticale ai Livelli ? Quando è possibile per ogni elemento
dell’astrazione a livello n associare i dettagli tralasciati e presenti al livello n+1
Metodi di attraversamento delle gerarchie di Astrazione:
• Metodo Bottom-Up dal livello più basso a quello più alto
• Medoto Top-Down Dal livello più alto al livello più basso
Rappresentare la Clessidra delle Astrazioni : MONDO REALE Verso INFRASTRUTTURE INFORMATICHE
MONDO REALE ATTRAVERSAMENTE BOTTOM-UP
INFRASTRUTTURE INFORMATICHE ATTRAVERSAMENTO TOP-DOWN
DECOMPOSIZIONE Un approccio di David Parnas (anno 1970) è un approccio per affrontare la
complessità in maniera tale da SUDDIVIDERE IL PROBLEMA in SOTTOPROBLEMI PIU’ SEMPLICI
La decomposizione deve garantire 2 proprietà :
- Massimizzazione della Coesione (interazione INTERNA AL SISTEMA)
- Minimizzazione dell’Accoppiamento (interazione tra le varie PARTI SUDDIVISE [i vari moduli])
Come si effettua la decomposizione ? In 3 Steps
• Una prima suddivisione in sottosistemi SW sulla base del Dominio Reale
• Una seconda suddivisione di tipo Architetturale ( modelli e schemi [PATTERNS])
• Una terza suddivisione in base al livelli di Astrazione (LOA )
C) Suddivisione in Base ai Livelli di Astrazione ogni parte (MODULO ) deve incapsulare
necessariamente un’ASTRAZIONE Deve realizzare l’Information Hiding
N.B. Ogni modulo può suddividersi in altri sottomoduli
La decomposizione è una strategia fondamentale per la Progettazione del SW
La Progettazione del SW si divide in 2 attività:
• HLD High Level Design o Architectural Design
• LLD Low Level Design o Progetto di Dettaglio
I 3 tipi di attraversamento delle Componenti SW del Sistema (nella piramide delle astrazioni implementata
dai MODULI):
• ORIZZONTALE dove parti di componenti allo stesso livello di astrazione concorrono a comporre
ciò che ci interessa
• VERTICALE ci interessa una parte di UNA COMPONENTE ad un LIVELLO + altra parte di
COMPONENTE a livello successivo
• ORIZZONTALE + VERSICALE : più parti di più COMPONENTI dello stesso livello + quelle del livello
successivo
DEFINIZIONE DI SLICING
Partendo da un Sottoinsieme di comportamenti di un sistema , lo SLICING permette di ottenere una
riduzione alla minima configurazione possibile mantenendo i comportamenti inalterati
Può essere definito su qualsiasi componente SW
Il Risultato di un’operazione di SLICING è detta SLICE.
RIUSO In un sistema SW abbiamo 2 parti:
• Candidate per il Riuso
• Non riutilizzabili
Esistono 2 tipologie di RIUSO:
• RIUSO ACCIDENTALE E OPPORTUNISTICO è una forma di riuso spontaneo per necessità
• RIUSO DELIBERATO E PIANIFICATO è una forma di riuso che deriva dal precedente con un
approccio più organizzato e sistematico
Esistono 2 IMPEDIMENTI AL RIUSO:
• IMPEDIMENTI strutturali legati alle caratteristiche strutturali del sistema
• IMPEDIMENTI di Processo legati alle operazioni/funzionalità del sistema
Che cos’è l’Application Framework ?
È una PIATTAFORMA SW che viene usata per il RIUSO comprende ASPETTI LOGICI E DI CONTROLLO di
BASE ( comuni a una TIPOLOGIA VARIA DI APPLICAZIONI) che possono essere usate come “FONDAMENTA”
di una nuova Applicazione , ed inoltre offre LINEE GUIDA sullo SVILUPPO DELLE PARTI che SPECIALIZZANO
la nuova APPLICAZIONE ( le parti accessorie al FRAMEWORK)
Che cos’è il COTS ?
Component OFF the Shelf
sono delle componenti SW che possono essere acquistate da parte di soggetti o organizzazioni che
sviluppano SW e che possono essere usate nei sistemi che stanno producendo
Che cos’è il PATTERN ?
E’ la descrizione di una SOLUZIONE GENERALE ad un problema ricorrente
Che cos’è il LEGACY SYSTEM WRAPPING ?
E’ una STRATEGIA che porta all’ottenimento di SISTEMI e MODULI derivanti da COMPONENTI SW prese da
SISTEMI preesistenti e che sono state ADATTATE per renderle COMPATIBILI in nuovi ambiti operativi.
N.B. Le prime forme di riuso si ebbero con le LIBRERIE dei Sottoprogrammi
• APPLICATION FRAMEWORK
C’è un’applicazione di BASE sempre presente con caratteristiche generali . Lo Sviluppatore deve
successivamente usare componenti (moduli ecc.. ) per dettagliare la BASE attraverso
Specializzazioni . Le parti di base sono dette “FROZEN SPOTS” . Le parti aggiuntive sono dette
“HOT SPOTS”.
• DESIGN PATTERNS
Sono degli SCHEMI predefiniti che possono essere riutilizzati nella progettazione di un Sistema SW
N.B. Un Design Pattern non è un progetto finito e direttamente implementabile in codice.
N.B. Descrive solo una Soluzione di Progetto che dovrà successivamente essere specializzata in un
particolare contesto.
LE PROPRIETA’ DEL SW – INVISIBILITA’ e CONFORMITA’
2)Invisibilità :
Perché Il SW è invisibile ? non è un’entità fisica , non è visualizzabile e non ci si può rapportare con
esso attraverso i sensi.
Come affrontare il problema dell’Invisibilità ?
Gli ingegneri del SW per far fronte all’ invisibilità fanno ricorso a 3 tipi di rappresentazione dei CONCETTI e
delle astrazioni :
• LINGUAGGI
• GRAFI
• MODELLI (MODELING LANGUAGE)
1) LINGUAGGI ne esistono di 3 categorie:
a) Linguaggi Informali : un subset del linguaggio naturale
b) Linguaggi Formali : con Lessico , Sintassi e Semantica ben definite fondate su Logica-Matematica
c) Linguaggi Semiformali : ben definite in lessico o Sintassi ma non nella semantica( la semantica è
libera e non univocamente definita)
N.B. Un PROGRAMMA permette di rappresentare una ASTRAZIONE attraverso l’uso di un LINGUAGGIO
Linguaggio OBJECTIVE-C Sviluppato da BRAD COX negli anni 80 fu rilasciato da Apple nella seconda metà
del 2000; è un superset del linguaggio C con caratteristiche O.O. e un runtime dinamico usato per iOS e
OS-X
PERL / ASSEMBLY PERL è un linguaggio di alto livello di tipo General Pourpose nato nel 1987
Che cos’è IEEE SPECTRUM ?
è una rivista curata da IEEE che propone annualmente una classifica dei linguaggi
SWIFT è il linguaggio inventato da Apple nel 2014 (per iOS e OS-X ) con caratteristiche simili a C++ e
Objective-C
Che cos’è il linguaggio Python? è un linguaggio nato ad Amsterdam di tipo Free-SW , interpretato ,
multiparadigma ( procedurale , O.O. e funzionale allo stesso tempo ) con una potente libreria standard (
200 moduli ) e con librerie della comunità
2) Grafi :
Definizione G(N,A) con A=(NxN)
Sono sicuramente lo strumento più usato per affrontare l’invisibilità del SW
Due ragioni di successo dei Grafi:
• La grande flessibilità ( si può con facilità esprimere concetti attraverso nodi e archi)
• La possibilità di usare delle basi teorico – matematiche che offrono tecniche di analisi utilizzabili dagli
sviluppatori.
Sono composti quindi da:
NODI CONCETTI / FATTI / ASTRAZIONI ARCHI RELAZIONE TRA CONCETTI / FATTI / ASTRAZIONI
Perché l’ingegneria del SW usa i Grafi ? per rappresentare i processi di lavorazione con relative relazioni
3) Modello :
la modellazione fornisce all’Ingegnere del SW un approccio organizzato e sistematico per
RAPPRESENTARE gli aspetti significativi del SW SOTTO STUDIO, facilitando le decisioni su SW o su elementi
di esso e permettendo la comunicazione facilitata di tali decisioni al mondo di STAKEHOLDERS di
riferimento
• IL MODELLO è un’ASTRAZIONE di una COMPONENTE SOFTWARE
3 PROPRIETA’ DEI MODELLI:
• DEVE ESSERE ESSENZIALE deve catturare solo gli aspetti SIGNIFICATIVI dell’ASTRAZIONE ( solo
quelli che vogliamo esplorare) eliminando tutto ciò che è ininfluente
• DEVE GARANTIRE LA PROSPETTIVA DESIDERATA deve essere composto attraverso regole e
notazioni necessarie a rappresentare STRUTTURA COMPORTAMENTO e ORGANIZZAZIONE del
SW.
• Il Modeling Language deve associare ai diagrammi l’uso di vocabolari e semantiche familiari
per garantire COMUNICAZIONE ai vari stakeholders
La modellazione si appoggia a LINGUAGGI DI MODELLAZIONE : FORMALI o SEMIFORMALI
UML Uno dei Linguaggi di Modellazione sicuramente più utilizzato al mondo
• La prima versione nasce nell’anno 1996 grazie al lavoro dei 3 amigos ( Grady Booch, Jim
Rumbaugh e Ivar Jacobson)
OMG Object Management Group è un CONSORZIO di STANDARDIZZAZIONE (organizzazione no profit )
che cura anche l’evoluzione dello Standard UML
3)Conformità :
Il SW è sempre una “PARTE” di un intero e ben più ampio SISTEMA nel quale svolge un ruolo ben preciso .
Il ruolo che svolge il SW è determinato dal sistema in cui esso è inserito(ambiente operativo)
Definizione di Conformità
è la capacita da parte di un PRODOTTO SW di aderire a STANDARD , CONVENZIONI , REGOLE in riferimento
al settore applicativo a cui vengono applicati.
N.B. Un PRODOTTO Sw deve CONFORMARSI ad un insieme di REQUISITI (REQUIREMENTS)
N.B. Uno delle difficoltà sostanziali allo sviluppo di un Prodotto Sw è la DEFINIZIONE STESSA DEI REQUISITI
N.B. I SW Failures dipendono per il 50% da problemi legati alla definizione dei Requisiti
4 tipi di errori con i Requisiti:
• Requisiti incompleti
• Requisiti sbagliati se
• Requisiti NON CONVALIDATI il SW non fa quello che è espresso dai Requisiti
• Requisiti NON VERIFICATI se i requisiti s
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Appunti completi corso Ingegneria del Software
-
Appunti Ingegneria del software
-
Appunti completi di Ingegneria del software
-
Appunti esame Ingegneria del software