Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2009-2010
Sommario Visione dinsieme I tipi di Prodotti Software Qualit dei Prodotti Problemi dellIngegneria del Software Frontiere dellIngegneria del Software Pratiche
Visione dInsieme
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
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
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
10
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
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
necessita di avere una lunga vita e di invecchiare lentamente per poter essere redditizio
13
14
15
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
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
18
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
Reattivit
tempo che impiega il sistema a notificare che ha acquisito la richiesta dellutente, e indipendente dal tempo di risposta
20
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
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
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
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 limpresa ha una relazione commerciale corrente, oppure un soggetto con cui si intrattenuta una relazione commerciale, anche se tale relazione non stata mantenuta
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
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
28
Potenziare lo sviluppatore Sviluppare per configurazione, invece che per scrittura di codice
Framework Linee di prodotto Sviluppo per componenti
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
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
32
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
34
35
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
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
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
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
Pratiche
40
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
42
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
Bisogni
Test Accettazione
Requisiti
Test Sistema
Progetto
Test Integrazione
44
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
46
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
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