Sei sulla pagina 1di 48

Concetti generali dellIngegneria del Software - a.a.

2009-2010

Concetti Generali della Ingegneria del Software

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Sommario Visione dinsieme I tipi di Prodotti Software Qualit dei Prodotti Problemi dellIngegneria del Software Frontiere dellIngegneria del Software Pratiche

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Visione dInsieme

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Risorse dellIngegnere del Software


Modelli per la caratterizzazione dei prodotti, dei processi e delle risorse Modelli per la stima dellimpegno di risorse nei progetti di sviluppo software Modelli per la valutazione ed il monitoraggio delle qualit dei prodotti e dei processi Nella I.S. questi modelli sono raramente basati su tecniche matematiche; molto spesso sono basati su Esperienza e sulla Indagine Empirica

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Il Ruolo dellIngegnere del software


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

Per programmare in grande deve essere in grado di:


Sviluppare modelli necessari nelle varie fasi per effettuare, grazie a questi, i compromessi necessari Esprimere i concetti inerenti il software con diversi livelli di astrazione, dipendentemente dal destinatario del manufatto che produce Trovare le risorse utili per accelerare ed economizzare il processo di sviluppo (componenti, pattern, template, esperienze) Lavorare in gruppo Gestire progetti e coordinare il lavoro degli altri

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Fasi per la Produzione del Software


Analisi 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 lArchitettura. Inoltre, le componenti sono decomposte, a basso livello, in classi. Produce anche il Manuale di Sistema; il Test di Integrazione ed il Test di Sistema

Codifica e Test dei moduli


Produce i moduli e ne fa il test per correttezza.
6

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Fasi per la Produzione del Software


Integrazione e Test
Integra tutti i moduli prodotti secondo quanto previsto dal progetto e ne fa il test di Integrazione. Terminata lintegrazione ne fa il Test di Sistema.

Rilascio
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 dellIngegneria del Software - a.a. 2009-2010

Rapporto tra I.S. altri campi dellInformatica


Linguaggi di programmazione
I.S. influenza i linguaggi di programmazione che rendono sempre pi servizi utili per strutturare meglio il software; e.g. i package in ADA e JAVA; le librerie di componenti; i linguaggi di interfaccia,

Sistemi Operativi (SO)


Gli SO influenzano molto la I.S. perch sono grandi sistemi che hanno problemi che si incontrano molto spesso nelle grandi applicazioni

Basi di dati
Hanno stimolato ed aiutato la I.S. nella realizzazione del principio di separazione degli interessi

Intelligenza Artificiale
influenza ed influenzata dalla I.S; 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. e.g. 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 dellIngegneria del Software - a.a. 2009-2010

Relazioni tra lI.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 sulluomo.

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.

Concetti generali dellIngegneria del Software - a.a. 2009-2010

I Tipi di Prodotti Software

10

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Il Software: Programma
insieme di istruzioni autoconsistenti rispetto ad uno o pi obiettivi
spesso usato dallo stesso autore; 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

11

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Il Software: Applicazione
insieme di programmi interagenti tra loro
spesso venduto come un pacchetto usabile da persone che non hanno dimestichezza con linformatica perch sono forniti, almeno, di uninterfaccia e di documentazione duso. 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 dellIngegneria del Software - a.a. 2009-2010

Il Software: Sistema Software


insieme di programmi interagenti che copre un Dominio Applicativo con livello di qualit adeguato, completo di tutta la documentazione i requisiti, la progettazione, i manuali duso destinati ad un esteso bacino di utenza, anche con piattaforme diverse, per far rientrare gli alti costi di produzione
usabilit e portabilit caratteristiche chiave

necessita di avere una lunga vita e di invecchiare lentamente per poter essere redditizio
13

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Applicazioni per lImpresa Sistemi Software caratterizzati da


Dati persistenti
necessari per passare le informazioni tra differenti applicazioni e tra differenti esecuzioni della stessa applicazione

Rilevanti 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

14

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Applicazioni per lImpresa


Accesso concorrente ai dati, da diversi utilizzatori dellapplicazione Rilevante numero di schermate componenti linterfaccia, frequente avere interfacce con centinaia di schermate Integrazione tra applicazioni che supportano domini differenti della stessa impresa, molto spesso costruite con approcci eterogenei

15

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Sistemi in Tempo Reale


forniscono la risposta a particolari condizioni esterne entro un predeterminato intervallo di tempo che in genere piccolo orientati al controllo
in genere gestiscono pochi dati e molte funzioni

possono essere basati su eventi oppure basati sul tempo spesso utilizzati per operazioni critiche quindi devono aver caratteristiche di affidabilit e di salvaguardia/protezione (safety) in condizioni di rischio
16

Concetti generali dellIngegneria del Software - a.a. 2009-2010

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

17

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Qualit dei Prodotti

