SERLAB Software Engineering - Concetti Generali

12

Click here to load reader

description

SERLABLaboratorio Software Engineering & Research - Università degli Studi di Bari - Dipartimento di InformaticaConcetti generali dell’Ingegneria del Software

Transcript of SERLAB Software Engineering - Concetti Generali

Page 1: SERLAB Software Engineering - Concetti Generali

DIB 1

Concetti Generali della Ingegneria del Software

Concetti Generali della Ingegneria del Software

DIB 2

Sommario

Visione d’insiemeI tipi di Prodotti SoftwareQualità dei ProdottiProblemi dell’Ingegneria del softwarePratiche

DIB 3

Visione d’Insieme

Concetti Generali della Ingegneria del Software

DIB 4

Risorse dell’Ingegnere del Software

Modelli per la caratterizzazione dei prodotti, dei processi e delle risorseModelli per la stima dell’impegno di risorse nei progetti di sviluppo softwareModelli per la valutazione ed il monitoraggio delle qualità dei prodotti e dei processiNella I.S. questi modelli sono raramente basati su tecniche matematiche; molto spesso sono basati su Esperienza e sulla Indagine Empirica

Page 2: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 5

Il Ruolo dell’Ingegnere del software

Per programmare in piccolo deve essere :Un buon programmatore Esperto di strutture dati ed algoritmiConoscitore di uno o più linguaggi di programmazione

Per programmare in grande deve essere in grado di:Sviluppare modelli necessari nelle varie fasi per operare, grazie a questi, i compromessi necessariEsprimere i concetti inerenti il software con diversi livelli diastrazione, dipendentemente dal destinatario del manufatto che produceTrovare le risorse utili per accelerare ed economizzare il processo di sviluppo (componenti, pattern, template, esperienze…)Lavorare in gruppoGestire progetti e coordinare il lavoro degli altri

Concetti Generali della Ingegneria del Software

DIB 6

Fasi per la Produzione del SoftwareAnalisi e Specifiche dei Requisiti. Definisce in modo preciso e formale quali sono le capacità e le caratteristiche del Sistema Software da produrre. Produce anche Manuali Utenti e Test di Accettazione. Progettazione e Specifiche. Organizza le componenti che comporranno il sistema e le loro relazioni, attraverso l’Architettura. Inoltre, le componenti sono decomposte, a basso livello, in moduli. Produce anche il Manuale di Sistema; il Test di Integrazione ed il Test di SistemaCodifica e Test dei moduli. Produce i moduli e ne fa il test per correttezza.Integrazione e Test. Integra tutti i moduli prodotti secondo quanto previsto dal progetto e ne fa il test di Integrazione. Terminatal’integrazione ne fa il Test di Sistema.Consegna. Quando il sistema supera anche il test di accettazione è consegnato al committente.Manutenzione. Durante la vita del sistema esso è manutenuto per eliminare malfuzionamenti e per adeguarlo a nuove esigenze.

Concetti Generali della Ingegneria del Software

DIB 7

Rapporto tra I.S. altri campi dell’Informatica

Linguaggi di programmazione. La I.S. influenza i linguaggi di programmazione che rendono sempre più servizi utili per strutturare meglio il software. Ad esempio i pacchetti in ADA e JAVA; le librerie di componenti; i linguaggi di interfaccia…Sistemi Operativi. Questi influenzano molto la I.S. perché essi sono grandi sistemi che hanno problemi che si incontrano molto spesso nelle grandi applicazioni.Le basi di dati. Hanno stimolato ed aiutato la I.S. nella realizzazione del principio di separazione degli interessi.Intelligenza Artificiale. Questa influenza ed è influenzata dalla I.S.. Essa ha portato nuove tecniche di definizione dei requisiti in presenza di incertezza; ha invece importato tecniche per la separazione degli interessi negli agenti.Modelli teorici. Molti modelli teorici sono stati importati dalla I.S.. Ad esempio protocolli di comunicazione e macchine a stati finiti. Altri modelli sono stati stimolati dalla I.S. ad esempio specifiche algebriche e modelli di dati astratti.

Concetti Generali della Ingegneria del Software

DIB 8

Relazioni tra l’I.S. e le altre Discipline.

Scienze Organizzative. La I.S. prende da queste discipline molti dei modelli per la gestione di sistemi e processi complessi. Stimola questa disciplina a studiare nuovi modelli di stima e di gestione delle filiere di produzione, visto che quelli che usa nelle produzioni materiali si adattano male alle produzioni incentrate sull’uomo.Ingegneria dei Sistemi. Ha relazione con la I.S.sia perché studia sistemi complessi sia perché il software è sempre una componente di sistemi più grandi.

