SERLAB Software Engineering - Concetti Generali
Click here to load reader
-
Upload
marco-salvatore-vanadia -
Category
Documents
-
view
122 -
download
1
description
Transcript of 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
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.
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.
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
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…
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
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
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à….
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
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à
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
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.