18

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Qualit Principali del Software


Correttezza
soddisfacimento di tutti i requisiti funzionali e di prestazione

Affidabilit
Probabilit che un sistema software si comporti secondo le attese in un intervallo di tempo

Robustezza
Comportamento accettabile anche in circostanze non previste nelle specifiche del software

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
19

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Prestazioni Tempo di risposta


tempo necessario per elaborare un processo: da quando si preme il tasto di avvio a quando mostrato il risultato

Reattivit
tempo che impiega il sistema a notificare che ha acquisito la richiesta dellutente, e indipendente dal tempo di risposta

20

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Prestazioni Latenza
il tempo minimo necessario per ricevere un qualunque tipo di risposta, compresa la notifica che lapplicazione non riuscita ad eseguire nulla;

Throughput
quanto lavoro il sistema riesce ad eseguire nellunit di tempo: transazioni per secondo; byte trasferiti per secondo

21

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Prestazioni Carico
quanto lavoro contemporaneo pu fare il sistema: il numero di utenti che possono lavorare contemporaneamente

Sensibilit al carico
quanto varia una prestazione con il cambiamento di carico

Efficienza
la prestazione rapportata alle risorse utilizzate: throughput/numero di CPU
22

Concetti generali dellIngegneria del Software - a.a. 2009-2010

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 sensibilmente

Scalabilit
misura della capacit di modificare le prestazioni del sistema con laumento delle risorse disponibili
23

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Problemi della Ingegneria del Software

24

Concetti generali dellIngegneria del Software - a.a. 2009-2010

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 limpresa ha una relazione commerciale corrente, oppure un soggetto con cui si intrattenuta una relazione commerciale, anche se tale relazione non stata mantenuta

I concetti utilizzati in una applicazione devono essere definiti con rigore;


Facendo riferimento a conoscenza esplicita, per esempio: libri di testo, articoli, decreti legislativi, norme ; oppure dichiarando la definizione in un glossario quando uno stesso concetto in un dominio applicativo pu assumere diversi significati, per consuetudine, allora lapplicazione deve essere flessibile in modo da essere compatibile con il significato che desidera ogni suo utente.
25

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Struttura Complessa Un Dominio Applicativo include, in genere, un insieme di Processi di Business che hanno molte relazioni tra loro Le Applicazioni dImpresa devono tener conto delle molte interrelazioni tra i processi di business e perci risultano essere molto complesse.

26

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Carenza di conformit La carenza di conformit dei processi software con i principi degli stessi causa lo sviluppo di applicazioni difficili da manutenere E 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
27

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Frontiere della Ingegneria del Software

28

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Potenziare lo sviluppatore Sviluppare per configurazione, invece che per scrittura di codice
Framework Linee di prodotto Sviluppo per componenti

Distribuire la produzione del software


Global Software Development Sviluppo Open Source Sviluppo per web-services
29

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Framework Obiettivo
Componente di grande scala che generalizzi le applicazioni di uno stesso dominio per sviluppare applicazioni non scrivendo codice o scrivendone poco; Specializzazione del comportamento del framework per un particolare utente attraverso
La parametrizzazione I Plug-In, procedura esterna utilizzata dal framework Scripting, frammento eseguibile di codice che dinamicamente agganciato al sistema
30

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Framework
Problemi
Il framework si adatta difficilmente ai business process gi in esercizio in una impresa: grandi moli di parametri, causano difficolt di comprensione e di uso Linguaggi di programmazione degli script, spesso, proprietari Lambiente di scrittura dei plug-in spesso vincolata da problemi di integrazione con il framework Laumento del numero di plug-in diminuiscono la manutenibilit del sistema software

Esperienze
Minimizzare la specializzazione attraverso i plug-in e gli script
31

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Linee di prodotto Obiettivi


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

32

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Linee di prodotto
Problemi
La costituzione di un set 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

33

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Linee di prodotto Lezioni apprese


Le linee di prodotto sono un approccio che promuove attivamente il riuso; la efficacia di una linea di prodotti migliora incrementalmente, con lapprendimento di nuove varianti dei prodotti nello stesso dominio;

34

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Linee di prodotto Esperienze


Le esperienze del SEI e dello IESE suggeriscono che linvestimento giustificato dalleconomia di produzione e manutenzione Il ritorno dellinvestimento si ha con il terzo sistema della stessa linea di prodotti

35

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Sviluppo per Componenti


Obiettivi
Utilizzare software gi scritto per costruire nuove applicazioni. Le componenti possono essere: Commerciali, Legacy; Open Source

Problemi
Selezione delle componenti con caratteristiche di qualit adeguate alle richieste dellapplicazione Modalit di integrazione delle componenti eterogenee Propriet culturale delle componenti Coordinamento dellevoluzione delle componenti con la evoluzione richiesta dallapplicazione che compongono