Page 3: SERLAB Software Engineering - Concetti Generali

DIB 9

I Tipi di Prodotti Software

Concetti Generali della Ingegneria del Software

DIB 10

Il Software...

PROGRAMMAÈ un insieme di istruzioni autoconsistenti rispetto ad uno o

più obiettivi.Spesso è usato dallo stesso autore. E’ difficile farlo utilizzare

da altri perché per scarsa documentazione è difficilmente comprensibile

I suoi difetti sono rilevati, in genere, sul campo perché è scarsa la validazione durante la sua produzione.

Ha vita relativamente breve perché la manutenzione fa decadere la sua qualità e diventa sempre più difficile e costoso farlo evolvere.

Concetti Generali della Ingegneria del Software

DIB 11

… Il Software ...APPLICAZIONE

È un insieme di programmi interagenti tra loro. Spesso è venduto come un pacchetto usabile da persone

che non hanno dimestichezza con l’informatica perché sono forniti, almeno, di un’interfaccia e di documentazione d’uso.

I loro difetti sono scoperti essenzialmente dagli utilizzatori, ma durante la produzione una parte sono scoperti attraverso la validazione.

Spesso hanno bassi livelli di qualità; sono poco attrezzati per il trasferimento a nuovi sviluppatori; pertanto la loro qualità decade rapidamente e diventa sempre più costosa e rischiosa la loro manutenzione.

Concetti Generali della Ingegneria del Software

DIB 12

… Il Software

SISTEMA SOFTWAREÈ un insieme di programmi interagenti che copre un

Dominio Applicativo con alto livello di qualità, completo di tutta la documentazione : i requisiti, la progettazione che spiega la sua struttura e le decisioni che hanno giustificato la sua strutturazione; i manuali d’uso.

Per far rientrare gli alti costi di produzione, essi sono destinati ad un esteso bacino di utenza anche con piattaforme diverse, pertanto: la usabilità e la portabilitàsono caratteristiche chiave.

Per poter essere redditizio, un sistema software deve avere una lunga vita e deve invecchiare lentamente.

Page 4: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 13

Applicazioni per l’Impresa …

Applicazioni per l’impresa sono Sistemi Software caratterizzati da :

Dati persistenti, necessari per passare le informazioni tra differenti applicazioni e tra differenti esecuzioni della stessa applicazioneRilevanti volumi di dati, un sistema di medie dimensioni potrebbe avere diversi GB di dati organizzati in decine di tipi di records ed in milioni di records

Concetti Generali della Ingegneria del Software

DIB 14

… Applicazioni per l’Impresa

Accesso concorrente ai dati, da diversi utilizzatori dell’applicazioneRilevante numero di schermate componenti l’interfaccia, è frequente avere interfacce con centinaia di schermateIntegrazione tra applicazioni che supportano domini differenti della stessa impresa, molto spesso costruite con approcci eterogenei

Concetti Generali della Ingegneria del Software

DIB 15

Sistemi in Tempo Reale

La caratteristica principale è la risposta a particolari condizioni esterne entro un predeterminato intervallo di tempo che in genere è piccolo.Sono orientati al controllo. In genere gestiscono pochi dati e molte funzioni Possono essere basati su eventi oppure basati sul tempo.Spesso sono utilizzati per operazioni critiche quindi devono aver caratteristiche di affidabilità e di salvaguardia/protezione ( safety) in condizioni di rischio

Concetti Generali della Ingegneria del Software

DIB 16

Sistemi Embedded

Sistemi componenti di altri sistemi che spesso non hanno interfacce verso gli utenti esterni, sempre hanno interfacce verso dispositivi dello stesso sistema di cui essi sono componenti.In genere hanno pochi dati e poche capacità funzionali

Page 5: SERLAB Software Engineering - Concetti Generali

DIB 17

Qualità dei Prodotti

Concetti Generali della Ingegneria del Software

DIB 18

Qualità Principali

Correttezza. Un sistema software deve soddisfare tutti i suoi requisiti funzionali e di prestazione.Affidabilità. Probabilità che un sistema software si comporti secondo le attese in un intervallo di tempo.Robustezza. Un sistema software si deve comportare in modo accettabile anche in circostanze non previste nelle sue specifiche.Usabilità. Un sistema software deve essere reputato di facile uso dai suoi utilizzatori.Manutenibilità. Facilità con cui: si identifica la causa di un malfunzionamento e si elimina; si aggiungono, sottraggono e si modificano capacità e funzioni del sistema.

Concetti Generali della Ingegneria del Software

DIB 19

Prestazioni…

