Estratto del documento

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

Anteprima
Vedrai una selezione di 8 pagine su 31
Appunti corso completi per superare esame di Ingegneria del Software Pag. 1 Appunti corso completi per superare esame di Ingegneria del Software Pag. 2
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti corso completi per superare esame di Ingegneria del Software Pag. 6
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti corso completi per superare esame di Ingegneria del Software Pag. 11
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti corso completi per superare esame di Ingegneria del Software Pag. 16
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti corso completi per superare esame di Ingegneria del Software Pag. 21
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti corso completi per superare esame di Ingegneria del Software Pag. 26
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti corso completi per superare esame di Ingegneria del Software Pag. 31
1 su 31
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/01 Elettronica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher giuscobebbo di informazioni apprese con la frequenza delle lezioni di Ingegneria del software e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi del Sannio o del prof Cimitile Aniello.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community