Esperienze
Unapplicazione sviluppata per componenti ha il rischio di avere la manutenzione molto costosa Per avere una buona manutenibilit dellapplicazione necessario che:
Ogni componente debba avere un ruolo specifico Nellarchitettura dellapplicazione devono essere specificati i ruoli di ogni componente Una componente deve uno o pochi ruoli; Le relazioni tra le componenti devono essere minimizzate.
36

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Global Software Development


Obiettivi
far concentrare limpresa su poche competenze centrali utilizzare le risorse umane disponibili sullintero globo

Problemi
Specifiche del prodotto devono essere chiare, altrimenti si costruisce unapplicazione difforme dai requisiti Incompatibilit della maturit dei processi delle imprese che cooperano fa rischiare la violazione dei tempi e dei costi previsti per la produzione e la manutenzione

Lezioni Apprese
Solo le imprese che sanno specificare possono utilizzare la sub contrattazione Se unimpresa non ha profonda competenza nella gestione dei progetti co-locati non pu pensare a distribuirli fuori casa

37

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Sviluppo di Software Open Source


Obiettivi
Utilizzare la creativit e la potenza di sviluppo di comunit estese

Problemi
Spesso non chiaro o non documentato lo scopo della documentazione Non chiara la responsabilit della correzione e della evoluzione del software

Lezioni Apprese
E necessario accordarsi con gli sviluppatori perch applichino le buone pratiche dellingegneria del software
38

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Sviluppo per Web-Services


Obiettivo
Utilizzare la creativit e la potenza di sviluppo di comunit estese Pagare le componenti per uso

Problemi
Analoghi a quelli dellopen source Difficile la certificazione, come per le componenti Difficile il test di unapplicazione basata sullorchestrazione delle componenti Qualche volta necessario conoscere web-services cloni di quelli utilizzati da sostituire a questi ultimi quando non sono attivi

Esperienze
Tutte da costruire
39

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Pratiche

40

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Pratiche Classiche: Information Hiding Strutturazione del software per facilitare la manutenzione
Principi di Parnas circa lincapsulamento dellinformazione/information hiding Diagonalizzazione della matrice Requisiti x Componenti

41

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Pratiche Classiche: Matrice Requisiti x Componenti


Una matrice diagonale descrive unapplicazione che
Facilita la validazione facilita la manutenzione facilita la stima dei costi di manutenzione

Le ispezioni sul progetto aiutano a migliorare questa matrice

42

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Pratiche Classiche: la documentazione La documentazione come manufatto focale dello sviluppo di unapplicazione
La documentazione deve essere tracciabile tra manufatti di differenti fasi del ciclo di vita del software ed allinterno di uno stesso manufatto La tracciabilit assicurata se il codice non documentato a posteriori ma ricavato dalla documentazione

43

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Pratiche Classiche : Modello di prodotto tracciabile


Tracciabilit tra le astrazioni
(es. Bisogni <-> Requisiti <-> Progetto)

Bisogni

Test Accettazione

Requisiti

Test Sistema

Consistenza tra eseguibile e documentazione


(es. Test Integrazione <-> Progetto)

Progetto

Test Integrazione

Codice + Test Unit

44

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Nuove Pratiche: eXtreme Programming... Obiettivi


Riduzione dei tempi e dei costi di sviluppo Utilizzazione di una buona pratica dellIngegneria del Software: la ispezione Evitare luso di processi prescrittivi e pesanti

Problemi
Gli sviluppatori sono, spesso, hacker; questo processo si sta diffondendo in ambienti poco maturi il processo non consente di patrimonializzare i risultati per riusarli in progetti diversi
45

Concetti generali dellIngegneria del Software - a.a. 2009-2010

... Nuove Pratiche: eXtreme Programming Lezioni apprese


si 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 processo non deve indurre ad abbandonare lorientamento al processo ma deve essere utilizzato come un processo leggero

46

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Nuove Pratiche: Software ad Alta Sicurezza ed Affidabilit...


Obiettivi
Certificazione dei prodotti software con continuit, prima e dopo ogni intervento di manutenzione

Problemi
Enorme sforzo e costo di certificazione, soprattutto per sistemi la cui manutenzione affidata a terzi La certificazione per prodotti manutenuti localmente richiede la incrementalit delle ispezioni &test

47

Concetti generali dellIngegneria del Software - a.a. 2009-2010

Nuove Pratiche: Software ad Alta Sicurezza ed Affidabilit Suggerimenti


Le applicazioni devono essere costruite per essere modificate facilmente, utilizzando tutti i principi di strutturazione della ingegneria del software Migliorare luso di tecniche di manutenzione, verifica e validazione incrementali

Esperienze
La linea di prodotti un approccio adeguato per il superamento di questi problemi perch massimizzato il riuso e, quindi, pi facile la certificazione incrementale.
48

Potrebbero piacerti anche