Tempo di risposta, tempo necessario per elaborare un processo: da quando si pressa il tasto di avvio a quando mostra il risultatoReattività, tempo che impiega il sistema a notificare che ha acquisito la richiesta dell’utente, e’ indipendente dal tempo di risposta

Concetti Generali della Ingegneria del Software

DIB 20

…Prestazioni…

Latenza, il tempo minimo necessario per ricevere un qualunque tipo di risposta, compresa la notifica che l’applicazione non è riuscita ad eseguire nulla;Throughput, quanto lavoro il sistema riesce ad eseguire nell’unità di tempo: transazioni per secondo; byte trasferiti per secondo…

Page 6: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 21

… Prestazioni…

Carico, quanto lavoro contemporaneo può fare il sistema: il numero di utenti che possono lavorare contemporaneamenteSensibilità al carico, quanto varia una prestazione con il cambiamento di caricoEfficienza, la prestazione rapportata alle risorse utilizzate: throughput/numero di CPU

Concetti Generali della Ingegneria del Software

DIB 22

… Prestazioni

Capacità, il massimo throughput o carico che un sistema può reggere. Può essere un massimo assoluto od una soglia oltre la quale le prestazioni del sistema possono decadere sensibilmenteScalabilità, misura della capacità di modificare le prestazioni del sistema con l’aumento delle risorse disponibili

DIB 23

Problemi della Ingegneria del Software

Concetti Generali della Ingegneria del Software

DIB 24

Dissonanze Concettuali

Molti concetti del Dominio Applicativo sono interpretati in modo diverso da utenti e da applicazioni diversi.

Per esempio, un cliente può essere considerato:• un soggetto con cui l’impresa ha una

relazione commerciale corrente, oppure • un soggetto con cui si è intrattenuta una

relazione commerciale, anche se tale relazione non è stata mantenuta

Page 7: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 25

Struttura Complessa

Un Dominio Applicativo include, in genere, un insieme di Processi di Business che hanno molte relazioni tra loroLe Applicazioni d’Impresa devono tener conto delle molte interrelazioni tra i processi di business e perciò risultano essere molto complesse.

DIB 26

Pratiche

Concetti Generali della Ingegneria del Software

DIB 27

Pratiche Storiche…

Strutturazione del software per facilitare la manutenzione

Principi di Parnas circa l’incapsulamento dell’informazione/information hidingDiagonalizzazione della matrice Requisiti x Componenti

Concetti Generali della Ingegneria del Software

DIB 28

…Pratiche Storiche: Matrice Requisiti x Componenti…

Una matrice diagonale descrive un’applicazione che

Facilita la validazionefacilita la manutenzionefacilita la stima dei costi di manutenzione

Le ispezioni sul progetto aiutano a migliorare questa matrice

R1 R2 R3 Rn-1 Rn…C1

C2

C3

Cm-1

Cm

.

.

.

X XX XXX XX X

XX X

XX X

X XX X

Page 8: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 29

... Pratiche Storiche…

La documentazione come manufatto focale dello sviluppo di un’applicazione

La documentazione deve essere tracciabile tra manufatti di differenti fasi del ciclo di vita del software ed all’interno di uno stesso manufattoLa tracciabilità è assicurata se il codice non è documentato a posteriori ma è ricavato dalla documentazione

Concetti Generali della Ingegneria del Software

DIB 30

… Pratiche storiche : Modello di prodotto tracciabile Documentazione

adeguataTracciabilità tra le astrazioni

(es. Bisogni <-> Requisiti <-> Progetto)

Consistenza tra astrazioni (correttezza)

(es. Requisiti <-> Progetto)

Consistenza tra eseguibile e documentazione (affidabilità)

(es. Test Integrazione <-> Progetto)

Bisogni

Requisiti

Progetto

Codice + Test Unità

TestAccettazione

TestSistema

TestIntegrazione

Concetti Generali della Ingegneria del Software

DIB 31

Problemi aperti della Ingegneria del Software

La carenza di conformità dei processi software con i principi degli stessi causa lo sviluppo di applicazioni difficili da manutenereE’ necessaria la raccolta ed il trasferimento agli sviluppatori di evidenze sperimentali circa:

la relazione tra questi principi e la economicità di costruzione, distribuzione e manutenzione del software

Concetti Generali della Ingegneria del Software

DIB 32

Nuove Frontiere della Ingegneria del Software

Potenziamento dello sviluppo attraverso la distribuzione della produzione Sviluppo di Software Open SourceeXtreme ProgrammingLinee di Prodotto Software ad alta sicurezza ed affidabilità….

Page 9: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 33

Potenziamento dello sviluppo attraverso la distribuzione della produzione...

Obiettivifar concentrare l’impresa su poche competenze centraliutilizzare le risorse umane disponibili sull’intero globo

Concetti Generali della Ingegneria del Software

DIB 34

... Potenziamento dello sviluppo attraverso la distribuzione della produzione …

ProblemiSpecifiche del prodotto devono essere chiare, altrimenti si costruisce un’applicazione difforme dai requisitiIncompatibilità della maturità dei processi delle imprese che cooperano fa rischiare la violazione dei tempi e dei costi previsti per la produzione e la manutenzione.

Concetti Generali della Ingegneria del Software

DIB 35

... Potenziamento dello sviluppo attraverso la distribuzione della produzione

Lezioni AppreseSolo le imprese che sanno specificare possono utilizzare la sub contrattazioneSe un’impresa non ha profonda competenza nella gestione dei progetti co-locati non può pensare a distribuirli fuori casa

Concetti Generali della Ingegneria del Software

DIB 36

Sviluppo di Software Open Source...

ObiettiviUtilizzare la creatività di comunità esteseUtilizzare la potenza di sviluppo di una grande comunità

ProblemiNon è chiaro e non è documentato lo scopo della documentazione

Non è chiara la responsabilità della correzione e della evoluzione del software

Page 10: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 37

... Sviluppo di Software Open Source

Lezioni AppreseE’ necessario accordarsi con gli sviluppatori perché applichino le buone pratiche dell’ingegneria del software

Concetti Generali della Ingegneria del Software

DIB 38

eXtreme Programming...Obiettivi

Riduzione dei tempi e dei costi di sviluppoUtilizzazione di una buona pratica dell’Ingegneria del Software: la ispezioneEvitare l’uso di processi prescrittivi e pesanti

ProblemiGli sviluppatori sono, spesso, hacker; questo processo si sta diffondendo in ambienti poco maturiil processo non consente di patrimonializzare i risultati per riusarli in progetti diversi

Concetti Generali della Ingegneria del Software

DIB 39

... eXtreme Programming

Lezioni appresesi deve adottare con chiarezza di scopo, dipendentemente dal dominio di applicazione e dagli obiettivi del progetto;deve essere utilizzato con modalità orientata al prodotto e non al processonon deve indurre ad abbandonare l’orientamento al processo ma deve essere utilizzato come un processo leggero

Concetti Generali della Ingegneria del Software

DIB 40

Linee di prodotto …

ObiettiviUtilizzare le somiglianze tra sistemi software differenti per migliorare lo sviluppo e la manutenzione delle applicazioni• tempi e costi di sviluppo• qualità

Page 11: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 41

… Linee di prodotto …

ProblemiLa costituzione di una famiglia di applicazioni che rappresentino una linea di prodotto richiede maggiore tempo della costruzione di una singola applicazione; perciò il processo di costruzione della linea di prodotto è incrementale;Il primo membro di una linea utilizza una piattaforma ed un modello di dominio applicativo di riferimento; la linea si popolerà con la necessità di cambiare la piattaforma o di evoluzione del modello di dominio o dello stesso dominio;

Concetti Generali della Ingegneria del Software

DIB 42

… Linee di prodotto …

Lezioni appreseLe linee di prodotto sono un approccio che promuove attivamente il riusola efficacia migliora incrementalmente, con l’apprendimento di nuove varianti dei prodotti nello stesso dominio;

Concetti Generali della Ingegneria del Software

DIB 43

… Linee di prodotto

EsperienzeLe esperienze del SEI e dello IESE suggeriscono che l’investimento è giustificato dall’economia di produzione e manutenzione Il ritorno dell’investimento si ha con il terzo sistema della stessa linea di prodotti

Concetti Generali della Ingegneria del Software

DIB 44

Software ad Alta Sicurezza ed Affidabilità...

ObiettiviCertificazione dei prodotti software con continuità, prima e dopo ogni intervento di manutenzione

ProblemiEnorme sforzo e costo di certificazione, soprattutto per sistemi la cui manutenzione è affidata a terziLa certificazione per prodotti manutenuti localmente richiede la incrementalità delle ispezioni &test

Page 12: SERLAB Software Engineering - Concetti Generali

Concetti Generali della Ingegneria del Software

DIB 45

... Software ad Alta Sicurezza ed Affidabilità

SuggerimentiLe applicazioni devono essere costruite per essere modificate facilmente, utilizzando tutti i principi di strutturazione della ingegneria del softwareMigliorare l’uso di tecniche di manutenzione, verifica e validazione incrementali

EsperienzeLa linea di prodotti è un approccio adeguato per il superamento di questi problemi perché è massimizzato il riuso e, quindi, è più facile la certificazione incrementale.