Home

Appunti per le lezioni di Ingegneria del Software bozza

image

Contents

1. Tecnico Amministrativo Dipendente mansione complete disjoint Dipendente Tecnico Classe3 retribuzione complete disjoint Classe1 Classe2 Classe3 TecnicoC3 a b Figura 3 21 Due insiemi di generalizzazioni a ed una classe derivata b dipendente rappresentato da un istanza di TecnicoC3 secondo questo model lo non pu cambiare mansione n classe di retribuzione poich la relazione di generalizzazione statica e fissa rigidamente l appartenza delle istanze di TecnicoC3 alle superclassi Tecnico e Classe3 Si avrebbe un modello pi rea listico considerando la retribuzione e la mansione come concetti associati ai dipendenti come mostra la Fig 3 22 I link fra istanze possono essere crea ti e distrutti dinamicamente per cui le associazioni permettono di costruire strutture logiche pi flessibili rispetto alla generalizzazione Tecnico Amministrativo Mansione Dipendente Retribuzione Classe1 Classe2 Classe3 Figura 3 22 Associazioni invece di generalizzazioni 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 109 3 5 7 Diagrammi dei casi d uso Un diagramma dei casi d uso schematizza il comportamento del sistema dal punto di vista degli utenti o pi in generale di altri sistemi che interagiscono col sistema speci
2. n Figura 2 10 Struttura trasformata Processo di sviluppo Un processo trasformazionale generalmente assistito da uno strumento CA SE che esegue le trasformazioni scelte dal progettista e qualora vengano in trodotte nuove informazioni per esempio requisiti o vincoli aggiuntivi ne verifica la consistenza rispetto a quelle gi esistenti Lo strumente CASE pu permettere di associare ad ogni scelta le rela tive motivazioni Viene cos costruito un database di progetto repository contenente tutte le informazioni relative alla storia ed allo stato attuale del progetto Osserviamo per che l uso del repository non limitato ai processi di tipo trasformazionale L ambiente di progetto pu comprendere un sistema di gestione delle configurazioni che impedisce di modificare il codice senza prima modificare le specifiche rilevanti Dopo che sono state aggiornate le specifiche al livello di astrazione appropriato viene ricostruito il processo di derivazione fino ad ottenere una nuova versione del software Si evita cos quella degradazione del software a cui si accennato parlando della manutenzione Se le specifiche sono espresse in un linguaggio eseguibile come avviene di norma allora ciascuna specifica un prototipo di tipo evolutivo Il modello trasformazionale quindi caratterizzato dalla prototipazione e dall uso di linguaggi formali concepibile un processo di tipo trasfo
3. i i _ replaced by i I MockProvider1 a Expectation when testing P Figura 6 6 Infrastruttura Mockpp Le expectation definiscono il comportamento dello stub Sono dei con tenitori che all atto della creazione dello stub vengono riempiti con valori o vincoli definiti dal collaudatore Durante l esecuzione del test le istanze dell unit sotto test invocano i metodi dello stub che passano i loro argo menti alle expectation Queste ultime verificano se i valori degli argomenti corrispondono ai valori previsti o rispettano i vincoli specificati sollevando 204 CAPITOLO 6 CONVALIDA E VERIFICA un eccezione se ci sono delle discrepanze Le expectation possono eseguire di versi tipi di verifiche come confrontare valori e controllare il loro ordinamento temporale La Fig 6 7 mostra un applicazione di questo framework al collaudo di una classe Consumer che richiede l interfaccia IFile Applicazione Framework Mockpp Consumer interface i MockObject i IFile ae f open verify seni sostituito da Se close FileStub utility durante il test i testExec i i ia RE 5 i main Di i i i I DI i i i i FileStub i i L gt open read close Figura 6 7 Infrastruttura Mockpp Un istanza di Consumer con l operazione load apre un file
4. Le funzioni di verit a differenza della funzione di valutazione sono par te integrante del linguaggio poich definiscono la semantica dei connettivi adottati dal linguaggio non si possono modificare Un insieme di connettivi si dice completo se sufficiente ad esprimere tutte le funzioni di verit possibili Alcuni insiemi completi sono i A V I gt La funzione d interpretazione infine calcola il valore di verit di qualsiasi formula in base alla funzione di valutazione alle funzioni di verit ed alla struttura della formula stessa Soddisfacibilit e validit Una formula in generale pu essere vera o falsa a seconda della funzione di valutazione cio del modo in cui vengono assegnati valori di verit ai simboli 3 4 LOGICA 65 proposizionali Esistono per delle formule il cui valore di verit non dipende dalla funzione di valutazione cio sono vere o false per qualsiasi scelta dei valori di verit dei simboli proposizionali Ovviamente queste formule sono particolarmente utili perch sono di applicabilit pi generale Nei paragrafi seguenti esprimeremo pi precisamente la dipendenza del valore di verit di una formula dalla funzione di valutazione Se per una formula F ed una valutazione v si ha che S 7 T si dice che v soddisfa F e si scrive v H F Osservazione Il simbolo non appartiene al linguaggio del calcolo propo sizionale poich non serve
5. La ripartizione del tempo di sviluppo si ricava dalla tabella seguente Dimensione KDSI Tipo dell applicazione Fase 2 8 32 128 512 Organic P amp A 10 11 12 13 Progetto 19 19 19 19 Sviluppo 63 59 55 51 I amp T 18 22 26 30 Semi detached P amp A 16 18 20 22 24 Progetto 24 25 26 27 28 Sviluppo 56 52 48 44 40 I amp T 20 23 26 29 32 Embedded P amp A 24 28 32 36 40 Progetto 30 32 34 36 38 Sviluppo 48 44 40 36 32 I amp T 22 24 26 28 30 Il modello intermedio Nel modello intermedio si calcola dapprima la quantit di lavoro detta nomi nale che viene poi corretta secondo una formula che tiene conto di quindici coefficienti relativi ad altrettanti attributi dell applicazione del sistema di calcolo del personale e dell organizzazione del progetto C 5 STIMA DEI COSTI 257 La formula della quantit nominale di lavoro la seguente Ma a S di dove a e b si ottengono da questa tabella Tipo dell applicazione a bi Organic 3 2 1 05 Semi detached 3 0 1 12 Embedded 2 8 1 20 I coefficienti di correzione c vengono ottenuti dalla tabella seguente Molto Basso Normale Alto Molto Extra j Attributo basso alto alto 1 RELY affidabilit 0 75 0 88 1 0 1 15 1 40 2 D
6. PowerMonitor PowerSensor r i start stop pwr_up i i Figura 5 18 Un sistema concorrente 1 2 i due sottosistemi di monitoraggio dopo l attivazione devono funziona re continuamente e in parallelo fra di loro interrogando periodicamente in modo polling i sensori 3 i sensori e il sottosistema per le emergenze entrano in funzione so lo quando ricevono messaggi dai sottosistemi di monitoraggio o dal controllore Possiamo quindi concludere che nel sistema ci sono tre flussi di controllo appartenenti al controllore e ai due sottosistemi di monitoraggio e iniziare il modello di progetto col diagramma di Fig 5 19 in cui abbiamo individuato gli oggetti attivi e quelli passivi Rappresentazione dei flussi di controllo in UML Il linguaggio UML permette di rappresentare i flussi di controllo concor renti in diversi modi La Fig 5 20 mostra i flussi di controllo dell esempio precedente per mezzo di un estensione ai diagrammi di sequenza introdotta nell UML 2 Questa estensione consiste nella possibilit di indicare dei seg menti di interazioni fra oggetti cio sottosequenze di scambi di messaggi detti frammenti che possono essere ripetuti o eseguiti condizionalmente In questo modo possibile rappresentare graficamente i vari costrutti di con trollo usati nei linguaggi di programmazione e anche specificare vari tipi di vincoli sulle interazioni possibili Nella Fig 5 20
7. Figura 5 10 Esempio progetto di sistema 2 Esempi di tali schemi sono le architetture a pipeline client server a uno o due livelli a repository mostrate in Fig 5 12 Alcune applicazioni che usano tali architetture sono rispettivamente i compilatori i servizi web pi semplici i servizi web per l accesso a basi di dati gli strumenti CASE Osserviamo che il modello client server ed il modello repository hanno la stessa topologia ma una diversa interazione fra i sottosistemi nel modello client server i clienti sono indipendenti mentre nel modello repository i vari componenti accedono al repository per scambiare dati e collaborare Altre categorie di applicazioni per cui si tende a usare delle architetture standard sono i sistemi interattivi i simulatori i sistemi real time i sistemi a transazioni Quando s intraprende il progetto di un nuovo sistema conviene verificare se esso appartiene ad una delle categorie note e prendere a modello lo schema generale di architettura tipico di tale categoria 5 2 PROGETTO DI SISTEMA 159 subsystem InterfBiblio subsystem Amministrazione subsystem subsystem subsystem subsystem RegistroBibliotecari RegistroPrestiti Catalogo RegistroUtenti s
8. Tabella 3 1 Rappresentazione tabulare R riaggancio S sollevamento del chiamante O ricevente occupato L ricevente libero Sr sollevamento del ricevente Componibilit e scalabilit Nella specifica di sistemi complessi e in particolare di sistemi concorrenti spesso necessario o conveniente rappresentare il sistema complessivo co me un aggregato di sottosistemi Un formalismo di specifica ha la propriet della componibilit se permette di costruire la rappresentazione del sistema complessivo per mezzo di semplici operazioni di composizione sulle rappre sentazioni dei sottosistemi Per scalabilit si intende la capacit di rappre sentare un sistema in modo tale che la complessit di tale rappresentazione sia dello stesso ordine di grandezza della somma delle complessit dei singoli sottosistemi Nel caso degli ASF la componibilit e la scalabilit sono limitate come mostrer l esempio sviluppato nei paragrafi successivi La figura 3 3 mostra tre sottosistemi un produttore un magazzino ed un consumatore esempio da 14 Il produttore si trova inizialmente nello stato p in cui pronto a produrre qualcosa per esempio un messaggio o una richiesta di elaborazione e con la produzione passa allo stato p2 in cui attende di depositare il prodotto col deposito ritorna allo stato iniziale Il consumatore ha uno stato iniziale c in cui pronto a prelevare qualcosa e col prelievo passa allo stato c2
9. passato attraverso una serie di revisioni La versio ne attuale 2015 la 2 5 In queste dispense si vuol dare soltanto un intro duzione ai concetti fondamentali di questo linguaggio rinunciando sia alla completezza che al rigore per cui la maggior parte delle nozioni qui espo ste applicabile a qualsiasi versione dell UML Ove sia necessario mettere in evidenza qualche differenza di concetti di notazioni o di terminologia si user il termine UML2 per la versione attuale e UMLI1 per le versioni precedenti In UML un sistema viene descritto da var punti di vista o viste views Per il momento ci occuperemo dei punti di vista pi rilevanti nella fase di analisi i il punto di vista dei casi d uso use cases che definisce is servizi forniti dal sistema agli utenti ii il punto di vista statico che ne descrive la struttura e quello iii dinamico che ne descrive il comportamento Il punto di vista fondamentale quello statico cio la descrizione delle classi e delle relazioni nel sistema modellato Per ciascun punto di vista si costruiscono uno o pi modelli del sistema ciascuno dei quali pu rappresentare una parte del sistema o un suo aspetto particolare e inoltre pu contenere informazioni pi o meno dettagliate se condo il livello di astrazione richiesto Un modello un insieme di elementi di modello gli elementi di modello costituiscono il vocabolario concettuale di cui
10. lt direzione gt lt nome gt lt tipo gt lt val default gt Solo il nome del parametro obbligatorio ed i parametri sono separati da virgole utile osservare la distinzione fra operazione e metodo Un operazione la specifica di un comportamento specifica che si pu ridurre alla sempli ce descrizione dei parametri o includere vincoli per esempio precondizioni invarianti e postcondizioni e varie annotazioni Un metodo l implemen tazione di un operazione L UML non ha elementi di modello destinati a descrivere i metodi che comunque non interessano in fase di specifica Se bisogna descrivere l implementazione di un operazione per esempio nella fase di codifica si possono usare delle note associate all operazione 96 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Oggetti Un oggetto viene rappresentato da un rettangolo contenente i nomi dell og getto e della classe d appartenenza sottolineati e separati dal carattere ed opzionalmente gli attributi con i rispettivi valori Il nome della classe o quello dell oggetto possono mancare In questo caso il nome della classe viene preceduto dal carattere possibile esprimere uno stereotipo come nella rappresentazione delle classi La forma minima di un oggetto consiste in un rettangolo col nome dell og getto e o della classe e l eventuale stereotipo oppure se il caso nell icona dello stereotipo col nome dell oggetto
11. Aldo passa Ingegneria del Software Beppe passa Sistemi Operativi e Reti Carlo passa Epistemologia Generale Le frasi del gruppo 1 dicono che certi individui godono di una certa propriet ovvero che Aldo Beppe e Carlo appartengono all insieme degli studenti bravi Le frasi del gruppo 2 dicono che esiste una certa relazione fra certi individui e certi altri individui non si fa distinzione fra entit animate e inanimate ovvero che le coppie Aldo Ingegneria del Software Beppe Sistemi Ope rativi e Reti e Carlo Epistemologia Generale appartengono all insieme di coppie ordinate tali che l individuo nominato dal primo elemento della coppia abbia superato l esame nominato dal secondo elemento Sia le frasi del primo gruppo che quelle del secondo affermano che certi predicati cio propriet o relazioni valgono per certe entit individuali e si possono scrivere sinteticamente come b A b B b C p A 1 p B 5 p C E dove il simbolo di predicato b sta per bravo p per passa l esame di il simbolo di costante A per Aldo e cosi via Queste frasi sono istanze particolari delle formule b x e p x y dove le variabili x e y sono dei simboli segnaposto che devono essere sostituiti da nomi di individui per ottenere delle frasi cui si possa assegnare un valore di verit bene sottolineare che la formula b x non significa qualcuno bravo la formula non significa nie
12. Come si gi detto una specifica dice cosa fa un sistema elencandone i requisiti e implementazione dice come Dal punto di vista del progettista un requisito un obbligo imposto dall esterno e quindi fa parte della spe cifica mentre l implementazione il risultato di una serie di scelte Certe caratteristiche del sistema che potrebbero essere scelte di progetto in de terminati casi possono diventare dei requisiti per esempio i regolamenti urbanistici di un comune potrebbero porre un limite all altezza degli edifici oppure le norme di sicurezza possono imporre determinate soluzioni tecniche Queste caratteristiche quindi non sono pi scelte dal progettista ma sono vincoli esterni Pi in generale un vincolo una condizione che il sistema deve soddisfare imposta da esigenze ambientali di varia natura fisica eco nomica legale o da limiti della tecnologia che rappresenta un limite per le esigenze dell utente o per le scelte del progettista Un vincolo quindi un requisito indipendente dalla volont dell utente Data la potenziale ambiguit nel ruolo requisito vincolo o scelta di pro getto di certi aspetti di un sistema importante che la documentazione prodotta durante il suo sviluppo identifichi tali ruoli chiaramente Se ci non avviene si potrebbe verificare una situazione di questo tipo un sistema 18 CAPITOLO 1 INTRODUZIONE viene realizzato rispettando vincoli e requisiti e dopo qual
13. Nell UML la rappresentazione esplicita di oggetti piuttosto rara in quanto il lavoro di analisi specifica e progettazione si basa essenzialmen te sulle classi e le loro relazioni per gli oggetti possono essere usati per esemplificare delle situazioni particolari o tipiche La figura 3 8 mostra la rappresentazione di una classe e di una sua istanza Shade Shape color color Treg position Point position 1 2 move d Vector den oggetto rotate angle classe Figura 3 8 Una classe ed un oggetto 3 5 3 Associazioni e link L informazione minima fornita da un associazione l elenco delle classi as sociate Altre informazioni dette propriet descrivono la partecipazione all associazione di ciascuna delle classi coinvolte e sono raggruppate nel ri spettivo estremo di associazione association end Le propriet indicate pi comunemente sono il nome di ruolo la molteplicit l ordinamento l unicit e il qualificatore Il nome di ruolo serve a specificare la relazione fra le istanze della clas se etichettata dal ruolo e le istanze della classe associata Per esempio in 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 97 Fig 3 15 c un associazione fra la classe Docente e la classe Dipartimento All estremit di questa associazione corrispondente alla classe Docente si trova il nome di ruolo direttore questo significa che un docente pu assumere il ruolo di direttore
14. e Un prototipo pu essere una parte funzionante ed autonoma del sistema finale e pu essere consegnato all utente che comincia ad usarlo nella propria attivit strategia early subset early delivery Quando il prototipo viene usato nell analisi dei requisiti bisogna scegliere se buttar via il prototipo una volta ottenuta l approvazione dell utente per passare alla progetto ex novo del sistema oppure costruire il prodotto finale ampliando e perfezionando il prototipo Nel primo caso si parla di prototipo usa e getta throw away nel secondo si parla di prototipo evolutivo o sistema pilota Un prototipo usa e getta ha quindi una struttura interna del tutto diversa da quello che sar il prodotto finale e pu essere realizzato senza vincoli di efficienza per esempio usando linguaggi dichiarativi come p es il Prolog o linguaggi di scripting p es Perl o Python che permettono tempi di sviluppo pi brevi a scapito delle prestazioni e di altre qualit desiderabili del prodotto Un prototipo evolutivo richiede che fin dall inizio si facciano scelte che condizioneranno le fasi successive Questo richiede naturalmente un mag giore sforzo di progetto Un rischio comune nell uso dei prototipi consiste nel prendere sul serio delle scelte che in fase di prototipazione erano ac cettabili e trascinarle fino alla realizzazione del sistema anche se inadeguate al prodotto finale Per esempio durante la prototipazione si
15. main 278 APPENDICE F MODULI IN C E IN ADA Vector v 4 v 0 0 0 II sas La direttiva using namespace pu essere usata per comporre spazi di nomi come nel seguente esempio Linear h namespace Linear class Vector SS wra class Matrix 3 i IRR RE REI namespace Trig double sin double x double cos double x Math h include Linear h include Trig h namespace Math using namespace Linear using namespace Trig F 1 3 Moduli generici in C In C i moduli generici si realizzano col meccanismo dei template o classi modello Di seguito mostriamo una possibile definizione di uno stack di elementi di tipo generico F 1 INCAPSULAMENTO E RAGGRUPPAMENTO IN C 279 Stack h template lt class T gt class Stack T v T p int size public Stack int s Stack void push T a T pop 3 template lt class T gt Stack lt T gt Stack int s i x v p new T size s altre definizioni Questo modulo generico pu essere usato in un modulo cliente come questo include lt iostream h gt include Stack h main Stack lt int gt si 10 si push 3 si push 4 cout lt lt si pop lt lt endl lt lt si pop lt lt endl In C una classe generica viene istanziata implicitamente quando si di chiara un oggetto Spetta all ambiente di programmazione generare il codice nel modo opportuno possibilmente senza duplicaz
16. Anche qui osserviamo che la modularit del sistema ne facilita la modifica Si distinguono i seguenti tipi di manutenzione correttiva individuare e correggere errori adattativa cambiamenti di ambiente operativo porting in senso stretto cio relativo al cambiamento di piattaforma hardware e software ma anche in senso pi ampio relativo a cambiamenti di leggi o procedure linguistici e culturali per esempio le date si scrivono in modi diversi in diversi paesi perfettiva aggiunte e miglioramenti 2 1 7 Attivit di supporto Alcune attivit vengono svolte contemporaneamente alle fasi gi illustrate gestione La gestione comprende la pianificazione del processo di sviluppo la allocazione delle risorse in particolare le risorse umane con lo staf fing l organizzazione dei flussi di informazione fra i gruppi di lavoro e al loro interno ed altre attivit di carattere organizzativo Un aspet to particolare della gestione orientato al prodotto pi che al processo la gestione delle configurazioni volta a mantenere i componenti del prodotto e le loro versioni in uno stato aggiornato e consistente Per configurazione di un prodotto si intende l elenco dei suoi componenti per ciascuno dei quali deve essere indicata la versione richiesta documentazione La maggior parte dei deliverable costituita da docu mentazione Altra documentazione viene prodotta ed usata interna mente al processo di sviluppo come
17. associazione pu essere implementata come un semplice pun tatore e in questo caso si lascia immutata nel modello o anche come un attributo se la classe associata molto semplice p es string oppure se si vuole modellare una composizione 5 5 PROGETTO DETTAGLIATO 189 User Account User account Accont account uno a uno 1 1 User Account ordered 1 1 Lt User m gt List lt Account gt Account uno a molti 1 Ja User gt Account 1 tF Lf 1 User gt gt Ownership Account molti a molti Figura 5 37 Realizzazione delle associazioni Associazioni da uno a molti Nell associazione da uno a molti un istanza della classe all origine dell as sociazione associata ad un gruppo di istanze dell altra classe In questo caso conviene introdurre una classe contenitore possibilmente scelta fra le numerose classi o template di libreria disponibili per i vari linguaggi La scelta della classe contenitore dipende dalle propriet del gruppo di istanze in particolare quelle di unicit se ogni elemento appare una sola volta o no e dell ordinamento Queste propriet si possono rappresentare con le propret UML unique nonunique ordered unordered Per modellare le associazioni si pu scegliere di lasciarle come sono con l indicazione di quest
18. di in formazioni p es banche dati applicazioni gestionali orientati alle funzioni trasformano informazioni mediante elaborazioni com plesse p es compilatori orientati al controllo interagiscono con l ambiente modificando il pro prio stato in seguito agli stimoli esterni p es sistemi operativi con trollo di processi Bisogna per ricordare che ogni applicazione usa dei dati svolge delle elaborazioni ed ha uno stato che si evolve in modo pi o meno sempli ce Nello specificare un sistema quindi necessario in genere prendere in considerazione tutti questi tre aspetti 3 1 3 Software di base o applicativo Un altra classificazione si pu ottenere considerando se il software da rea lizzare serve a fornire i servizi base di elaborazione ad altro software per esempio se si deve realizzare un sistema operativo o una sua parte oppure software intermedio fra il software di base e le applicazioni librerie oppure software applicativo vero e proprio 3 2 Linguaggi di specifica Normalmente i requisiti sia funzionali che non funzionali vengono espressi in linguaggio naturale Questo per spesso non basta a specificare i requi siti con sufficiente precisione chiarezza e concisione Per questo sono stati introdotti numerosi linguaggi di specifica che possano supplire alle mancanze del linguaggio naturale 3 2 1 Classificazione dei formalismi di specifica I formalismi usati nella specifica dei sistemi
19. di programmazione in quanto 4 4 MODULI NEI LINGUAGGI 141 Switch Amplifier Supply Amp Radio TunerRPY f component O PwrVolume Y StereoSystem O TunerREQ Tuner OH Power Y O ReaderRPY a O Amplif User CdRdr ReaderREQ O O Tuning C O CDReading Fe Figura 4 9 Componenti strutturati in UML permette di riusare facilmente dei componenti che altrimenti verrebbero ri progettati daccapo o adattati manualmente da quelli gia esistenti col rischio di introdurre errori Inoltre in molti casi l uso di moduli generici permette di realizzare programmi pi efficienti poich generalmente vengono istanziati cio tradotti in moduli concreti con valori definiti dei parametri a tempo di compilazione In UML si possono rappresentare elementi di modello generici e in par ticolare classi e package La rappresentazione grafica di una classe generica simile a quella di una classe non generica con un rettangolo tratteggiato contenente i nomi ed eventualmente i tipi dei parametri come in Fig 4 10 I parametri possono essere nomi di tipi classi o tipi base valori operazioni e si possono indicare dei valori di default eee ih push in a T pop T Figura 4 10 Classi generiche in UML 1 142 CAPITOLO 4 IL PROGETTO La relazione fra una classe generica ed una sua
20. interfaccia pu anche contenere delle dichiarazioni di attributi questo significa che le classi che realizzano l interfaccia devono rendere disponibili i valori di tali attributi ma non necessariamente implementarli direttamente sotto forma di membri dato i loro valori per esempio potrebbero essere calcolati di volta in volta Con la notazione completa un interfaccia si rappresenta con un simbolo simile a quello delle classi etichettato con parola chiave lt interface gt come nell esempio illustrato in Fig 4 3 in cui l interfaccia Stream definisce ope razioni implementate dalle classi File e Socket La figura mostra anche una macchina a stati che specifica il protocollo che deve essere osservato dalle implementazioni di Stream Un altro esempio mostrato in Fig 4 4 In questo esempio la classe HashTable rappresenta una tabella hash Ricordiamo che questo tipo di tabella memorizza gli elementi coppie chiave valore in un vettore e l indice associato alla chiave di ciascun ele mento viene calcolato in funzione del valore della chiave stessa per mezzo di una funzione detta di hash Poich la funzione di hash pu associare lo stesso indice a elementi distinti a ciascun ndice corrisponde in generale non un solo elemento ma una lista di elementi o bucket L inserimento o la ricerca di un elemento richiedono quindi una scansione della lista individua ta dall indice restituito dalla funzione di hash Questa ri
21. introduzione di nuovi requisiti allora si renderebbero necessarie la ripetizione delle fasi precedenti e la rielaborazione dei semilavo rati prodotti fino a quel punto Ma questa rielaborazione pu essere molto costosa se la pianificazione del processo non la prevede fin dall inizio per esempio il gruppo responsabile della fase di progetto potrebbe essere stato assegnato ad un altro incarico o addirittura sciolto all inizio della fase di codifica Inoltre le modifiche sono rese costose dalle grandi dimensioni dei semilavorati Il numero il contenuto e la denominazione delle fasi pu variare da un or ganizzazione all altra e da un progetto all altro Nel seguito ci riferiremo ad un processo articolato nelle seguenti fasi studio di fattibilit analisi e specifica dei requisiti suddivisa in analisi definizione e specifica dei requisiti dell utente e specifica dei requisiti del software progetto suddiviso in progetto architetturale e progetto in dettaglio e programmazione e test di unit 24 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO e integrazione e test di sistema e manutenzione Contemporaneamente a queste fasi e nel corso di tutto il processo si svolgono anche queste attivit di supporto e gestione e controllo di qualit e documentazione Lo studio del modello a cascata importante sia perch il modello pi noto sia perch l analisi delle varie fasi
22. operator int i throw RangeExc if 0 lt i amp amp i lt size return plil else throw RangeExc i L informazione associata all eccezione pu quindi essere usata in uno handler se questo ha un argomento formale che denota l eccezione lanciata 284 APPENDICE F MODULI IN C E IN ADA main SF a try catch Vector RangeExc r cerr lt lt bad index lt lt r index lt lt endl catch Vector SizeExc Ii axe Le eccezioni possono essere raggruppate usando l eredit per esempio in un modulo che esegue dei calcoli numerici si possono definire delle eccezio ni che rappresentano errori aritmetici generici MathError e da queste si possono derivare eccezioni pi specifiche come il traboccamento Ovf1 o la divisione per zero ZeroDiv class MathError class Ovfl public MathError class ZeroDiv public MathError Un modulo cliente pu trattare le eccezioni in modo differenziato try IF sa catch Ovfl IF as catch MathError Ilsa catch Cass JA VO ASA Nell ultimo handler i punti di sospensione sono la sintassi usata per spe cificare che lo handler gestisce qualsiasi eccezione Quando viene sollevata un eccezione il controllo passa al primo gestore in ordine testuale il cui argomento formale ha un tipo uguale a quello dell eccezione o un tipo pi generale Da questa regola segue che gli handler pi generali devono seguire qu
23. p new double size s F 1 INCAPSULAMENTO E RAGGRUPPAMENTO IN C 277 Vector operator int i return plil altre definizioni per Vector e Matrix II set La direttiva include interpretata dal preprocessore serve a includere il file Linear h rendendo cosi visibili al compilatore le dichiarazioni conte nute in tale file In questo caso al modulo logico specificato dal namespace Linear corrisponde un modulo fisico costituito dall unit di compilazione formata da Linear cc e Linear h La direttiva using namespace inter pretata dal compilatore dice che quando il compilatore trova dei nomi non dichiarati deve cercarne le dichiarazioni nello spazio di nomi Linear Questa direttiva quindi rappresenta approssimativamente la relazione lt import gt fra i package Alternativamente all uso della direttiva using namespace si possono usare delle dichiarazioni using una per ciascun nome appartenente a Linear usato nell unit di compilazione using Linear Vector Oppure si pu qualificare esplicitamente ogni occorrenza di nomi apparte nenti a Linear Per esempio la definizione del costruttore della classe Vector pu essere scritta cos int amp Linear Vector operator int i ince Un modulo cliente deve includere il file di intestazione e usare i nomi in esso dichiarati con le convenzioni linguistiche gia viste main cc include lt iostream gt include Linear h using namespace Linear
24. semilavorato che deve essere prodotto dal task Nell esempio riportato si tratta di un rapporto identificato dalla sigla RP 1 1 e dal titolo State of the art La voce Links indica i rapporti di dipendenza fra i vari task fornendo quindi le informazioni caratteristiche dei diagrammi PERT Nell esempio vediamo che i task T1 1 T1 3 e T1 6 dipendono dal task T1 1 Infine osserviamo che per ogni task vengono individuati i rischi associati e proposte eventuali soluzioni D 5 Gestione delle configurazioni La gestione delle configurazioni si riferisce all identificazione l organizzazio ne ed il controllo delle diverse versioni del prodotto dei suoi componenti della documentazione e di tutte le informazioni relative allo sviluppo per esempio opzioni di compilazione dati e risultati dei test Un insieme di elementi considerati come un unita dal punto di vista della gestione delle configurazioni un configuration item Pi precisamente ogni versione del prodotto individuata da un insieme di unit di configurazione o moduli cio da una configurazione Organizza re e controllare le versioni del prodotto significa controllare la distribuzione e la modifica degli elementi di configurazione registrare e riferire lo stato 268 APPENDICE D GESTIONE DEL PROCESSO DI SVILUPPO degli elementi di configurazione e le relative richieste di modifica e verificare la correttezza e completezza degli elementi di conf
25. una formula allora sono formule anche OF e OF La semantica di una logica modale data da una terna di Kripke W R V dove e l insieme W l insieme dei mondi o interpretazioni e R la funzione di accessibilit o visibilit R W W e Vela funzione di valutazione V W x W IB 88 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI La funzione di accessibilit assegna una struttura all insieme dei mondi possibili determinando quali mondi sono considerati possibili a partire dal mondo attuale p es in una logica temporale i mondi possibili in un dato istante sono quelli associati agli istanti successivi La funzione di accessibilit riflessiva e transitiva La funzione di valutazione tale che e V OF w T se e solo se per ogni v W tale che R w v si ha V F u T e V OF w T se e solo se esiste un v W tale che R w v e ViF 0 T Seguono alcuni assiomi per la logica modale OAP amp aQP 3 14 P gt Q OP 00 3 15 OP gt P 3 16 I tre schemi di assiomi si possono leggere rispettivamente cos e 3 14 P necessariamente falso se e solo se P non pu essere vero e 3 15 se P implica necessariamente Q allora la necessit di P implica la necessit di Q e 3 15 la necessit di P implica P Logica temporale Nella logica temporale i mondi possibili rappresentano stati del sistema su cui vogliamo ragionare corrispo
26. verificare un eccezione contengono delle istruzioni che sollevano raise cio segnalano tale eccezione I moduli preposti a gestire l eccezione contengono dei sottoprogrammi detti gestori o handler esplicitamente designati a tale scopo A tempo di esecuzione quando in un modulo si scopre il verificarsi di una situazione eccezionale cosa che richiede dei controlli espliciti tipica mente con istruzioni condizionali l istruzione che solleva l eccezione causa l interruzione dell esecuzione del modulo ed il trasferimento del controllo al gestore pi vicino nella catena di chiamate che ha portato all invocazione del modulo che ha sollevato l eccezione Per fissare le idee supponiamo che un modulo A chiami una funzione definita in un modulo B che a sua volta chiama una funzione di un modulo C Supponiamo inoltre che nell esecuzione di C si possa verificare un eccezione e che nel modulo A ma non in B ci sia un gestore per tale eccezione Se quando si esegue C l eccezione viene sollevata allora vengono interrotte le esecuzioni di C e B e il controllo passa al gestore appartenente ad A In questo gestore se necessario si pu risollevare l eccezione delegandone la gestione ad altri moduli ancora di livello pi alto Questo pu accadere se nel modulo A si scopre che l eccezione non pu essere gestita oppure se A pu eseguire solo una parte delle azioni richieste In UMLI le eccezioni si modellavano come oggetti
27. 127 4 2 2 Relazioni fra moduli Lisi 129 423 Dipidimod li s i e se ace oie amp Rk eda ap e 130 4 3 Linguaggi di progetto i iii ia ee oS ews 132 4 4 Moduli nei linguaggi 20 133 4 4 1 Incapsulamento e raggruppamento 134 4 4 2 Moduli generici gt ss doh LS 140 Li Egcezioni i ahe Gas aie oe Bee ee RES et 142 5 Progetto orientato agli oggetti 145 504A Un esempio nni 146 5 1 Eredit e polimorfismo ue uri 147 SLI Eredit s s giu rues ah red ie ic 147 INDICE 5 1 2 Polimorfismo e binding dinamico 5 1 3 Classi astratte e interfacce 2 2 a 5 1 4 Eredit multipla e ed 26 posar Fe eee pale k 5 2 Progettodi sistemia no ro Sa pate ee be Soe he ee 5 2 1 Ripartizione in sottosistemi o oo aa 5 2 2 Librerie e framework oaoa 44 ee dee es 5 2 3 Gestione dei dati isa RES mw eo 2 52A Sistemi CONCORPSMGM s s e dose Ba oq amp Oo be amp BP a 5 9 L D sign POUT ss as es e Sek ee ee ey ee ee SS 5 31 Composite goa ce r racc ee Be a aG Be eee eee Dud Adapte oso oer sa soes aad einai le a Dio Bride tae ea che ee ee Ree de ee ee ew Ed Del diodi a Bake ce eee Gee ae Oe Ce oe een 5 3 5 Abstract Factory sees Maia eA Bs AL ae ce 5 9 0 dtera t r aprilia Se we 5 4 Architettura fisica LL Lo Progetto deptaglialo 4 6 daga cea aa a 5 5 1 Progetto delle classi 550665 it mw eo as 5 5 2 Progetto delle associazioni 240 4444 4 a4 esa 6 Convalida e verifica 6 1 Concetti fondamentali
28. A n Widget Window Compound Simple setTitle string add Widget Panel Button TextField action string getText Menu MyButton TextField tf MyButton main tf tf TextField tf _ Window w new Window TextField t new TextField action MyButton TextField tf MyButton b new MyButton t action w gt setTitle Main Window w gt add t cout lt lt tf_ gt getText w saddibj 1 APPLICAZIONE Figura 5 17 Uso di un framework in un applicazione zi di directory database gerarchici ed i sistemi basati sul formato HDF5 usati per applicazioni scientifiche Un altro aspetto da considerare l opportunit di replicare i dati per ragioni di tolleranza ai guasti e di accessibilit Se i dati sono replicati bisogna affrontare i problemi relativi alla consistenza dei dati fra le varie copie e dell accesso concorrente alle stesse 5 2 4 Sistemi concorrenti Il comportamento dei sistemi complessi generalmente si pu descrivere come un insieme di attivit concorrenti Il progettista deve individuare tali attivit e stabilire quali sottosistemi le devono svolgere quindi analizzare le possibili interazioni fra i sottosistemi come scambi di messaggi ed accessi a risorse condivise e le interazioni fra il sistema e l ambiente esterno In questa sezione tratteremo sistemi concorrenti non distribuiti cio ese guiti su un singolo calcolatore 166 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Me
29. La notazione Z comprende varie convenzioni per facilitare la specifica dei sistemi di calcolo In particolare lo stato di un sistema viene descritto da uno schema gruppo di definizioni e formule logiche e le operazioni che lo modificano vengono descritte da schemi che definiscono le variazioni dello sta to in seguito alle operazioni Opportune notazioni permettono di esprimere sinteticamente queste variazioni La metodologia di sviluppo basata sulla notazione Z prevede che un si stema venga descritto in termini matematici usando concetti quali insieme sequenza funzione e che la specifica iniziale venga trasformata progres sivamente fino ad ottenere una descrizione abbastanza dettagliata dell im plementazione Il sistema deduttivo permette di verificare determinate rela zioni o propriet oltre alla consistenza fra le diverse versioni della specifica ottenute nei vari passi del processo di sviluppo B 7 La Real Time Logic La Real Time Logic RTL 19 una logica tipata del primo ordine orientata all analisi di propriet temporali dei sistemi in tempo reale La semantica della RTL un modello che riassume i concetti fondamentali dei sistemi in tempo reale azioni predicati di stato eventi vincoli temporali Le azioni possono essere semplici o composte possono essere eseguite in sequenza o in parallelo e possono essere soggette a vincoli di sincronizzazione 226 APPENDICE B FORMALISMI DI SPECIFICA I predic
30. Lissa 0 Seu eohew edad 6 2 Analisi Statica sec oseere eh poa i 6 3 Analisi dinamica lt dal a ea 6 3 1 Test strutturale 2 244 664044 da 6 3 2 Testing funzionale aa aaa a 6 4 CppUnit e Mockpp 2 25 4564464625 eo ee Ree es 6 4 1 Il framework CppUnit 6 4 2 Il framework Mockpp 22 4 lt 4 lt 4 25448 e LE O 0 Test grande i iii eRe AMA ARA 6 5 1 Test di integrazione Lsu aw ee Gare ee Gane amp 6 5 2 Test di sistema o scu pos tupa wea det we iei ee E 6 5 3 Test di accettazione 355 san eh 6 5 4 Test di regressione 6 6 I linguaggio TTON 3 ooo kek we SER we eR ee ewes A Modello Cleanroom Formalismi di specifica B l Modello Entit Relazioni lt 4 246642258556 as 24 B 2 Espressioni regolari 02 005 ee uee 149 151 154 156 157 160 164 165 178 179 179 180 181 183 184 185 187 187 188 191 192 192 193 194 196 198 199 203 206 206 207 208 208 208 211 INDICE DEI Esempio iatale e Rui 216 B 3 Grammatiche non contestuali 217 bello a ee RIE 218 BAA Tipi semplici 2c es ee had eee 218 B42 DPS 4 ss ece hehe Lei 220 B 4 3 Moduli 0 e aea e a eha a KA 221 B 4 4 Sintassi di trasferimento 222 B 5 Formalismi orientati alle funzioni 222 B 6 La notazione Z LL 224 B 7 La Real Time LOG eas 2 a ee ee Ee 225 B 8 Reti di Petti se cs eaa daaa n ia ea e a neha a Kei 227 B 8 1 Abilitazione e regola di
31. Moduli generici in Ct si pt F 1 4 Eccezioni in C F 2 Moduli in Ada F 2 1 Moduli generici F 2 2 Eccezioni F 2 3 Eredit in Ada95 Bibliografia 269 269 271 272 273 275 275 275 276 278 281 285 286 287 289 290 INDICE Capitolo 1 Introduzione L ingegneria del software non mi piace Mi piacciono le cose pratiche mi piace programmare in assembler confessione autentica di uno studente Questa dispensa riassume i contenuti dell insegnamento di Ingegneria del software per il corso di laurea in Ingegneria informatica Tutte le nozioni qui esposte escluse le appendici saranno materia di esame incluse le parti non trattate a lezione Saranno materia di esame anche le nozioni presentate nelle ore di laboratorio Il materiale raccolto nella dispensa dovr essere integrato con i libri di testo indicati dal docente 1 1 Prime definizioni L ingegneria del software l insieme delle teorie dei metodi e delle tecniche che si usano nello sviluppo industriale del software Possiamo iniziarne lo studio considerando le seguenti definizioni software 1 L insieme o una parte dei programmi delle procedure delle regole e della relativa documentazione di un sistema di elaborazione dell informazione 2 Programmi procedu re ed eventuale documentazione e dati relativi all operazio ne di un sistema di calcolo 3 Programma o insieme di programmi usati per l operazione di un c
32. Nel seguito tratteremo alcune metriche scelte fra le pi diffuse o pi citate in letteratura C 1 Linee di codice La metrica pi semplice e di pi diffusa applicazione costituita dal numero di linee di codice LOC di un programma Quando si usa questa metrica bisogna specificare come vengono contate le linee di codice per esempio bisogna decidere se contare soltanto le istruzioni eseguibili o anche le dichia razioni Generalmente i commenti non vengono contati Nei linguaggi che permettono di avere pitt istruzioni su uno stesso rigo o di spezzare un istruzio ne su pi righi si pu usare il numero di istruzioni invece del numero di linee di codice ma anche il numero di istruzioni pu essere difficile da definire Questa metrica alla base di vari indici quali la produttivit linee di codice prodotte per persona per unit di tempo la qualit numero di errori per linea di codice il costo unitario costo per linea di codice Possiamo notare che l uso di questi indici per valutare la qualit del software penalizza i programmi brevi C 2 SOFTWARE SCIENCE 247 C 2 Software science La teoria della Software science propone un insieme di metriche basate su quattro parametri del codice sorgente n numero di operatori distinti nz numero di operandi distinti Ni numero di occorrenze di operatori N numero di occorrenze di operandi Gli operatori comprendono oltre agli operatori aritmetici le parole chiave p
33. OB receive m I OSA send m gt B receive m O B receive m B send_ack m Le prime tre formule esprimono proprieta di sicurezza non succede niente di brutto e se viene spedito un messaggio m la connessione attiva e se viene mandato un acknowledgement per un messaggio il messaggio gi stato ricevuto e se il processo B riceve un messaggio il messaggio gi stato spedito 90 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Le formule successive esprimono propriet di vitalit prima o poi succede qualcosa di buono e se viene spedito un messaggio m prima o poi viene ricevuto e se un messaggio m viene spedito pi volte prima o poi viene ricevuto e se il processo B riceve un messaggio prima o poi restituisce un ackno wledgement Generalmente per analizzare un sistema usando logiche temporali il si stema viene modellato come un sistema a transizioni di stati labeled tran sition system LTS una macchina a stati pi generale degli automi a stati finiti Tali sistemi possono essere descritti per mezzo di algebre di processo Sez 2 3 3 o di linguaggi orientati agli stati In questi linguaggi un sistema viene descritto per mezzo delle variabili che ne definiscono lo stato e delle transizioni possibili Avendo modellato un sistema in forma di LTS se ne possono specificare le propriet con una logica temporale e verificarle usando strumenti basati sul model checking 3 5 Linguaggi ori
34. Per esempio consideriamo il seguente programma main int x y cin gt gt x gt gt y if x 0 x x 10 y y x cout lt lt x lt lt endl lt lt y Il dominio del programma l insieme delle coppie ordinate di interi Qualsiasi test contenente coppie x y con x diverso da zero soddisfa il criterio di copertura Osserviamo per che questo criterio esclude i test contenenti coppie con x nullo in corrispondenza delle quali si verifica un malfunzionamento Criterio di copertura delle decisioni Il criterio di copertura delle decisioni richiede che ogni arco del grafo di con trollo venga percorso almeno una volta Per il programma visto precedente mente il criterio di copertura delle decisioni richiede che il test contenga cop pie sia con x diverso da zero che con x uguale a zero e in questo modo si trova il malfunzionamento dovuto alla divisione per zero Ma per altri programmi il questo criterio non basta Consideriamo quest altro programma main int x y cin gt gt x gt gt y if x 0 y gt 0 196 CAPITOLO 6 CONVALIDA E VERIFICA y y x else x y 2 lt x cout lt lt x lt lt endl lt lt y Per il criterio di copertura delle decisioni ogni test deve contenere sia cop pie tali che la condizione x 0 y gt 0 sia vera sia coppie tali che la condizione sia falsa Un test accettabile x 5 y 5 x 5 y 5 Anche questo test incapace di rilevare il
35. Procedendo in questo modo si crea uno stra to di software fra l applicazione ed il sistema operativo che semplifica la programmazione e rende l applicazione pi modulare e portabile Questa tecnica permette anche di semplificare l accesso in mutua esclu sione alle risorse condivise A ciascuna di queste risorse bisogna associare un semaforo cio un meccanismo del sistema operativo che permette l accesso a un solo thread o processo per volta Un thread deve acquisire il semaforo usare la risorsa e quindi rilasciare il semaforo permettendo agli altri thread Non si tratta di una dimenticanza I creatori del C e del C seguono il principio che un linguaggio deve offrire un nucleo di funzioni base flessibili e potenti che si pos sano implementare in modo efficiente su qualsiasi piattaforma hardware e software Le funzioni pi sofisticate come la concorrenza o la garbage collection possono quindi essere implementate in modi diversi secondo le esigenze delle diverse applicazioni 174 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI di accedere alla risorsa Usando direttamente le chiamate di sistema c il rischio che per un errore di programmazione il rilascio non avvenga con un conseguente blocco del sistema Se il semaforo viene incapsulato in una classe l acquisizione viene fatta nel costruttore e il rilascio nel distruttore cosicch il rilascio avviene automaticamente quando l istanza del semaforo esce dal suo spaz
36. che devono quindi essere riconsiderate e riformulate Per questo sono sempre pi diffu si i processi di sviluppo che alternano ciclicamente fasi di analisi e fasi di progetto Infine ricordiamo che il progetto dell architettura software legato al 123 124 CAPITOLO 4 IL PROGETTO l architettura hardware che pone dei vincoli alle scelte del progettista Il progettista del software deve anche specificare le relazioni fra architettura software ed architettura hardware e in particolare l assegnamento dei vari componenti software ai componenti hardware che li devono eseguire 4 1 Obiettivi della progettazione Data una specifica esistono molti modi per realizzarla Naturalmente la scelta fra le diverse possibilt non arbitraria ma guidata sia da vincoli di carattere economico sia dalla necessit di conseguire un adeguata qualit del prodotto o del progetto stesso Per qualit del progetto si intendono sia quelle caratteristiche che pur non essendo direttamente percepibili dall uten te determinano la qualit del prodotto sia quelle che offrono un vantaggio economico al produttore del software rendendo pi efficace il processo di sviluppo Fra le caratteristiche che determinano la qualit del prodotto o del pro getto citiamo l affidabilit la modificabilit ricordiamo il principio design for change la comprensibilit e la riusabilit L esperienza accumulata finora dimostra che queste propr
37. deve con tenere un solo token che appartiene o a py risorsa libera oppure a uno solo dei place p gt e ps risorsa occupata da uno dei processi I tre sottoinsiemi sono rappresentati dai P vettori AM 111000 0 h9 000111 0 AS 010010 1 Possiamo verificare che questi vettori sono soluzioni del sistema omogeneo hC 0 e pertanto i prodotti hm i 1 3 sono costanti al variare di m sulle marcature raggiungibili ed uguali ad uno Questo implica fra l altro che viene soddisfatta la condizione di mutua esclusione Dai P invarianti si possono ricavare molte informazioni In particolare se h un P invariante rispetto ad una marcatura m e si ha che hm hm allora la marcatura m non raggiungibile da m B 8 10 Sequenze di scatti cicliche Una sequenza di scatti si dice ciclica se riporta la rete alla marcatura iniziale Come abbiamo visto una sequenza di scatti si pu rappresentare con un vettore T vettore che associa a ciascuna transizione il numero di volte che essa scatta nella sequenza Dall equazione fondamentale m m Cs si ottiene che i T vettori soluzioni dell equazione Cs 0 B 8 RETI DI PETRI 243 rappresentano sequenze di scatti cicliche Tali vettori sono i T invarianti della rete Nell esempio sulla mutua esclusione un 7 invariante Ree rR ww Ww 244 APPENDICE B FORMALISMI DI SPECIFICA Appendice C Metriche del software Tutte le attivit industriali rich
38. essere rappresentato per mezzo di pi modelli ciascuno dei quali ne mostra solo alcuni aspetti spesso a diversi livelli di dettaglio Ovviamente un modello deve essere espresso in qualche linguaggio Una parte considerevole di questo corso verr dedicata a linguaggi concepiti per descrivere sistemi sistemi software in particolare Un linguaggio ci offre un vocabolario di simboli parole o segni grafici che rappresentano i concetti necessari a descrivere certi aspetti di un sistema una sintassi che stabilisce in quali modi si possono costruire delle espressioni anche espressioni grafiche cio diagrammi e una semantica che definisce il significato delle espressioni Nel seguito si user spesso il termine formalismo per riferirsi ad una famiglia di linguaggi che esprimono concetti simili avendo quindi un modello teorico comune e hanno sintassi simili e quindi uno stile di rappresentazio ne comune Questi linguaggi peraltro possono presentare varie differenze concettuali o sintattiche 1 4 CONCETTI GENERALI 19 Letture Obbligatorie Cap 1 Ghezzi Jazayeri Mandrioli oppure Sez 1 1 1 2 Ghezzi Fuggetta et al oppure Cap 1 Pressman 20 CAPITOLO 1 INTRODUZIONE Capitolo 2 Ciclo di vita e modelli di processo Ogni prodotto industriale ha un ciclo di vita che a grandi linee inizia quando si manifesta la necessit o l utilit di un nuovo prodotto e prosegue con l identificazione dei suoi requisiti
39. i 1 i i i create r i i i i i i i i i 1 i i i 7 7 i i T XDBConnection XDBCredentials 7 i i i i i i YDBConnection YDBCredentials 4 Figura 5 31 Problema creare due librerie alternative e Credentials realizzata da una classe fabbrica factory per ognuna delle librerie alternative XDBFactory e YDBFactory Il pattern corrispondente mostrato in Fig 5 32 5 3 6 Iterator Una raccolta di oggetti di tipo Element pu essere implementata usando strutture dati diverse per esempio liste List o alberi Tree Un applica zione deve poter accedere agli elementi di questa raccolta indipendentemente da come viene implementata A questo scopo Fig 5 33 si definisce una classe astratta o un interfaccia Iterator che offre le operazioni necessarie per accedere in sequenza agli elementi della raccolta che vengono imple mentate da classi specifiche per ciascuna implementazione Listlterator e TreeIterator La classe astratta o interfaccia Container offre le operazioni per costruire la raccolta e per creare un iteratore e viene implementata da List o Tree Il pattern corrispondente mostrato in Fig 5 34 5 4 ARCHITETTURA FISICA 185 interface AbstractFactory interface AbstractProductA createProductA ProductA createProductB ProductB interface AbstractProductB c
40. il prodotto dell inverso di x per il prodotto di x ed y uguale a y Per dimostrare il teorema si seleziona lo stesso col cursore e si d il comando che attiva l ambiente di simulazione dimostratore prover Viene mostrato il sequente iniziale o goal inverse_associative Rule dove la barra verticale seguita dalla linea tratteggiata rappresenta il simbolo di sequente e il goal ha quindi la forma H VaVy i x a y y Il prompt Rule chiede all utente di scegliere una regola Si inseriscono gli assiomi nell antecedente applicando la regola lemma Rule lemma associative 1 FORALL x y z G x y z x y z 1 FORALL x y G i x x y Il lt si Rule lemma inverse_left 84 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Rule lemma id_left Nel conseguente si inseriscono delle costanti arbitrarie dette di Skolem per eliminare il quantificatore dal conseguente applicando la regola skosimp Rule skosimp 1 FORALL x G e x x 2 FORALL x G i x x e 3 FORALL x y z G x y z x y z 1 i x11 x 1 x y 1 y 1 Si sostituiscono le costanti di Skolem nelle formule dell antecedente elimi nando i quantificatori con la regola inst Rule inst 3 i x 1 x 1 y 1 Rule Cust D ela Rule inst 1 x 1 1 e x 1 x 1 2 i x 1 x 1 e 3 i x 1 x 1 y 1 i x 1 x 1 y 1 1 i x
41. il numero di funzioni di tipo 7 W il rispettivo peso e D il grado d influenza della j esima caratteristica C 5 Stima dei costi Il costo di sviluppo di un sistema ovviamente un parametro fondamentale per la pianificazione economica del lavoro E importante poter prevedere i 254 APPENDICE C METRICHE DEL SOFTWARE costi con ragionevole accuratezza e a questo scopo sono stati proposti vari modelli che calcolano una stima dei costi a partire da alcuni parametri relativi al sistema da realizzare ed all organizzazione che lo deve sviluppare Il costo di un sistema viene generalmente riassunto in due fattori la quantit di lavoro cio l impegno di risorse umane ed il tempo di svilup po L impegno di risorse umane viene di solito quantificato in termini di mesi uomo cio del tempo necessario ad una persona per eseguire tutto il lavoro ovvero il numero di persone necessarie a fare tutto il lavoro nell unit di tempo bene ricordare che questa misura soltanto convenzionale ed evitare l errore di credere che tempo di sviluppo e personale siano grandezze interscambiabili Non possibile dimezzare il tempo di sviluppo raddop piando l organico poich nel tempo di sviluppo entrano dei fattori quali il tempo di apprendimento ed i tempi di comunicazione all interno del gruppo di lavoro che crescono all aumentare del numero di partecipanti Il tempo di sviluppo quindi viene di solito calcolato separatamente
42. interfaccia e la sua realizzazione concreta nascosta Gli oggetti astratti permettono di controllare gli accessi alle informazioni contenute in una struttura dati che devono essere condivise fra pi moduli Un altra categoria di moduli quella dei tipi di dati astratti TDA cio strutture dati le cui propriet sono definite dalle operazioni possibili su tali strutture e non dalle implementazioni delle strutture stesse Per esempio 2 Il corretto funzionamento del modulo usato non sempre richiesto poich un modulo in certi casi contiene solo risorse statiche come strutture dati o definizioni di tipi per le quali non si pu parlare di funzionamento 4 2 MODULI 131 i numeri complessi si possono rappresentare come un TDA definito dalle operazioni dell aritmetica complessa L implementazione di un numero com plesso sar una coppia di numeri che rappresentano la parte reale e la parte immaginaria oppure il modulo e l argomento Questa coppia pu essere rap presentata da due membri di una struttura o di una classe oppure da due componenti di un array I due numeri a loro volta possono essere imple mentati da numeri in virgola mobile di varia precisione da coppie di interi mantissa esponente da stringhe di byte e in altri modi ancora Se la struttura o l algoritmo di un oggetto astratto o tutti e due pos sono essere resi parametrici rispetto a qualche loro caratteristica si ottiene un oggetto
43. interpretazione I se e solo se esiste un assegnamento di variabili tale che S A T Si dice allora che 3 4 LOGICA 75 l interpretazione I soddisfa A con assegnamento di variabili e si scrive g TEA Una formula A soddisfacibile tout court se e solo se esiste un interpre tazione I in cui A soddisfacibile Una formula A valida in un interpretazione o vera in un interpretazio ne I se e solo se S7g A T per ogni un assegnamento di variabili Si dice quindi che J un modello di A e si scrive I H A Osserviamo che una formula aperta A cio contenente variabili non quan tificate valida in un interpretazione se e soltanto se valida la sua chiu sura universale cio la formula ottenuta da A quantificando universalmente le sue variabili libere Una formula A logicamente valida se e solo se valida per ogni interpretazione I e si scrive A I concetti di validit e soddisfacibilit si estendono a insiemi di formule un insieme di formule equivalente alla loro congiunzione Una formula A implica logicamente B ovvero B conseguenza logica di A se e solo se A gt B valida Una formula A logicamente equivalente a B se e solo se A B valida Una teoria formale per la FOL Una semplice teoria formale per la FOL pu essere definita come segue 23 e il linguaggio un linguaggio del primo ordine che usa i connettivi 7 e gt il quantificatore
44. osserviamo che un attributo di un interfaccia UML pu essere rappresentato in C per mezzo di una coppia di operazioni virtuali pure una per assegnare un valore all attributo e una per leggerlo 275 276 APPENDICE F MODULI IN C E IN ADA F 1 2 Namespace Una dichiarazione namespace definisce uno spazio di nomi offrendo un mec canismo di raggruppamento pi semplice e generale delle classi Infatti una classe oltre a raggruppare delle entit definisce le propriet comuni di un in sieme di oggetti che si possono istanziare mentre uno spazio di nomi si limita ad organizzare un insieme di definizioni Uno spazio di nomi pu contenere definizioni di qualsiasi genere incluse classi ed altri spazi di nomi Questo co strutto pu essere usato per rappresentare al livello di astrazione del codice sorgente concetti architetturali pi astratti come package e componenti Il seguente esempio mostra la dichiarazione di un namespace contenuta in un file di intestazione Linear h che raggruppa due classi Linear h namespace Linear class Vector double p int size public enum max 32000 Vector int s double amp operator int i fI sa re class Matrix L implementazione del modulo la cui interfaccia definita dallo spazio di nomi Linear pu essere definita in un altro file Linear cc Linear cc include Linear h using namespace Linear Vector Vector int s double amp
45. sia le aziende che le persone hanno un nome e un indirizzo ma questa non una buona ragione per definire una classe Azienda come derivata di una classe Persona L uso dell eredit per implementare la relazione di realizzazione verr discusso nella sezione seguente dedicata al polimorfismo 5 1 2 Polimorfismo e binding dinamico Il polimorfismo ed il binding dinamico sono due concetti che nei linguaggi orientati agli oggetti sono strettamente legati fra di loro e con il concetto di eredit Il polimorfismo la possibilit che un riferimento per esempio un iden tificatore o un puntatore denoti oggetti o funzioni di tipo diverso Esistono diversi tipi di polimorfismo e la forma di polimorfismo tipica dei linguaggi object oriented quella basata sull eredit se una classe D deriva da una classe B allora ogni istanza di D anche un istanza di B per cui qualsiasi riferimento alla classe D anche un riferimento alla classe B Questo tipo di polimorfismo si chiama polimorfismo per inclusione In C per esempio un oggetto di classe D pu essere assegnato ad un oggetto di classe B ed un valore di tipo puntatore a D o riferimento a D pu essere assegnato rispettivamente ad una variabile di tipo puntatore a B o riferimento a 150 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI B Osserviamo che in questo e in altri linguaggi esistono altre forme di polimorfismo come l overloading che non sono
46. t v j 78 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI v j v jt1 v jt1 t vj Vj i VR M i 1 lt k lt M gt lt ve ii Yk 0 lt k lt M gt vg lt Upya iii L asserzione i vale dopo l esecuzione dell istruzione if per il valore cor rente di j Le asserzioni ii e iii valgono rispettivamente all uscita del loop interno quando sono stati ordinati gli ultimi 2 elementi e del loop esterno quando sono stati ordinati tutti gli elementi Le altre due asserzioni esprimono gli intervalli dei valori assunti da i e j La forma A lt B lt C un abbreviazione di A lt BA B lt C L asserzione i pu essere verificata informalmente considerando le ope razioni svolte nel corpo dell istruzione if una verifica formale richiede una definizione della semantica dell assegnamento Possiamo verificare la formula ii per induzione sul valore di i che controlla il ciclo esterno Per i 0 la ii diventa Vk M 1 lt k lt M3 gt vk lt vx41 La variabile k assume solo il valore M 1 e j varia fra 0 ed M 1 pertanto all uscita del ciclo si ha dalla i che vm_1 lt vy e la ii verificata per 150 Per un 7 arbitrario purch minore di M 1 la ii che vera per l ipotesi induttiva assicura che gli ultimi 7 2 elementi del vettore sono ordinati Sono state eseguite M 7 iterazioni del ciclo interno e dalla i Um_i 1 lt Um Per 1 2 1 il
47. 1 x 1 y 1 y 1 Si applicano delle semplificazioni secondo l algebra booleana con la regola grind Rule grind 1 e xl1 x 1 2 i x 1 x 1 e 1 i x 1 x 1 y 1 y il 3 4 LOGICA 85 Si usa la formula 3 dell antecedente per semplificare il conseguente sosti tuendovi il primo membro dell uguaglianza applicando replace Rule replace 3 dir RL 1 e x 1 x 1 2 i x 1 x 1 e 3 ex y 1 i x 1 x 1 y 1 1 ex y lit y l Si reinserisce l assioma dell identit Rule lemma id_left 1 FORALL x G e x x 2 e x 1 x 1 3 i x 1 x 1 e 4 ex y 1 i x 1 x 1 y 1 1 ex y 1 y 1 E infine si sostituisce la variabile di Skolem del conseguente nell assioma dell identit concludendo la dimostrazione Rule inst 1 y 1 Q E D Un esempio di applicazione Consideriamo un semplice caso per mostrare come un sistema tecnico spe cificamente un circuito logico si possa modellare in PVS Un semiaddizionatore half adder HA un circuito digitale i cui due ingressi rappresentano la codifica su una cifra binaria di due numeri naturali e la cui uscita la codifica binaria su due cifre della loro somma La cifra meno significativa viene chiamata sum somma e la pi significativa carry riporto 86 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI ar gt _ gt carry do D sum Figura 3 7 Un
48. 8 2 Esempio produttore consumatore La figura B 6 mostra un sistema produttore consumatore specificato per mez zo di una rete di Petri questo esempio ed i successivi sono tratti da 14 Il produttore ed il consumatore sono collegati da un magazzino intermedio di capacit 2 Osserviamo che a differenza dell esempio visto per gli automi a stati finiti qui possibile attribuire ciascun place ad uno dei tre sottosiste mi in questo senso la rappresentazione dello stato globale distribuita fra i sottosistemi 232 APPENDICE B FORMALISMI DI SPECIFICA p2 libero cl produci deposita preleva consuma pl occupato c2 Figura B 6 pnl La marcatura iniziale indicata in figura specifica che il produttore pronto a produrre un elemento posto p il consumatore pronto a pre levare posto c un elemento dal magazzino purch ci sia un elemento da prelevare e il magazzino ha due posti liberi posto libero B 8 3 Situazioni fondamentali Consideriamo alcune relazioni fra transizioni determinate sia dalla struttura della rete che dalla marcatura sequenza due transizioni t ed u si dicono in sequenza in una marcatura M se e solo se M t A M u A M tu cio u diventa abilitata solo dopo che scattata t conflitto due transizioni t ed u si dicono in conflitto effettivo in una mar catura M se e solo se M t A M u A Apertireu M p lt W p t W ip u Questa condizione significa che tutte e
49. B Figura B 7 Un programma concorrente 1 B 8 5 Raggiungibilita delle marcature L analisi della raggiungibilit delle marcature di una rete permette di stabilire se il sistema modellato dalla rete pu raggiungere determinati stati o no e se pu raggiungerli a quali condizioni Permette quindi di verificare se il sistema soddisfa propriet di vitalit e di sicurezza La vitalit ci dice che il sistema in grado di raggiungere le configurazioni desiderate per esempio nel sistema di controllo di un ascensore vogliamo verificare che il sistema raggiunga lo stato in cui l ascensore e fermo al livello di un piano e le porte sono aperte La sicurezza ci dice che il sistema non pu raggiungere configurazioni indesiderate per esempio non vogliamo che le porte di un ascensore restino bloccate oppure che si aprano mentre in movimento o fra due piani La verifica delle propriet di vitalit e sicurezza possibile con qualunque linguaggio di tipo operazionale Nelle reti di Petri queste verifiche si basano sui concetti esposti di s guito Raggiungibilit in un passo Data una rete P T e due marcature M ed M si dice che M raggiungibile in un passo da M se Iter M t M Insieme di raggiungibilit L insieme di raggiungibilit Ry M di una re te posti transizioni N con marcatura M la chiusura transitiva della relazione di raggiungibilt in un passo della rete cio il pi piccolo insieme d
50. B 4 ASN 1 La Abstract Syntax Notation 1 una notazione destinata a descrivere i da ti scambiati su reti di comunicazioni La ASN 1 definita dallo standard ISO IEC 8824 1 2002 derivato dallo standard CCITT X 409 1984 Per mezzo della ASN 1 si descrive una sintassi astratta cio generica e in dipendente dalle diverse implementazioni delle applicazioni che si scambiano dati specificati in ASN 1 Questo permette la comunicazione fra applicazioni eseguite su architetture diverse Una sintassi astratta costituita da un insie me di definizioni di tipi e definizioni di valori Queste ultime sono definizioni di costanti I tipi sono semplici e strutturati B 4 1 Tipi semplici I tipi semplici sono INTEGER REAL BOOLEAN CHARACTER STRING BIT STRING OCTET STRING NULL e OBJECT IDENTIFIER Per alcuni di questi tipi si pos 2Si veda il sito asni elibel tm fr B 4 ASN 1 219 sono definire dei sottotipi esprimendo delle restrizioni di vario tipo come nei seguenti esempi Valore INTEGER Tombola INTEGER 1 90 Positive INTEGER 0 lt MAX Negative INTEGER MIN lt 0 Zero INTEGER 0 NonZero INTEGER INCLUDES Negative INCLUDES Positive Il tipo Valore coincide con INTEGER i tipi Tombola Positive e Negative sono sottoinsiemi di INTEGER Il tipo Zero viene definito per enumerazione contiene solo l elemento 0 ed il tipo NonZero viene definito come unione di altri tipi Di seguito diamo
51. Fig 2 9 schematizza questa descrizione P a a a R boo eo Q fe i e gs di Figura 2 9 Struttura risultante dalla specifica iniziale Un sistema di questo tipo pu essere descritto con un formalismo ap partenente alla famiglia delle algebre dei processi per esempio col linguag gio LOTOS 10 8 In questo linguaggio sono definiti numerosi operatori di composizione fra processi fra cui quello di interleaving cio l esecuzione concorrente senza vincoli rappresentato da e quello di sincronizzazione rappresentato da A ciascun operatore sono associate una semantica che definisce il risultato della composizione in termini delle possibili sequen ze di azioni eseguite dal processo risultante e delle regole di trasformazione o di inferenza sulle espressioni contenenti l operatore Il sistema considerato viene quindi rappresentato dalla seguente espres sione LOTOS Pla b I Qlc d a cl Rial Slc 2 3 MODELLI EVOLUTIVI 43 L espressione si pu leggere cos I processi P e Q possono eseguire qualsiasi sequenza di azioni degli insiemi a b e c d rispettivamente senza vincoli reciproci e analogamente i processi R ed S con le azioni degli insiemi a e c I due sistemi Pla Q c d e Rfa S c sono sincronizzati su a e c cio devono eseguire contemporaneamente ciascuna di queste azioni Nel linguaggio LOTOS l operatore di
52. Quindi il prodotto deve svolgere le fun zioni richieste e deve farlo secondo i criteri di qualit richiesti Deve anche essere realizzato e consegnato nei limiti di tempo richiesti dettati sia dalle esigenze dell utente che da fattori economici pi generali e nei limiti di costo richiesti La possibilit di rispettare i vincoli s esposti e in generale di produrre il software in modo economicamente vantaggioso dipende naturalmente dal processo di produzione cio dall insieme delle attivit volte alla produzione Sebbene buona parte dell ingegneria del software sia rivolta al prodotto cio alle teorie e alle tecniche necessarie per descriverne i requisiti per realizzarlo e per valutarne la qualit il suo obiettivo principale lo studio del proces so di produzione Per questo si parla come della definizione di Fairley di una disciplina tecnologica e manageriale che attinge da campi diversi come la matematica i vari settori dell informatica l organizzazione aziendale la psicologia l economia ed altri ancora L insieme degli strumenti a disposizione dell ingegnere del software del tutto analogo a quello di cui si servono le altre discipline ingegneristiche Teorie le basi formali e rigorose del lavoro Per esempio l elettromagneti smo per l ingegneria elettrica la logica nell ingegneria del software Non quelle del progettista che comunque nel caso dell ingegnere informatico si li mi
53. STD 498 Software development and documentation US Department of Defense 1994 25 P Naur B Randell and J Buxton editors Software Engineering Concepts amp Techniques Petrocelli Charter 1976 26 IAEA NS G 1 1 Software for Computer Based Systems Important to Safety in Nuclear Power plants IAEA International Atomic Energy Agency 2000 27 S Owre S Rajan J M Rushby N Shankar and M K Srivas PVS combining specification proof checking and model checking In Rajeev Alur and Thomas A Henzinger editors Computer Aided Verification CAV 796 number 1102 in Lecture Notes in Computer Science pages 411 414 New Brunswick NJ July August 1996 Springer Verlag 28 J Rumbaugh I Jacobson and G Booch The Unified Modeling Language Reference Manual Addison Wesley 1999 29 I Sommerville Software Engineering Addison Wesley 1995 30 Friedrich von Henke Cinzia Bernardeschi Paolo Masci and H l ne Waeselynck Testing Verification and Validation ReSIST Courseware http resist isti cnr it files corsi courseware slides testing pdf 31 J Woodcock and J Davies Using Z Specification Refinement and Proof Prentice Hall 1996
54. Una diagramma di casi d uso Cassiere Cliente 110 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 3 5 8 Diagrammi di stato Il diagramma di stato uno dei diagrammi che fanno parte del modello dinamico di un sistema e rappresenta una macchina a stati associata a una classe a una collaborazione interazione di un insieme di oggetti o a un metodo La macchina a stati descrive l evoluzione temporale degli oggetti e la loro risposta agli stimoli esterni Le macchine a stati impiegate nell UML sono basate sul formalismo degli automi a stati finiti visto in precedenza che qui per viene esteso notevol mente in modo da renderlo pi espressivo e sintetico Nell UML viene usata la notazione degli Statecharts che permette una descrizione strutturata degli stati di un automa Questa notazione ricca di concetti e di varianti grafiche e ne saranno illustrati solo gli aspetti principali I concetti fondamentali rappresentati dal diagramma di stato sono occorrenze avvenimenti associati a istanti nel tempo e spesso implicita mente a punti nello spazio Per esempio se viene premuto un tasto di un terminale questa un occorrenza della pressione di un tasto Quando lo stesso tasto o un altro viene premuto di nuovo un altra occorrenza eventi insiemi di occorrenze di uno stesso tipo Per esempio l evento Ta stoPremuto potrebbe rappresentare l insieme di tutte le possibili oc correnze della pressio
55. V e le parentesi e gli assiomi sono divisi in assiomi logici ed assiomi propri o non logici gli assiomi logici sono tutte le espressioni date dai seguenti schemi As BS A A Bsc A B a A4 gt 0 B nA B A B VrA x gt A t Va A gt B gt A VaB TLa quantificazione esistenziale si pu esprimere usando il quantificatore universale se poniamo Ar A equivalente a Yz A 76 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Gli assiomi propri sono specifici di ciascuna teoria per esempio gli assiomi dell aritmetica di Peano o della teoria dei gruppi e le regole d inferenza sono modus ponens come nel calcolo proposizionale generalizzazione A YrA Negli assiomi A x rappresenta una formula contenente la variabile x ed eventualmente altre variabili ed A t la formula ottenuta da A x sostituendo x col termine t Allo schema di assioma 3 12 bisogna aggiungere la restrizione che t sia libero per x in A cio che non contenga variabili che in A abbiano un quan tificatore universale il cui campo d azione includa occorrenze di x questo vincolo impedisce che variabili libere nel termine t diventino quantificate quando t viene sostituito a 7 Supponiamo per esempio di voler dimostrare la formula Vu gt Vy x y gt Vy y y nel dominio dei numeri interi Questa formula significa che se per ogni x esiste un y diverso da x allora non vero che ogni
56. a costruire delle formule ma solo un abbreviazio ne della frase soddisfa che appartiene al metalinguaggio cio al linguaggio di cui ci serviamo per parlare del calcolo proposizionale Una formula si dice soddisfacibile o consistente se esiste almeno una valutazione che la soddisfa Per esempio A gt A perv A F Una formula si dice insoddisfacibile o inconsistente se non esiste alcuna valutazione che la soddisfi Si dice anche che la formula una contraddizione Per esempio AA7AA Una formula soddisfatta da tutte le valutazioni una tautologia ovvero valida La verit di una tautologia non dipende quindi dalla verit delle singole proposizioni che vi appaiono ma unicamente dalla struttura della formula Esempi di tautologie sono AVA ASA A gt A AAA ANB gt A A gt AV B Se A gt B ove A e B sono formule una tautologia si dice che A implica logicamente B ovvero che B conseguenza logica di A 66 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Conviene osservare la differenza fra implicazione o implicazione materia le e implicazione logica Infatti la formula A gt B si legge A implica B e questa frase significa che il valore di verit della formula viene calcolato se condo la funzione di verit dell operatore di implicazione a partire dai valori di A e B che a loro volta dipendono in generale dalla struttura di queste ultime formule e dalla particolare valutazione
57. a partire dai requisiti utente di ottenere una valutazione prelimi nare dell impegno richiesto dal progetto Pi precisamente i FP sono un numero legato al tipo ed al numero di funzioni richieste al sistema ed a varie caratteristiche del sistema stesso Un numero di FP pi alto corrisponde ad un sistema pi complesso e costoso Il metodo di calcolo prevede che un sistema possa offrire cinque tipi di funzioni Dall analisi dei requisiti bisogna trovare quante funzioni di ciascun tipo sono richieste e valutare la complessit delle operazioni per ciascun tipo 252 APPENDICE C METRICHE DEL SOFTWARE di funzione assegnandogli un peso numerico secondo la seguente tabella che elenca i tipi di funzione previsti contraddistinti da un indice i con i pesi corrispondenti a tre livelli di complessit Complessit i Tipi di funzione bassa media alta 1 File logici interni 7 10 15 2 File di interfaccia esterni 5 7 10 3 Ingressi esterni 3 4 6 4 Uscite esterne 4 5 7 5 Richieste esterne 3 4 6 I file logici sono gli insiemi di dati che devono essere mantenuti interna mente dal sistema ciascuno dei quali pu corrispondere ad uno o pit file fisici a seconda delle successive scelte di progetto che ne definiscono l imple mentazione I file di interfaccia sono i file scambiati con altri programmi gli ingressi e le uscite sono le informazioni distinte fornite e rispettivamente ott
58. alcun guasto Ma soprattutto il problema fondamentale che in genere un malfunzionamento avviene in presenza di alcuni dati di ingresso o di alcune sequenze di dati di ingresso e non di altri Nei sistemi in tempo reale inoltre i malfunzionamenti si possono verificare o no a se conda dell istante in cui i dati o gli stimoli vengono presentati all ingresso del sistema Le attivit rivolte alla ricerca e all eliminazione delle anomalie si possono classificare come segue Analisi statica esame del codice sorgente Analisi dinamica esecuzione del codice Debugging ricerca delle anomalie a partire dai guasti e loro eliminazione Conviene inoltre distinguere fra convalida o verifica in piccolo e in grande cio a livello di singolo modulo o unit o di sistema 6 2 Analisi statica L analisi statica consiste nell esame del codice sorgente Fra i vari tipi di analisi statica citiamo i seguenti 1Questi termini hanno significati diversi nel campo della tolleranza ai guasti 6 3 ANALISI DINAMICA 193 e walk through un gruppo di collaudatori e progettisti analizza il codice e ne simula l esecuzione e ispezione simile al walk through ma finalizzata alla scoperta di speci fici errori p es uso scorretto dei puntatori o della memoria dinamica variabili non inizializzate e analisi automatica compilazione lint ricerca di costrutti sintattica mente corretti ma potenzialmente errati analisi di flusso de
59. alcuni esempi di definizioni di tipi o valori che usano tipi semplici I valori del tipo REAL sono terne formate da mantissa base esponente avogadro REAL 60221367 10 16 Quest esempio una definizione di un valore che specifica il tipo e il valore della costante avogadro I BIT STRING rappresentano stringhe di bit BinMask BIT STRING HexMask BIT STRING 01110011 B gt 3B H I valori BinMask e HexMask vengono espressi in notazione rispettivamente binaria ed esadecimale Gli OCTET STRING rappresentano stringhe di byte di cui si pu indicare la lunghezza Message OCTET STRING SIZE 0 255 Ci sono alcui tipi predefiniti di stringhe di caratteri come NumericString cifre decimali e spazio PrintableString lettere cifre e caratteri speciali GraphicString simboli etc myPhoneNumber NumericString 883455 grazieGreco GraphicString eUXagLoTW 220 APPENDICE B FORMALISMI DI SPECIFICA Il tipo OBJECT IDENTIFIER serve ad assegnare nomi unici alle varie en tit definite da specifiche in ASN 1 basandosi su uno schema gerarchico di classificazione chiamato Object Identifier Tree AttributeType OBJECT IDENTIFIER telephoneNumber AttributeType 2 5 4 20 In questo esempio telephoneNumber un identificatore di oggetti il cui va lore 2 5 4 20 dove 2 rappresenta il dominio degli identificatori definiti congiuntamente dall ISO e dal CCITT 5 rappresenta il dominio deg
60. analizzare il loro significato e in particolare senza sapere se sono vere o false Un sistema formale corretto sound se tutte le formule ottenibili dalle regole d inferenza sono vere rispetto alla semantica del linguaggio e completo se 3 4 LOGICA 61 tutte le formule vere rispetto alla semantica sono ottenibili per mezzo delle regole d inferenza Naturalmente la correttezza un requisito indispensabile per un sistema formale Un sistema formale decidibile se esiste un algoritmo che pu decidere in un numero finito di passi se una formula vera la logica del primo ordine non decidibile Un sistema formale quindi un apparato di definizioni e regole che ci permette di ragionare formalmente su un qualche settore della conoscenza Precisiamo che spesso un particolare sistema formale viene indicato come una logica Questa sovrapposizione di termini non crea problemi perch dal contesto si capisce se si parla della logica in generale la scienza del ragionamento formale o di una logica particolare un determinato sistema formale Le definizioni che verranno date nel s guito sono tratte principalmente da 23 con varie semplificazioni e probabilmente qualche imprecisione 3 4 1 Calcolo proposizionale Il calcolo proposizionale la logica pi semplice Gli elementi fondamenta li del suo linguaggio non ulteriormente scomponibili sono le proposizioni cio delle affermazioni che possono essere vere o false Il
61. approvato Osserviamo che un valore etichettato una propriet dell elemento di modello non dell entit reale modellata Anche i valori etichettati si scrivono fra parentesi graffe Gli stereotipi sono dei nuovi elementi di modello ottenuti da elementi gi esistenti per esempio dall elemento classe o dall elemento associazione aggiungendo informazioni di vario tipo alla loro semantica per mezzo di vin coli e valori etichettati Per esempio se in un certo campo di applicazione si vogliono distinguere le classi destinate all interfacciamento con l utente dalle classi che rappresentano i server e da quelle che definiscono la logica dell ap plicazione si possono definire rispettivamente gli stereotipi boundary server e controller A quest ultimo si possono associare informazioni rilevanti per tutti i tipi di server per esempio il massimo numero di richieste che possono essere messe in attesa espresso da un valore etichettato max_reqs Questi stereotipi si possono definire per mezzo di diagrammi come quello mostrato in Fig 3 16 in cui la freccia con la punta triangolare nera rappresenta la relazione di estensione fra uno stereotipo ed un altro elemento di modello in questo caso la metaclasse Class Stereotype Boundary metaclass Stereotype Class lt q Control stereotype Server max_reqs nat Figura 3 16 Definizione di stereotipi La
62. artigianato a industria tuttora in corso la disciplina dell ingegneria del software ancora in fase di crescita e lontana in molti dei suoi settori dal consolidamento di teorie e metodi e molte imprese sono ancora legate alla vecchia impostazione artigianale Per la maggior par te dei produttori di software ha adottato processi di sviluppo strutturati e metodologie di carattere ingegneristico 1 2 Il software diverso Per comprendere meglio la storia ed i problemi della produzione del soft ware bene aver presenti alcuni fatti che rendono il software un prodotto abbastanza diverso dagli altri manufatti e Prima di tutto il software soft non occupa praticamente spazio fisico invisibile e gli aspetti materiali della sua produzione incidono pochissimo sul costo globale del prodotto il software informazione pura e la sua produzione progetto puro 12 CAPITOLO 1 INTRODUZIONE e Il software estremamente malleabile cio modificabile con pochissimo sforzo Questa propriet un vantaggio ma anche un pericolo poich incoraggia un modo di lavorare non pianificato e L immaterialita del software fa si che sia difficile visualizzare i concetti che gli sono propri come algoritmi strutture dati e flussi di control lo In effetti una buona parte dell ingegneria del software rivolta allo studio e all applicazione di notazioni espressive e sintetiche per rappresentare tali concetti e All i
63. dalla quantit di lavoro Fissati questi due fattori si pu quindi valutare il numero di persone da impiegare staffing C 5 1 Il modello COCOMO Il COCOMO COnstructive COst MOdel un metodo di stima dei costi basato su rilevazioni statistiche eseguite su un certo numero di progetti di grandi dimensioni sviluppati presso una grande azienda produttrice di soft ware Esistono tre versioni del modello base intermedio e avanzato di diversa accuratezza Ciascune delle tre versioni prevede che le applicazioni vengano classificate in tre categorie Organic Applicazioni semplici di dimensioni limitate di tipo tradizionale e ben conosciuto Semi detached Applicazioni di complessit media software di base Embedded Applicazioni complesse con requisiti rigidi di qualit ed affida bilit sistemi in tempo reale Il principale dato d ingresso del metodo la dimensione del codice espressa il migliaia di linee di codice KDSI che deve essere stimata indipendente mente Altre informazioni vengono usate per raffinare i risultati del calcolo come vedremo fra poco C 5 STIMA DEI COSTI 255 Il modello base Se S la dimensione del codice in KDSI la quantit di lavoro M in mesi uomo ed il tempo di sviluppo T in mesi sono dati dalle formule M ap S T cM dove i coefficienti ay by Cy dp si ricavano dalla seguente tabella Tipo dell applicazione ap bp Ch dy Organic 2 4
64. dei quali possie de attributi che rappresentano informazioni significative dal punto di vista dell applicazione per caratterizzare ciascun oggetto Alcuni attributi detti attributi chiave identificano ciascun elemento dell insieme Per esempio l in sieme degli impiegati di una ditta si pu rappresentare con l entit Impiegati definita dagli attributi Matricola Cognome Nome e Stipendio La Matri cola un attributo chiave perch permette di identificare ciascun impiegato anche in casi di omonimia Un entita Fig B 1 viene rappresentata da un rettangolo ed i suoi attributi vengono rappresentati da ellissi collegate al rettangolo Gli oggetti e quindi le entit a cui appartengono sono legati reciproca mente da relazioni Una relazione pu sussistere fra elementi di una stessa entit per esempio un impiegato collabora con altri impiegati o fra elementi di due o pi entit Una relazione Fig B 2 si rappresenta con una losanga collegata alle en 213 214 APPENDICE B FORMALISMI DI SPECIFICA Impiegati Figura B 1 Un entit tit che vi partecipano Le linee di collegamento sono decorate con frecce per rappresentare relazioni biunivoche frecce verso due entit o funzionali frecce verso una sola entit La figura B 2 mostra tre relazioni ogni impie Dipartimenti Partecipa Impiegati Progetti Dirigenti Figura B 2 Un d
65. del software sono ISO 8402 Gestione per la qualit e di assicurazione della qualit Termi nologia 269 270 APPENDICE E QUALIT ISO 9000 1 Regole riguardanti la conduzione aziendale per la qualit e l as sicurazione della qualit Guida per la scelta e l utilizzazione ISO 9000 3 Regole riguardanti la conduzione aziendale per la qualit e l assicurazione della qualit Guida per l applicazione della ISO 9001 allo sviluppo alla fornitura e alla manutenzione del software ISO 9001 Sistemi qualit Modello per l assicurazione della qualit nel la progettazione sviluppo fabbricazione installazione ed assi stenza ISO 9004 1 Gestione per la qualit e del sistema qualit Guida generale ISO 9004 2 Elementi di gestione per la qualit e del sistema qualit Guida per i servizi Il cuore di questo sistema di norme la ISO 9001 che d le direttive per un sistema di qualit che copre tutto il ciclo di vita di qualsiasi tipo di prodotto industriale Affiancate alla ISO 9001 si trovano le norme ISO 9002 e ISO 9003 che si riferiscono a sottoinsiemi del ciclo di vita La norma ISO 9000 propriamente detta in tre parti una guida che d indicazioni per la scelta fra le norme ISO 9001 9002 o 9003 da appli care e sulla loro applicazione In particolare la 9000 1 illustra i concetti principali e introduce l insieme delle norme La ISO 9000 3 una guida all applicazione della 9001 nelle aziende i
66. di conseguenza la complessit alta Nel secondo caso il programma pi strutturato poich il campo di azione di ciascuna istruzione limitato alla funzione a cui appartiene e quindi ogni funzione nasconde le proprie istruzioni Se lo scopo di ciascuna funzione chiaro il programma pu essere descritto e compreso in termini delle relazioni fra le funzioni componenti ed quindi meno complesso Il grado di strutturazione di un sistema dipende quindi dal giusto valo re di granularit cio dalle dimensioni dei componenti considerati che non deve essere n troppo grossa n troppo fine Dal momento che i componenti elementari del software sono le singole istruzioni del linguaggio di program mazione usato che hanno una granularit finissima un software ben strut turato ha un organizzazione gerarchica che lo suddivide in vari strati con diversi livelli di astrazione il sistema complessivo formato da un nume ro ridotto di sottosistemi ciascuno dei quali diviso in un certo numero di moduli divisi a loro volta in sottomoduli e cos via In questo modo entro ciascun livello di astrazione si pu esaminare una parte del sistema in termini di pochi elementi costitutivi La Fig 4 1 cerca di visualizzare intuitivamente questi concetti nello schema di destra nella figura i cerchietti rappresentano le interfacce dei moduli di cui parleremo pit oltre Z x Lu dd ee oe N73 3 5 V
67. di progetto non si definisce l implementazione delle classi ma in generale si sottintende che ogni operazione debba essere implementata da un metodo sia cio concreta Spesso per utile dichiarare in una classe delle operazioni che non devono essere implementate nella classe stessa ma in clas si derivate queste operazioni sono dette operazioni astratte Una classe che contiene almeno una operazione astratta non pu ovviamente essere istan ziata direttamente una tale classe si dice classe astratta e pu solo servire 4 4 MODULI NEI LINGUAGGI 135 da base di altre classi Le classi derivate direttamente o indirettamente da una classe astratta forniscono le implementazioni metodi delle operazioni astratte fino ad ottenere delle classi concrete cio fornite di un implementa zione completa e quindi istanziabili In UML le operazioni e le classi astratte sono caratterizzate dalla propriet abstract Graficamente questa propriet pu essere evidenziata scrivendo in caratteri obliqui il nome dell elemento interessato Interfacce dipendenza e realizzazione In UML un interfaccia si pu rappresentare separatamente dall entit che la implementa o dalle entit poich un interfaccia pu essere implementata da moduli diversi Un interfaccia UML un elemento di modello costituito da un elenco di operazioni ovviamente astratte e con visibilit pubblica a cui si possono aggiungere dei vincoli e un protocollo Un
68. e diverse competenze committenti amministratori progettisti che richiedono diversi livelli di dettaglio Un livello di dettaglio ancora pi fine si ha nella specifica dei requisiti del software che descrive le caratteristiche non l implementazione del software che deve essere prodotto per soddisfare le esigenze dell utente Nella sottofase di specifica dei requisiti del software importante evitare l introduzione di scelte implementative che in questa fase sono premature Come esempio di questi tre livelli di dettaglio consideriamo il caso di uno strumento che permette di operare su file prodotti da altri strumenti usando un interfaccia grafica come avviene per esempio col desktop di un PC esempio adattato da 29 Uno dei requisiti potrebbe essere espresso nei seguenti modi Analisi dei requisiti dell utente Definizione dei requisiti dell utente 1 L applicazione deve permettere la rappresentazione e l elaborazione di file creati da altre applicazioni detti file esterni Specifica dei requisiti dell utente 1 1 L applicazione deve permettere all utente di definire i tipi dei file esterni 1 2 Ad ogni tipo di file esterno corrisponde un programma esterno ed opzionalmente un icona che viene usata per rappresentare il file Se al tipo di un file non associata alcuna icona viene usata un icona default non associata ad alcun tipo 1 3 L applicazione deve permettere all utente di definir
69. fatto che le pro posizioni non siano scomponibili cio siano atomiche significa che in una frase come il tempo bello il linguaggio del calcolo proposizionale non ci permette di individuare il soggetto e il predicato poich questo linguaggio non contiene dei simboli che possano nominare oggetti propriet o azioni in un linguaggio proposizionale possiamo nominare soltanto delle frasi intere Questo comporta anche che non possibile mettere in evidenza la struttura comune di certi insiemi di frasi come per esempio Aldo bravo Bep pe bravo e Carlo bravo Pertanto qualsiasi proposizione pu essere rappresentata semplicemente da una lettera dell alfabeto come T per il tempo bello A per Aldo bravo eccetera Le proposizioni vengono combinate per mezzo di alcuni operatori per for mare frasi pi complesse gli operatori chiamati connettivi sono simili alle Pi precisamente dei linguaggi di tipo proposizionale Per semplicit diremo genericamente il linguaggio proposizionale 30 da qualsiasi simbolo o sequenza di caratteri usabile come nome p es valvola chiusa nella Sez 3 2 1 62 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI congiunzioni del linguaggio naturale da cui hanno ereditato i nomi Ai con nettivi sono associate delle regole tabelle o funzioni di verit che permettono di stabilire la verit delle frasi complesse a partire dalle proposizion
70. funzionamento di un altro modulo Questa relazione permette l esistenza di cicli nel grafo ad essa associato per si cerca di evitare i cicli poich i moduli che si trovano su un ciclo non possono venire esaminati e verificati isolatamente Le relazioni di composizione e uso sono il minimo indispensabile per de finire un architettura ma ne esistono e se ne possono concepire molte che possono essere pi o meno utili a seconda del tipo di sistema progettato della metodologia di progetto e del livello di dettaglio richiesto in ciascuna fase della progettazione Per esempio nei metodi orientati agli oggetti par ticolarmente importante la relazione di generalizzazione o eredit Un altra relazione importante la comunicazione fra moduli In generale si mettono in evidenza vari tipi di dipendenza di cui l uso un caso particolare 4 2 3 Tipi di moduli Il concetto di modulo visto finora molto generale In questa sezione esa mineremo alcuni concetti relativi a diversi tipi di componenti modulari del software Le astrazioni procedurali il tipo di moduli pi semplice sono modu li che non gestiscono strutture dati ma forniscono soltanto delle funzio ni Un esempio tipico di astrazioni procedurali sono le tradizionali librerie matematiche Un modulo che gestisce una struttura dati chiamato oggetto astratto la struttura dati astratta in quanto vi si pu accedere soltanto attraverso le operazioni definite dall
71. generico Generalmente la caratteristica che si rende generica il tipo di qualche componente dell oggetto Un oggetto generico la defini zione di un insieme di oggetti che hanno strutture ed operazioni simili ma specializzate secondo alcuni parametri Per esempio una tabella generica pu rappresentare una famiglia di tabelle che differiscono per il tipo degli elementi o per il loro numero o per tutte e due le caratteristiche Anche un tipo di dati astratto pu essere reso generico ottenendo un tipo di dati astratto generico Gli oggetti e le classi sono concetti che abbiamo gi incontrato nell mbito delle metodologie di specifica orientate agli oggetti sez 3 5 dove vengono usati per rappresentare entit del dominio di applicazione Nel progetto del software gli oggetti sono i componenti software che implementano l applica zione Alcuni di questi oggetti simulano le entit del dominio implementan done direttamente attributi e operazioni altri partecipano al funzionamento dell applicazione fornendo i meccanismi necessari Le classi dei linguaggi orientati agli oggetti permettono anche di imple mentare i tipi di dati astratti per esempio i numeri complessi sono un tipo di dati astratto definito dalle sue propriet matematiche che pu es sere implementato da una classe avente come attributi la parte reale e la parte immaginaria oppure modulo e argomento e come operazioni le varie operazioni dell aritmetica comp
72. il numero di elementi immagazzinati Le uscite associate alle operazioni di prelievo e di deposito sarebbero azioni di decremento e rispet tivamente incremento della variabile Fig 3 5 Il prelievo e il deposito a loro volta sarebbero condizionati dal valore della variabile cosa che compor ta l estensione del concetto di transizione a cui si devono aggiungere delle condizioni guardie che devono essere soddisfatte affinch una transizione possa aver luogo 3 4 LOGICA 59 prelievo conto gt 0 conto conto 0 deposito conto lt 2 conto consumo prod prod consumo deposito conto lt 2 conto prelievo conto gt 0 conto Figura 3 5 Esempio 3 Un altra estensione degli ASF consiste nell introduzione di stati compo sti cio descritti a loro volta da macchine a stati In questo modo un sistema complesso puo essere descritto ad alto livello da un automa con po chi stati ciascuno di quali pu essere decomposto in sottostati quando serve una specifica pi dettagliata Questo metodo alla base degli Statecharts un formalismo che esamineremo nel capitolo relativo ai metodi orientati agli oggetti Infine nelle reti di Petri lo stato del sistema viene modellato in modo diverso tale che la specifica renda esplicito e visibile il fatto che il sistema totale composto da sottosistemi Questo permette di descrivere sistemi concorrenti 3 4 Logica La logica serve
73. implementazione del semiaddizionatore La Fig 3 7 mostra un implementazione di cui vogliamo verificare la correttezza La seguente teoria contiene il modello del circuito e il teorema di corret tezza da dimostrare HA THEORY BEGIN x y VAR bool HA x y bool bool x AND y AND NOT x XOR y carry x XOR y sum 4 conversione da booleano T F a naturale 0 1 b2n x nat IF x THEN 1 ELSE O ENDIF HA_corr THEOREM h correttezza LET carry sum HA x y IN 2 b2n carry b2n sum b2n x b2n y END HA La funzione HA restituisce una coppia ordinata di valori booleani cor rispondenti al riporto e alla somma calcolati per mezzo delle espressioni booleane implementate dal circuito La funzione b2n converte un valore booleano in un numero naturale Nel teorema di correttezza l espressione let pone la coppia di variabili carry sum uguale al risultato della funzione HA Il primo membro dell e quazione successiva calcola il numero naturale rappresentato da carry e sum ed il secondo la somma dei numeri naturali codificati da x e y In modo analogo si pu dimostrare la correttezza di un implementazione alternativa o l equivalenza di due implementazioni 3 4 LOGICA 87 3 4 8 Logiche modali e temporali Le logiche modali arricchiscono il linguaggio della logica permettendo di espri mere aspetti del ragionamento che nel linguaggio naturale possono essere espressi dai modi grammatic
74. in cui attende che l oggetto venga consumato Il magazzino ha tre stati in cui rispettivamente vuoto m contiene un oggetto M2 e contiene due oggetti ms il magazzino passa da uno stato 3 3 FORMALISMI ORIENTATI AL CONTROLLO 57 all altro in seguito alle operazioni di deposito e di prelievo In questo modello gli ingressi produzione deposito prelievo e deposito rappresentano il completamento di attivita eseguite dal sistema modellato Questo non corrisponde all idea intuitiva di ingresso di un sistema ma descrive correttamente un sistema di controllo che riceve segnali dal sistema controllato produzione prelievo QO deposito consumo produttore consumatore deposito deposito C gt prelievo prelievo magazzino Figura 3 3 Esempio 1 Il sistema complessivo mostrato in figura 3 4 ha dodici stati invece dei sette usati per descrivere i sottosistemi separatamente ciascuno dei dodici stati una possibile combinazione degli stati dei sottosistemi In generale componendo un numero n di sottosistemi in un sistema complessivo si ha che 1 l insieme degli stati del sistema complessivo il prodotto cartesiano degli insiemi degli stati dei sottosistemi 2 cio ogni stato del sistema complessivo una n upla formata da stati dei sottosistemi per cui viene nascosta la struttura gerarchica del siste ma gli stati dei sottosistemi vengono concentrati nello stato globale 3 l evoluzione del
75. in cui per semplicit si suppone che ci sia un solo senso re di temperatura e un solo sensore di tensione vediamo prima di tutto un blocco etichettato par e diviso in due regioni separate da una linea tratteg giata questo significa che le due regioni contengono attivit che avvengono 170 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Controller Emergency fire_alert fire_emergency power_alert power_emergency 1 1 FireMonitor TemperatureSensor start f stop get_temp int 1 u PowerMonitor PowerSensor start stop pwr_up bool Figura 5 19 Un sistema concorrente 2 in parallelo Infatti le due regioni contengono rispettivamente le attivit dei due sottosistemi di monitoraggio Nella prima regione il controllore manda un messaggio start al moni tor antincendio Questo esegue la sequenza specificata dal blocco loop la cui espressione di controllo dice che il contenuto del blocco deve essere ese guito almeno una volta e poi essere ripetuto finch il valore t restituito da get_temp minore di una temperatura di soglia T Se la temperatura di soglia viene superata l esecuzione del blocco loop termina ed inizia una se quenza racchiusa in un blocco critical Questo significa che tale sequenza invio di un allarme al controllore inizio della procedura di emergenza e ar resto del m
76. la concatenazione 1 La misura di complessit non deve essere troppo grossolana 1 IP Q c P c Q deve esistere almeno una coppia di programmi con complessit diver se 2 La misura di complessit non deve essere troppo grossolana 2 Dato un numero non negativo C esiste solo un numero finito di programmi aventi complessit c 3 La misura di complessit non deve essere troppo fine IP Q c P c Q deve esistere almeno una coppia di programmi con la stessa comples sit 4 La complessit deve essere indipendente dalla funzionalit IPO P QAcdP Faq la misura deve poter discriminare due programmi che calcolano la stessa funzione 5 La complessit deve essere monot na rispetto alla concatenazione WP Q c P lt c P Q Ac Q lt c P Q un programma pi complesso di ciascuna sua parte 6 Il contributo di una parte del programma alla complessit totale deve poter dipendere dal resto del programma 3P Q R c P c Q Ac P R 7 c Q R 3P Q R c P c Q Ac R P 7 c h Q due parti di programma di uguale complessita concatenate ad una terza possono dar luogo a programmi di complessit diversa 7 La complessit deve dipendere dall ordine in cui sono scritte le istru zioni P Q tali che P sia una permutazione di Q e c P c Q C 4 PUNTI FUNZIONE 251 8 La complessit non deve dipendere dalla scelta dei nomi di variabili e sottoprogrammi VP Q tali che P rin mini Q c
77. la prima permette di modificare una proprieta per esempio dopo una modifica meccanica le altre a cambiare lo stato di funzionamen to Quindi il modello orientato agli oggetti unifica i tre punti di vista dei linguaggi di specifica la descrizione dei dati delle funzioni e del controllo Generalmente in un sistema esistono pi oggetti simili cio delle entit distinte che hanno gli stessi attributi con valori eventualmente ma non necessariamente diversi e le stesse operazioni Una classe una descrizione della struttura e del comportamento comuni a pi oggetti Una specifica orientata agli oggetti consiste essenzialmente in un insieme di classi e di relazioni fra classi Un altra caratteristica del modello orientato agli oggetti il ruolo che ha in esso il concetto di generalizzazione Questo concetto permette di rap presentare il fatto che alcune classi hanno in comune una parte della loro struttura o del loro comportamento I concetti fondamentali del modello orientato agli oggetti si possono cosi riassumere oggetti Un oggetto corrisponde ad un entit individuale del sistema che vogliamo modellare Gli oggetti hanno attributi che ne definiscono le propriet o lo stato e operazioni che ne definiscono il comportamento Inoltre ogni oggetto ha una identit che permette di distinguerlo dagli altri oggetti legami Oggetti diversi possono essere in qualche relazione fra loro tali relazioni fra oggetti sono dette leg
78. la struttura del progetto in termini di workpackages e di fasi di sviluppo e quindi descrive analiticamente i singoli workpackages ed i rispettivi task L estratto che riproduciamo viene da questo capitolo e com prende l introduzione la descrizione del primo workpackage e la descrizione del primo dei suoi task Il documento originale comprende anche tabelle che riassumono la ri partizione del lavoro fra i partner diagrammi PERT e di Gantt e la de finizione delle politiche relative alla conformit compliance agli standard internazionali Workplan deliverables Introduction and analysis The duration of the project is 36 months The project is organized in 10 workpackages and it is divided in 3 sequential phases 1 user requirements and functional specification of the simulator 2 design implementation and testing of the main subsystems D 4 ESEMPIO DI DOCUMENTO DI PIANIFICAZIONE 265 3 integration final testing and user evaluation The first phase is composed by three work packages WP1 WP2 and WP3 and its duration is 9 months During this phase all the high level requirements for the simulator and the virtual scenario are defined The mathematical models of the vehicle and of the acoustic rendering are chosen Finally the global architecture of the simulator is designed and the functional requirements of the main components are specified The second phase is composed by five workpackages WP4 WP5 WP6 WP
79. le durate ed il parallelismo fra le varie attivit Fig D 4 Possono essere integrati dalle relazioni di prece denza viste nei diagrammi PERT Nei diagrammi vengono messi in evidenza i milestone cio alcuni eventi particolarmente importanti quali revisioni del lavoro e produzione di deliverable D 4 Esempio di documento di pianificazione Riportiamo un breve estratto da un documento reale di pianificazione Si tratta di un sistema embedded e in particolare di un simulatore di veico li capace di riprodurre gli stimoli meccanici visivi ed acustici provati dal 264 APPENDICE D GESTIONE DEL PROCESSO DI SVILUPPO 0 1 2 3 4 5 6 7 8 9 10 11 12 settimane Gen codice Revisione i Il l i l i T i Parser l t I I I I I I I I I I I I I I I i i Ottimizzatore Output ee ee ee ee ee T E Ai i I i t t i E EE Figura D 4 Diagramma di Gantt guidatore il documento di pianificazione si riferisce al sistema completo e non solo alla componente software Il progetto viene svolto da un consorzio di quattro organizzazioni che chiameremo AAA BBB etc diretto da un comitato di gestione Steering Committee Il progetto finanziato in parte dalla Comunit Europea EC Il documento di pianificazione comprende un capitolo di introduzione ed analisi che descrive
80. le informazioni necessarie quali identificatore autore data e storia dei cambiamenti E fondamentale l uso di strumenti software come SCCS o ROS Appendice E Qualit La qualit l insieme delle caratteristiche di un entit che conferiscono ad essa la capacit di soddisfare esigenze espresse ed implicite dove un entit pu essere fra l altro un prodotto un processo un servizio o un organizza zione ISO 8402 Alcuni aspetti parziali della qualit sono idoneit all uso soddisfazione del cliente o conformit ai requisiti Osserviamo che la con formit ai requisiti solo un aspetto necessario ma non sufficiente della qualit in un certo senso la qualit ci che fa preferire un prodotto ad un altro che pure soddisfa gli stessi requisiti La gestione per la qualit l insieme delle attivit di gestione che tradu cono in pratica la politica per la qualita di un organizzazione cio gli obiettivi e gli indirizzi generali riguardanti la qualit Il sistema qualit costituito dalla struttura organizzativa le procedure i processi e le risorse necessarie ad attuare la gestione per la qualit E 1 Le norme ISO 9000 Le norme ISO 9000 definiscono un insieme di requisiti necessari ad assicurare che un processo di sviluppo fornisca prodotti della qualit richiesta in modo consistente cio predicibile e ripetibile Gli standard principali dal punto di vista dell industria
81. legge tre righe e chiude il file poi compie delle elaborazioni process che non ci interessano class IFile class Consumer IFile configfile std string configli std string config2 std string config3 public Consumer IFile intf configfile intf void load void process void Consumer load configfile gt open filel lst 6 4 CPPUNIT E MOCKPP 205 configi configfile gt read config2 configfile gt read config3 configfile gt read configfile gt close Nella classe FileStub definiamo due expectation open name deve ve rificare che il file venga aperto passando il nome previsto close counter deve verificare che il file venga chiuso L oggetto read data contiene i va lori che devono essere restituiti alle chiamate read I metodi della sono implementati per mezzo di operazioni su questi oggetti class FileStub public IFile public mockpp MockObject public mockpp ExpectationList lt std string gt open_name mockpp ExpectationCounter close_counter mockpp ReturnObjectList lt std string gt read_data FileStub inizializzazioni virtual void open const std string amp name virtual std string read virtual void close F void FileStub open const std string amp name open_name addActual name std string FileStub read al return read_data nextReturnObject void FileStub close close_counter inc
82. linguaggio matema tico un concetto espresso in linguaggio naturale si costretti ad eliminare le ambiguit e ad esplicitare tutte le ipotesi date per scontate nella forma originale Il maggior limite dei linguaggi formali il fatto che richiedono un certo sforzo di apprendimento e sono generalmente poco comprensibili per chi non abbia una preparazione adeguata Conviene per ricordare che la sintassi dei linguaggi formali pu essere resa pi amichevole per esempio usando notazioni grafiche Per notazioni o linguaggi semiformali si intendono quelle che hanno una sintassi spesso grafica definita in modo chiaro e non ambiguo ma non de finiscono una semantica per mezzo di concetti matematici per cui il signifi cato dei simboli usati viene espresso in modo informale Nonostante questo limite i linguaggi semiformali sono molto usati perch permettono di espri mere i concetti in modo pi conciso e preciso del linguaggio naturale e sono generalmente pi facili da imparare ed usare dei linguaggi formali 52 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Fra i linguaggi semiformali possiamo includere il linguaggio naturale strut turato cio il linguaggio naturale usato con una sintassi semplificata e varie convenzioni che lo rendano pi chiaro e preciso I linguaggi informali non hanno n una sintassi n una semantica defi nite rigorosamente I linguaggi naturali hanno una sintassi codificata dalle rispettive grammatiche ma
83. logico ricordando che tutti e due i tipi di componenti vengono realizzati e distribuiti come librerie fisiche 5 2 PROGETTO DI SISTEMA 161 PI tazi ibd IGestUtenti subsystem S y IGestLibri InterfBiblio O IGestPrestiti Amministrazione subsystem Amministrazione O IRegBibl O IRegPrest Catal O IRegUtenti Registri subsystem subsystem subsystem subsystem RegistroBibliotecari RegistroPrestiti Catalogo RegistroUtenti Persistenza O IPersist subsystem Persistenza ie Database O IMySQL subsystem MySQL Figura 5 13 Scomposizione per strati e partizioni Una libreria logica una raccolta di componenti che offrono serviz ad un livello di astrazione piuttosto basso Un framework contiene invece dei componenti ad alto livello di astrazione che offrono uno schema di soluzione preconfezionato per un determinato tipo di problema Le librerie quindi si usano dal basso verso l alto assemblando componenti semplici e predefiniti per ottenere strutture complesse specializzate mentre i framework si usano dall alto verso il basso riempiendo delle strutture complesse predefinite delle intelaiature con dei componenti semplici specializzati Le librerie e i framework sono componenti pronti all uso 0
84. mostra il diagramma di comunicazione corrispondente al diagramma di sequenza di Fig 3 30 3 5 10 Diagrammi di attivit I diagrammi di attivit servono a descrivere il flusso di controllo e di infor mazioni dei processi In un modello di analisi si usano spesso per descrivere i processi del dominio di applicazione come per esempio le procedure ri chieste nella gestione di un azienda nello sviluppo di un prodotto o nelle transazioni economiche In un modello di progetto possono essere usati per descrivere algoritmi o implementazioni di operazioni Si pu osservare che 118 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI s User Switch r User liftReceiver setDialTone dialDigit d create gt _ gt Conversation ring a liftReceiver connect r connect s Figura 3 30 Un diagramma di sequenza 1 liftReceiver 2 setDialTone 3 z s User 0 Switch 4 lt lt create gt gt Conversation 3 dialDigit 4 3 connect r 4 1 ring 4 2 liftReceiver r User 4 4 connect Figura 3 31 Un diagramma di comunicazione nella loro forma pi semplice i diagrammi di attivit sono molto simili ai tradizionali diagrammi di flusso flowchart Un diagramma di a
85. norme non prescrivono determinati modelli di sviluppo o metodo logie ma chiedono che vengano scelti ed applicati quelli che l organizzazione produttrice ritiene adeguati L importante che tutto sia documentato e verificato L ultimo gruppo di requisiti da gestione della configurazione in poi si riferisce alle attivit di supporto E 2 Certificazione ISO 9000 Un organizzazione che ha adeguato il proprio sistema qualit allo standard ISO 9000 pu ottenere una certificazione in merito In alcuni casi la certi ficazione ISO 9000 indispensabile per ottenere certi contratti particolar mente con enti pubblici La certificazione importante anche nei rapporti fra aziende private anche perch le norme stesse richiedono che il fornitore si accerti della qualit dei prodotti ottenuti dai subfornitori Quindi ogni azien da che si impegna ad adottare lo standard ISO 9000 motivata a rivolgersi a subfornitori che abbiano anch essi adottato lo standard La certificazione viene rilasciata da organismi di certificazione pubblici o privati che a loro volta devono essere accreditati cio autorizzati a certifi care da enti di accreditamento L organismo di accreditamento italiano il SINCERT SIstema Nazionale di accreditamento per gli organismi di CER Tificazione possibile ottenere la certificazione da pi di un organismo di certificazione ed anche da organismi stranieri Il certificatore prima di tutto analizza la
86. notevole importanza legale ed economica e la sua pianificazione pu far parte del contratto Un tipo di test di accettazione quello usato per prodotti destinati al mercato In questo caso il test avviene in due fasi nella prima fase a test il prodotto viene usato all interno dell organizzazione produttrice e nella seconda 8 test viene distribuito in prova ad alcuni clienti selezionati 6 5 4 Test di regressione Il test di regressione serve a verificare che una nuova versione di un prodotto non produca nuovi errori rispetto alle versioni precedenti e sia compatibile con esse Il test di regressione pu trarre grande vantaggio da una buona gestione del testing che permetta di riusare i dati ed i risultati dei test delle versioni precedenti 6 6 Il linguaggio TTCN 3 Il linguaggio Test and Testing Control Notation 3 TTCN 3 stato concepi to espressamente per l esecuzione di test orientato al test di sistemi reattivi e viene usato soprattutto nel settore delle telecomunicazioni per eseguire il test di conformit conformance che verifica il rispetto di determinati stan dard e in particolare dei protocolli di comunicazione Il TTCN 3 comunque applicabile a diversi tipi di test e di applicazioni Il linguaggio permette di definire componenti che stimolano il sistema sotto test e verificano la cor rettezza dei messaggi di risposta I componenti possono essere eseguiti in parallelo permettendo cos di verificare sis
87. oggetti attivi Condivisione delle risorse Nell esempio precedente ciascun oggetto passivo viene toccato dal flusso di cotrollo di un solo oggetto attivo in questo modo gli oggetti attivi non condividono risorse I rispettivi flussi di controllo non sono indipendenti perch come abbiamo visto l attivit di gestione di un incendio ha la priorit sulla gestione di una perdita di alimentazione per questo vincolo viene facilmente soddisfatto programmando opportunamente il controllore che grazie al suo ruolo centrale pu coordinare le attivit dei sottosistemi ad esso subordinati Se consideriamo invece l architettura alternativa mostrata in Fig 5 21 vediamo che il sottosistema Emergency interessato dai flussi di controllo dei due monitor cio ciascuno dei due monitor pu invocare operazioni di Emergency ed quindi condiviso Nel progetto del sistema bisogna tener 172 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI conto della condivisione di risorse per evitare problemi come il blocco 0 deadlock o l inconsistenza delle informazioni causata da accessi concorrenti a dati condivisi In questo caso particolare bisogna rispettare il vincolo costituito dalla priorit dell attivit fire emergency rispetto all altra 1 es FireMonitor TemperatureSensor start stop get_temp int Emergency Controller
88. organizzato su gruppi di programmatori che possono essere imprese autonome software houses o parti di organizzazioni servizi di elaborazione dati o di sviluppo del software In questa fase c una maggiore struttura zione dell attivit di produzione per rimangono l approccio individualistico alla programmazione e la mancanza di strumenti teorici e di pratiche stan dardizzate In questo senso si pu parlare di artigianato cio di un attivit pre industriale motivata economicamente ma sempre basata sulle capacit individuali e poco standardizzata L inadeguatezza degli strumenti teorici e metodologici nella fase artigia nale della produzione di software fece sentire i propri effetti nella famosa crisi del software fra gli anni 60 e 70 la produzione del software non riusciva a tenere il passo con le richieste degli utenti e con i progressi dello hardware aumentavano i costi di sviluppo i ritardi nelle consegne ed i malfunziona menti con un conseguente aumento dei costi di manutenzione Si capi quindi che la via d uscita era il passaggio da artigianato a industria era cio neces sario e lo tuttora usare nella produzione di software lo stesso approccio che si usa nelle industrie mature come l industria meccanica o l industria elettronica Nella conferenza di Garmisch 25 del 1968 anno cruciale anche per altri aspetti venne coniato il termine di ingegneria del software La transizione da
89. p M p W p t W t p VoeP stu M p M p La regola di scatto si pu cos riassumere 1 la marcatura di ciascun posto di ingresso viene diminuita del peso dell arco dal posto alla transizione 2 la marcatura di ciascun posto di uscita viene aumentata del peso del Varco dalla transizione al posto 3 la marcatura di ciascun posto di ingresso e di uscita varia di una quan tita pari alla differenza fra i pesi dell arco dalla transizione al posto e dell arco dal posto alla transizione B 8 RETI DI PETRI 231 4 la marcatura dei posti non collegati direttamente alla transizione quin di n d ingresso n d uscita resta invariata Se in una data marcatura pi transizioni sono abilitate ne scatta una sola scelta da un ipotetico esecutore della rete in modo non deterministico La notazione M t M indica che la marcatura M il risultato dello scatto della transizione t abilitata in M Osserviamo che lo scatto firing di una transizione ha solo effetti locali cambiando solo la marcatura dei posti di ingresso e di uscita della transizione stessa Due transizioni t e t possono scattare in successione se M t1 M A M fta M e si dice allora che la sequenza di scatti t t abilitata in M e si scrive M tit2 M In generale rappresentiamo una sequenza di scatti di lunghezza n con la seguente notazione S S anin e scriviamo M t1 t M Ovvero M s MM B
90. permette di descrivere delle atti vit che fanno parte di tutti i modelli di processo anche se raggruppate e pianificate in modi diversi 2 1 1 Studio di fattibilit Lo studio di fattibilit serve a stabilire se un dato prodotto pu essere realiz zato e se conveniente realizzarlo ad accertare quali sono le possibili stra tegie alternative per la sua realizzazione a proporne un numero ristretto a valutare la quantit di risorse necessarie e quindi i costi relativi I metodi ed i criteri di questa fase dipendono sensibilmente dal rappor to fra committente e produttore il prodotto di cui si v luta la fattibilit pu essere destinato alla stessa organizzazione di cui fa parte il produttore p es il produttore vuole realizzare uno strumento CASE Computer Aided Software Engineering per uso interno oppure ad un particolare commit tente esterno il produttore realizza un database per un azienda oppure genericamente al mercato il produttore realizza un database generico Nei primi due casi importante il dialogo fra produttore e committente o fra sviluppatore e utente che permette di chiarire i requisiti Nel terzo caso il ruolo del committente viene assunto da quel settore dell azienda che decide le caratteristiche dei nuovi prodotti In base al risultato dello studio di fattibilit il committente decide se firmare o no il contratto per la fornitura del software La rilevanza eco nomica di questa fase pu i
91. place potrebbe modellare la condizione ci sono dei messaggi da elaborare e la sua marcatura potrebbe modellare il numero di messaggi in attesa a un certo istante Graficamente i place vengono rappresentati da cerchi le transizioni da segmenti o rettangoli gli archi da frecce e i token contenuti in un place p da M p pallini dentro al place 228 APPENDICE B FORMALISMI DI SPECIFICA Pi precisamente una rete una terna N P T F dove e gli insiemi P posti e T transizioni sono disgiunti POT 0 e la rete non vuota PUT 40 e F una relazione che mappa posti in transizioni e transizioni in posti FC PxT U T xP La relazione di flusso F pu essere espressa per mezzo di due funzioni pre e post che associano rispettivamente gli elementi di ingresso e gli elementi di uscita a ciascun elemento della rete sia esso un posto o una tran sizione Possiamo considerare separatamente le restrizioni delle due funzioni ai due insiemi di nodi usando per semplicit lo stesso nome della rispettiva funzione complessiva e Pre insieme di un posto pre P 27 pre p p t T t p F e Pre insieme di una transizione pre T gt 2 pre t p P p t F e Post insieme di un posto post P 27 post p p t ET p t F tla notazione 27 rappresenta l insieme potenza di T cio l insieme dei suoi sottoinsiemi B 8 RETI DI PETRI 229 e Post insieme di u
92. poich pone il vincolo che gli attributi as se maggiore e asse minore abbiano lo stesso valore Osserviamo a scanso di equivoci che anche un estensione un sottoinsieme della superclasse Il fatto che le istanze di una classe derivata siano un sottoinsieme delle istanze della classe base si esprime anche col principio di sostituzione di Barbara Liskov un istanza della classe derivata pu sostituire un istanza della classe base Questo principio un utile criterio per valutare se una certa classe pu essere descritta come una specializzazione di un altra particolarmente importante verificare l applicabilit del principio della Li skov nel caso in cui la classe derivata venga ottenuta per restrizione dalla classe base cio aggiungendo dei vincoli Se per esempio supponiamo che la classe ellisse abbia due operazioni che permettono di modificare gli assi separatamente allora la classe cerchio deve implementare queste operazio ni in modo che si rispetti il vincolo di uguaglianza fra i due assi questo fa si che le operazioni caratteristiche di ellisse siano applicabili a cerchio Poich una sottoclasse ha tutte le caratteristiche della superclasse si dice che tali caratteristiche vengono ereditate In particolare vengono ereditate le operazioni di cui si pu effettuare anche una ridefinizione overriding nella classe derivata In una classe derivata cio si pu avere un operazio
93. privilegiano in grado diverso gli aspetti dei sistemi considerati pi sopra Alcuni formalismi sono specializ 3 2 LINGUAGGI DI SPECIFICA 51 zati per descrivere un aspetto particolare mentre altri si propongono una maggiore generalita Alcune metodologie di sviluppo si affidano ad un unico formalismo mentre altre ne sfruttano pi d uno I formalismi per la specifica quindi possono essere suddivisi analoga mente ai tipi di sistemi per cui sono concepiti per cui si avranno formalismi orientati ai dati alle funzioni e via dicendo Inoltre i formalismi di specifica vengono classificati anche secondo i due criteri del grado di formalit e dello stile di rappresentazione che descriviamo di s guito Grado di formalit I linguaggi si possono suddividere in formali semiformali informali Un linguaggio formale se la sua sintassi e la sua semantica sono definite in modo matematicamente rigoroso il significato di questa frase sar meglio definito nella parte dedicata alla logica dove vedremo come la sintassi e la semantica di un linguaggio si possano esprimere per mezzo di concetti matematici elementari come insiemi funzioni e relazioni Una specifica espressa in un linguaggio formale precisa e verificabile e inoltre lo sforzo di traduzione dei concetti dal linguaggio naturale a un lin guaggio formale aiuta la comprensione di tali concetti da parte degli analisti Questo dovuto al fatto che dovendo riformulare in un
94. pu scegliere un algoritmo inefficiente per una determinata funzione in attesa di trovarne uno migliore ma una volta che il prototipo fatto e funziona pitt o meno bene facile cedere alla tentazione di prendere per buono quello che stato 38 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO fatto e lasciare nel prodotto un componente di cui fin dall inizio era nota l inadeguatezza Infine osserviamo che una forma molto comune di prototipazione con siste nello sviluppo dell interfaccia utente A questo scopo sono disponibili ambienti linguaggi e librerie che permettono di realizzare facilmente delle interfacce interattive 2 3 2 Lo Unified Process Lo Unified Process UP 18 9 un processo evolutivo per lo sviluppo di software orientato agli oggetti concepito dagli ideatori del linguaggio UML Questo processo si pu schematizzare come segue e l arco temporale del processo di sviluppo suddiviso in quattro fasi successive e ogni fase ha un obiettivo e produce un insieme di semilavorati chiamato milestone pietra miliare e ogni fase suddivisa in un numero variabile di iterazioni e nel corso di ciascuna iterazione possono essere svolte tutte le attivit richieste analisi progetto anche se a seconda della fase e degli obiettivi dell iterazione alcune attivit possono essere predominanti ed altre possono mancare e ciascuna iterazione produce una versione provvisoria baseline del
95. rettangoli con lo stereotipo lt artifact gt gt Poich gli artefatti contengono l implementazione di elementi logici come classi e componenti 186 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Client m Aggregate createlterator Iterator Iterator first Element next Element isDone boolean Element create Concretelterator1 lt ConcreteAggregate1 Ml create Concretelterator2 lt ConcreteAggregate2 __ Figura 5 34 Design pattern Iterator utile esprimere la relazione fra questi elementi logici e gli artefatti si dice che un artefatto manifesta certi elementi logici e questo si rappresenta grafi camente con una dipendenza diretta dall artefatto agli elementi manifestati etichettata con lo stereotipo lt manifest gt gt Fig 5 35 lt lt artifact gt gt manifest component lt lt artifact gt gt manifest component p gt porca aa controller Controller emergency Emergency component component manifest FireMonitor manifest PowerMonitor lt lt artifact gt gt 777777773 lt lt artifact gt gt gt gt firesubsys manifest powersubsys manifest estese component m m t em e e a component Temperatu
96. riale per distinguerla dall implicazione logica che verr introdotta pi oltre Ricordiamo anche che a volte viene usato il simbolo oppure gt per l implicazione materiale e il simbolo per l implicazione logica 3 4 LOGICA 63 equivale a As B VC gt A Vediamo quindi che una formula del calcolo proposizionale analogamente a un espressione aritmetica ha una struttura gerarchica si parte da simboli elementari i simboli proposizionali che vengono combinati con operatori unari o binari ottenendo formule che si possono a loro volta combinare e cost via Semantica La semantica di un calcolo proposizionale stabilisce le regole che associano un valore di verit a ciascuna formula Il calcolo di questo valore avviene con un metodo di ricorsione strutturale una formula complessa viene scomposta nelle sue formule componenti fino ai simboli proposizionali si assegnano i rispettivi valori di verit a ciascuno di essi per mezzo della funzione di valu tazione vedi oltre sulla base di questi valori si calcolano i valori delle formule di cui fanno parte i rispettivi simboli per mezzo delle funzioni di verit vedi oltre e cos via fino ad ottenere il valore della formula complessiva La semantica quindi data da e l insieme booleano IB T F contenente i valori vero T true e falso F false e una funzione di valutazione v P IB e le funzioni di verit di ciascun connettivo H BoB H I
97. scatti Dall equazione fondamentale otteniamo h m C s hm hCs 0 hG 0 dove 0 un vettore nullo La soluzione in h di questa equazione formata per le reti vive da un insieme di vettori e dalle loro combinazioni lineari Come applicazione di questi concetti consideriamo due processi che de vono accedere ad una risorsa in mutua esclusione Nella rete mostrata in Fig B 11 i place p e p rappresentano le sezioni critiche dei due processi le transizioni t e t4 rappresentano l ingresso dei due processi nelle rispettive sezioni critiche e le transizioni t e t ne rappresentano l uscita Il place py rappresenta la disponibilit della risorsa 7 y y t2 t5 p3 p6 Figura B 11 pn3 Con la numerazione dei posti e delle transizioni si esposta la matrice di incidenza e la marcatura iniziale sono 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 C i Ba 6 Tlhwmel 4 0 0 0 1 1 0 0 0 0 0 0 1 1 0 i i dei i 1 242 APPENDICE B FORMALISMI DI SPECIFICA I sottoinsiemi di posti che ci interessano sono P p1 p2 p3 Pa p4 Ps Pe e Ps p2 p7 ps Le sottoreti P e Py rappresentano rispettivamente gli stati dei due processi poich i processi sono sequenziali il numero di to ken nelle sottoreti corrispondenti necessariamente uguale a uno altrimenti ci sarebbe un errore nella modellazione dei processi per mezzo della rete di Petri La sottorete P permette di modellare la mutua esclusione
98. src string dst string Figura 5 27 Problema implementazioni alternative Abstraction imp Implementor operation 1 operationImp l TTT S imp opetatonlinp ConcrimplementorA ConcrimplementorB ala operationImp operationImp i implementation A implementation B Figura 5 28 Design pattern Bridge Questo schema un applicazione detta proxy virtuale del pattern Proxy mostrato in Fig 5 30 Il pattern Proxy viene applicato anche in altri tipi di problemi fra cui quello di interagire con un oggetto remoto come se fosse locale proxy remoto e quello di gestire in modo automatico la deallocazione di memoria dinamica per mezzo di puntatori puntatori intelligenti smart pointers 5 3 I DESIGN PATTERN 183 Proxylmage dimens BBox file string draw getExtent BBox Image KH T Editor EEE EE gt draw create getExtent BBox realimg Reallmage dim Dimens img data Reallmage file string draw getExtent Dimens Figura 5 29 Problema differire operazioni costose 5 3 5 Abstract Factory Un applicazione per accedere a un database richiede l interfaccia Connec tion che offre l operazione query e l interfaccia Credentials che offre lo per
99. sviluppatore verr contrapposto a col laudatore anche se i collaudatori partecipano al processo di sviluppo e sono quindi sviluppatori anch essi Produttore per produttore del software si intende un organizzazione che produce software o una persona che la rappresenta Uno sviluppatore generalmente un dipendente del produttore 16 CAPITOLO 1 INTRODUZIONE Committente un organizzazione o persona che chiede al produttore di fornire del software Utente una persona che usa il software Generalmente il committente distinto dagli utenti ma spesso si user il termine utenti per riferir si sia agli utenti propriamente detti che al committente ove non sia necessario fare questa distinzione Osserviamo che l utente di un software pu essere a sua volta uno svilup patore nel caso che il software in questione sia un ambiente di sviluppo o una libreria o qualsiasi altro strumento di programmazione Osserviamo anche che spesso il software non viene sviluppato per un committente particolare applicazioni dedicate o custom bespoke ma vie ne messo in vendita o anche distribuito liberamente come un prodotto di consumo applicazioni generiche o shrink wrapped 1 4 2 Specifica e implementazione Una specifica una descrizione precisa dei requisiti propriet o comporta menti richiesti di un sistema o di una sua parte Una specifica descrive una certa entit dall esterno cio dice qual
100. terminare insieme ad un altra o dopo La figura D 3 mostra un ipotetico diagramma PERT con relazioni finish to start dove si suppone che il work package relativo al generatore di codice comprenda fra i propri task la definizione dei formati intermedi fra il parser ed il generatore e fra il generatore e l ottimizzatore per cui il com pletamento del generatore di codice deve precedere le attivit di sviluppo del parser e dell ottimizzatore A seconda dei legami di precedenza pu accadere che alcune attivit possano essere ritardate entro un certo limite senza che il loro ritardo si ripercuota sul tempo complessivo di sviluppo Questo margine di tempo si chiama slack time Se nel grafo esiste una sequenza di attivit senza slack time cio tali che un ritardo di ciascuna di esse porti ad un ritardo di tutto il progetto la sequenza un cammino critico D 3 DIAGRAMMI DI GANTT 263 Compilatore Y Pianificazione Sviluppo Test di sistema 1 1 1 Progetto Codifica Test di unita Figura D 2 WBS operativa Input c Parser DN Gen codice Ottimizzatore Output Figura D 3 Diagramma PERT D 3 Diagrammi di Gantt I diagrammi di Gantt rappresentano ciascuna attivit con una linea o una barra orizzontale parallela ad un asse dei tempi e permette quindi di osser vare immediatamente le date di inizio e fine
101. un cerchietto annerito un bersa glio Se un oggetto ha un comportamento ciclico non viene indicato uno stato finale Le transizioni sono rappresentate da frecce fra gli stati corrispondenti etichettate col nome dell evento causante la transizione con eventuali attri buti dell evento con una condizione guardia necessaria per l abilitazione della transizione racchiusa fra parentesi quadre e con un azione da esegui re separata dalle informazioni precedenti per mezzo di una barra obliqua Ciascuna di queste tre informazioni opzionale Se manca l indicazione del l evento la transizione avviene al termine dell attivit associata allo stato di partenza si tratta di una transizione di completamento Un azione pu inviare dei segnali e in questo caso si usa la parola send seguita dal nome e da eventuali parametri del segnale L invio di un segnale si pu rappresentare anche graficamente mediante una figura a forma di cartello indicatore etichettata col nome e i parametri del segnale Macchine a stati gerarchiche La descrizione del modello dinamico generalmente gerarchica cio artico lata su diversi livelli di astrazione in ciascuno dei quali alcuni elementi del livello superiore vengono raffinati ed analizzati Un attivit associata ad uno stato pu quindi essere descritta a sua vol ta da una macchina a stati Questa avr uno stato iniziale ed uno o pi stati finali Il sottodiagramma che
102. un grafo 4 4 MODULI NEI LINGUAGGI 133 Il linguaggio UML gi visto nel capitolo relativo ai linguaggi di specifica orientati agli oggetti anche un linguaggio di progetto Nella descrizione di un architettura si possono usare gli stessi concetti e le relative notazioni usate in fase di specifica dei requisiti ma con un pit fine livello di dettaglio per esempio in fase di progetto si devono specificare precisamente il numero e i tipi degli argomenti di operazioni di cui in fase di specifica si era dato solo il nome Inoltre PUML fornisce delle notazioni adatte a esprimere dei concetti propri della descrizione architetturale come la struttura fisica dello hardware e del software Vedremo nel seguito alcuni esempi di applicazione dell UML Fra i linguaggi di progetto testuali possiamo citare il CORBA Interface Definition Language usato per definire le interfacce di moduli per sistemi distribuiti 4 4 Moduli in UML Ogni linguaggio di progetto ha un suo vocabolario e le sue convenzioni per esprimere i concetti usati nello sviluppo del software I linguaggi di pro grammazione a loro volta hanno dei costrutti linguistici che si prestano pi o meno bene a rappresentare tali concetti Per esempio il C non ha dei co strutti che definiscano esplicitamente un modulo per permette di definire degli oggetti astratti sfruttando le regole di visibilit e di collegamento In C un modulo pu essere implementato da una unit di co
103. y uguale a se stesso ed falsa date le note propriet della relazione di uguaglianza Per la formula ha la stessa struttura dello schema 3 12 come si verifica sostituendo Vy x y ad A x e Vy y y al posto di A t Ma lo schema non applicabile perch richiede che la metavariabile t venga sostituita dal termine y che non libero per x nella formula Vy x y infatti y quantificata nella sottoformula Vy x y che sostituisce A x e il campo d azione del suo quantificatore comprende una occorrenza di x Allo schema di assioma 3 13 bisogna aggiungere la restrizione che A non contenga occorrenze libere di x Per esempio se A e B corrispondono tut te e due alla formula p x dove p x viene interpretato come x pari l applicazione dell assioma 3 13 porterebbe alla formula Vx p x gt p x gt p x gt Va p ax che falsa l antecedente dell implicazione principale Va p x gt p x significa che per ogni x la parit implica la parit e il conseguente p x gt Vax p x significa che la parit di un numero implica la parit di tutti i numeri 3 4 LOGICA TT Gli assiomi propri sono specifici di ciascuna particolare teoria p es teoria dei gruppi dell aritmetica e possono mancare Un sistema formale privo di assiomi propri si dice calcolo dei predicati In ogni calcolo dei predicati tutti i teoremi sono formule logicamente valide e viceversa Teorema d
104. 1 http www mozilla org projects bugzilla Shttp www gnu org software dejagnu http cppunit sourceforge net 1Onttp mockpp sourceforge net 2 1 IL MODELLO A CASCATA 31 relativa ai test 2 1 5 Integrazione e test di sistema In questa fase viene assemblato e collaudato il prodotto completo Il costo di questa fase ovviamente tanto maggiore quanto maggiori sono le dimen sioni e la complessit dell applicazione Specialmente se l applicazione viene sviluppata da gruppi di lavoro diversi questa fase richiede un accurata pia nificazione Il lavoro svolto in questa fase viene tanto pi facilitato quanto pi l applicazione modulare Nel corso dell integrazione vengono assemblati i vari sottosistemi a partire dai moduli componenti effettuando parallelamente il test di integrazione che verifica la corretta interazione fra i moduli Dopo che il sistema stato assemblato completamente viene eseguito il test di sistema Il test di sistema pu essere seguito quando l applicazione indirizzata al mercato da questi test alfa test l applicazione viene usata all interno all azienda produttrice beta test l applicazione viene usata da pochi utenti esterni selezionati beta tester 2 1 6 Manutenzione Il termine manutenzione applicato al software improprio poich il soft ware non soffre di usura o invecchiamento e non ha bisogno di rifornimenti La cosiddetta manutenzione del softw
105. 1 05 2 5 0 38 Semi detached 3 0 1 12 2 5 0 35 Embedded 3 6 1 20 2 5 0 32 Il metodo permette di calcolare la ripartizione della quantit di lavoro e del tempo di sviluppo fra le diverse fasi del ciclo di vita Il COCOMO presuppone un ciclo a cascata articolato nelle quattro fasi di pianificazione ed analisi progetto sviluppo ed integrazione e test I costi si riferiscono alle ultime tre fasi e la loro ripartizione fra queste fasi si ottiene da due tabelle una per la quantit di lavoro ed una per il tempo di sviluppo che d nno la rispettiva percentuale secondo il tipo e la dimensione dell applicazione Le stesse tabelle forniscono anche la percentuale relativa al costo aggiuntivo della fase di pianificazione ed analisi La ripartizione percentuale della quantit di lavoro fra le fasi del ciclo di vita si ricava dalla tabella seguente P amp A pianificazione ed analisi I amp T integrazione e test 256 APPENDICE C METRICHE DEL SOFTWARE Dimensione KDSI Tipo dell applicazione Fase 2 8 32 128 512 Organic P amp A 6161 16 6 Progetto 16 16 16 16 Sviluppo 68 65 62 59 I amp T 16 19 22 25 Semi detached P amp A TETIT T 7 Progetto 17 17 17 17 17 Sviluppo 64 61 58 55 52 I amp T 19 22 25 28 31 Embedded P amp A 8 8 8 8 8 Progetto 18 18 18 18 18 Sviluppo 60 57 28 31 34 I amp T 22 25 28 31 34
106. 7 and WP 8 and its duration is 19 months Each work package of this phase is devoted to one of the main subsystems of the simulator the mechanical frame the computer system for the mathematical model the real time system for the simulator control the graphical and the acoustic subsystems During this phase each subsystem is designed implemented and functionally tested The final phase is composed by the work package WP9 and its duration is 8 months During this phase all the subsystems are integrated in order to build the simulator prototype The integration and the field tests are executed and the prototype is evaluated During the progress of the project it might be necessary to modify the workplan both for technical reasons and for taking into account the feedback coming from market analysis Any change in the workplan will be first agreed within the Steering Committee and afterwards presented to the EC for approval Each partner should update its activities in agreement with the consortium The activity of project management has to be performed during all phases The information dissemination will be started after the first phase These activities together are included in work package WP10 There are 4 planned milestones during the project MO effective commencement date TO M1 after 9 months End of the specification phase and start of the implementation All the modules are defined and their require ments specified M2
107. A e un espressione regolare rappresenta un insieme di stringhe per mezzo di operazioni applicate ad altri insiemi di stringhe Le espressioni regolari elementari su un alfabeto sono le stringhe formate da un unico simbolo Per esempio se l alfabeto l insieme a b c le espres sioni regolari fondamentali sono a b e c che rappresentano rispettivamente i sottoinsiemi a b e c ovvero le stringhe a bec L operazione di concatenazione di due espressioni ed Es rappresentata di solito con la semplice giustapposizione delle espressioni produce l insieme delle stringhe formate da un prefisso uguale ad una stringa appartenente a E seguito da un suffisso uguale ad una stringa appartenente a Ey Per esempio ab ab ovvero l insieme contenente solo la stringa ab L operazione di scelta fra due espressioni Ej ed E rappresentata di so lito col simbolo produce l unione degli insiemi rappresentati dalle due espressioni Per esempio a b a b a b c ab ac L operazione di chiusura anche chiusura o stella di Kleene rappresen tata col simbolo x di un espressione E produce l insieme formato dalla stringa nulla e dalle stringhe che si possono ottenere concatenando un nu mero finito ma non limitato di stringhe appartenenti a E Per esempio as A a aa A 4 00 Un applicazione tipica di questo formalismo la specifica degli elementi lessicali token di un linguaggio
108. A WPI1 Simulator User Requirements Definition A A A Objectives To define the specifications of the simulator from the user s point of view This will be done first by a state of the art analysis of existing simulators task T1 1 A simultaneous market analysis will provide the feedback necessary to define a product suitable for a commercial exploitation After that the simulator functionality will be defined task T1 2 and the virtual scenario will be outlined task T1 3 Finally specifications will be given task T1 4 and the field test to be carried out at the end will be planned Task T1 5 Task T1 1 State of the art of simulator systems AAA Baselines RP 1 1 State of the art of simulator systems report Duration 1 month Effort AAA 2 0 BBB 1 0 Links output to T1 2 T1 3 T1 6 Objectives To gain a deeper knowledge about the state of the art in simulator systems both from the technical and the commercial point of view Approach The various types of simulators will be analysed Exi sting patents will be researched as well as any other docu mentation available If necessary the manufacturers will be interviewed The potential market will be estimated and the potential customers will be identified Activities Market analysis AAA Overview on the existing simulators with special atten tion on the control strategies related to inertial feedback AAA Analysis of mechanical actuation solutions
109. ATA dimens database 0 94 1 0 1 08 1 16 3 CPLX complessit 0 70 0 85 1 0 1 15 1 30 1 65 4 TIME req di efficienza 1 0 1 11 1 30 1 66 5 STOR req di memoria 1 0 1 06 1 21 1 56 6 VIRT variabil ambiente 0 87 1 0 1 15 1 30 7 TURN tempo di risposta 0 87 1 0 1 07 1 15 8 ACAP esper analisti 1 40 1 19 1 0 0 86 0 71 9 AEXP esper applicazione 1 29 1 13 1 0 0 91 0 82 10 PCAP esper programmatori 1 42 Lay 1 0 0 86 0 70 11 VEXP conosc ambiente 1 21 1 10 1 0 0 90 12 LEXP conosc linguaggio 1 21 1 10 1 0 0 90 13 MODP tecniche moderne 1 24 1 10 1 0 0 91 0 82 14 TOOL strumenti software 1 24 1 10 1 0 0 91 0 83 15 SCED scadenze per lo svil 1 24 1 10 1 0 0 91 0 83 La quantit di lavoro corretta M viene quindi calcolata dalla formula 15 M M c j l Il tempo di sviluppo si ottiene come nel modello base Il modello intermedio comprende una procedura per ripartire la quantit di lavoro fra i componenti dell applicazione cos riassumibile 258 APPENDICE C METRICHE DEL SOFTWARE 1 Si stimano le dimensioni S di ciascun componente che identifichia mo con un indice k da cui si ottiene la dimensione complessiva S Ds 2 Si calcola la quantit nominale di lavoro complessiva M secondo la procedura gi vista 3 Si calcola la produttivit nominale p S M cio il numero di linee di codice che dovr essere prodotto per persona e per unit di tempo 4 Si calcola la quantit n
110. Appunti per le lezioni di Ingegneria del Software bozza Andrea Domenici A A 2015 2016 Indice 1 Introduzione 1 1 Prime definizioni 22 4 2 va deal ae ala 1 2 Ii softwire diversos seco een 6 DERE REE ES SS 1 3 Il software non diverso 2 lt is darai a pa e tod Deonboladi part delete la de dla Rn TA Concetti generali casca ie i 141 Le parinanaego 3 3 a e GR el 1 4 2 Specifica e implementazione 1 4 3 Modelli e linguaggi 24 4 se 64225 4 2 Ciclo di vita e modelli di processo 21 Imodello acasc t ics eoue roa ee he ee PE we RES 2 11 St dio di fattibilit i s af oe ee ose ae eee ek 2 1 2 Analisi e specifica dei requisiti Sl PISO nres pini AA 2 1 4 Programmazione codifica e test di unit 2 1 5 Integrazione e test di sistema 2 1 6 Manutenzione 2 206 464 3404 pe wk a eS Z1 f Attivit di supporto s scs e ew rie 2 sake BS Mw e 2 2 Il modello di processo a V a lt i424 22 4444744425 20 Modelli evolutivi 4 4 224 Sega we oo oo 2 OE Oo 2 we 2 3 1 Prototipazione 2 2 sah ee Ge ae tee me be ee 2 3 2 Lo Unified Process 444 2 e245 eae oe eee we 2 3 0 Modelli trastormazionall a es ose es oe Analisi e specifica dei requisiti 3 1 Classificazioni dei sistemi software 3 1 1 Requisiti t rmiporali e a oca s e elba 3 1 2 Tipo di elaborazione o oo 3 1 3 Software di base o applicativo 2 25 44 8s aes 3 2 Lingu a
111. B oB e una funzione di interpretazione Sy W IB cos definita S A vA S A S AA B en BE gt 2 dove AEP AEW BEW La funzione di valutazione assegna un valore di verit a ciascun simbolo proposizionale Osserviamo che questa funzione arbitraria nel senso che 64 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI viene scelta da chi si vuole servire di un linguaggio logico per rappresentare un certo dominio in modo da riflettere ci che si considera vero in tale dominio Per esempio consideriamo le proposizioni A Aldo bravo S Aldo pas sa l esame di Ingegneria del Software e T il tempo bello A ciascuna proposizione si possono assegnare valori di verit scelti con i criteri ritenuti pi adatti a rappresentare la situazione per esempio la valutazione di A pu essere fatta in base a un giudizio soggettivo sulle capacit di Aldo la valuta zione di S e T pu essere fatta in base all osservazione sperimentale o anche assegnata arbitrariamente considerando una situazione ipotetica Le funzioni di verit d nno il valore di verit restituito dall operatore logico rappresentato da ciascun connettivo in funzione dei valori di verit delle formule a cui viene applicato l operatore Di solito queste funzioni vengono espresse per mezzo di tabelle di verit come le seguenti T y H x H x y Ay x y H x y Ha z y F F T F F T T FIT T F T T F T F F F T F F TIT F T T T T
112. C 11 si usa l operazione unique_lock 5 2 PROGETTO DI SISTEMA 177 wait_consuma boost mutex scoped_lock lock cmutex acquis while consuma lettura del segnale cons wait lock rilascio riacquis consuma false scrittura del segnale rilascio dove lock un istanza della classe scoped_lock il cui costruttore acqui sisce un semaforo di mutua esclusione che viene poi rilasciato dal distruttore L operazione wait rilascia il semaforo e mette il thread in attesa Quando il thread viene risvegliato riacquisisce il semaforo L operazione signal consuma implementata come segue signal_consuma boost mutex scoped_lock lock cmutex acquis consuma true scrittura del segnale cons notify_one sveglia processi rilascio dove l operazione notify_one fa risvegliare uno dei thread in attesa L evoluzione dei due thread definita da questi due sottoprogrammi void produttore void consumatore I amp buf signal_produci for for Gi 4 buf wait_produci buf wait_consuma elabora_prod elabora_cons buf signal_consuma buf signal_produci 3 E infine i thread vengono creati ed attivati nel seguente modo int main int argc char argv boost thread consum amp consumatore boost thread produt kproduttore consum join produt join return 0 178 CAPITOLO 5 PROGETTO ORIENTATO AGLI
113. E tA0 E j tAi1 lt 1 gt lt t Questi assiomi formalizzano due semplici nozioni ogni occorrenza di un even to avviene in un istante successivo all istante t 0 preso come riferimento e due occorenze successive di uno stesso evento avvengono in istanti successivi Un sistema viene specificato attraverso la sua descrizione in RTL questa descrizione insieme agli assiomi costituisce una teoria rispetto alla quale si possono verificare delle propriet del sistema in particolare le asserzioni di sicurezza che rappresentano i vincoli temporali che devono essere rispettati dal sistema Per esempio la seguente formula specifica che un operazione di lettura READ deve durare meno di 10 unit di tempo Vi t READ i 10 gt J READ i Nella formula precedente i simboli T READ e READ rappresentano ri spettivamente l evento iniziale e l evento finale dell azione READ Un altro B 8 RETI DI PETRI 227 esempio riguarda la risposta A del sistema ad ogni occorrenza dell evento sporadico E nell ipotesi che le occorrenze successive di E siano separate da un intervallo minimo s e che A debba terminare entro la scadenza deadline Vi E i s lt Q E i 1 Vidj E i lt TA j A Q LA j lt B i d B 8 Reti di Petri Le reti di Petri sono un formalismo operazionale per la descrizione di sistemi le cui caratteristiche di astrattezza e generalit ne permettono l applicazione a numerosi problemi quali per
114. EMI SOFTWARE 49 sincronizzazione si intendono delle relazioni di precedenza fra eventi come per esempio l azione a del processo P_deve essere eseguita dopo l azione b del processo Q oppure la valvola n 2 non si deve aprire prima che s sia chiusa la valvola n 1 In generale un insieme di vincoli di sincronizza zione su un insieme di processi interagenti pu essere soddisfatto da diverse sequenze di eventi ma il verificarsi di sequenze che violano tali vincoli un malfunzionamento Nei sistemi concorrenti il tempo impiegato per l elaborazione come nei sistemi sequenziali non un requisito funzionale Come esempio molto sem plice di sistema concorrente possiamo considerare il comando cat del sistema Unix combinato per mezzo di un pipe al comando lpr cat swe txt lpr Il processo cat legge un file e ne scrive il contenuto sull uscita standard l o peratore pipe collega l uscita di cat all ingresso del processo lpr che scrive sulla stampante I due processi lavorano a velocit diverse ma sono sincro nizzati in modo che il processo pi veloce presumibilmente cat aspetti il pi lento Il vincolo di sincronizzazione si pu esprimere informalmente cos il processo lpr deve scrivere i caratteri nello stesso ordine in cui li riceve dal processo cat Questo esempio rientra nel modello della coppia produttore consumatore con controllo di flusso flow control in cui il produttore si blocca finc
115. Fig 3 17 mostra una possibile applicazione degli stereotipi cos definiti maggiori dettagli sulla notazione UML nelle prossime sezioni Il nome di uno stereotipo viene scritto fra i caratteri lt e gt gt e pu essere accompagnato o sostituito da un icona 11Una metaclasse una classe che descrive un elemento di modello 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 103 max_reqs 50000 ri control boundary Application SL server OperatorUI aw Database boundary Server server ClientUl WebServer Printer max_reqs 10000 max_reqs 500 Figura 3 17 Uso di stereotipi Come si detto pi sopra i meccanismi di estensione permettono di adattare il linguaggio UML alle esigenze di particolari campi di applicazione o processi di sviluppo Un profilo un insieme coerente e documentato di estensioni Numerosi profili sono stati standardizzati dal OMG Object Management Group I meccanismi di estensione si possono applicare a qualsiasi elemento di mo dello per cui la possibilit della loro presenza generalmente verr sottintesa nelle successive descrizioni dei vari tipi di elementi 3 5 6 Generalizzazione Una classe che chiameremo classe base o superclasse generalizza un altra classe che chiameremo classe derivata o sottoclasse quando definisce un insieme di elementi che incl
116. I O NT complesso modulare grado di strutturazione Figura 4 1 Complessit e struttura La modularit di un sistema influenza anche la pianificazione e la gestione dell attivit di progetto e di codifica poich rende possibile la ripartizione del lavoro fra diversi gruppi di sviluppatori i quali possono lavorare in modo tanto pitt indipendente anche dal punto di vista organizzativo si pensi a progetti sviluppati da consorzi di aziende diverse magari situate in paesi diversi quanto pi i sottosistemi sono logicamente indipendenti 126 CAPITOLO 4 IL PROGETTO E quindi fondamentale nel progettare un sistema conoscere e compren dere i princip ed i metodi che permettono di realizzare architetture modulari 4 2 Moduli Il termine modulo pu assumere significati diversi in contesti diversi e in questo corso adotteremo il significato pi generale una porzione di software che contiene e fornisce risorse o servizi e a sua volta pu usare risorse o servizi offerti da altri moduli Un modulo viene quindi caratterizzato dalla sua interfaccia cio dall elenco dei servizi offerti o esportati e richiesti o importati Queste due parti dell interfaccia si chiamano interfaccia offer ta e interfaccia richiesta ma spesso la parola interfac
117. Il programma principale esegue il test creando un istanza di FileStub e di Consumer inizializzando lo stub e usando l unit sotto test come previsto dal piano di test 206 CAPITOLO 6 CONVALIDA E VERIFICA int main int argc char argv try FileStub mock nome passato a open mock open_name addExpected filel lst numero di operazioni close mock close_counter setExpected 1 righe lette da Consumer mock read_data add0bjectToReturn record 1 mock read_data add0bjectToReturn record 2 mock read_data add0bjectToReturn record 3 esecuzione Consumer consumer amp mock consumer load consumer process controllo mock verify std cout lt lt Test eseguito con successo lt lt std endl catch std exception amp ex std cout lt lt std endl lt lt Errori n lt lt ex what lt lt std endl return 1 return 0 6 5 Test in grande 6 5 1 Test di integrazione Nel test di unit il test di ciascun modulo richiede l uso di moduli ausiliari che simulano i moduli che nel sistema reale interagiscono col modulo in esame I moduli ausiliari che simulano i moduli cliente sono detti driver quelli che simulano i moduli servente si dicono stub I driver e gli stub devono simulare degli interi sottosistemi ma ovviamente devono essere realizzati in modo semplice Per esempio invece di eseguire i calcoli richiesti possono fornire al modulo sotto test i
118. La frase A implica logica mente B invece significa che la formula A gt B vera per ogni valutazione ed quindi una affermazione pi forte Analogamente se A B una tautologia si dice che A e B sono logicamente equivalenti 3 4 2 Teorie formali Nel calcolo proposizionale sempre possibile accertarsi se una data formula valida oppure no basta calcolare il suo valore di verit per tutte le va lutazioni possibili che per ciascuna formula costituiscono un insieme finito essendo finiti gli insiemi dei simboli proposizionali nella formula delle loro occorrenze e dei loro possibili valori di verit Questo metodo diretto di veri fica della validit fa riferimento alla semantica del linguaggio usato I metodi basati sulla semantica del linguaggio sono indicati comunemente col termi ne model checking e sono impiegati per molti linguaggi formali di specifica nell ingegneria del software Se il numero di simboli proposizionali in una formula grande la verifica diretta pu essere impraticabile Inoltre la verifica diretta generalmente impossibile nelle logiche pi potenti del calcolo proposizionale come la logica del primo ordine che vedremo fra poco la cui semantica pu comprendere insiemi infiniti di valori Si pone quindi il problema di dedurre la verit di una formula non attraverso il calcolo diretto del suo valore di verit ma attraverso certe relazioni basate sulla sua sintassi con altre formul
119. NTATO AGLI OGGETTI UML 1 si rappresentavano col bordo esterno pi spesso I messaggi ed i se gnali vengono rappresentati per mezzo di frecce nei diagrammi di sequenza e di collaborazione ed possibile usare notazioni diverse per esprimere diversi modi di sincronizzazione associati ai messaggi Per esempio si possono di stinguere i messaggi sincroni rappresentati da frecce a punta piena in corrispondenza dei quali il mittente resta in attesa che il ricevente com pleti l azione richiesta dal messaggio e i messaggi asincroni frecce a punta aperta gt in cui il mittente continua la sua attivit indipendentemente da quella del ricevente Inoltre le operazioni eseguite in modo concorrente possono essere specificate con la propriet concurrent Per individuare i flussi di controllo indipendenti almeno i pi importan ti in fase di progetto di sistema bisogna analizzare le informazioni che si ricavano dal modello dinamico che in un progetto orientato agli oggetti rappresentato dai diagrammi di stato di sequenza di collaborazione e di attivit o da informazioni analoghe se si usano notazioni diverse dall UML Esempio La Fig 5 18 mostra come sempre in modo semplificato un modello di ana lisi per un sistema di controllo che deve rilevare due condizioni pericolose in un impianto incendio o perdita di alimentazione elettrica esempio adat tato da 9 Il diagramma delle classi mostra i sottosistemi principa
120. OGGETTI dove le operazioni join fanno s che il programma principale attenda la fine dell esecuzione dei due thread Risorse Analizzando le interazioni fra sottosistemi bisogna anche stabilire quali oggetti passivi vengono interessati da un solo flusso di controllo e quali sono condivisi I primi si possono considerare come parte del corrispondente oggetto attivo col quale possono essere messi in relazione di composizione nei diagrammi UML I secondi devono essere protetti mediante semafori di mutua esclusione La classe Buffer vista precedentemente un esempio di oggetto passivo protetto da semafori gli oggetti di questo tipo sono chiamati monitor Un cliente di un monitor pu accedere ai suoi dati solo attraverso le operazioni del monitor e queste provvedono ad acquisire i semafori spesso uno solo mettendo in attesa il chiamante se la risorsa occupata Queste operazioni sono dette operazioni con guardia o sincronizzate Nel linguaggio Java un operazione pu essere dichiarata synchronized e il compilatore le associa un semaforo e la implementa inserendo le operazioni di acquisizione e rilascio Comunicazione La comunicazione fra oggetti attivi si pu considerare co me una forma particolare di sincronizzazione in cui gli oggetti si scambiano dati Bisogna stabilire quali comunicazioni sono sincrone e quali asincrone In una comunicazione sincrona il mittente del messaggio si blocca finch non arriva una risposta dal destinat
121. ONTROLLO 55 nome che da un numero Al numero si fara riferimento nella rappresentazione tabulare v oltre dell automa telefono 0 l riagganciato riaggancio sollevamento segnale interno attesa 1 prima cifra 0 segnale seno RG attesa 2 attesa 5 seconda cifra int prima cifra est 1 9 attesa 3 0 9 seconda cifra est 0 9 6 riaggancio attesa collegamento riaggancio libero occupato segnale occupato segnale libero attesa 4 0 9 7 8 riaggancio riaggancio terza cifra est colloquio impossibile ricevente squilla riaggancio sollevamento ric riaggancio 9 dialogo e Figura 3 2 Un automa a stati finiti Un automa pu essere rappresentato anche per mezzo di tabelle Una rap presentazione possibile si basa su una matrice quadrata di ordine n numero degli stati se esiste una transizione dallo stato s allo stato s elemento della matrice sulla riga e la colonna j contiene l ingresso che causa la tran sizione e la corrispondente uscita La rappresentazione tabulare dell ASF di Fig 3 2 data dalla tabella 3 3 1 56 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 0 il 2 3 4 5 6 7 8 9 S int R 0 est 1 9 R 1 9 R 0 9 R 0 9 R 0 9 R O occ L lib R Sr o 920 N SD Cub D0MmM_ R
122. P c Q 9 La complessit totale del programma pu superare la somma delle complessit delle parti componenti 3P Q c P c Q lt eP Q La propriet 6 fa s che una misura di complessit tenga conto delle inte razioni fra parti di programmi due parti di programma di uguale complessit possono interagire in modo diverso col contesto in cui sono inseriti Una mi sura che soddisfi questa propriet insieme alla propriet 7 non addititiva cio non possibile ricavare la complessit di un programma sommando le complessit delle parti componenti Alcuni ricercatori ritengono al contrario che le misure di complessit debbano essere additive La propriet 7 permette di tener conto dell ordinamento delle istruzioni di un programma e in particolare di distinguere la complessit in base al l annidamento dei cicli Il numero ciclomatico non rispetta questa propriet La propriet 8 rispecchia il fatto che si vuole considerare la complessit come un attributo strutturale ed interno distinto dalla comprensibilit at tributo di carattere psicologico ed esterno Evidentemente un programma che usa identificatori significativi pi comprensibile di un programma ot tenuto sostituendo gli identificatori con sequenze casuali di lettere ma la struttura dei due programmi identica e quindi ugualmente complessa C 4 Punti funzione I Punti Funzione Function Points sono una metrica per i requisiti e per mettono
123. PUNIT_ASSERT m_10_1 m_10_1 CPPUNIT_ASSERT m_10_1 m_11_2 void ComplexTest testAddition CPPUNIT_ASSERT m_10_1 m_1_1 m_11_2 dove testEquality e testAddition sono i casi di test Gli altri metodi creano la sequenza di test da eseguire suite creano le istanze di Complex da usare nei test setup e le distruggono tearDown Il programma principale crea un istanza di una sottoclasse di TestRunner la inizializza e la esegue 6 4 CPPUNIT E MOCKPP 203 int main CppUnit TextTestRunner runner runner addTest ComplexTest suite runner run return 0 Le macro CPPUNIT_ASSERT nei casi di test verificano le condizioni specifi cate e se non risultano vere scrivono dei messaggi di errore 6 4 2 Il framework Mockpp Il framework Mockpp si pu descrivere come in Fig 6 6 dove UnitA la classe da collaudare Provider1 la classe richiesta da UnitA che dobbiamo simulare con uno stub IProvider1 la sua interfaccia e MockProvider1 lo stub La classe MockObject la base degli stub e contiene un insieme di istanze di classi derivate da Expectation queste ultime descrivono i valori che ci si aspetta vengano passati ai metodi di Provider1 nell esecuzione dei metodi di UnitA Application Mockpp Framework UnitA interface MockProvider1 MockObject IProvidert SK 777 opProvia opProvia f verify opProvib opProv1b i APE
124. Prototype verification system PVS un dimostratore interattivo di teo remi sviluppato al Computer Science Laboratory dell SRI International 27 Il suo sistema formale si basa su un linguaggio tipato di ordine superiore e sul calcolo dei sequenti stato applicato in molti campi fra cui la verifica formale di sistemi digitali algoritmi e sistemi safety critical La verifica delle propriet di un sistema si svolge come segue 82 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI e si descrive il sistema per mezzo di una teoria che comprende definizioni di tipi variabili e funzioni e gli assiomi richiesti e si scrivono le formule che rappresentano le propriet da dimostrare e si seleziona una di tali formule e si entra nell ambiente di dimostrazione interattiva e in tale ambiente si usano dei comandi che applicano le regole di infe renza del calcolo dei sequenti trasformando il sequente iniziale fino ad ottenere la dimostrazione se possibile La dimostrazione quindi non viene eseguita automaticamente dallo stru mento ma viene guidata dall utente che ad ogni passo sceglie il comando da applicare Ciascun comando per pu applicare una combinazione di pi regole di inferenza o applicarle ripetutamente per cui una dimostrazione complessa si pu spesso risolvere in pochi passi Il seguente esempio mostra una semplice teoria sulla struttura algebrica dei gruppi in cui si vuole dimostrare una propriet della fu
125. Test suite void setUp void tearDown void testEquality void testAddition CppUnit Test ComplexTest suite CppUnit TestSuite suite0fTests new CppUnit TestSuite ComplexTest suite0fTests gt addTest new CppUnit TestCaller lt ComplexTest gt testEquality amp ComplexTest testEquality suite0fTests gt addTest new CppUnit TestCaller lt ComplexTest gt testAddition amp ComplexTest testAddition return suite0fTests void ComplexTest setUp i m_10_1 new Complex 10 1 m_1_1 new Complex 1 1 m_11_2 new Complex 11 2 void ComplexTest tearDown 202 CAPITOLO 6 CONVALIDA E VERIFICA Application i CppUnit Framework Complex i TestFixture operator i setUp operator i tearDown ComplexTest testEquality TestCase testAddition suite run A TestRunner i saan on tobias maa Ce TestEqualityCaller i TestCaller lt ComplexTest gt ComplexTest testEquality i 777 TestSuite bind ComplexTest DI i i bind ComplexTest utility i ee crue TestAdditionCaller testExec i TestCaller main i is TestCaller lt ComplexTest gt ComplexTest testAddition Figura 6 5 Infrastruttura CppUnit delete m_10_1 delete m_1_1 delete m_11_2 void ComplexTest testEquality CP
126. a formalizzare il ragionamento e in particolare a decidere in modo rigoroso e quindi potenzialmente automatizzabile se certe afferma zioni sono vere e se dalla verit di certe affermazioni si pu dedurre la verit di altre affermazioni evidente che la logica fondamentale per qualsiasi forma di ragionamento scientifico anche quando viene condotto per mezzo 60 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI del linguaggio naturale e in qualsiasi campo di applicazione anche al di fuo ri delle discipline strettamente scientifiche e tecnologiche In particolare la logica moderna stata sviluppata per servire da fondamento alle discipline matematiche fra cui rientra gran parte della scienza dell informazione Al di l del suo carattere fondamentale la logica pu essere usata come linguaggio di specifica Nell ingegneria del software quindi una logica serve da linguaggio di specifica quando si descrive un sistema in termini delle sue propriet Un sistema specificato per mezzo della logica pu essere analiz zato rigorosamente e la specifica stessa pu essere trasformata per ottenere descrizioni equivalenti ma pi vicine all implementazione Usando opportuni linguaggi linguaggi di programmazione logica come per esempio il Prolog una specifica logica pu essere eseguibile e quindi fornire un prototipo del sistema specificato La logica ovviamente importante per l ingegneria del software anche perch come
127. a generale si potrebbe considerare un componente per spesso si usa questo termine in modo pi restrittivo richiedendo che i componenti si possano sostituire a tempo di esecuzione questo impone dei particolari requisiti sugli ambien ti di programmazione e di esecuzione e richiede che i componenti vengano realizzati rispettando determinate convenzioni Una terza definizione inter media fra le precedenti richiede che i componenti seguano certe convenzioni ma non che siano necessariamente istanziabili a tempo di esecuzione 4 3 Linguaggi di progetto La fase di progetto produce alcuni documenti che descrivono l architettu ra del sistema Tali documenti sono scritti in parte in linguaggio naturale possibilmente secondo qualche standard di documentazione che stabilisca la struttura dei documenti e in parte mediante notazioni di progetto testuali e grafiche Le notazioni testuali descrivono ciascun modulo usando un lin guaggio simile ai linguaggi di programmazione arricchito da costrutti che specificano le relazioni fra i moduli e descrivono precisamente le interfacce e spesso privo di istruzioni eseguibili Le notazioni grafiche rappresentano in forma di diagrammi i grafi definiti dalle relazioni I metodi di progetto pi usati nella pratica sono basati su linguaggi grafici integrati da linguaggi testuali 3 Ricordiamo che un grafo un concetto matematico mentre un grafico un oggetto fisico che pu anche rappresentare
128. accennato prima alla base di tutti i metodi formali usati nel l informatica Inoltre la logica come linguaggio di specifica si pu integrare con altri linguaggi per esempio si possono usare delle espressioni logiche co me annotazioni formali per chiarire aspetti del sistema lasciati indeterminati da descrizioni informali Esistono diversi tipi di logica come la logica proposizionale e la logica del primo ordine che vedremo fra poco ognuno dei quali quali si presta a determinati scopi e campi di applicazione Ciascuno di questi tipi di logica permette di definire dei sistemi formali o teorie formali ognuno dei quali si basa su un linguaggio per mezzo del quale si possono scrivere formule che rappresentano le affermazioni che ci interessano Un linguaggio viene descritto dalla propria sintassi Il significato che attribuiamo alle formule dato dalla semantica del linguaggio La semantica associa i simboli del linguaggio alle entit di cui vogliamo parlare queste entit costituiscono il dominio o universo di discorso del linguaggio Dato un linguaggio e la sua semantica un insieme di regole di inferenza permette di stabilire se una formula pu essere derivata da altre formule ovvero se una formula un teorema di un certo sistema formale ovvero se esiste una dimostrazione di tale formula Le regole di inferenza si riferiscono alla sintassi del linguaggio possiamo applicare una regola di inferenza ad un insieme di formule senza
129. ackage Simulator contenga una classe Solver il nome qualificato di quest ultima sarebbe Simulator Solver Questo nome qualificato pu essere usato nelle classi appartenenti ad altri package per esempio nella dichiarazione di parametri Per usare soltanto il nome semplice un altro package nell esempio Userlnterface deve importare il package Simulator cio inserire lo spazio di nomi di Simulator nel proprio La figura mostra i tre package con le rispettive dipendenze di lt import gt Un altra dipendenza mostrata comunemente quella di uso che si ha quando qualche elemento di un package usa elementi dell altro 4 4 MODULI NEI LINGUAGGI 139 UserInterface import x x x import SN Simulator i Import 4 oa WZ DataBase Figura 4 7 Package in UML 2 Componenti Un componente un modulo logico definito da una o pi interfacce offerte e da una o pi interfacce richieste sostituibile e riusabile Un componente pu realizzare pi di una interfaccia per esempio un componente destinato a controllare un impianto stereo potrebbe avere un in terfaccia per il controllo della radio con le operazioni scegli_banda sce gli canale una per il lettore CD con scegli_traccia successivo e cost via Fig 4 8 a Altrettanto vale per le interfacce richieste La possibilit di suddividere la specifica di un com
130. after 19 months End of detailed design and beginning of the implementation phase Checkpoint for the task of design and implementation of the five main subsystems M3 after 28 months End of the implementation phase and start of the system integration All the main subsystems are implemen ted and tested M4 end of the project The simulator prototype is operational One critical path has raised up during the planning in correspondence with the last project activity This is due to the low flexibility of the activity of field testing The easiest alternative action consists in increasing the project duration of at least one month Another alternative action is the overlapping of the Integration test task with the integration activity itself in such a way to provide an easy management of possible feedback from testing activities 266 APPENDICE D GESTIONE DEL PROCESSO DI SVILUPPO WP ID WORKPACKAGE PARTNER WP1 Simulator User Requirements Definition AAA WP2 Mathematical Model Definition AAA WP3 Global architecture and Subsystem Specification BBB WP4 Mechanical Subsystem Design Implem n and Test BBB WP5 Computational Subsystem Design Implem n and Test CCC WP6 Real time Subsystem Design Implem n and Test BBB WP7 Graphical Subsystem Design Implem n and Test DDD WP8 Acoustic Subsystem Design Implem n and Test DDD WP9 Simulator Integration and Test BBB WP10 Project Management AA
131. alcolatore Systems and software engineering Vocabulary 5 9 10 CAPITOLO 1 INTRODUZIONE ingegneria del software 1 L applicazione di conoscenze scientifiche e tecnologiche metodi ed esperienza al progetto l implementazione il col laudo e la documentazione del software 2 L applicazione di un approccio sistematico disciplinato quantificabile al lo sviluppo all operazione ed alla manutenzione del software cio l applicazione dell ingegneria al software Systems and software engineering Vocabulary 5 disciplina tecnologica e manageriale che riguarda la produ zione sistematica e la manutenzione dei prodotti software sviluppati e modificati entro i tempi e i costi preventivati D Fairley 11 particolarmente importante nelle due definizioni di ingegneria del soft ware il concetto di sistematicit La necessit di sottolineare l importanza di questo concetto che data per scontata nelle altre discipline ingegneristi che pu essere meglio compresa se consideriamo la storia dell informatica schematizzata nelle tre fasi di arte artigianato e industria La prima fase quella delle origini caratterizzata dal fatto che i produt tori e gli utenti del software condividevano una formazione scientifica per cui i programmatori avevano una certa familiarit con i problemi degli uten ti e questi ultimi erano in grado di capire il funzionamento dei calcol
132. ale Input pu essere descritto come generalizzazione dei segnali Mouse e Keyboard che a loro volta possono essere ulteriormente strutturati Una gerarchia di segnali si rappresenta gra ficamente in modo simile ad una gerarchia di classi Un segnale si rappresenta come un rettangolo contenente lo stereotipo lt signal gt gt il nome del segnale ed eventuali attributi Un evento temporale si verifica quando il tempo assume un particolare valore assoluto per esempio il 31 dicembre 1999 oppure quando trascor so un certo periodo da un determinato istante per esempio dieci secondi dopo l arrivo di un segnale Gli eventi temporali del primo tipo si rappre sentano con la parola at seguita da una condizione booleana per esempio at date 2002 12 31 quelli del secondo tipo con la parola after seguita da una durata per esempio after 10 ms Se un evento si verifica nel corso di una transizione non ha influenza sull eventuale azione associata alla transizione ricordiamo che le azioni non sono interrompibili e viene accantonato in una riserva di eventi event pool per essere considerato nello stato successivo Se mentre un oggetto si trova in un certo stato si verificano degli even ti che non innescano transizioni associate a quello stato l oggetto si pu comportare in due modi i questi eventi vengono cancellati e quindi non potranno pi influenzare l oggetto come se non fossero mai accaduti op pure ii quest
133. ali indicativo congiuntivo condizionale Per esempio la frase se piovesse non uscirei suggerisce che non sta piovendo nel momento in cui viene pronunciata oltre ad esprimere il fatto che la pioggia e l azione di uscire sono legate da un implicazione questa sovrapposizione di significati non si ha nella frase se piove non esco In particolare una logica modale pu distinguere una verit necessaria p es tutti i corpi sono soggetti alla legge di gravit nel mondo fisico in cui viviamo da una verit contingente una particolare mela sta cadendo Le logiche temporali sono una classe di logiche modali e servono ad esprimere il fatto che certe formule sono vere o false a seconda dell intervallo di tempo o dell istante in cui si valutano Le logiche modali presuppongono che le loro formule vengano valutate rispetto a pi mondi possibili universi di discorso a differenza della logica non modale che si riferisce ad un solo mondo Il fatto che una formula sia necessariamente vera corrisponde per la semantica delle logiche modali al fatto che la formula vera in tutti i mondi considerati possibili in una particolare logica La sintassi delle logiche modali quella dello logiche non modali a cui si aggiungono operatori modali e operatore di necessit O e operatore di possibilit L insieme delle formule ben formate viene quindi esteso con questa regola e se F
134. alore assegnato all attributo quando si crea l oggetto La sintassi UML per gli attributi la seguente lt visibilita gt lt nome gt lt molteplicita gt lt tipo gt lt val iniziale gt Se un attributo ha scope statico viene sottolineato La visibilit si rappresenta con i seguenti simboli pubblica protetta package privata 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 95 La molteplicit si indica con un numero o un intervallo numerico fra parentesi quadre come nei seguenti esempi 3 tre valori 1 4 da uno a quattro valori 1 uno o pit valori 0 1 zero o un valore attributo opzionale Operazioni Ogni operazione viene identificata da una segnatura signature costituita dal nome della funzione e dalla lista det parametri eventualmente vuota Per ciascun parametro si specifica il nome e opzionalmente le seguenti informazioni direzione ingresso in uscita out ingresso e uscita inout tipo valore default valore passato al metodo che implementa la funzione se l argomento corrispondente al parametro non viene specificato Inoltre le operazioni analogamente agli attributi hanno scope visibilit e tipo quest ultimo il tipo dell eventuale valore restituito Anche queste informazioni sono opzionali La sintassi per le operazioni la seguente lt visibilita gt lt nome gt lt lista parametri gt lt tipo gt dove ciascun parametro della lista ha questa forma
135. alvo ovviamente il primo e l ultimo per cui ogni semilavorato viene sottoposto a verifica La convalida si applica al prodotto finito ma pu essere applica ta anche ai documenti di specifica a prototipi o a implementazioni parziali dell applicazione Nell altra accezione si intende per convalida la soltanto la valutazio ne del prodotto finale rispetto ai requisiti mentre la verifica si applica ai semilavorati di ciascuna fase intermedia 2 2 IL MODELLO DI PROCESSO A V 35 2 2 Il modello di processo a V Il modello di processo a V una variante del modello a cascata in cui si mettono in evidenza le fasi di collaudo e la loro relazione con le fasi di sviluppo precedenti La Fig 2 5 mostra un esempio di processo a V dallo standard IAEA TRS 384 6 Requisiti utente C SETT Specifica requisiti di sistema Test di convalida di sistema C ae Convalida Spec del sist di elaborazione Test di integ sist elaboraz C Progetto del software Integrazione sist di elaboraz C Programmazione a Test del software Figura 2 5 Un processo a V da IAEA TRS 384 modificato Verifica In questo particolare processo si intende per convalida la valutazione del sistema finale Inoltre questo processo descrive lo sviluppo del sistema in tegrato sistema costituito da hardware e software sistema di elaborazione com
136. ami links classi Gli oggetti che hanno la stessa struttura e comportamento sono rag gruppati in classi ed ogni oggetto un istanza di qualche classe Una classe quindi descrive un insieme di oggetti che hanno la stessa struttura cio lo stesso insieme di attributi e lo stesso comportamento ma so no distinguibili l uno dall altro e in generale ma non necessariamente hanno diversi valori degli attributi associazioni Un associazione sta ad un legame come una classe sta ad un oggetto un associazione un insieme di link simili per struttura e significato altre relazioni Si possono rappresentare altri tipi di relazioni fra cui la generalizzazione Osserviamo che questa una relazione fra classi corrispondente all inclusione nella teoria degli insiemi non fra oggetti 92 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 3 5 1 L UML Lo UML 28 si basa su una notazione grafica orientata agli oggetti appli cabile dalla fase di analisi e specifica dei requisiti alla fase di codifica anche se non vincola quest ultima fase all uso di linguaggi orientati agli oggetti un sistema progettato in UML pu essere implementato con linguaggi non orientati agli oggetti sebbene questi ultimi ovviamente non siano la scelta pi naturale Per il momento studieremo alcuni aspetti dell UML relativi alla fase di analisi e specifica Il linguaggio UML la cui standardizzazione curata dall OMG Object Management Group
137. analisi dei requisiti ma c una componente di progettazione per definire un architettura iniziale ad alto livello non eseguibile Pu esere richiesta anche l attivit di implementazione se si realizzano dei prototipi Nella fase 40 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO di elaborazione le cinque attivit tendono ad avere pesi simili nello sforzo complessivo con la tendenza per le attivit di analisi a decrescere nelle ite razioni finali in termini di lavoro impegnato mentre le attivit di progetto e implementazione crescono corrispondentemente Nella fase di costruzione sono preponderanti le attivit di progetto e implementazione ma non sono ancora terminate quelle di analisi essendo previsto come in tutti i processi evolutivi che i requisiti possano cambiare in qualunque momento Natural mente un accurato lavoro di analisi dei requisiti nelle fasi iniziali render poco probabile l eventualit di grandi cambiamenti nelle fasi finali per cui ci si aspetta che in queste ultime i cambiamenti siano limitati ed abbiano scarso impatto sull architettura del sistema Infine nella fase di transizione i requisiti dovrebbero essere definitivamente stabilizzati e le attivit di proget to e implementazione dovrebbero essere limitate alla correzione degli ultimi errori attivita fasi Inizio Elaborazione Costruzione Transizione Raccolta dei requisiti Analisi i i Progetto Implementazione root rod i
138. and computer architectures of existing simulator systems BBB Risks The available literature may not be sufficient for the pro posed objective and the interviewed manufacturers may not be well disposed to give the requested information since this might be regarded as industrial know how The partners could propose to sign an agreement whereby they D 5 GESTIONE DELLE CONFIGURAZIONI 267 commit themselves to use the information only for the project and not to transfer them to any third party utile osservare che nell introduzione c un paragrafo riguardante la possibilit di modificare il piano di lavoro ed accenna implicitamente senza specificarle a delle procedure di modifica indicando le strutture ed orgna nizzazioni competenti comitato di gestione e Comunit Europea Viene inoltre messo in evidenza un cammino critico e vengono proposte delle azioni da prendere nel caso che il progetto subisca ritardi Ogni workpackage affidato ad un partner come risulta dalla tabella che ha il ruolo di coordinatore per tale workpackage a cui contribuiscono per anche gli altri partner Quindi la descrizione di ogni workpackage di ogni task e di ogni attivit entro i task specifica il partner responsabile In particolare La descrizione di ciascun task ha una voce Effort che specifica il contributo in mesi uomo di ciascuna organizzazione Nella descrizione dei singoli task la prima voce Baselines definisce il
139. ansizione grado 0 la transizione non pu mai scattare grado 1 esiste almeno una marcatura raggiungibile in cui la transizione pu scattare grado 2 per ogni intero n esiste almeno una sequenza di scatti in cui la transizione scatta almeno n volte quindi possibile per qualsiasi n scegliere una sequenza in cui la transizione scatta n volte ma poi la transizione pu non scattare pi grado 3 esiste almeno una sequenza di scatti in cui la transizione scatta infinite volte grado 4 per ogni marcatura M raggiungibile da Mo esiste una sequenza di scatti che a partire da M abilita la transizione si dice che la transizione viva Osserviamo che per una transizione vitale al grado 3 esiste almeno una sequenza si scatti e quindi di marcature in cui scatta infinite volte per sono possibili anche sequenze di scatti in cui ci non accade perch portano la rete in una marcatura a partire da cui la transizione non pu pi scattare Per una transizione viva grado 4 sempre possibile portare la rete in una marcatura ove la transizione abilitata Una rete P T si dice viva se e solo se tutte le sue transizioni sono vive Consideriamo per esempio la rete di Fig B 9 Questa rete modella due processi A e B che devono usare in modo concorrente due risorse queste ultime sono rappresentate dai place Rj ed R Dalla marcatura iniziale possibile arrivare per esempio attraverso la sequenza di scatti t1t3t t5 ad una mar
140. appresentando espli citamente l interfaccia separandola dall implementazione file Shape h class IShape public virtual void draw 0 virtual void move Point p 0 class Shape public IShape Point position public virtual void draw 0 virtual void move Point p position p class Circle public Shape bi ses public void draw cout lt lt drawing Circle n F3 class Square public Shape Iara public void draw cout lt lt drawing Square n void drawall IShape shps for int i 0 i lt 2 i shps i gt draw main IShape shapes 2 shapes 0 new Circle shapes 1 new Square drawall shapes In questa versione la classe IShape definisce l interfaccia comune a tutti gli oggetti che possono essere disegnati o spostati la classe Shape definisce la parte comune delle loro implementazioni il fatto di avere una posizione e un operazione che modifica tale posizione e le classi rimanenti definiscono concretamente i metodi per disegnare le varie figure Questa struttura si pu schematizzare come in Fig 5 6 154 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI agi use GUI US __3 interface SER IShape drawall draw move Circle I Shape draw position Point move Square draw Figura 5 6 Esempio polimorfismo 3 5 1 4 Eredit multi
141. are in realt la correzione di errori presenti nel prodotto consegnato al committente oppure l aggiornamento del codice allo scopo di fornire nuove versioni Questa attivit consiste nel modi ficare e ricostruire il software Si dovrebbe quindi parlare di riprogettazione piuttosto che di manutenzione La scoperta di errori dovrebbe portare ad un riesame critico del progetto e delle specifiche ma spesso nella prassi comune questo non avviene particolarmente quando si adotta il modello a cascata La manutenzione avviene piuttosto attraverso un rattoppo patch del co dice sorgente Questo fa s che il codice non corrisponda pi al progetto per cui aumenta la difficolt di correggere ulteriori errori Dopo una serie di operazioni di manutenzione il codice sorgente pu essere talmente degradato da perdere la sua struttura originaria e qualsiasi relazione con la documen tazione In certi casi diventa necessario ricostruire il codice con interventi di 32 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO reingegnerizzazione reengineering o reverse engineering L uso di strumen ti per la gestione delle versioni rende molto piu facile e controllabile l attivit di manutenzione Per contenere i costi e gli effetti avversi della manutenzione necessario tener conto fin dalla fase di progetto che sar necessario modificare il soft ware prodotto Questo principio chiamato progettare per il cambiamento design for change
142. ario mentre in una comunicazione asincrona il mittente prosegue l esecuzione senza aspettare la risposta che pu anche non esserci Quando richiesta una comunicazione sincrona il blocco del mitten te avviene automaticamente se la comunicazione avviene per mezzo di una normale chiamata di procedura altrimenti il meccanismo di comunicazione che deve sospendere il mittente In ogni caso si cerca di usare un meccani smo di comunicazione fornito dal linguaggio di programmazione da librerie o dal sistema operativo ma in certi casi necessario o conveniente realizzare dei meccanismi ad hoc Questi sono basati su strutture dati condivise come code o liste che quindi richiedono le tecniche viste precedentemente 5 3 I Design pattern Nel progetto dei sistemi software esistono dei problemi che si presentano entro svariati campi di applicazione con diverse forme e varianti ma con una struttura comune Per questi problemi esistono delle soluzioni tipiche la cui 5 3 I DESIGN PATTERN 179 utilit stata verificata con l esperienza di numerosi sviluppatori nell ambito di progetti diversi Tali soluzioni sono chiamate design pattern 13 ed esiste una letteratura abbastanza vasta che elenca numerosi pattern fornendo allo sviluppatore un ricco armamentario di strumenti di progetto Un pattern consiste nella descrizione sintetica di un problema e della relativa soluzione Questa viene descritta in forma sia grafica che testua le
143. ati rappresentati per 160 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI stadio 1 stadio 2 stadio 3 pipeline client 1 comp 1 server repository client 2 comp 2 client server a 1 livello repository client 1 server backend client 2 client server a 2 livelli two tier Figura 5 12 Architetture standard mezzo di package I quattro sottosistemi dello strato Registri sono partizioni dello stesso e anch esse avrebbero potuto essere messe in evidenza con dei package Un altro modo di rappresentare una struttura a strati e partizioni viene mostrato in Fig 5 14 Questo stile non fa parte del linguaggio UML ma molto diffuso assieme alla variante in cui i vari strati sono disegnati come corone circolari concentriche 5 2 2 Librerie e framework Durante la scomposizione in sottosistemi bisogna infine considerare la di sponibilit di librerie e di framework Precisiamo che qui usiamo il termine libreria in un significato diverso da quello comune di solito si intende con questo termine un componente fisico cio un file contenente dei moduli collegabili p es i file a e so sui sistemi Unix lib e dl1 sui sistemi Windows o analoghi moduli precompilati per linguaggi interpretati come i file jar in ambiente Java Qui invece parliamo di librerie e framework dal punto di vista
144. ati alle funzioni Le notazioni orientate alle funzioni servono a descrivere l aspetto funzionale dei sistemi cio le elaborazioni che vengono compiute sui dati In queste notazioni il sistema viene descritto in termini di blocchi funzionali collegati da flussi di dati da elaborare e questi blocchi a loro volta vengono scomposti in blocchi pi semplici Osserviamo che questo metodo oltre che per la specifica dei requisiti si presta alla specifica del progetto cio a descrivere come viene realizzato il sistema In questo caso i blocchi funzionali vengono identificati con i sottosistemi che implementano le funzioni specificate In questi formalismi la rappresentazione grafica si basa sui diagrammi di flusso dei dati DFD nei quali il sistema da specificare viene visto come una rete di trasformazioni applicate ai dati che vi fluiscono I DFD permettono il raffinamento della specifica mediante scomposizione ogni nodo funzione pu essere scomposto in una sottorete Le metodologie basate sulla scom posizione di funzioni di trasformazione dei dati sono indicate col termine Structured Analysis Structured Design SA SD La scomposizione di ogni funzione deve rispettare il vincolo della continuit del flusso informativo cio B 5 FORMALISMI ORIENTATI ALLE FUNZIONI 223 i flussi attraversanti la frontiera della sottorete ottenuta dall espansione di un nodo devono essere gli stessi che interessano il nodo originale Ogni funzione pu e
145. ati di stato sono asserzioni sullo stato del sistema fisico di cui fa parte il software da analizzare Gli eventi sono suddivisi in eventi esterni causati dall ambiente esterno eventi iniziali che segnano l inizio di un azione eventi finali che ne segnano la fine eventi di transizione che segnano i cambiamenti in qualche attributo del sistema I vincoli temporali sono asserzioni sui valori assoluti degli istanti in cui si verificano gli eventi I vincoli possono essere periodici se prescrivono che le occorrenze di un evento si verifichino con una certa frequenza sporadici se prescrivono che un occorrenza di un evento avvenga entro un certo tempo dopo l occorrenza di un altro evento La sintassi del RTL comprende delle costanti che denotano eventi azio ni e numeri interi ed operatori per rappresentare la struttura delle azioni composte La funzione di occorrenza e i denota l istante dell i esima occorrenza dell evento e I predicati di stato vengono espressi specificando l intervallo di tempo in cui sono o devono essere veri Il linguaggio del RTL include i comuni connettivi logici e gli operatori aritmetici e relazionali La parte deduttiva della RTL si basa su una serie di assiomi che descri vono le propriet fondamentali di eventi e azioni ricorrendo alla funzione di occorrenza Per esempio la funzione di occorrenza stessa soddisfa per ogni evento E i seguenti assiomi Vi E i t gt t gt 0 Vivj 0
146. atori e quindi le esigenze dei programmatori Anzi accadeva spesso che utente e programmatore fossero la stessa persona Un altro aspetto caratteristico di quel periodo il fatto che spesso un applicazione venisse prodotta ad hoc per un particolare problema e venisse abbandonata una volta soddisfatta quella particolare necessit La produzione del software in quel periodo era quindi paragonabile ad un arte nel senso che era dominata dall inventivit individuale e da un organizzazione del lavoro molto lasca tralasciamo qui altri aspetti pur importanti legati alle tecniche di programmazione ed agli strumenti di sviluppo in quel periodo assai limitati In una fase successiva in seguito allo sviluppo delle applicazioni infor matiche estese dal campo scientifico a quello commerciale e amministrativo i nuovi utenti del software hanno formazioni culturali diverse da quella dei programmatori Questi ultimi devono quindi imparare ad affrontare proble mi di tipo nuovo ed a comunicare efficacemente con persone che non solo non hanno le conoscenze necessarie a capire gli aspetti tecnici della programma zione ma non hanno neppure alcuna motivazione pratica per interessarsene Inoltre le applicazioni richieste hanno un peso economico sempre maggiore 1 2 IL SOFTWARE DIVERSO 11 ed un ruolo sempre pi critico nelle organizzazioni che ne fanno uso I pro grammatori assumono quindi una figura professionale distinta ed il lavoro viene
147. aziente gt infermiere locale centrale limiti d dati formatt limiti paziente rapporto archivio paziente dati rapp infermiere Figura B 4 Secondo livello dati paz gt polso dati temper allarme pressione gt valuta ris confronto violazioni limiti limiti press polso temp data e ora pal formatt Figura B 5 Terzo livello parziale B 6 La notazione Z La notazione Z 31 uno dei pi noti formalismi di specifica basati sulla logica Le basi di questo formalismo sono una logica del primo ordine con teoria dell uguaglianza la teoria degli insiemi di Zermelo Fraenkel un sistema deduttivo basato sulla deduzione naturale un linguaggio di schemi che permette di strutturare una specifica in un insieme di definizioni raggruppate in moduli B 7 LA REAL TIME LOGIC 225 La sintassi della logica usata da Z leggermente diversa da quella usata in queste dispense La teoria degli insiemi comprende i concetti relativi alle relazioni e alle funzioni nonch all aritmetica ed usa un grande numero di operatori che permettono di esprimere sinteticamente le propriet delle entit specificate Il sistema di deduzione naturale a differenza dei sistemi minimi visti finora sfrutta molte regole di inferenza associate agli operatori logici e ma tematici del linguaggio Questo permette di costruire dimostrazioni pi facilmente
148. azione delle formule stabilisce il significato delle formule di qualsivoglia complessit Come nel calcolo proposizionale la funzione di interpretazione ha una definizione ricorsiva e si applica analizzan do ciascuna formula nelle sue componenti Le formule pi semplici formule atomiche sono costituite da simboli di predicato applicati ad n uple di ter mini quindi il valore di verit di una formula atomica fornito dalla funzione II dipende dall assegnamento dei termini La definizione della funzione di interpretazione per le formule quantificate rispecchia la comune nozione di quantificazione esistenziale ed universale a dispetto della notazione un po oscura qui adottata L espressione S7 x 4 come abbiamo visto definita come la funzione di interpretazione uguale a 74 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI simbolo funzione interpretazione simbolo comune f D somma b D uno 1 x E tre 3 p II minore o uguale lt Tabella 3 2 Esempio di interpretazione Sr eccetto che assegna alla variabile x il valore d Questo significa che per vedere se una formula quantificata sulla variabile x vera non ci interessa il valore attribuito a x dal particolare assegnamento ma l insieme dei possi bili valori di x indipendentemente dall assegnamento per la quantificazione esistenziale vediamo se almeno uno dei valori possibili soddisfa la formula compresa nel campo del quantificatore per la quantificazion
149. azione check Queste interfacce sono implementate da due database diversi XDB e YDB a cui l applicazione deve poter accedere scegliendone una all inizio dell esecuzione e senza dover controllare il tipo di database do po che stato scelto cio non si devono usare istruzioni if prima di ogni operazione di accesso La Fig 5 31 mostra una soluzione di questo proble ma Si definisce un interfaccia DBFactory per creare istanze di Connection Subject request Li request gt RealSubject eae Proxy a request request dai Figura 5 30 Design pattern Proxy 184 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI interface BERE DBFactory i 1 i i i mkConnection in db string in cred Credentials Connection mkCredentials in certfile string Credentials XDBFactory mkConnection in db string in cred Credentials XDBConnection mkCredentials in certfile string XDBCredentials i i i i i i i i interface f i i i i i i i i i create create interface YDBFactory mkConnection in db string in cred Credentials YDBConnection mkCredentials in certfile string YDBCredentials create interface Credentials interface Connection query in q string string check boolean y T i i i i i i i i
150. azione e di teorema Una teoria formale data da 1 un linguaggio 2 un insieme A eventualmente infinito di formule di chiamate assiomi 3 un insieme finito di regole di inferenza fra formule di Se T un insieme di formule dette ipotesi o premesse F una formula da dimostrare e A una sequenza di formule allora si dice che A una dimostrazione o deduzione di F da T se l ultima formula di A F e cia scun altra o i un assioma o ii una premessa o iii conseguenza diretta di formule che la precedono nella sequenza A Si dice quindi che F segue da T o conseguenza di I e si scrive DEF Se l insieme T delle premesse vuoto allora la sequenza A una dimo strazione di F ed F un teorema e si scrive LF 68 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Quindi in una teoria formale una dimostrazione una sequenza di for mule tali che ciascuna di esse o un assioma o conseguenza diretta di alcune formule precedenti e un teorema una formula che si pu dimostrare ricorrendo solo agli assiomi senza ipotesi aggiuntive Osservazione Notare la differenza fra dimostrazione di F e dimostrazione di F daT Una teoria formale per il calcolo proposizionale Una semplice teoria formale per il calcolo proposizionale pu essere definita come segue 23 e Il linguaggio costituito dalle formule ottenute a partire dai simboli proposizionali dai connettivi e g
151. ble amp Vector operator int i throw RangeExc if 0 lt i amp amp i lt size return plil else throw RangeExc In questo esempio gli operandi delle istruzioni throw sono i costruttori delle due classi tali costruttori producono oggetti vuoti Le istruzioni la cui esecuzione pu sollevare un eccezione che vogliamo gestire vengono raggruppate in un blocco try Questo blocco viene seguito dagli handler include lt iostream gt include Vector h double g Vector v int i return vli F 1 INCAPSULAMENTO E RAGGRUPPAMENTO IN C 283 main eccezioni non gestite Vector v 4 for int i 0 i lt 4 i v i i 2 3 try eccezioni catturate double x g v 5 cout lt lt x lt lt endl catch Vector RangeExc cerr lt lt Range Exception lt lt endl catch Vector SizeExc cerr lt lt Size Exception lt lt endl Se si verificano eccezioni nell esecuzione di istruzioni esterne al blocco try queste eccezioni vengono propagate lungo la catena delle chiamate finch non si trova un gestore Se non ne vengono trovati il programma termina Si possono associare informazioni alle eccezioni usando classi non vuote class Vector public enum max 32000 class RangeExc public int index RangeExc int i index i class SizeExc Vector int s throw SizeExc double amp operator int i throw RangeExc F double amp Vector
152. catura in cui M p3 M p 1 e la marcatura degli altri place zero In questa marcatura le transizioni t3 e t4 non possono scattare e inoltre non possibile raggiungere una marcatura in cui esse siano abilitate in questa marcatura hanno una vitalit di grado zero Questo significa che ciascuno dei due processi ha acquisito una delle due risorse e nessuno pu procedere non potendo acquisire la risorsa mancante Questa una tipica situazione di deadlock Si pu evitare il deadlock modificando il sistema in modo che ciascun processo acquisisca le due risorse in un solo passo Questo comportamento B 8 RETI DI PETRI 237 Figura B 9 Un sistema con possibilit di deadlock modellato dalla rete di Fig B 10 In questo caso tutte le transizioni hanno vitalit di grado 4 Ricordiamo per che l abilitazione di una transizione non implica il suo scatto effettivo possibile che il conflitto fra ts e t venga sempre risolto a favore della stessa transizione Questa una situazione di starvation B 8 7 Reti limitate Nel modello generale delle reti di Petri non si pongono limiti al valore della marcatura di ciascun place ma ciascuna rete a seconda della sua struttura e della marcatura iniziale pu essere tale che esistano limiti alla marcatura di 238 APPENDICE B FORMALISMI DI SPECIFICA Figura B 10 Una soluzione per evitare il deadlock ciascun
153. ccanismi di base per la concorrenza Per trattare anche se a livello introduttivo il progetto di sistemi concorrenti conviene richiamare alcuni concetti fondamentali rimandando uno studio pi approfondito ad altri insegnamenti Lo stato di un programma sequenziale in qualsiasi passo delle sua esecu zione definito dal valore del contatore di programma e dal contenuto dello stack della memoria di lavoro cio l insieme delle variabili definite nel pro gramma e delle strutture dati usate dal sistema operativo che si riferiscono al programma L insieme di queste informazioni insieme al codice macchina del programma costituisce il processo associato ad un istanza di esecuzione Fra queste informazioni il contatore di programma e lo stack definiscono il flusso di controllo thread of control del processo Il programmatore usa delle chiamate di sistema come le primitive fork ed exec nei sistemi Unix per creare i processi Altre primitive oppure chiamate di libreria a livello pi alto delle primitive di nucleo permettono la comunicazione interprocesso e la sincronizzazione fra processi Sempre riferendoci ai sistemi Unix fra i meccanismi di comunicazione interprocesso citiamo i pipe i socket e la memoria condivisa fra i meccanismi di sincro nizzazione la chiamata wait e i semafori Usando questi strumenti si pu progettare un applicazione concorrente composta da pi processi La maggior parte dei sistemi operati
154. cerca a sua volta richiede un operazione di confronto Le parole chiave servono a distinguere diversi tipi di elementi di modello mentre gli stereotipi sono specializzazioni di altri elementi di modello Hanno la stessa sintassi 136 CAPITOLO 4 IL PROGETTO interface Stream open close Kp Socket read write d REI File Stream Figura 4 3 Interfacce in UML 1 write La funzione di hash e l operazione di confronto dipendono dalla struttura degli elementi da memorizzare si hanno diverse implementazioni a seconda che gli elementi siano per esempio stringhe di caratteri o immagini digi tali Se vogliamo far s che la classe HashTable sia indipendente dal tipo di elementi che deve contenere si ricorre al principio di divisione delle re sponsabilit alla tabella di hash spetta il compito di ordinare e ricercare gli elementi in base ai risultati della funzione di hash e dell operazione di con fronto mentre agli elementi spetta il compito di fornire l implementazione di queste due operazioni L insieme delle operazioni richieste da HashTable per il suo funziona mento interfaccia richiesta definito dall interfaccia HTKey contenente le operazioni equals per confrontare due elementi e hash per calcolare la fun zione di hash Questa relazione fra HashTable e HTKey una dipendenza rappresentata dalla freccia tratteggiata Gli elementi che vog
155. che possono essere spediti come segnali da un oggetto all altro In questo modo le classi che rappresentano eccezioni hanno lo stereotipo exception gt La dipenden za stereotipata lt send gt associa le eccezioni alle operazioni che le possono sollevare come in Fig 4 13 Vector exception send RangeExc operator in i int double amp f 77 gt constructor send index int Vector in size int 777777 rarest y exception SizeExc Figura 4 13 Eccezioni in UMLI In UML2 le eccezioni non sono viste come segnali ma come oggetti che 144 CAPITOLO 4 IL PROGETTO vengono creati quando l esecuzione di un azione incontra una situazione ano mala e vengono passati come parametri d ingresso ad un altra azione il ge store di interruzioni Questo meccanismo viene modellato nel diagramma di attivit con apposite notazioni che non tratteremo limitandoci a mo strare come esempio un frammento di un possibile diagramma di attivit Fig 4 14 Nel diagramma delle classi le eccezioni che si possono solle vare nel corso di una operazione possono essere elencate come valori della propriet exceptions associata all operazione allocate_vector sizeHandler Le ia CY use_vector Fe rangeHandler p tS Figura 4 14 Eccezioni in UML2 SizeExc Letture Obbligatorie Cap 3 e 4 Ghezzi Jazaye
156. che tempo se ne fa una nuova versione Nello sviluppare questa versione una soluzione imple mentativa imposta dai requisiti o dai vincoli viene scambiata per una scelta di progetto e viene sostituita da una versione alternativa che pu aggiun gere qualcosa al sistema originale per non rispetta i requisiti e i vincoli risultando quindi insufficiente Supponiamo per esempio che i documenti di specifica chiedano che i record di un database possano essere elencati in ordi ne alfabetico e che durante lo sviluppo dell applicazione venga comunicato senza aggiornare la documentazione che deve essere rispettato un limite sul l uso di memoria centrale Conseguentemente sceglieremo un algoritmo di ordinamento efficiente in termini di memoria anche se pi lento di altri Se una versione successiva dell applicazione viene sviluppata da persone ignare del vincolo sulla memoria queste potrebbero sostituire l algoritmo con uno pi veloce ma richiedente pi memoria ed in questo modo verrebbe violato il vincolo con la possibilit di malfunzionamenti 1 4 3 Modelli e linguaggi Per quanto esposto nella sezione precedente il processo di sviluppo del soft ware si pu vedere come la costruzione di una serie di modelli Un modello una descrizione astratta di un sistema che serve a studiarlo prendendone in considerazione soltanto quelle caratteristiche che sono necessarie al consegui mento di un certo scopo Ogni sistema quindi dovr
157. cia viene usata in riferimento alla sola parte offerta Le risorse offerte da un modulo possono essere strutture dati operazioni e definizioni di tipi L interfaccia di un modulo pu specificare un protocollo cio un insieme di vincoli sulle possibili sequenze di scambi di messaggi o chiamate di operazioni fra il modulo e i suoi clienti Alle operazioni si pos sono associare precondizioni e postcondizioni v oltre Infine l interfaccia pu specificare le eccezioni cio condizioni anomale che si possono verifica re nell uso del modulo In generale un modulo pu anche offrire l accesso diretto cio senza la mediazione di procedure apposite alle proprie struttu re dati ma questa pratica sconsigliata perch come verr illustrato va a detrimento della modularit L interfaccia di un modulo una specifica che viene realizzata dall implementazione del modulo Possiamo distinguere fra implementazioni composte in cui l interfaccia del modulo viene implementata per mezzo di pi sottomoduli e implementazioni semplici in cui l implementazione costituita da definizioni di dati e operazioni in un qualche linguaggio di programma zione appartiene al modulo stesso La Fig 4 2 riassume schematicamente la definizione di modulo qui esposta L interfaccia e l implementazione definiscono un modulo logico cio un en tit astratta capace di interagire con altre entit Nella fase di codifica ven gono prodott
158. ciclo interno viene eseguito M t 1 volte e all uscita del ciclo vm_z 2 lt Vy z1 Quindi gli ultimi 7 2 elementi sono ordinati La ii quindi dimostrata La formula iii si ottiene dalla ii ponendovi M 1 essendo M 1 l ultimo valore assunto da i Risulta quindi che all uscita del ciclo esterno il vettore ordinato q e d Osserviamo che sono state sviluppate delle logiche destinate espressa mente alla verifica del software fra le quali la pi nota la logica di Floyd e Hoare 12 17 3 4 LOGICA 79 Un altra teoria formale per la FOL il calcolo dei sequenti Il calcolo dei sequenti un sistema formale il cui linguaggio ha come espres sioni principali i sequenti formule aventi questa struttura Ai Ag n F Bi Bays cig Bm ove gli A sono detti antecedenti o collettivamente l antecedente ed i Bi conseguenti il conseguente Il simbolo che qui chiameremo simbolo di sequente si pu leggere comporta yields Ciascun A e Bi a sua volta una formula qualsiasi del linguaggio visto nelle sezioni precedenti o anche di altri linguaggi purch non contenga il simbolo di sequente Informalmente un sequente pu essere considerato come una notazione alternativa per questa espressione Aj A Aah onc Ay gt BrV Ba Vos Vba per cui un sequente corrisponderebbe all implicazione fra la congiunzione de gli antecedenti e la disgiunzione dei conseguenti Questa cor
159. come si dice off the shelf generalmente forniti da produttori esterni e non modificabili Nella maggior parte dei casi l uso di tali componenti molto vantaggioso dal punto di vista sia del processo di sviluppo che della qualit e in particolare dell affidabilit del prodotto finale Ovviamente una scelta accurata fra i componenti disponibili ha un importanza cruciale per il successo del progetto e questa scelta dipende sia da fattori tecnici come le funzioni e prestazioni dei 162 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Presentazione Amministrazione RegistroBibliotecari RegistroPrestiti Catalogo RegistroUtenti Persistenza Database Figura 5 14 Scomposizione per strati e partizioni componenti sia da fattori economici ed organizzativi come le licenze d uso e l assistenza tecnica Se fra i componenti pre esistenti non se ne trovano di adatti allo scopo naturalmente resta la possibilit di svilupparli ex novo Infine conviene ricordare che una libreria o un framework possono essi stessi essere sviluppati e venduti come prodotto finale Librerie Una libreria pu essere una raccolta di sottoprogrammi globali cio non ap partenenti a classi o di classi Fig 5 15 In tutti e due i casi l insieme delle operazioni disponibili viene chiamato interfaccia di programmazione o API Application Programming Interface Nel primo caso la libreria si pu rappresentare in UML c
160. decisione la seguente 1 1 1 0 0 0 0 2 00 0 0 1 1 3 e ae ee OL 20 LTL 50 0 1 0 0 0 1 al OO 2 2 0 po 52 101 D 1 0 La prima colonna per esempio rappresenta la situazione in cui la condizione 1 vera le condizioni 2 e 3 sono false e conseguentemente le condizioni 50 e 51 sono false e la condizione 52 vera In forma grafica si usano grafi causa effetto i cui nodi terminali sono condizioni sui dati di ingresso cause e sui dati di uscita effetti ed i nodi interni sono condizioni intermedie ciascuna espressa come combinazione lo gica semplice AND OR NOT delle rispettive cause La Fig 6 1 mostra il grafo corrispondente all esempio gi esaminato 6 4 CppUnit e Mockpp I framework CppUnit servono a facilitare la scrittura di programmi di test sia nel test di unit che nel test di integrazione La Fig 6 2 mostra l archi tettura di un generico sistema in cui mettiamo in evidenza un componente da collaudare Supponendo che prima di UnderTest sia stato implementato e collaudato solo il componente Provider1 bisogna realizzare l infrastruttura di test test harness mostrata in Fig 6 3 I framework CppUnit e Mockpp servono a realizzare ripettivamente i driver e gli stub 6 4 CPPUNIT E MOCKPP 199 not e and not Figura 6 1 Grafo causa effetto 6 4 1 Il framework CppUnit Per eseguire un test con questo framework il collaudatore deve scrivere
161. delle singole classi si posso no fare delle operazioni di ristrutturazione per esempio scomponendo una classe in classi pi piccole oppure riunendo pi classi in una o ridistri buendo fra pi classi le rispettive operazioni sempre cercando la massima coesione entro ciascuna classe possibile anche riorganizzare le gerarchie di generalizzazione 5 5 2 Progetto delle associazioni Le associazioni rappresentano i percorsi logici attraverso cui si propagano le interazioni fra i vari oggetti Nel progetto delle associazioni si cerca di ottimizzare tali percorsi ristrutturandoli se necessario per esempio aggiun gendo associazioni ausiliarie che permettono un accesso pi efficiente o anche eliminando associazioni ridondanti Le associazioni devono poi essere ristrutturate in modo da permettere la loro implementazione nei linguaggi di programmazione Questi infatti non hanno dei concetti primitivi che corrispondano direttamente alle associazio ni che devono quindi essere tradotte in concetti a pi basso livello A questo scopo bisogna prima di tutto che le associazioni definite nel modello di analisi ed eventualmente nel modello architetturale vengano specificate completa mente indicandone la navigabilit le molteplicit ed i nomi dei ruoli oppure il nome dell associazione Avendo precisato queste informazioni si possono considerare i casi seguenti Fig 5 37 Associazioni da uno a uno e da molti a uno In questo caso l
162. dentificare con la sequenza di azioni svolte da un agente autonomo In un progetto orientato agli oggetti si definiscono attivi quegli oggetti che hanno la capacit di attivare un flusso di controllo Il flusso di controllo di un oggetto attivo costituito principalmente da chiamate di operazioni su oggetti detti passivi privi di un flusso di controllo indipendente ma in un sistema concorrente il flusso di controllo di un oggetto attivo pu interagire anche con quelli di altri oggetti attivi un oggetto attivo pu invocare opera zioni di altri oggetti attivi direttamente o inviando messaggi o condividere oggetti passivi con altri oggetti attivi Per esempio nel codice seguente ci sono due processi p1 e p2 i cui pro grammi principali sono oggetti attivi anche se sintatticamente non sono istanze di una classe Le istanze c1 e c2 delle classi class1 e class2 sono oggetti passivi attraversati dal flusso di controllo dei rispettivi processi class classi class class2 public public sub1 sub2 void void subi sub2 LP aa UL wes int int TRO pi sa p2 if fork 0 proc figlio class2 c2 execlp p2 NULL NULL c2 sub2 else proc padre classi ci ci subi In UML gli oggetti attivi e le relative classi sono caratterizzati dalla pro prieta isActive e vengono rappresentati con i lati verticali raddoppiati in 168 CAPITOLO 5 PROGETTO ORIE
163. descrive l attivit pu sempre essere di segnato all interno dello stato che la contiene Se non ci sono transizioni che attraversano il confine del sottodiagramma questo pu essere disegnato separatamente In generale qualsiasi stato superstato pu essere decomposto in sotto stati che ereditano le transizioni che coinvolgono il superstato 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 113 Consideriamo per esempio la macchina a stati associata all interazione fra l utente e un centralino Fig 3 24 Si suppone che l utente possa com porre numeri di tre cifre oppure premere un tasto che seleziona un numero memorizzato Il diagramma di questa macchina a stati non sfrutta la possibi lit di composizione gerarchica offerta dagli Statechart per cui le transizioni causate dagli eventi riaggancio devono essere mostrate per ciascuno stato successivo a quello iniziale sconnessione riaggancio Attesa memoria n rat riaggancio riaggancio 7 5 Attesa2 riaggancio Conversazione cifra n cifra n F Attesa3 Chiamata riaggancio accettazione ny Figura 3 24 Una macchina a stati non gerarchica Il diagramma si semplifica se raggruppiamo questi stati in un supersta to Attivo e ridisegnamo le transizioni come in Fig 3 25 La transizione in ingresso al superstato Attivo porta la macchina nel sottostato iniziale Attesal di quest ultimo mentre la transizione di completa
164. di programmazione costanti identificatori parole chiave Tuttavia come gi accennato i simboli dell alfabeto usa to nelle espressioni regolari possono rappresentare altri concetti come per esempio azioni o eventi Le espressioni regolari sono quindi uno strumen to di specifica molto flessibile La natura formale delle espressioni regolari fa s che un espressione si possa trasformare in altre espressioni equivalen ti di verificare l equivalenza di due espressioni e soprattutto di verifica re se una particolare stringa di simboli appartiene all insieme definito da un espressione 216 APPENDICE B FORMALISMI DI SPECIFICA Ricordiamo inoltre che le espressioni regolari oltre ad essere usate co me linguaggio di specifica hanno un ruolo importante nei linguaggi di pro grammazione come per esempio il Perl o negli strumenti per esempio i programmi sed e grep nei sistemi Unix dedicati all elaborazione di testi Esistono varie notazioni per le espressioni regolari e qui descriveremo un sottoinsieme della notazione impiegata dal programma Lex 20 Questo programma legge un file contenente la specifica di alcune espressioni regolari a ciascuna delle quali sono associate delle elaborazioni azioni e produce un programma in C che leggendo un file di testo riconosce le stringhe descritte dalle espressioni regolari e per ogni riconoscimento esegue le azioni associate Anche il linguaggio in cui sono scritte le espre
165. di un dipartimento L uso dei ruoli inoltre utile nelle autoassociazioni in cui oggetti di una classe sono collegati a oggetti della stessa classe come in Fig 3 10 La molteplicit di una classe in un associazione il numero di istanze di tale classe che possono essere in relazione con una istanza della classe associata L ordinamento e l unicit specificano rispettivamente quando la molte plicit maggiore di uno se le istanze di una classe associate ad una istanza dell altra sono ordinate o no e se alcune istanze possono avere duplicati Il qualificatore un attributo dell associazione che distingue i diversi oggetti di una classe che possono essere in relazione con oggetti dell altra Il qualificatore rappresenta cio un informazione che permette di individuare una particolare istanza fra molte di una classe associata Nella Fig 3 9 la penultima associazione mostra che un utente pu avere pi account e nell associazione successiva questa molteplicit viene ridotta a uno grazie al qualificatore uid che identifica i singoli account Altra propriet importanti il tipo di aggregazione aggregation kind e la navigabilit verranno descritte pi oltre Un associazione o un link nella forma pi semplice si rappresenta come una linea eventualmente spezzata o curva fra le classi o oggetti coinvolte Se un associazione coinvolge pi di due classi si rappresenta con una losanga unita da l
166. disponibili e le modalit di sviluppo per le alternative proposte insieme a una stima dei costi e dei tempi richiesti 2 1 2 Analisi e specifica dei requisiti Questa fase serve a capire e descrivere nel modo pi completo e preciso possi bile che cosa vuole il committente dal prodotto software La fase di analisi e specifica pu essere suddivisa nelle sottofasi di analisi dei requisiti dell utente e specifica dei requisiti del software La prima di queste sottofasi rivolta alla comprensione del problema dell utente e del contesto in cui dovr ope rare il sistema software da sviluppare richiede cio una analisi del dominio che porta all acquisizione di conoscenze relative all attivit dell utente stesso e all ambiente in cui opera L analisi dei requisiti dell utente pu essere ulteriormente suddivisa 29 in definizione dei requisiti e specifica dei requisiti la definizione dei requisiti descrive ad alto livello servizi e vincoli mentre la specifica pi dettagliata Anche se la specifica dei requisiti contiene tutte le informazioni gi fornite dalla definizione dei requisiti a cui ne aggiunge altre sono necessari tutti e due i livelli di astrazione in quanto la definizione dei requisiti essendo me no dettagliata permette una migliore comprensione generale del problema 26 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO Inoltre le descrizioni dei requisiti vengono usate da persone che hanno diver si ruoli
167. do metodico e pianificato e si deve avvalere di metodologie specifiche come previsto p es dallo standard ANSI IEEE 1008 1987 Standard for Software Unit Testing 2 In questo corso non si parler della programmazione di cui si suppongono noti i princip e le tecniche ma si indicheranno le caratteristiche dei linguaggi orientati agli oggetti che permettono di applicare alcuni concetti relativi al progetto del software Inoltre vogliamo accennare in questa sezione ad alcuni aspetti del lavoro di programmazione e ad alcuni strumenti relativi 30 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO Gestione delle versioni Durante la programmazione vengono prodotte numerose versioni dei componenti software ed importante conser vare e gestire tali versioni Uno strumento molto diffuso Subversion SVN che permette di gestire un archivio repository del codice sorgente a cui gli sviluppatori possono accedere in modo concorren te anche da locazioni remote Un altro strumento di questo tipo il Concurrent Versioning System CVS Configurazione e compilazione automatica Esistono strumenti che per mettono di automatizzare il processo di costruzione build compila zione e collegamento del software e di configurare questo processo cio di adattarlo a diverse piattaforme software Gli ambienti di svi luppo integrati integrated development environments IDE svolgono queste funzioni attraverso un interfaccia grafica che permett
168. documentazione fornita dall or ganizzazione richiedente relativa al sistema qualit e in seguito compie una verifica ispettiva audit inviando sul posto degli ispettori che visitano i vari reparti dell organizzazione ed intervistano il personale Se il risultato del l ispezione positivo viene emesso il certificato che valido per tre anni In questi tre anni devono essere svolte altre verifiche ispettive meno estese della prima per accertare che la conformit allo standard venga mantenuta e migliorata Il numero di verifiche svolte dopo la certificazione dipende dal certificatore pu quindi essere un fattore nella scelta del certificatore da par te del richiedente e va da una a quattro all anno Dopo tre anni necessario un nuovo processo di certificazione Nel corso dell ispezione si possono rilevare delle non conformit In questo caso vengono stabilite delle azioni correttive che saranno verificate in seguito E 3 IL CAPABILITY MATURITY MODEL 273 E possibile su iniziativa del richiedente svolgere un ispezione di prova prima della verifica ispettiva per la certificazione Le verifiche ispettive seguono la norma ISO 10011 E 3 Il Capability Maturity Model Il Capability Maturity Model CMM un modello sviluppato dal Software Engineering Institute della Carnegie Mellon University per valutare e quindi migliorare la qualit dei processi di sviluppo del software Il modello permette di valutare la ma
169. due le transizioni sono abilitate ma lo scatto di una disabilita l altra togliendo dei token dai place di ingresso comuni alle due transizioni La condizione N u 0 si dice conflitto strutturale e corrisponde all esistenza di place di ingresso in comune fra le due transizioni concorrenza due transizioni t ed u si dicono n concorrenza effettivain una marcatura M se e solo se M t A M u AVpertreu M p gt W p t W p u B 8 RETI DI PETRI 233 Questa condizione significa che tutte e due le transizioni sono abili tate e possono scattare tutte e due in qualsfasi ordine poich non si influenzano a vicenda Un caso particolare di concorrenza effettiva la concorrenza strutturale data dalla condizione N u 0 in questo caso le due transizioni non hanno place di ingresso in comune B 8 4 Esempio In questo esempio modelliamo un programma concorrente costituito da tre processi Rappresentiamo il programma in linguaggio Ada In Ada un pro cesso costituito da un sottoprogramma di tipo task Un task pu contenere dei sottoprogrammi detti entries che possono essere invocati da altri task con delle istruzioni di entry call Quando un task cliente invoca un entry di un altro task server i due task si sincronizzano secondo il meccanismo del rendezvous il corpo di una entry viene eseguito quando il server nella sua esecuzione arrivato all inizio dell entry istruzione accept e un clien te arrivat
170. e Informalmente il meccanismo di deduzione si pu descrivere in questo modo 1 si sceglie un insieme di formule che consideriamo valide a priori senza necessit di dimostrazione oppure che verifichiamo direttamente per mezzo della semantica 2 si definiscono delle regole dette d inferenza che date alcune formule valide con una certa struttura permettono di scrivere nuove formule valide 3 a partire dalle formule introdotte al punto 1 si costruiscono delle catene di formule applicando ripetutamente le regole d inferenza 3 4 LOGICA 67 4 ogni formula appartenente a una delle catene cos costruite si considera dimostrata sulla base delle formule che la precedono nella catena Regole di inferenza Una regola di inferenza una relazione fra formule per ogni n upla di formule che soddisfa una regola di inferenza R una determinata formula della n upla viene chiamata conseguenza diretta delle altre formule della n upla per effetto di R Per esempio una regola di inferenza potrebbe essere l insieme delle triple aventi la forma B A A B Questa regola si scrive generalmente in questa forma A lt A B B che si legge B conseguenza diretta di A e di A gt B Meno sinteticamente Se A valida ed A implica 8 allora possiamo dedurre che 8 valida Dimostrazioni e teoremi Possiamo ora introdurre il concetto di teoria o sistema formale nell mbito del quale si definiscono i concetti di dimostr
171. e Se la scelta del linguaggio ancora aperta si possono studiare i meccanismi di concorrenza usati dal linguaggio e valutare la loro adeguatezza al caso specifico Altri linguaggi come il C e il C non hanno istruzioni o tipi predefiniti per la concorrenza Sviluppando in questi linguaggi si presentano queste possibilit 1 usare direttamente le chiamate di sistema 2 incapsulare le chiamate di sistema in classi sviluppate ad hoc 3 usare librerie di classi che implementano i meccanismi di concorrenza offrendo un interfaccia orientata agli oggetti 4 usare librerie che implementano modelli di programmazione concorren te o parallela a livello pi alto dei meccanismi di base della concor renza L uso diretto delle chiamate di sistema complesso e prono ad errori per cui si preferiscono le altre alternative a meno che il sistema da sviluppare non sia molto semplice o non sia necessario avere un controllo molto fine sull esecuzione Per incapsulare le chiamate di sistema bisogna scrivere delle classi le cui interfacce siano pi semplici dell interfaccia di programmazione di sistema Per esempio la creazione di un thread Posix richiede l esecuzione di un cer to numero di chiamate che impostano vari parametri del thread incluso il sottoprogramma da eseguire Si pu allora definire una classe Thread il cui costruttore invoca tali chiamate per cui la creazione di un thread si riduce a istanziare questa classe
172. e associazione viene rappresen tata collegando alla linea dell associazione il simbolo della classe in forma estesa o ridotta mediante una linea tratteggiata Aggregazione La aggregazione un associazione che lega un entit complessa aggregato alle proprie parti componenti In un modello un associazione un aggrega zione se la propriet tipo di aggregazione all estremit dalla parte dell entit 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 99 complessa ha il valore shared Nei diagrammi di classi e di oggetti una rela zione di aggregazione viene indicata da una piccola losanga all estremita del l associazione dalla parte della classe o dell oggetto che rappresenta l entit complessa La differenza fra un associazione pura e semplice e un aggregazione non netta L aggregazione un annotazione aggiuntiva che esprime il concet to di appartenenza contenimento ripartizione o in generale di una forma di subordinazione strutturale non rigida Per esempio nella Fig 3 11 la relazione fra una banca e i suoi clienti viene modellata da una semplice associazione poich i clienti non fanno parte della loro banca mentre la relazione fra una squadra e i suoi giocatori si pu modellare pi accurata mente con una aggregazione In questo secondo caso per sarebbe stata accettabile anche una semplice associazione Banca Squadra i 11 Cliente G
173. e composizioni Ateneo Dipartimento 0 0 1 O lee afferisce nai Tt o iscritto 1A 1 1 direttore Studente Insegnamento Docente frequenta insegna 0 0 g dat Figura 3 15 Un diagramma delle classi 3 5 5 Meccanismi di estensione In UML esistono tre meccanismi di estensione che permettono di adattare il linguaggio a esigenze specifiche vincoli valori etichettati e stereotipi I vincoli sono annotazioni che descrivono determinate condizioni impo ste al sistema specificato come per esempio l insieme di valori ammissibili per un attributo o il fatto che certe relazioni fra oggetti siano mutuamente esclusive I vincoli possono venire espressi in linguaggio naturale oppu re nell Object Constraint Language OCL dell UML o in qualsiasi linguag gio appropriato La sintassi UML richiede che i vincoli vengano scritti fra parentesi graffe I valori etichettati tagged values sono delle propriet espresse da un nome e un valore che si possono associare ad elementi di modello Per 102 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI esempio ad un elemento si pu associare la propriet date il cui valore la data pi recente in cui quell elemento stato modificato date 1 apr 1955 Se una propriet ha un valore logico si scrive solo il nome della propriet nei casi in cui vera altrimenti si omette
174. e da istanze di pi classi o componenti cooperanti nel secondo caso possibile mostrare la struttura interna del componente come mostra la Fig 4 9 In questo esempio supponiamo che il componente venga implementato dalle istanze di alcune classi Le frecce fra i port e le interfacce delle classi rappresentano la relazione di delega ed possibile etichettarle esplicitamente con la parola chiave lt delegate gt gt Questa relazione mostra la provenienza o la destinazione delle comunicazioni chiamate di operazioni e trasmissioni di eventi passanti attraverso i port La linea fra l istanza di Amplif e quella di Tuning rappresenta l interazione fra queste due parti del componente 4 4 2 Moduli generici molto comune che un algoritmo si possa applicare a tipi di dato diversi per esempio un algoritmo di ordinamento si pu applicare a una sequenza di numeri interi o di reali o di stringhe oppure che diversi tipi di dati ottenuti per composizione di tipi pi semplici abbiano la stessa struttura per esempio liste di interi di reali o di stringhe I moduli generici permettono di mettere a fattor comune la struttura di algoritmi e tipi di dato mettendo in evidenza la parte variabile che viene rappresentata dai parametri del modulo Questo utile dal punto di vista della comprensibilit del progetto in quanto rende esplicito il fatto che certi componenti del sistema sono fatti allo stesso modo e da quello della facilit
175. e della classe derivata ereditano le caratteristiche di tutte le classi base Ovviamente stiamo usando il termine classe in modo diverso da come viene usato nelle scienze naturali Homo sapiens una specie appartenente alla classe Mammalia 106 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Aggregazione ricorsiva L uso combinato della generalizzazione e dell aggregazione permette di defi nire strutture ricorsive Nella Fig 3 18 il diagramma delle classi specifica la struttura delle operazioni aritmetiche e il diagramma degli oggetti ne mostra una possibile realizzazione Si osservi che mentre la specifica ricorsiva la realizzazione necessariamente gerarchica e1 BinaryExpression operator 11 Literal Expression rep 3 14 2 value 0 314 104 evaluate e2 BinaryExpression operator Literal Variable BinaryExpression 12 Literal rep string name string operator ArithOp rep 2 value float value float value 0 200 1011 evaluate evaluate evaluate vi Variable name x value 0 500 1010 Figura 3 18 Aggregazione ricorsiva fra classi Insiemi di generalizzazioni Nei modelli di analisi la relazione di generalizzazione viene usata spesso per classificare le entit del dominio analizzato mettend
176. e di creare e modificare i file sorgente e compiere tutte le operazioni di costruzione ma spesso utile ricorrere a strumenti a linea di comando che possono offrire allo sviluppatore un controllo pi fine sul processo di costru zione Alcuni di questi strumenti sono i programmi Make Automake Autoconf e Libtool noti collettivamente come Autotools Documentazione del codice possibile produrre la documentazione del codice usando strumenti come Dorygen Javadoc e simili Questi strumenti estraggono dal codice sorgente i commenti inseriti dal pro grammatore e producono documenti in HTML o PDF Notifica e archiviazione di malfunzionamenti Gli strumenti per il bug tracking per esempio Bugzilla permettono di segnalare agli sviluppa tori i guasti rilevati nell uso del software di archiviare tali notifiche e di tenere utenti e sviluppatori al corrente sui progressi nell attivit di debugging Test di unit Il test di unit pu essere parzialmente automatizzato grazie a strumenti come DejaGNU CppUnit mockpp Il prodotto della fase di programmazione e test di unit costituito dal codice dei programmi con la relativa documentazione e dalla documentazione http subversion tigris org 2Si pronuncia con l accento tonico sulla seconda sillaba Shttp www cvshome org http www gnu org manual http www doxygen org Shttp www oracle com technetwork java javase documentation index jsp 135444 htm
177. e l icona asso ciata ai tipi di file esterni 1 4 La selezione di un icona rappresentante un file esterno causa l ela borazione del file rappresentato per mezzo del programma asso ciato al tipo del file stesso Specifica dei requisiti del software 1 1 1 L utente pu definire i tipi dei file esterni sia per mezzo di ment che di finestre di dialogo opzionale la possibilit di definire i tipi dei file esterni per mezzo di file di configurazione modificabili dall utente 1 2 1 L utente pu associare un programma esterno ad un tipo di file esterno sia per mezzo di finestre di dialogo che di file di configurazione 1 2 2 L utente pu associare un icona ad un tipo di file esterno per mezzo di una finestra di selezione grafica chooser 1 3 1 L applicazione deve comprendere una libreria di icone gi pronte ed uno strumento grafico che permetta all utente di crearne di nuove 2 1 IL MODELLO A CASCATA 27 1 4 1 La selezione di un icona rappresentante un file esterno pu avvenire sia per mezzo del mouse che della tastiera Requisiti funzionali e non funzionali I requisiti possono essere funzionali o non funzionali I requisiti funzionali descrivono cosa deve fare il prodotto generalmente in termini di relazioni fra dati di ingresso e dati di uscita mentre i requisiti non funzionali sono caratteristiche di qualit come per esempio l affidabilit o l usabilit oppure vincoli di varia natura Di questi
178. e propriet che serve da guida per il programmatore nella scelta della classe contenitore oppure rappresentare questa classe esplicitamente Associazioni da molti a molti Questo tipo di associazione si realizza introducendo una classe intermedia come in Fig 5 37 e risolvendo le asociazioni risultanti come nei casi prece 190 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI denti Letture Obbligatorie Cap 4 Ghezzi Jazayeri Mandrioli Pattern Composite Adapter Bridge Proxy Abstract Facory Iterator su Gamma et al Facoltative Dispense sul sito del corso I http www ing unipi it a009435 issw esercitazioni 1213 design ptns Capitolo 6 Convalida e verifica Ogni attivit industriale richiede che vengano controllate la correttezza la funzionalit e la qualit dei prodotti finiti dei prodotti intermedi e dello stesso processo di produzione Come spiegato nella Sez 2 1 7 nell attivit di convalida i prodotti vengono confrontati con i requisiti dell utente mentre nella verifica il confronto avviene con le specifiche Ricordiamo che i requisiti sono generalmente imprecisi e necessariamente informali mentre le specifiche risultanti dalla fase di analisi dei requisiti sono precise e possono essere for mali La verifica pu quindi contare su procedimenti pi metodici e rigorosi per non sufficiente ad assicurare la bont del prodotto poich le specifiche stesse che ne sono il punto di riferimento pos
179. e universale ve diamo se tutti i valori possibili la soddisfano In ambedue i casi per le altre variabili si considerano i valori assegnati da Come esempio di interpretazione data la formula p f b x Ap b x si ha Srelp f b A p b x F se l interpretazione I e l assegnamento di variabili sono compatibili con le interpretazioni ed assegnamenti visti sopra Si verifica facilmente che I e trasformano la formula logica considerata nell espressione 1 3 lt 3 A 1 lt 3 La Tab 3 2 riassume le interpretazioni dei vari simboli Soddisfacibilit e validit Nel calcolo proposizionale l interpretazione di una formula dipende solo dalla sua struttura e in generale dalla funzione di valutazione Nella logica dei predicati le formule sono pi complesse e il loro valore di verit dipende oltre che dalla struttura della formula anche dal dominio di interpretazione dalle funzioni d interpretazione dei simboli di funzione e di predicato e dalla funzione di assegnamento di variabili Il dominio e le funzioni di interpreta zione costituiscono come abbiamo visto l interpretazione del linguaggio e ne definiscono l aspetto strutturale invariabile Anche nella logica dei predicati ci interessa studiare la dipendenza del valore di verit delle formule dall in terpretazione del linguaggio e dall assegnamento di variabili Di s guito le definizioni relative Una formula A soddisfacibile in un
180. e viene trasformata attraverso diversi passaggi usando le regole dell algebra fino alla forma finale Questa analogia per non perfetta perch nel caso delle equazioni la soluzione contiene la stesse informazioni dell equazione iniziale in forma esplicita invece che implicita mentre nel processo di sviluppo del software vengono introdotte nuove informazioni nei passi intermedi man mano che i Esempio Consideriamo per esempio un sistema di controllo contenente due sottosi stemi il sottosistema di acquisizione dati j formato dai due processi P e Q che controllano due sensori e il sottosistema di interfaccia S2 formato dai processi R ed S che devono visualizzare i dati su due schermi Il processo P 42 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO pu eseguire le azioni a comunicazione di dati e b attivazione di un allar me il processo Q le azioni c comunicazione di dati e d attivazione di un allarme il processo R l azione a e il processo S l azione c I due sensori sono indipendenti fra di loro e cos i due schermi quindi nel sottosistema S i processi P e Q si possono evolvere in modo concorrente senza alcun vincolo di sincronizzazione reciproca cos come i processi R ed S nel sottosistema Sz I due sistemi S ed Sg invece si devono scambiare informazioni attra verso le azioni a e c e quindi si devono sincronizzare in modo da eseguire contemporaneamente l azione a oppure l azione b La
181. edia fra quella di V e quella di gt Semantica La semantica di una logica del primo ordine data da l insieme IB T F le funzioni di verit di ciascun connettivo un insieme non vuoto D detto dominio dell interpretazione una funzione di interpretazione delle funzioni F Fp dove Fp l insieme delle funzioni su D assegna a ciascun simbolo n ario di funzione una funzione D D e una funzione di interpretazione dei predicati II P gt Rp dove Rp l insieme delle relazioni su D II assegna a ciascun simbolo n ario di predicato una funzione D IB e la terna J D II detta interpretazione e un assegnamento di variabili V D e un assegnamento di termini E T D cos definito f x O f E ti tn Spot dover eV t ET f F e una funzione di interpretazione Sre W IB cos definita Sre p t1 tn M Et Elta SrA H_ Sre A Srel AAB Aa Sre A SrelB Sre Ix A T se e solo se esiste un d D tale che Srele a A T Sre WxA F se e solo se per ogni d D si ha Sr eleya A T 3 4 LOGICA 173 dove p P ti T A B W x V e Sre e a la funzione di interpretazione uguale a Sz eccetto che assegna alla variabile x il valore d Il dominio l insieme degli oggetti di cui vogliamo parlare Per esempio se volessimo parlare dell aritmetica il dominio sarebbe l insieme dei numeri interi La fun
182. efatto dentro al nodo o usando la dipendenza deploy gt diretta dall artefatto al nodo Fig 5 36 lt lt device gt gt lt lt device gt gt PC siepe controlboard lt lt artifact gt gt lt lt artifact gt gt lt lt artifact gt gt lt lt artifact gt gt controller emergency firesubsys powersubsys Figura 5 36 Architettura fisica 5 5 Progetto dettagliato In questa sezione consideriamo alcune linee guida per la fase di progetto in dettaglio In questa fase vengono precisati i dettagli delle singole classi e associazioni e vengono introdotte classi ed associazioni ausiliarie 5 5 1 Progetto delle classi Nella fase di progetto architetturale le classi definite nel modello di analisi vengono raggruppate in componenti eventualmente insieme a qualche nuova classe introdotta in questa fase Generalmente queste classi non sono sta te definite completamente quindi nel progetto dettagliato bisogna arrivare prima di tutto al completamento della loro definizione Per questo occorre 188 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI 1 specificare completamente attributi ed operazioni gi presenti indican do visibilit modificabilit tipo e direzione dei parametri 2 aggiungere operazioni implicite nel modello per esempio costruttori e distruttori 3 aggiungere operazioni ausiliarie se necessario Oltre a completare e raffinare le definizioni
183. effettivamente nascosta poich la dipendenza di un modulo cliente dall implementazione di un modulo fornitore fa s che quest ultimo non possa venire modificato senza modificare il cliente In un sistema di media complessit il costo di qualsiasi cambiamento pu diventare proibitivo se le dipendenze reciproche costringono gli sviluppatori a propagare i cambiamenti da un modulo all altro In particolare conviene nascondere nell implementazione le strutture da ti a cui si dovrebbe accedere soltanto per mezzo di sottoprogrammi Anche le politiche di accesso a una risorsa gestita da un modulo per esempio or dinamento FIFO oppure LIFO delle richieste di accesso di norma devono essere nascoste ai moduli clienti in modo che questi non dipendano da tali politiche In conclusione nello specificare un architettura software si cerca di otte nere il massimo disaccoppiamento fra i moduli 4 2 2 Relazioni fra moduli Come gi detto un architettura software la specifica di un insieme di moduli e delle loro relazioni Fra queste hanno un importanza particolare le relazioni di composizione e di uso 130 CAPITOLO 4 IL PROGETTO La relazione di composizione sussiste fra due moduli quando uno parte dell altro ed necessariamente gerarchica cio viene descritta da un grafo orientato aciclico La relazione di uso sussiste quando il corretto funzionamento di un mo dulo richiede la presenza e generalmente il corretto
184. egin push s 1 push s 2 pop s i end StackADTTest La clausola with esprime la dipendenza di StackADTTest da StackADT La clausola use rende visibili i nomi dichiarati nel package StackADT per mettendo di usarli senza qualificarli esplicitamente col nome del package F 2 1 Moduli generici La specifica di un package generico inizia con la parola chiave generic seguita dai nomi e tipi dei parametri generic Size Positive type Item is private package Stack is procedure Push E in Item procedure Pop E out Item Overflow Empty exception end Stack package body Stack is type Table is array Positive range lt gt of Item Space Table 1 Size Index Natural 0 procedure Push E in Item is begin end if Index Index 1 Space Index E end Push altre definizioni end Stack Questo package pu essere usato nel modo seguente F 2 MODULI IN ADA 287 package Stack_Int is new Stack Size gt 200 Item gt Integer Stack_Int Push 7 Amche in Ada un modulo pu essere parametrizzato rispetto a delle fun zioni I parametri funzione di un package generico vengono dichiarati con la parola chiave with generic type ITEM is private type VECTOR is array POSITIVE range lt gt of ITEM with function SUM X Y ITEM return ITEM questa e la somma generica fra elem di VECTOR package VECT_OP is function SUM A B VECTOR return VECTOR questa e la s
185. el processo di sviluppo 2 1 3 Progetto In questa fase si stabilisce come deve essere fatto il sistema definito dai documenti di specifica DSR e manuale utente Poich in generale esistono diversi modi di realizzare un sistema che soddisfi un insieme di requisiti l attivit del progettista consiste essenzialmente in una serie di scelte fra le soluzioni possibili guidate da alcuni principi e criteri che verrano illustrati nei capitoli successivi Il risultato del progetto una architettura software cio una scompo sizione del sistema in elementi strutturali detti moduli dei quali vengono specificate le funzionalit e le relazioni reciproche La fase di progetto pu essere suddivisa nelle sottofasi di progetto architetturale e di progetto in detta glio Nella prima fase viene definita la struttura generale del sistema mentre nella seconda si definiscono i singoli moduli La distinzione fra queste due sottofasi spesso non netta e nelle metodologie di progetto pi moderne tende a sfumare 2 1 IL MODELLO A CASCATA 29 Il principale semilavorato prodotto da questa fase il Documento delle Specifiche di Progetto DSP Anche il DSP dovrebbe poter essere scritto in modo rigoroso ed univoco possibilmente usando notazioni formali linguaggi di progetto In pratica ci si affida prevalentemente al linguaggio naturale integrato con notazioni grafiche In questa fase pu essere prodotto anche il Piano di Test di Integrazio
186. el software ricordiamo le seguenti sicurezza safety Capacit di funzionare senza arrecare danni a persone o cose pi precisamente con un rischio limitato a livelli accettabili Si usa in questo senso anche il termine innocuita riservatezza security Capacit di impedire accessi non autorizzati ad un sistema e in particolare alle informazioni in esso contenute Spesso il termine sicurezza viene usato anche in questo senso robustezza Capacit di funzionare in modo accettabile anche in situazioni non previste come guasti o dati di ingresso errati prestazioni Uso efficiente delle risorse come il tempo di esecuzione e la memoria centrale disponibilit Capacit di rendere disponibile un servizio continuo per lun ghi periodi 47 48 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI usabilit Facilit d uso interoperabilit Capacit di integrazione con altre applicazioni I requisiti di sicurezza riservatezza e robustezza sono aspetti del pi gene rale requisito di affidabilit dependability nel senso pi corrente di questo termine Ricordiamo che le definizioni pi rigorose di questo termine corri spondenti al termine inglese reliability si riferiscono alla probabilit che non avvengano malfunzionamenti entro determinati periodi di tempo 3 1 Classificazioni dei sistemi software Nell affrontare l analisi dei requisiti utile individuare certe caratteristiche generali del sistema che dobbiamo
187. elli pi specializzati altrimenti questi ultimi non possono essere eseguiti F 2 MODULI IN ADA 285 F 2 Moduli in Ada In Ada i moduli sono rappresentati per mezzo dei package Un package ha una specifica interfaccia ed un corpo implementazione che possono essere definiti in due file distinti e compilabili separatamente come nel seguente esempio file StackADT_ ada interfaccia package StackADT is type Stack is private procedure Push S in out Stack E in Integer procedure Pop S in out Stack E out Integer private type Table is array 1 10 of integer type Stack is record t Table index integer 0 end record end StackADT file StackADT ada implementazione package body StackADT is procedure Push S in out Stack E in Integer is begin S index S index 1 S t S index E end Push procedure Pop S in out Stack E out Integer is begin end Pop end StackADT In questo esempio si realizza un tipo di dato astratto che presenta la tipica interfaccia degli stack L implementazione si basa su due strutture dati il vettore Table e il record o struttura nella terminologia del C Stack Queste due strutture sono dichiarate nella parte privata della specifica Il package StackADT pu essere usato come segue file StackADTTest ada 286 APPENDICE F MODULI IN C E IN ADA with StackADT use StackADT procedure StackADTTest is i INTEGER s Stack b
188. ent i 1 i i i O component Higher2 component i PinterfM 9 ClentN FSE eee i ProviderM O Interf3 Figura 6 2 Integrazione di un componente component Interf1 tom Driver i component i ponent O i i TestExecutor Interi Pinteri RISE component O i UnderTest O component PInterfM StubM Interf3 Figura 6 3 Infrastruttura di test return a real b real amp amp a imaginary b imaginary Complex operator const Complex amp a const Complex amp b return Complex a real a imaginary b imaginary La classe driver ComplexTest class ComplexTest public CppUnit TestFixture private 6 4 CPPUNIT E MOCKPP 201 Application i CppUnit Framework UnitA e TestFixture TestRunner i TestCaseAaCaller i run opA1 i setUp ed opA2 i tearDown TestCaller lt UnitATest gt UnitATest testCaseAa i UnitB i TestSuite bind UnitTestA i TestCaseAbCaller UnitATest TESA i Fixture TestCaller lt UnitATest gt UnitATest testCaseAa testCaseAa i TestCase 4 BR i testcaseAb i TestCaller Z SR run bind UnitTestA Figura 6 4 Infrastruttura CppUnit Complex m_10_1 Complex m_1_1 Complex m_11_2 public static CppUnit
189. entati agli oggetti In questa sezione vengono esposti i concetti fondamentali dell analisi e spe cifica orientata agli oggetti facendo riferimento ad un particolare linguaggio di specifica UML Unified Modeling Language Nell analisi orientata agli oggetti la descrizione un sistema parte dall i dentificazione di oggetti cio elementi costitutivi e di relazioni fra oggetti Un oggetto viene descritto sia dai propri attributi cio da un insieme di propriet che lo caratterizzano che dalle operazioni che l oggetto pu compiere interagendo con altri oggetti queste operazioni possono avere dei parametri di ingresso forniti dall oggetto che invoca un operazione e restitui re risultati in funzione dei parametri d ingresso e degli attributi dell oggetto che esegue l operazione Gli attributi oltre a rappresentare propriet degli oggetti possono rappresentarne lo stato e le operazioni possono modificare lo stato Per chiarire la differenza fra propriet e stato possiamo pensare di rappresentare un automobile con due attributi vel_max velocit massi ma e marcia il primo rappresenta una propriet statica mentre il secon do rappresenta i diversi stati di funzionamento della trasmissione potrebbe assumere i valori retromarcia folle prima Possiamo completare la de scrizione dell automobile con le operazioni imposta_vel_max marcia_alta e 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 91 marcia_bassa
190. enute dall utente le richieste sono le interrogazioni in linea che richiedono una risposta immediata dal sistema Alle caratteristiche del sistema General System Characteristics qua li la riusabilit o la presenza di elaborazioni distribuite che influenzano la complessit del progetto viene assegnato un grado di influenza cio una valutazione dell importanza di ciascuna caratteristica su una scala da ze ro a cinque Le caratteristiche prese in considerazione dal metodo sono le quattordici mostrate nella tabella seguente contraddistinte dall indice 7 C 5 STIMA DEI COSTI Caratteristiche del sistema Riusabilit Trasmissione dati Elaborazioni distribuite Prestazioni Ambiente usato pesantemente Ingresso dati in linea Ingresso dati interattivo Aggiornamento in tempo reale dei file principali Funzioni complesse Elaborazioni interne complesse i BS co co Ma Dot AY eo po HO Facilita d istallazione j N Facilit di operazione _ w Siti molteplici jat Aa Modificabilit 253 La valutazione del grado d influenza delle caratteristiche avviene sulla seguente scala Grado d influenza Nullo Scarso Moderato Medio Significativo Essenziale OU B CO DO el oO Il numero di FP si calcola dalla seguente formula a 14 FP X NW 0 65 0 01 YO Dy i 1 j l dove N
191. er la costruzione di istruzioni composte e le chiamate di sottoprogramma Da questi parametri si possono ottenere metriche sia effettive che stimate La lunghezza del programma la somma dei numeri di occorrenze di operatori ed operandi N Ni No La lunghezza stimata si ricava invece dai numeri di simboli distinti N m logy m m2 logy n2 questa formula discende da certe ipotesi sulla struttura del programma Il volume del programma il numero minimo di bit necessari a rappre sentarlo V N logs m m Il volume potenziale del programma il numero di bit necessari a rappresen tare il programma se questo fosse ridotto ad un unica chiamata di funzione Questo dato si ottiene dalla formula V 2 75 log 2 n3 dove 73 rappresenta il numero di argomenti della funzione equivalente al programma Il livello del programma un indicatore del suo grado di astrazione Vr L V Il livello pu essere stimato da A 2 2 mNa 248 APPENDICE C METRICHE DEL SOFTWARE Lo sforzo effort una misura dell impegno psichico richiesto dalla scrit tura del programma Questa misura si basa su un modello alquanto sempli cistico dei processi mentali del programmatore e viene cos calcolata VV E L V Dallo sforzo si ricaverebbe una stima del tempo richiesto per scrivere il programma E T S dove S sarebbe il numero di decisioni elementari che un programmatore pu compiere
192. eredit il meccanismo che inserisce gli attributi e operazioni di una classe base nelle classi derivate Questo mecca nismo si pu sfruttare per tre scopi i riprodurre nell architettura software le relazioni di generalizzazione presenti nel dominio dell applicazione ii riusare moduli preesistenti e iii implementare le relazioni di realizzazione 148 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Catalogo f listcLibro gt Di entity Libro Amministrazione Q gt 1 RegistroPrestiti list lt Prestito gt K gt entity Prestito RegistroUtenti Persistenza 1 list lt Utente gt _ lt o gt _ _ entity Utente Database Figura 5 3 Esempio un progetto OO 3 Nella fase di analisi dei requisiti l eredit permette di modellare la rela zione di generalizzazione e quindi di specializzazione fra entit del dominio di applicazione Di solito alle entit del dominio dell applicazione devono corrispondere delle entit del sistema software Nella fase di progetto viene definita un architettura software in cui vengono mantenute le relazioni fra entit del dominio di applicazione fra cui la generalizzazione come mostra il seguente esempio in C class Person char name char birthdate public char getName char
193. ermini allora f t1 tn un termine in particolare un simbolo c di ariet nulla un termine costante 3 solo le espressioni costruite secondo le due regole precedenti sono termini e un insieme numerabile P di simboli di predicato p q r a ciascun simbolo di predicato associato il numero di argomenti ariet del predicato P Po UP UP2U dove P l insieme dei simboli n ari di predicato i predicati di ariet zero corrispondono ai simboli proposizionali del calcolo proposizionale e un insieme finito di connettivi per esempio a A V gt e un insieme finito di quantificatori per esempio VA e un insieme di simboli ausiliari parentesi e simili e un insieme W di formule definito dalle seguenti regole 1 se p un simbolo n ario di predicato e t1 tn sono termini allora p t1 tn una formula detta atomica in questo caso 2 se Ae B sono formule allora sono formule anche A A A B AV B 3 se A una formula e x una variabile allora sono formule anche Ve A e Ir A Le formule Va A e Ax A sono dette formule quantificate ed A il campo del rispettivo quantificatore 72 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 4 solo le espressioni costruite secondo le regole precedenti sono for mule Le priorit nell ordine di applicazione dei connettivi la stessa vista per il calcolo proposizionale salvo che la priorit dei quantificatori interm
194. erpretare i risultati tenendo conto delle differenze fra la propria situazio ne effettiva dal punto di vista dell applicazione specifica e dell ambiente di sviluppo e quella presupposta dal modello In particolare bisogna tener conto degli aggiornamenti delle tabelle che vengono eseguiti e pubblicati pe riodicamente in base alle esperienze pi recenti Inoltre opportuno che le organizzazioni produttrici raccolgano ed elaborino le informazioni relative ai propri progetti in modo da poter adattare il metodo alla propria situazione C 5 2 Il modello di Putnam Nel modello di Putnam la dimensione L del programma in LOC la quantit di lavoro K in anni uomo ed il tempo di sviluppo 77 in anni sono legate dalla formula L3 Ci dove la costante tecnologica Ci una caratteristica dell organizzazione pro duttrice valutata in base all analisi dei suoi dati storici che tiene conto della qualit delle metodologie applicate 260 APPENDICE C METRICHE DEL SOFTWARE Appendice D Gestione del processo di sviluppo La gestione del processo di sviluppo un argomento ampio che richiede di essere trattato da vari punti di vista quali l organizzazione aziendale leco nomia e la sociologia Rinunciando ad affrontare tutte queste problemati che alcune delle quali sono oggetto di altri corsi nel seguito ci limiteremo ad accennare ad alcuni strumenti di uso comune ed infine introdurremo il problema della gestione delle configuraz
195. esempio la valutazione delle prestazioni i pro tocolli di comunicazione i sistemi di controllo le architetture multiprocessor e data flow e i sistemi fault tolerant Il modello delle reti di Petri basato sui concetti di condizioni e azioni piuttosto che di stati e transizioni Una rete di Petri descrive un sistema specificando l insieme delle azioni che possono essere compiute dal sistema o dall ambiente in cui si trova le condizioni che rendono possibile ciascuna azione e le condizioni che diventano vere in seguito all esecuzione di ciascuna azione Lo stato del sistema definito dall insieme delle condizioni che in un dato istante sono vere e le transizioni da uno stato all altro sono causate dall esecuzione delle azioni che anche nel vocabolario delle reti di Petri si chiamano transizioni Una rete di Petri un grafo orientato bipartito i cui nodi sono divisi in posti places e transizioni e i cui archi uniscono posti a transizioni o transizioni a posti Se un arco va da un place a una transizione il place detto di ingresso alla transizione altrimenti di uscita Ad ogni place p associato un numero intero M p e si dice che p marcato con M p token o che contiene M p token La funzione M che assegna un numero di token a ciascun place la marcatura della rete questa funzione serve a modellare le condizioni che rendono possibile lo scatto cio l esecuzione delle transizioni Per esempio un certo
196. esta soluzione 5 3 4 Proxy Un programma di videoscrittura deve inserire nel testo delle immagini che supponiamo essere implementate da istanze di una classe Image che offre le operazioni draw che carica in memoria l immagine e la disegna e getEx tent che restituisce le dimensioni dell immagine Per impaginare il testo basta che siano note le dimensioni delle immagini quindi conviene differi re il caricamento dell immagine fintanto che non necessario visualizzarla A questo scopo si pu usare lo schema di Fig 5 29 in cui un istanza del la classe Proxylmage fa da segnaposto per Reallmage che contiene una struttura dati per rappresentare l immagine Le chiamate all operazione ge tExtent vengono eseguite direttamente da Proxylmage mentre le chiamate a draw vengono delegate a Reallmage che viene istanziata solo alla prima invocazione di draw 182 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI DataMover gt imp DataMoverlmp filetransfer src string dst string filetransferimp src string dst string filetransfer src string dst string 3 SimpleDataMover OptimizedDataMover imp filetransferimp src string dst string filetransferimp src string dst string filetransferimp src string dst string filetransferimp src string dst string filetransferimp src string dst string simpftp src string dst string optftp
197. ficato Un attore rappresenta un entit esterna al sistema un caso d uso rappresenta un servizio offerto dal sistema Ciascun servizio viene espletato attraverso sequenze di messaggi scambiati fra gli attori ed il sistema Attori e casi d uso sono legati da associazioni che rappresentano comu nicazioni I casi d uso non rappresentano sottosistemi per cui non possono interagire cio scambiarsi messaggi fra di loro ma possono essere legati da relazioni di inclusione estensione e generalizzazione Il comportamento richiesto al sistema per fornire il servizio rappresentato da un caso d uso pu essere specificato in vari modi per esempio per mezzo di macchine a stati o di descrizioni testuali In fase di analisi pu essere sufficiente una descrizione in linguaggio naturale oppure una descrizione pi formale delle di sequenze di interazioni scenari fra attori e sistema previste per lo svolgimento del servizio La Fig 3 23 mostra un semplice diagramma di casi d uso relativo a un sistema di pagamento POS Point Of Sale Gli attori sono il cassiere e il cliente i servizi forniti dal sistema sono il pagamento il rimborso e il login quest ultimo coinvolge solo il cassiere Il servizio di pagamento ha due possibili estensioni cio comportamenti aggiuntivi rispetto a quello del caso d uso fondamentale Sistema POS Pagamento or mr e _ extend extend 1 ConCartaCred Rimborso Figura 3 23
198. getBirthdate 7 class Student public Person char student_number public char getStudentNumber 5 1 EREDIT E POLIMORFISMO 149 In questo caso il fatto che la classe Student erediti dalla classe Person corrisponde al fatto che nel dominio dell applicazione per esempio il da tabase dei dipendenti e degli studenti di una scuola gli studenti sono un sottoinsieme delle persone La classe derivata ha gli attributi e le operazioni della classe base a cui aggiunge ulteriori attributi e operazioni In fase di progetto si pu usare l eredit come tecnica di riuso cio per riusare le operazioni di una classe base nel contesto di una classe derivata per esempio se si dispone di una classe Shape con le operazioni per dise gnare e spostare una figura geometrica si pu definire una classe derivata ColoredShape che aggiunge le operazioni per colorare una figura e riusa le operazioni della classe base per disegnarla e spostarla Questo conveniente quando la classe derivata ha una semantica cio uno scopo e un significato analoga a quella della classe base rispettando cosi il principio della Liskov In molti casi per il meccanismo della composizione usare un istanza di una classe o un puntatore ad essa come attributo di un altra pi flessibile del l eredit comunque da evitare l uso dell eredit per costruire una classe derivata che non abbia una parentela logica con la classe base Per esempio
199. gri di specifica 244 PA 11 13 14 15 15 16 18 21 22 24 25 28 29 31 31 32 35 36 36 38 Al 4 INDICE 3 2 1 Classificazione dei formalismi di specifica 50 3 3 Formalismi orientati al controllo 53 dl Au tomi astati MI l se oss PR RA o 54 ok Lea people RSA ma 59 3 4 1 Calcolo proposizionale iui sis ana n 61 34 2 Teorie formali s z is ssi caper hill area 66 3 4 3 Logica del primo ordine Liana bes 69 3 4 4 Esempio di specifica e verifica formale TT 3 4 5 Dogiche polo lt lt sa ass pie 80 3 4 6 Logiche di ordine superiore 81 3 4 7 Il Prototype verification system 2 6a 45k wi bd 81 3 4 8 Logiche modali e temporali 87 3 5 Linguaggi orientati agli oggetti 2 25 252 bees 90 bl VIE AEREA 92 3 5 2 Classi e oggetti oc es sc peto dea eS 93 3 5 3 Associazioni e link iii iii ita 96 3 5 4 Composizione ooo Ra ROS 99 3 5 5 Meccanismi diestensione 101 3 5 6 Generalizzazione 24 e444 eee ea i 103 3 5 7 Diagrammi dei casi d Uso oo o6 see ee eed 109 3 5 9 Diagrammi di 5tat so ro dirai 110 3 5 9 Diagrammi diinterazione 115 3 5 10 Diagrammi di attivit ooo a 117 4 Il progetto 123 4 1 Obiettivi della progettazione ooa a a a 124 4 1 1 Strutturazione e complessit 124 42 Mod l s stp arrasa medot oe DAR eee REE HS 126 4 2 1 Interfaccia e implementazione
200. gruppamento di altri elementi di modello Questi elementi possono es sere di qualsiasi genere anche interi diagrammi e l organizzazione in package di un modello UML pu non avere una corrispondenza diretta con la strut 138 CAPITOLO 4 IL PROGETTO tura dell architettura software per esempio il progettista potrebbe usare un package per raccogliere tutti i diagrammi di classi un altro per i diagrammi di stato e cosf via anche se molto spesso i package vengono usati in modo da rispecchiare tale struttura L interfaccia di un package consiste nell insieme dei suoi elementi esporta ti cio resi visibili La Fig 4 6 mostra il package Simulator che contiene gli elementi pubblici cio esportati SignalGenerators e Filters che in questo caso supponiamo essere dei package a loro volta ma potrebbero essere classi o altri elementi di modello e l elemento privato Internals I caratteri e denotano rispettivamente gli elementi pubblici e quelli privati SignalGenerators Filters Internals Figura 4 6 Package in UML 1 Un package costituisce lo spazio dei nomi degli elementi contenuti Ogni elemento appartenente ad un package ha un nome qualificato formato dal nome del package e dal nome semplice dell elemento separati dai caratteri Se il package contenuto in un altro package il nome del package esterno precede quello del package interno Se nell esempio di Fig 4 7 supponiamo che il p
201. guenze fra cui la principale forse una certa difficolt di comprensione fra progettista e committente utente spesso un organizzazione o un individuo sente il bisogno di uno strumento informatico per risolvere un problema ma non ha un idea chiara di cosa si possa chiedere allo strumento Dall altra parte il progettista pu non avere un idea chiara delle esigenze dell utente Inoltre in certi casi pu anche mancare un linguaggio comune e consolidato sia fra progettista e utente che fra progettisti provenienti da ambienti diversi Si pu anche osservare che almeno fino a tempi recenti l impiego di strumenti automatici nello sviluppo del software stato relativamente limi 1 3 IL SOFTWARE NON DIVERSO 13 tato cosa abbastanza paradossale Questo problema collegato anche ad altre propriet del software come la sua complessit ed il carattere intel lettuale quindi difficilmente automatizzabile delle attivit legate alla sua produzione Sebbene tutti questi problemi siano ancora sentiti per incoraggiante notare una generale maturazione nel mondo dell industria informatica per cui le conoscenze relative all ingegneria del software sono sempre pit richieste ed apprezzate 1 3 Il software non diverso Pur con le sue particolarit il software un prodotto industriale che come tutti i prodotti industriali deve soddisfare le esigenze dell utente quelle del produttore e quelle della societ
202. gy cmm cmm sum html 274 APPENDICE E QUALIT da 3 a 4 Raccolta di dati quantitativi per misurare le propriet dei processi e dei prodotti da 4a 5 Aggiornamento dei processi in base ai risultati misurati Non si pu stabilire una corrispondenza univoca fra la certificazione ISO 9000 ed il livello di maturit secondo il CMM per un organizzazione certificata ISO 9000 tipicamente ha una maturit corrispondente al terzo livello del CMM Il numero di organizazioni che hanno conseguito una maturit corrispon dente al massimo livello del CMM tuttora molto ridotto Appendice F Moduli in C e in Ada F 1 Incapsulamento e raggruppamento in C Nel linguaggio C l incapsulamento e il raggruppamento si ottengono con i costrutti class e namespace F 1 1 Classi e interfacce In questo corso si presuppone la conoscenza del linguaggio C almeno nei suoi aspetti fondamentali per cui non ci soffermeremo sul concetto di clas se come definito in questo linguaggio che molto vicino a quello definito nell UML Ricordiamo soltanto che in C le operazioni virtuali pure cor rispondono alle operazioni astratte del UML e che una classe con almeno un operazione virtuale pura una classe astratta Una classe senza membri dato che abbia solo operazioni virtuali pure con visibilit pubblica permette di esprimere in C il concetto di interfaccia Ricordando che un interfaccia UML pu contenere dichiarazioni di attributi
203. h il consumatore non pronto a ricevere nuove informazioni in questo caso i due processi hanno un vincolo di sincronizzazione reciproca il consumatore elabora un dato solo dopo che il produttore lo ha prodotto il produttore elabora un nuovo dato solo se il consumatore lo pu ricevere ma non esistono limiti prefissati per il tempo di esecuzione Un sistema in tempo reale generalmente un sistema concorrente e in pi deve fornire i risultati richiesti entro limiti di tempo prefissati in questi sistemi un risultato anche se corretto inaccettabile se non viene prodot to in tempo utile Per esempio una coppia produttore consumatore senza controllo di flusso in cui il produttore funziona ad un ritmo indipendente da quello del consumatore un sistema real time poich in questo caso il pro duttore impone al consumatore un limite massimo sul tempo di esecuzione Se il consumatore non rispetta questo limite si perdono delle informazioni Un esempio di questo tipo di sistema un sensore che manda informazioni a un elaboratore dove la frequenza di produzione dei dati dipende solo dal sensore o dall evoluzione del sistema fisico controllato 50 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 3 1 2 Tipo di elaborazione Un altra classificazione dei sistemi si basa sul tipo di elaborazione compiuta prevalentemente I sistemi si possono quindi caratterizzare come orientati ai dati mantengono e rendono accessibili grandi quantit
204. html 145 146 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI 5 0 4 Un esempio Immaginiamo di progettare un sistema per la gestione di una biblioteca La Fig 5 1 d un idea estremamente semplificata di un possibile modello d ana lisi Ci sono due diagrammi di casi d uso di cui il secondo tiene conto del requisito che solo il bibliotecario interagisca direttamente col sistema Si mantenuta la versione originale del diagramma che mostra il ruolo dell u tente per ricordare che i servizi della biblioteca sono destinati all utente e lasciare spazio a future estensioni in cui l utente potrebbe accedere al sistema direttamente La dipendenza lt trace gt si usa per rappresentare la relazione storica fra diverse versioni di un modello o parti di esso Biblioteca trace Biblioteca i A Va Utente Bibliotecario Bibliotecario Biblioteca i Bibliotecario hi 1 Utente registra u Utente 1 A 1 presta l Libro u Utente Libro prestito Biblioteca gt Catalogo ricerca l Libro aggiungi I Libro RegistroUtenti Amministrazione Figura 5 1 Esempio un progetto OO 1 La Fig 5 2 mostra un primo abbozzo del modello di progetto stata introdotta una classe che in questo stadio sta per un intero sottosistema che rappresenta l interfaccia presentato dal sistema al b
205. i Infine un calcolo proposizionale ha delle regole d inferenza che permet tono di derivare alcune frasi a partire da altre frasi Le regole d inferenza sono scelte in modo che le frasi derivate per mezzo di esse siano vere se sono vere le frasi di partenza Si fa in modo cio che i sistemi formali di tipo proposizionale siano corretti Sintassi Nel calcolo proposizionale un linguaggio formato da e un insieme numerabile P di simboli proposizionali A B C e un insieme finito di connettivi per esempio 7 negazione A congiun zione V disgiunzione gt implicazione equivalenza o coimpli cazione e un insieme di simboli ausiliari parentesi e simili e un insieme W di formule dette anche formule ben formate well formed formulas o wff definito dalle seguenti regole 1 un simbolo proposizionale una formula 2 se A e B sono formule allora sono formule anche A A A B AV Bs 202 3 solo le espressioni costruite secondo le due regole precedenti sono formule Alle regole sintattiche si aggiungono di solito delle regole ulteriori che permettono di semplificare la scrittura delle formule indicando le priorita dei connettivi in modo simile a ci che avviene nella notazione matematica I connettivi vengono applicati in quest ordine Ty A V per cui ad esempio la formula ASABVCSH3A 4L operazione logica associata a questo connettivo si chiama anche implicazione mate
206. i fire_emergency power_emergency 1 i PowerMonitor PowerSensor start stop pwr_up bool Figura 5 21 Un sistema concorrente 4 Strumenti per la programmazione concorrente L implementazione degli oggetti attivi definiti nel progetto architetturale riguarda principalmente le fasi di progetto dettagliato e di codifica ma certe scelte relative all implementazione devono essere fatte nel progetto architetturale Una prima decisione riguarda la scelta fra l uso di processi o di thread Come gi detto un programma concorrente eseguito su un singolo calcolatore pu essere composto da un solo processo multithreaded o da pi processi ciascuno dei quali pu essere multithreaded o no Poich la creazione e la gestione dei processi pi costosa in termini di tempo e risorse di quella dei thread generalmente si scelgono questi ultimi se non ci sono vincoli contrari Un altra scelta riguarda gli strumenti da usare per realizzare i meccanismi di concorrenza richiesti Alcuni linguaggi di programmazione come Java e Ada hanno dei costrutti che permettono di definire degli oggetti attivi p es oggetti di classe Thread in Java o moduli task in Ada di controllarne l ese cuzione e di sincronizzarli Se uno di questi linguaggi in base a requisiti non 5 2 PROGETTO DI SISTEMA 173 attinenti alla concorrenza stato scelto per l implementazione ovviamente conviene sfruttare gli strumenti che offr
207. i i si a Ne root i root i di i Collaudo tempo Figura 2 8 Fasi e attivit nello Unified Process Questo andamento schematizzato in Fig 2 8 Le linee tratteggiate deli 2 3 MODELLI EVOLUTIVI 41 mitano le iterazioni che non necessariamente sono di durata uniforme come sembra mostrare la figura e le cinque curve mostrano in modo molto qua litativo e del tutto ipotetico l impegno richiesto dalle attivit nel corso del processo di sviluppo 2 3 3 Modelli trasformazionali Nei modelli trasformazionali il processo di sviluppo consiste in una serie di trasformazioni che partendo da una specifica iniziale ad alto livello pro ducono delle descrizioni del sistema sempre pit dettagliate fino al punto in cui si pu passare alla fase di codifica Tutte le specifiche sono formali cio espresse in un linguaggio di tipo matematico in modo che la corret tezza di ciascuna versione delle specifiche rispetto alla versione precedente possa essere verificata in modo rigoroso esclusa naturalmente la specifica iniziale che pur essendo espressa formalmente non pu essere verificata ri spetto ai requisiti dell utente necessariamente informali Le trasformazioni da una specifica all altra sono anch esse formali e quindi tali da preservare la correttezza delle specifiche Un processo trasformazionale analogo alla soluzione di un equazione f z y g x y y h x La formula inizial
208. i assegnamento Un identificatore formato da uno B 3 GRAMMATICHE NON CONTESTUALI 217 o pi caratteri il primo dei quali una lettera o una sottolineatura _ e gli altri possono essere lettere cifre o sottolineature Un intero costituito da una o pi cifre a zA Z_ a zA Z_0 9 return IDENTIFIER 0 9 return INTEGER Mel return Ei return si return al return yi return Le azioni associate al riconoscimento di stringhe appartenenti alle diverse espressioni regolari sono in questo caso delle semplici istruzioni return Il programma Lex partendo da questa grammatica produrr una funzione di riconoscimento che leggendo un file eseguir l istruzione return appropriata ogni volta che riconosce un token Questa funzione potr essere usata da un programma pi complesso per esempio da un compilatore B 3 Grammatiche non contestuali Le grammatiche non contestuali context free grammars vengono usate co munemente per specificare le sintassi dei linguaggi di programmazione che sono troppo complesse per essere descritte dal linguaggio delle espressioni regolari Ricordiamo che una grammatica non contestuale o di tipo 2 definita da un insieme di simboli non terminali che rappresentano struttu re complesse per esempio programmi istruzioni espressioni un insieme di simboli terminali che rappresentano strutture elementari per esempio identificat
209. i completezza di G del Il sistema formale qui esposto ha un numero relativamente grande di schemi di assiomi e poche regole di inferenza i sistemi di questo tipo vengono spesso detti alla Hilbert Altri sistemi formali come la deduzione naturale o il calcolo dei sequenti v oltre hanno pochi assiomi e un maggior numero di regole d inferenza 3 4 4 Esempio di specifica e verifica formale Consideriamo il problema dell ordinamento di un vettore esempio tratto da 14 Vogliamo specificare la relazione fra un vettore arbitrario x di N gt 2 elementi ed il vettore y ottenuto ordinando x in ordine crescente supponendo che gli elementi del vettore abbiano valori distinti Possiamo esprimere questa relazione cos permutazione x y A ordinato y VE A lt KAK lt N gt MITALIN Ay Hoe A dj 1 lt 7 AI SNA yr ordinato z Vk 1 lt kA k lt N gt ag lt tp ord z y permutazione x y lt Possiamo verificare la correttezza di un programma che ordina un vetto re di N elementi rispetto alla specifica Trascureremo la parte di specifica relativa alla permutazione di un vettore L ordinamento di un vettore v pu essere ottenuto col seguente frammento di programma che implementa l al goritmo bubblesort dove M N 1 ricordiamo che in C gli indici di un array di N elementi vanno da 0 a N 1 for i 0 i lt M i 0 lt i lt M for j 0 j lt M i j 0 lt j lt M i if v j gt v j 1
210. i conservativa se in un suo sottoinsieme di posti la somma dei token contenuti costante Il sottoinsieme individuato da una funzione peso che dice quali posti escludere dal conto Questa funzione molto spesso assegna il peso uno ai posti appartenenti al l insieme e il peso zero ai posti da escludere ma nel caso pi generale il peso pu assumere valori nell insieme dei numeri relativi per modellare situazioni in cui la marcatura di certi place deve essere contata pi di una volta oppure deve essere sottratta dal numero totale ha quindi un peso negativo Data quindi una funzione peso H H P gt Z una rete P T con marcatura M si dice conservativa rispetto alla funzione H se e solo se Vurern M Ypep H P M p X pep H p M p Un caso particolare la rete strettamente conservativa in cui tutti i po sti hanno peso unitario per cui si considera tutta la rete invece di un suo sottoinsieme proprio Se una rete rappresentata in forma matriciale H viene rappresentata da un vettore riga P vettore h tale che h H p Un P invariante un P vettore tale che il suo prodotto scalare per qualsiasi marcatura raggiungi bile sia costante Un P invariante quindi una particolare funzione H che individua una sottorete conservativa Per trovare un tale vettore bisogna risolvere in h la seguente equazione 1 hm hm B 8 RETI DI PETRI 241 per qualsiasi marcatura m raggiungibile da m e quindi per qualsiasi sequen za di
211. i dati e prova formale dimostrazione formale usando la logica che non ci sono anomalie 6 3 Analisi dinamica Nell analisi dinamica o testing si esegue il programma da verificare o con validare per osservare se i risultati corrispondono a quelli previsti dalle spe cifiche o dai requisiti Generalmente impossibile eseguire il programma per tutti i valori possibili dei dati di ingresso e per tutte le possibili condizioni al contorno p es presenza di determinate risorse diversi ambienti di ese cuzione poich questo insieme pu essere infinito o comunque troppo grande Il primo problema da affrontare nell attivit di testing quindi quel lo di selezionare un insieme di dati di ingresso che sia abbastanza piccolo da permettere l esecuzione dei test entro i limiti di tempo e di risorse disponi bili ma sia anche abbastanza grande e soprattutto significativo da fornire risultati sufficientemente affidabili Il secondo problema quello di stabilire il criterio di successo o fallimento del test cio capire quale deve essere il comportamento corretto del programma Infine bisogna stabilire il criterio di terminazione per decidere quando interrompere l attivit di testing Riassumiamo qui schematicamente i problemi appena citati Selezione dei dati pu essere guidata e dalle specifiche test funzionale e dalla struttura del programma test strutturale nessuno dei due criteri da solo sufficiente
212. i dei file contenenti codice sorgente nel linguaggio di program mazione adottato Chiameremo moduli fisici o artefatti sia i file sorgente sia i file collegabili ed eseguibili ottenuti per compilazione e collegamento I moduli fisici contengono in linguaggio sorgente o in linguaggio macchina Useremo questi due termini come sinonimi 4 2 MODULI 127 offerta interfaccia re richiesta modulo A semplice implementazione composta Figura 4 2 Modulo logico le definizioni delle entita che realizzano i moduli logici cio strutture dati e sottoprogrammi La corrispondenza fra moduli logici e fisici dipende sia dal linguaggio e dall ambiente di programmazione che da scelte fatte dagli sviluppatori Que sta corrispondenza non necessariamente biunivoca in quanto un modulo fisico pu contenere le definizioni relative a pi moduli logici per esempio un file di libreria un modulo fisico contenente le implementazioni di pi moduli logici oppure le definizioni appartenenti a un modulo logico posso no essere suddivise fra pit moduli fisici per esempio un sottosistema un modulo logico la cui implementazione pu essere divisa fra pi file sorgente Ai fini della mantenibilit e della modificabilit del sistema importante che la corrispondenza fra struttura logica e struttura fisica sia chiara e razionale Una buona organizzazione dei moduli fisici permette un uso pi efficace di strumenti automatici di progra
213. i entit che vogliamo quantificare Nel l ingegneria del software le entit possono essere prodotti inclusi i vari semi lavorati o artefatti risorse e processi Alcuni prodotti sono i documenti di specifica e di progetto il codice sorgente i dati ed i risultati di test Fra le risorse ricordiamo il personale e gli strumenti hardware e software come 245 246 APPENDICE C METRICHE DEL SOFTWARE esempi di processi citiamo le varie fasi del ciclo di vita Gli attributi possono essere interni o esterni Gli attributi interni di un entit possono essere valutati considerando l entit isolatamente mentre gli attributi esterni richiedono che l entit venga osservata in relazione col proprio ambiente Generalmente gli attributi esterni sono i pi interessan ti dal punto di vista dell utente e da quello del produttore ma non sono misurabili direttamente e vengono valutati a partire dagli attributi interni Per esempio nei documenti di specifica e di progetto possiamo misurare gli attributi interni dimensione e modularit Questi influenzano gli attributi esterni comprensibilit e manutenibilit si suppone che un documento breve e ben strutturato sia pi comprensibile e facile da modificare di uno lungo e caotico Dei vari attributi ci pu interessare una valutazione o una predizione o stima La stima di una metrica si ottiene a partire dai valori di altre metriche applicando un modello cio una formula o algoritmo
214. i eventi vengono marcati come differiti deferred e memorizzati finch l oggetto non entra in uno stato in cui tali eventi non sono pi marcati come differiti In questo nuovo stato gli eventi cos memorizzati o innescano una transizione o vengono perduti definitivamente Gli eventi differiti in uno stato vengono dichiarati come tali nel simbolo dello stato con la parola defer o deferred in UML1 Gli stati si rappresentano come rettangoli ovalizzati contenenti opzional mente il nome dello stato un eventuale attivit preceduta dalla parola do ed altre informazioni che vedremo pi oltre In particolare uno stato pu contenere dei sottostati Uno stato pu contenere la parola entry seguita dal nome di un azione separato da una barra Questo significa che l azione 112 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI deve essere eseguita ogni volta che l oggetto entra nello stato in questione Analogamente la parola exit etichetta un azione da eseguire all uscita dallo stato Una coppia evento azione entro uno stato significa che al verificar si dell evento viene eseguita l azione corrispondente e l oggetto resta nello stato corrente transizione interna In questo caso non vengono eseguite le eventuali azioni di entry o di exit Quando bisogna indicare uno stato iniziale si usa una freccia che parte da un cerchietto nero e raggiunge lo stato iniziale Uno stato finale viene rappresentato da un cerchio contenente
215. i marcature tale che M Ry M B 8 RETI DI PETRI 239 A2 B2 C c2 accept E1 ai a accept E2 i g A3 C RI l R2 C C3 a ND S ua ae tan SA2 ___ VY SB2 ___Y y SC2 V V O O OF Figura B 8 Un programma concorrente 2 M Ry M A Fer M t M gt M Ry M ovvero M appartiene all insieme di raggiungibilit e se M raggiun gibile in un passo da una marcatura M appartenente all insieme di raggiungibilit allora M vi appartiene Grafo di raggiungibilit Il grafo di raggiungibilit di una rete P T un grafo i cui nodi sono gli elementi dell insieme di raggiungibilit e gli archi sono le transizioni fra una marcatura all altra La rete viene cos tradotta in un automa a stati generalmente infinito B 8 6 Vitalita delle transizioni Le propriet di vitalit di un sistema si possono definire come abbiamo visto nel paragrafo precedente in termini di raggiungibilit delle marcature cio 236 APPENDICE B FORMALISMI DI SPECIFICA della possibilit che il sistema assuma determinate configurazioni Un altro modo di caratterizzare la vitalit si riferisce alla possibilit che il sistema ese gua determinate azioni La vitalit di una transizione descrive la possibilit che la transizione venga abilitata ed quindi una propriet legata alla ca pacit del sistema di funzionare senza bloccarsi Si definiscono cinque gradi di vitalit per una tr
216. i servizi devono essere forniti o quali propriet devono essere esibite da tale entit Per esempio la specifica di un palazzo di case popolari potrebbe descrivere la capienza dell edificio dicendo che deve poter ospitare cinquanta famiglie Inoltre la specifica ne pu indicarne il massimo costo ammissibile Il grado di precisione richiesto per una specifica dipende in generale dallo scopo della specifica Dire che uno stabile deve ospitare cinquanta famiglie pu essere sufficiente in una fase iniziale di pianificazione urbanistica in cui il numero di famiglie da alloggiare effettivamente il requisito pi significativo dal punto di vista del committente il Comune Questo dato per non abbastanza preciso per chi dovr calcolare il costo e per chi dovr progettare lo stabile Allora usando delle tabelle standard si pu esprimere questo requisito come volume abitabile Questo dato correlato direttamente alle dimensioni fisiche dello stabile e quindi diviene un parametro di progetto Possiamo considerare il numero di famiglie come un requisito dell utente nel senso che questa propriet richiesta dall utente o pi precisamente in questo caso dal committente e la cubatura come un requisito del sistema cio una propriet richiesta al sistema Anche nell industria del software 1 4 CONCETTI GENERALI 17 necessario in generale produrre delle specifiche con diversi livelli di dettaglio e di formalit a sec
217. i un modello Esistono diversi tipi di diagrammi ciascuno defi nito a partire da diversi tipi di elementi di presentazione con le proprie re gole di composizione Ciascun elemento di modello pu essere rappresentato graficamente in pi di un diagramma In UML esistono tre meccanismi di estensione che permettono di adat tare il linguaggio a esigenze specifiche vincoli valori etichettati e stereotipi Questi meccanismi verranno trattati in seguito Sez 3 5 5 Infine i diagrammi possono contenere delle note cio dei commenti che si presentano come una raffigurazione stilizzata di un biglietto con un orec chio ripiegato e possono essere collegate ad un elemento di modello con una linea tratteggiata 3 5 2 Classi e oggetti Come abbiamo visto una classe rappresenta astrattamente un insieme di oggetti che hanno gli stessi attributi operazioni relazioni e comportamen to In un modello di analisi una classe si usa per rappresentare un concetto pertinente al sistema che viene specificato concetto che pu essere concre to per esempio un controllore di dispositivi o astratto per esempio una transazione finanziaria In un modello di progetto una classe rappresenta un entit software introdotta per implementare l applicazione per esempio una classe del linguaggio C Una classe viene rappresentata graficamente da un rettangolo contenente il nome della classe e opzionalmente l elenco degli attributi e delle opera
218. iagramma Entit Relazioni gato assegnato a un dipartimento e partecipa ad uno o pi progetti ogni progetto vede la partecipazione di uno o pi impiegati e di un dirigente e infine ogni dirigente a capo di un dipartimento La figura mostra anche una relazione caratterizzata da un attributo cio la data d inizio dell incari co di un dirigente alla guida di un dipartimento La relazione fra dirigenti e dipartimenti uno a uno B 2 Espressioni regolari Un linguaggio basato sulle espressioni regolari permette di descrivere for malmente la sintassi dei dati elaborati da un applicazione e per questo le espressioni regolari verranno trattate in questa sezione dedicate ai linguaggi orientati ai dati bene precisare che le espressioni regolari possono specifi care anche sequenze di eventi o di azioni per cui potrebbero essere trattate B 2 ESPRESSIONI REGOLARI 215 anche nell ambito dei formalismi di tipo operazionale Osserviamo in parti colare che esiste una stretta relazione fra le espressioni regolari e gli automi a stati finiti Sez 3 3 1 Un espressione regolare descrive una famiglia di sequenze o stringhe di simboli appartenenti ad un alfabeto pi precisamente per alfabeto si intende un insieme finito di simboli elementari che in pratica pu coincidere con l insieme di caratteri alfanumerici usati in un sistema di elaborazione ma anche con altri tipi di informazione comprendente l elemento nullo
219. ibliotecario Questa classe ha lo stereotipo lt boundary gt gt appunto per mostrare questo suo ruolo stato introdotto conseguentemente un registro dei bibliotecari Le classi 5 1 EREDIT E POLIMORFISMO 147 Libro Utente e Bibliotecario hanno lo stereotipo lt entity gt gt comunemente usato per le classi destinate a contenere dati persistenti Biblioteca gt Catalogo Koo entity Libro prestito RegistroUtenti K gt _ _ entity 1 Utente Amministrazione f boundary RegistroBibliotecari gt ens i InterfBiblio Bibliotecario Figura 5 2 Esempio un progetto OO 2 La Fig 5 3 mostra un ulteriore evoluzione del modello in cui si imple menta l associazione logica prestito per mezzo di una classe apposita e di un registro dei prestiti incluso nel sottosistema di amministrazione della biblio teca Inoltre si scelto di implementare le varie aggregazioni per mezzo di classi istanziate dal template list e si aggiunto un sottosistema di persi stenza che deve provvedere a memorizzare i vari cataloghi e registri in un database 5 1 Eredit e polimorfismo In questa sezione tratteremo tre concetti che sono alla base della progetta zione orientate agli oggetti l eredit il polimorfismo e il binding dinamico 5 1 1 Eredit Nei linguaggi di programmazione l
220. icare in modo abbastanza semplice numerose tecniche di programma zione parallela in cui per non ci addentreremo Di solito queste librerie presentano un interfaccia costituito da una raccolta di numerose funzioni globali in C o in Fortran per cui anche in questo caso si pu considerare l opportunit di incapsularle in classi che offrano un interfaccia pi struttu rata Esempi di queste librerie sono la Parallel Virtual Machine PVM ed il Message Passing Interface MPI destinate allo sviluppo di applicazio ni parallele cio eseguite su processori multipli ma applicabili anche per sistemi concorrenti non distribuiti http www boost org doc html thread html Shttp www csm ornl gov pvm http www 11nl gov computing tutorials mpi 5 2 PROGETTO DI SISTEMA 175 Tecniche di implementazione Il progetto di sistemi concorrenti un argomento complesso che richiede la conoscenza di problemi e tecniche specifiche dei vari campi di applicazioni e in questa sezione possiamo dare solo alcune indicazioni generiche con siderando i problemi della sincronizzazione dell accesso alle risorse e della comunicazione fra processi o thread Sincronizzazione I vincoli di sincronizzazione spesso si possono esprime re in termini di eventi stati e azioni per esempio si pu richiedere che un oggetto attivo reagisca con una certa azione ed eventualmente con un cambiamento del proprio stato ad un evento causato da un altro oggett
221. iedono che le propriet dei prodotti e dei semilavorati oltre che delle risorse e dei processi impiegati vengano misurate Per esempio nell industria meccanica possiamo considerare le dimensioni e le propriet tecnologiche dei pezzi prodotti e semilavorati le dimensioni il consumo energetico e la velocit delle macchine operatrici risorse materiali il numero e lo stipendio degli addetti risorse umane il tempo di produzione i tempi morti e la produttivit dei cicli di lavorazione processi Tutte queste grandezze o metriche sono necessarie per pianificare il lavoro e valutarne i risultati difficile immaginare un attivit ingegneristica che possa fare a meno di metriche Anche da questo punto di vista l industria del software abbastanza anomala in quanto l uso di metriche molto meno evoluto che negli altri settori Questo dipende in parte dalla natura immateriale del software che rende difficile la stessa definizione di grandezze misurabili Questo non vuol dire che manchino delle metriche per il software in effetti ne sono state proposte circa 500 Purtroppo non chiara l utilit effettiva di certe metriche e spesso non si trova una giustificazione teorica per le metriche effettivamente usate in pratica L argomento delle metriche del software quindi complesso ed in continua evoluzione Per definire una metrica bisogna innanzitutto individuare le entit che ci interessano e gli attributi di tal
222. iet dipendono fortemente da un altra la modularit Un sistema modulare se composto da un certo numero di sottosistemi ciascuno dei quali svolge un compito ben definito e dipende da gli altri in modo semplice chiaro che un sistema cosf strutturato pit comprensibile di uno la cui struttura venga oscurata dalla mancanza di una chiara suddivisione dei compiti fra i suoi componenti e dalla complessit delle dipendenze reciproche La comprensibilit a sua volta insieme alla sempli cit delle interdipendenze rende il sistema pi facile da verificare e quindi pi affidabile Inoltre il fatto che ciascun sottosistema sia il pi possibile indipendente dagli altri ne rende pi facili la modifica e il riuso 4 1 1 Strutturazione e complessit Per spiegare in modo pi concreto il concetto di strutturazione e il nesso fra struttura e complessit consideriamo due modi diversi di organizzare un programma in C i cui componenti potrebbero essere le funzioni che formano il programma In un primo caso il programma che supponiamo composto da un migliaio di istruzioni consiste di un unica funzione main e nell altro consiste di dieci o venti funzioni Nel primo caso il programma poco struttu rato poich tutte le istruzioni del programma stanno in un unico calderone 4 1 OBIETTIVI DELLA PROGETTAZIONE 125 ove ciascuna di esse pu interagire con le altre per esempio attraverso i va lori di variabili globali
223. ificazione dello sviluppo pianificazione della qualit progettazione e realizzazione prova e validazione accettazione duplicazione consegna ed installazione manutenzione gestione della configurazione controllo della documentazione documenti di registrazione della qualit misure regole pratiche e convenzioni strumenti e tecniche approvvigionamenti prodotti software inclusi addestramento DO HD DU WINE TRO NO No NOrooonrovorrwndr oc Oo Quasi tutti i requisiti prevedono che le relative attivita si svolgano secon do procedure pianificate e documentate e che i risultati conseguenti vengano registrati analizzati e conservati Un testo sulle norme ISO 9000 sintetiz za questo approccio con la frase dire cosa si fa fare quel che si dice e documentare I primi tre requisiti si riferiscono al sistema di qualita in s e stabiliscono che la direzione predisponga una struttura ad esso dedicata fornita delle risorse e dell autorit necessarie ad applicare la politica della qualit Il sistema qualit deve essere documentato e in particolare pu essere prodotto e messo a disposizione del personale un manuale della qualit contenente le regole e procedure aziendali Le attivit relative all assicurazione della qualit devono essere pianificate 272 APPENDICE E QUALIT Altri requisiti si riferiscono alle varie fasi del ciclo di vita Come gi os servato le
224. igurazione ANSI IEEE Std 729 1983 In pratica si tratta di far s che ogni persona che debba lavorare sul prodotto su un suo componente o su qualunque altro artefatto del processo di sviluppo in qualsiasi fase del ciclo di vita abbia a disposizio ne la versione corrente e che non si creino inconsistenze dovute all esistenza contemporanea di versioni diverse La pianificazione del progetto richiede anche la produzione di un piano di gestione delle configurazioni Una versione uno stadio dell evoluzione di un elemento di configura zione Diverse versioni di un elemento di configurazione possono differire perch rispondono a requisiti diversi offrono diverse funzioni e o hanno di verse interfacce o perch hanno diverse implementazioni degli stessi requi siti Ciascuna versione pu appartenere a diverse configurazioni Ciascun elemento di configurazione e ciascuna delle sue versioni deve avere un iden tificatore I numeri di versione sono strutturati in modo da distinguere i cambiamenti pi importanti versione edizioni da quelli di minore portata revisioni I cambiamenti pi importanti naturalmente richiedono procedure di approvazione Una baseline un documento o prodotto costituito da un insieme di elementi di configurazione che stato revisionato ed accettato formalmente Una baseline una base per gli sviluppi ulteriori Per permettere la gestione delle configurazioni ogni modulo o documento deve contenere
225. il progetto la produzione la verifica e la consegna al committente Dopo la consegna il prodotto viene usato ed quindi oggetto di manutenzione e assistenza tecnica e infine termina il ciclo di vita col suo ritiro A queste attivit se ne aggiungono altre che spesso vi si sovrappongono come la pianificazione e la gestione del processo di sviluppo e la documentazione Ciascuna attivit ne comprende altre ovviamente in modo diverso per ciascun tipo di prodotto e per ciascuna organizzazione produttrice Un processo di sviluppo un particolare modo di organizzare le attivit costituenti il ciclo di vita cio di assegnare risorse alle varie attivit e fis sarne le scadenze Una fase un intervallo di tempo in cui si svolgono certe attivit e ciascuna attivit pu essere ripartita fra pi fasi I diversi processi possono essere classificati secondo alcuni modelli di processo un modello di processo quindi una descrizione generica di una famiglia di processi simili che realizzano il modello in modi diversi Esistono numerosi standard che definiscono processi di sviluppo o loro mo delli alcuni di applicabilit generale per esempio ISO IEC 12207 2008 3 MIL STD 498 24 altri orientati a particolari settori di applicazione per esempio ECSS E 40B 1 per l industria spaziale NS G 1 1 26 per l indu stria nucleare CEI EN 50128 2002 04 7 per le ferrovie ed altri ancora di applicabilit generale anche se prodot
226. il proprio stato eventualmente restando nello stato cor rente e generando un uscita L automa definisce le regole secondo cui il sistema risponde agli stimoli esterni Un ASF quindi definito da una sestupla lt S 1 U d t So gt con S insieme degli stati I insieme degli ingressi U insieme delle uscite d S x I S funzione di transizione t S x I gt U funzione di uscita macchine di Mealy so S stato iniziale Nelle macchine di Moore si hat S gt U Un ASF viene rappresentato con un grafo orientato i cui nodi cerchi o rettangoli ovalizzati sono gli stati e gli archi orientati etichettati dagli ingressi e dalle uscite descrivono la funzione di transizione e la funzione di uscita Lo stato iniziale viene indicato da un arco senza stato di origine L automa rappresentato in Fig 3 2 descrive l interazione fra un utente ed un centralino che accetta chiamate interne a numeri di due cifre e chia mate esterne a numeri di tre cifre precedute dallo zero esempio da 14 Nel diagramma le transizioni sono etichettate con espressioni della forma ingresso uscita alcune transizioni non producono uscite Un ingresso della forma m n rappresenta una cifra fra me n Ogni stato identificato sia da un Precisiamo che sono stati descritti diversi tipi di macchine a stati nel seguito faremo riferimento a uno dei tipi usati pi comunemente i trasduttori deterministici 3 3 FORMALISMI ORIENTATI AL C
227. in un secondo per cui si usa tipicamente il valore 18 C 3 Complessit La complessit un concetto molto importante per l ingegneria del software ma difficile da definire e quindi da misurare Le metriche di complessit sono quindi un argomento su cui la ricerca e il dibattito scientifico sono particolarmente vivi C 3 1 Numero ciclomatico Il numero ciclomatico un concetto della teoria dei grafi che applicato al grafo di controllo di un programma d una misura della sua complessit In un grafo contenente n archi un cammino pu essere rappresentato da un vettore se gli archi sono numerati da 1 a n un cammino viene rappresen tato da un vettore V in cui V il numero di volte che l i esimo arco compare nel cammino Un cammino combinazione lineare di altri cammini se il suo vettore combinazione lineare dei vettori associati agli altri cammini Due o pi cammini si dicono linearmente indipendenti se nessuno di essi com binazione lineare degli altri Nel grafo della figura C 1 i cammini possibili sono rappresentati dalla seguente tabella abcdefgh abe 11110000 ef g h 0 0 0 0 1 11 1 a b gh 1 1 0 0 00 1 1 e fc d 0 0 1 1 1 1 0 0 C 3 COMPLESSIT 249 Q FN aa va ro Q C Figura C 1 Cammini linearmente indipendenti Il cammino e f c d a b c d e f g h a b g h una combinazione lineare degli altri tre cio non ne linearmente indipendente Il nu
228. inee alle classi coinvolte analogamente per i link Alcuni semplici modi di rappresentare le associazioni sono mostrati in Fig 3 9 la classe User rapresenta gli utenti di un sistema di calcolo e la classe Account rappresenta i relativi account ciascuno contraddistinto da un numero identificatore uid La molteplicit pu essere indicata con intervalli numerici alle estremit della linea che rappresenta l associazione per esempio 1 0 1 zero o uno 1 uno o pi 0 zero o pi equivalente a 0 Il qualificatore viene rappresentato da un rettangolo avente un lato com baciante con un lato della classe opposta a quella di cui si vogliono qualificare le istanze nella Fig 3 9 il qualificatore uid serve a qualificare cio selezionare le istanze di Account 98 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 1 1 User Account owner uno a uno User Account molti a molti 1 1 User Account uno a molti User uid Account uno a molti con qualificatore Figura 3 9 Associazioni Un associazione pu avere un nome descrittivo per esempio frequenta in Fig 3 15 chiamante Abbonato chiamato Figura 3 10 Ruoli in un autoassociazione Un associazione pu avere degli attributi e delle operazioni si parla in questo caso di classe associazione Una class
229. interleaving e quello di sincroniz zazione sono definiti in modo tale che si possano manipolare analogamente agli operatori aritmetici di somma e di moltiplicazione per cui l espressione precedente formalmente analoga a questa P Q R 58 da cui P R P S Q R Q S Poich P ed S Q ed R non hanno azioni in comune il processo risultante dalla loro sincronizzazione non pu generare alcuna azione e si pu eliminare ottenendo l espressione P R Q S corrispondente a Pla b a Rla le d lel Sta La nuova espressione si pu leggere cos I processi P ed R sono sincronizzati su a I processi Q ed S sono sincronizzati su c I due sistemi P a b a R a e Q c d c S c possono eseguire qualsiasi sequenza permessa dai rispettivi vincoli di sincronizzazione interni senza vincoli reciproci La seconda espressione semanticamente equivalente alla prima poich descrive lo stesso insieme di possibili sequenze di azioni descritto dall espres sione originale ma rappresenta una diversa organizzazione interna e quindi una possibile implementazione del sistema che adesso scomposto nei due sottosistemi S P R e S Q S Fig 2 10 Il nuovo raggruppamento dei processi presumibilmente migliore del precedente perch mette insieme i processi che devono interagire e separa quelli reciprocamente indipendenti 44 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO
230. io di definizione Invece di implementare delle classi ad hoc per incapsulare i meccanismi di concorrenza si pu usare una libreria pre esistente Questa probabilmen te la soluzione migliore nella maggior parte dei casi Esistono varie librerie di questo tipo che offrono servizi simili ma con interfacce alquanto diverse e con diverse dipendenze da altre librerie e dai sistemi operativi Citiamo in particolare la libreria Boost Thread che stata inclusa nell attuale ver sione delle librerie standard del C C 11 In questa libreria la classe thread ha un costruttore a cui si passa come argomento il sottoprogramma da eseguire L interfaccia di thread comprende l operazione join che per mette a un thread di aspettare che termini l esecuzione di un altro thread Nella libreria sono definite anche funzioni globali ma racchiuse nei rispet tivi namespace per manipolare i thread fra cui le operazioni sleep _for e sleep_until che permettono al thread di sospendersi per un periodo di tempo determinato e l operazione yield che permette al thread di cedere il proprio turno di esecuzione ad altri processi Altre classi implementano vari meccanismi come per esempio alcuni tipi di semafori Infine si pu considerare l uso di librerie ed ambienti di esecuzione che offrano un livello di astrazione pi alto Queste librerie sono basate general mente sul modello di programmazione a scambio di messaggi e permettono di appl
231. iocatore Figura 3 11 Associazioni e aggregazioni Un istanza di una classe pu appartenere a pi d una aggregazione La Fig 3 12 mostra che la classe Studente partecipa come componente alle aggregazioni con le classi Squadra e Coro Il diagramma di oggetti nella stessa figura mostra una possibile configurazione di istanze compatibile col diagramma delle classi la studentessa anna appartiene a due istanze della classe Squadra lo studente beppe appartiene ad un istanza della classe Squa dra e ad una della classe Coro lo studente carlo appartiene a un istanza della classe Coro 3 5 4 Composizione La composizione modella una subordinazione strutturale rigida tale cio che l aggregato abbia il completo e unico controllo delle parti componenti Mentre nell aggregazione le parti sono indipendenti dall aggregato esistono 100 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Squadra Coro 0 0 2 dr Studente cusPisa Squadra vincenzoGalilei Coro taijiquan Squadra anna Studente beppe Studente carlo Studente Figura 3 12 Aggregazioni multiple anche al di fuori dell aggregazione nella composizione esiste una dipendenza stretta fra composto e componenti Spesso la composizione rappresenta una situazione in cui l esistenza dei componenti coincide con quella del composto per cui la creazione e la dis
232. ioni Una classe generica pu essere parametrizzata anche rispetto a valori costanti e a funzioni Nell esempio seguente la classe VectOp fornisce due operazioni su array di elementi generici la funzione elementwise applica a due array elemento per elemento un operazione binaria generica Binop mentre la funzione fold applica la stessa operazione in sequenza a tutti gli 280 APPENDICE F MODULI IN C E IN ADA elementi di un array accumulando il risultato questo modo di applicare un operazione agli elementi di una sequenza si chiama folding nel campo della programmazione funzionale La funzione elementwise analoga alla somma vettoriale mentre la fold analoga alla sommatoria di una successione finita di numeri La classe VectOp quindi generica rispetto a tre parametri il tipo T degli elementi delle sequenze rappresentate come array su cui si opera la dimensione Size delle sequenze e l operazione Binop da impiegare nei due algoritmi elementwise e fold VectOp h template lt class T int Size class T Binop class T class T gt class VectOp public static void elementwise T T T static void fold T T amp F template lt class T int Size class T Binop class T class T gt inline void VectOp lt T Size Binop gt elementwise T a T b T r 0 i lt Size i for int i 0 Binop ali bli r i template lt class T int Size class T Binop class T c
233. ioni D 1 Diagrammi WBS I diagrammi di Work Breakdown Structure struttura della suddivisione del lavoro descrivono la scomposizione del progetto in base agli elementi fun zionali del prodotto WBS funzionale Fig D 1 oppure in base alle attivit costituenti lo sviluppo WBS operativa Fig D 2 Le unit di lavoro defini te dalla WBS dette task sono raggruppate in un insieme di work packages Ciascun work package definisce un insieme di task in modo abbastanza detta gliato da permettere ad un gruppo di persone di lavorarci indipendentemente dal resto del progetto Per ogni work package bisogna stabilire le date di ini zio e fine ed una stima del costo effort in termini di lavoro mesi persona ed eventualmente di denaro budget 261 262 APPENDICE D GESTIONE DEL PROCESSO DI SVILUPPO Compilatore 1 i Input Elaborazione Output 1 1 Y Parser Gen codice Ottimizzatore Figura D 1 WBS funzionale D 2 Diagrammi PERT I diagrammi PERT Program Evaluation and Review Technique rappresen tano i legami di precedenza fra le diverse attivit del progetto La dipendenza pi comune quella di tipo finish to start in cui una attivit pu termi nare solo dopo che un attivit precedente terminata Altre relazioni sono start to start in cui un attivit pu iniziare insieme ad un altra o dopo e finish to finish in cui un attivit pu
234. issato il tipo di 3 4 LOGICA 81 apri Aves S448 BAB GAV B A BF GAV B AAB F GAV3B F AA B F AAV AB gt 4A B R R Figura 3 6 Una dimostrazione nel calcolo dei sequenti ciascun argomento e per ogni funzione vengono fissati i tipi degli argomenti e del risultato Le logiche tipate sono equivalenti alle logiche non tipate nel senso che qualsiasi espressione di una logica tipata puo essere tradot ta in un espressione non tipata equivalente ma permettono di esprimere le specifiche in modo pi naturale e soprattutto permettono di verificare an che automaticamente la corretteza delle espressioni analogamente a quanto avviene con i linguaggi di programmazione tipati 3 4 6 Logiche di ordine superiore Nella logica del primo ordine le variabili possono rappresentare solo entit individuali non funzioni relazioni o insiemi Quindi nella logica del primo ordine si possono esprimere delle frasi come per ogni x reale x x x mentre non si possono esprimere delle frasi come per ogni funzione f di un numero reale f x f x f x Nelle logiche di ordine superiore le variabili possono rappresentare anche funzioni e relazioni permettendo cos di esprimere frasi come se x e y sono numeri reali e x y allora per ogni P tale che P sia un predicato unario si ha P x P y Generalmente le logiche di ordine superiore sono tipate 3 4 7 Il Prototype verification system Il
235. istanza si pu rappresen tare esplicitamente con una dipendenza etichettata dallo stereotipo lt bind gt gt accompagnato dai valori dei paramentri Fig 4 11 o in modo implicito in cui la classe istanza viene etichettata dal nome della classe generica seguito dai valori dei parametri Fig 4 12 lt lt IntStack bind Int push in a T pop T Figura 4 11 Classi generiche in UML 2 Stack lt T gt int gt Figura 4 12 Classi generiche in UML 3 Precisiamo che un istanza di una classe generica una classe non un oggetto Istanziare una classe generica e istanziare una classe sono due ope razioni molto diverse ma purtroppo nella terminologia corrente si usa la stessa parola 4 4 3 Eccezioni Come gi accennato la gestione degli errori e delle situazioni anomale un aspetto della suddivisione di responsabilit fra moduli I linguaggi che offrono il meccanismo delle eccezioni permettono di esprimere in modo chiaro e ben strutturato le soluzioni di questo problema Il problema consiste nel decidere in quale modulo si deve trattare una data situazione eccezionale dopodich bisogna specificare in quali moduli si pu verificare tale situazione come viene riconosciuta come viene segnalata e infine come il controllo viene passato al modulo responsabile di gestire l errore 4 4 MODULI NEI LINGUAGGI 143 Nei linguaggi dotati di gestione delle eccezioni i moduli in cui si pu
236. izza Actuator trasformando le coordinate cartesiane in polari e chiamando l operazione move Il pattern Adapter detto anche Wrapper generalizza questa soluzione come in Fig 5 26 5 3 3 Bridge Si vuole implementare un operazione di trasferimento di file filetransfer in due modi alternativi semplice e ottimizzato in modo che sia facile sce glierne uno anche a tempo di esecuzione La classe DataMover delega l operazione all istanza di una classe derivata dalla classe astratta o dal l interfaccia DataMoverimp Le classi derivate da quest ultima forniscono 5 3 I DESIGN PATTERN 181 interface Controller gt Actuator position in x real in y real position real x real y i real r real a convert x y amp r amp a RobotAdapter Robot robot gt move r a robot 4 position in x real in y real movefin rho real in theta real Figura 5 25 Problema adattare interfaccia offerta a quella richiesta interface Client gt Target request AN adptee gt specrequest f RS request adaptee x Adapter Adaptee request specrequest Figura 5 26 Design pattern Adapter le diverse implementazioni dell operazione Fig 5 27 La Fig 5 28 una versione semplificata del pattern Bridge che generalizza qu
237. k begin push s 1 push s 2 exception when Full gt end StackADTTest Il linguaggio fornisce delle eccezioni predefinite fra cui per esempio quel le relative ad errori nell uso di vettori record puntatori constraint_error e ad errori aritmetici numeric_error Le eccezio ni predefinite vengono sollevate implicitamente da dei controlli check ese guiti dal supporto run time del linguaggio che possono essere disabilita ti Per esempio i check associati alle eccezioni constraint_error sono access check uso di puntatori index check indici di array ed altri ancora Per disabilitare un check si usa la direttiva pragma F 2 MODULI IN ADA 289 pragma SUPPRESS INDEX_CHECK F 2 3 Eredit in Ada95 Accenniamo brevemente al modo in cui l eredit stata introdotta in Ada 95 la versione pi recente del linguaggio Ada I tipi che possono servire da base per l eredit sono chiamati tagged Il seguente esempio mostra la specifica di un package in cui viene definito un tipo base tagged Figure da cui vengono derivati i tipi Circle Rectangle e Square Quest ultimo deriva da Rectangle package Figures is type Point is record X Y Float end record type Figure is tagged record Start Point end record function Area F Figure return Float function Perimeter F Figure return Float procedure Draw F Figure type Circle is new Figure with record Radius Float end record functio
238. lass T gt inline void VectOp lt T Size Binop gt fold T a T amp r for int i 0 i lt Size i r Binop r a i Questa classe pu essere usata come nel seguente esempio include lt iostream gt include lt string gt include VectOp h string concatenate string s1 string s2 return si s2 main 1Si confronti questo esempio con le funzioni modello accumulate inner_product partial_sum e adjacent_differences della libreria standard del C F 1 INCAPSULAMENTO E RAGGRUPPAMENTO IN C 281 const int SIZE 3 VectOp lt string SIZE concatenate gt vo blue white green sky snow forest string seq1 string seq2 string res_seg SIZE vo elementwise segi seq2 res_seq for int i 0 i lt SIZE i cout lt lt res_segli lt lt endl string res_string vo fold segi res_string cout lt lt res_string lt lt endl Osserviamo che la libreria standard del C Standard Template Library STL offre numerose classi e algoritmi generici che permettono di risolvere molti problemi di programmazione in modo affidabile ed efficiente F 1 4 Eccezioni in C In C un eccezione viene sollevata mediante un istruzione throw che ha un operando di tipo qualsiasi Uno handler costituito da un istruzione catch formata dalla parola catch seguita da una dichiarazione di argomen to formale analogamente alle dichiarazioni di funzi
239. lasse Classi astratte e concrete Una classe concreta se esistono degli oggetti che siano istanze dirette di tale classe cio appartengano ad essa e non a una classe derivata Se conside riamo due o pi classi concrete che hanno alcune caratteristiche in comune possiamo generalizzarle definendo una classe base che riassume queste carat teristiche Pu quindi accadere che non possano esistere delle istanze dirette di questa classe base che si dice allora astratta Per esempio consideriamo delle classi come Uomo Lupo Megattera ec cetera Gli animali appartenenti a queste classi hanno delle caratteristiche in comune per esempio sono omeotermi e vivipari che si possono riassu mere nella definizione di una classe base Mammifero Questa classe astratta perch non esiste un animale che sia un mammifero senza appartenere anche a una delle classi derivate In UML l astrattezza di una classe e di altri elementi di modello si rappresenta con la propriet abstract Per convenzione nei diagrammi i nomi delle entit astratte si scrivono in corsivo se non pratico scrivere in corsivo per esempio in un diagramma fatto a mano si pu scrivere la parola abstract fra parentesi graffe sotto al nome della classe Eredit multipla Si parla di eredit multipla quando una classe derivata un sottoinsieme di due o pi classi che non sono in relazione di generalizzazione specializzazione fra di loro In questo caso le istanz
240. le scelte di carattere fondamentale che indirizzano le attivita successive Le scelte principali riguardano la struttura generale del sistema di cui si individuano i componenti principali ed i meccanismi di interazione Altre scelte riguardano la gestione delle condizioni al contorno bisogna cio stabilire il comportamento del sistema nelle situazioni di inizializzazione terminazione ed errore Bisogna anche stabilire delle priorita fra obiettivi contrastanti per esempio velocita di esecuzione e risparmio di memoria in modo da risolvere conflitti fra soluzioni alternative che si possono presentare nel corso del progetto Queste priorit per non dovranno esere applicate meccanicamente per esempio l aver stabilito che la velocit di esecuzione prioritaria rispetto al risparmio di memoria non giustifica un sovradimensio 5 2 PROGETTO DI SISTEMA 157 namento della memoria se questo ha un costo eccessivo rispetto al guadagno di velocit ottenibile 5 2 1 Ripartizione in sottosistemi Il primo passo nel progetto di sistema consiste nell individuare i sottosistemi principali Riprendendo l esempio del software per la gestione di una biblio teca la Fig 5 9 mostra la struttura di tale software a livello di sottosistemi Subsystem POT SO ee er eee ees InterfBiblio y subsystem Lilli Amministrazione a I y v y y subsystem subsystem subsystem subsystem RegistroBiblio
241. legate all eredit Il binding il legame fra un identificatore in particolare un identificatore di funzione ed il proprio valore Si ha un binding dinamico quando il signi ficato di una chiamata di funzione cio il codice eseguito dalla chiamata noto solo a tempo di esecuzione il binding dinamico quindi il meccanismo che rende possibile il polimorfismo In C le funzioni che vengono invocate con questo meccanismo sono chiamate virtuali Se si chiama una funzione virtuale di un oggetto attraverso un puntatore questa chiamata polimorfica per inclusione Consideriamo questo classico esempio file Shape h class Shape Point position public virtual void draw virtual void move Point p position p 3 file Circle h include Shape h class Circle public Shape public void draw cout lt lt drawing Circle n 9 file Square h include Shape h class Square public Shape LETT public void draw cout lt lt drawing Square n file main cc include Circle h include Square h void drawall Shape shps for int i 0 i lt 2 i shps i gt draw Per motivi di spazio in questo esempio i metodi sono scritti dentro alle dichiarazioni delle classi cosa generalmente da evitare 5 1 EREDIT E POLIMORFISMO 151 main Shape shapes 2 shapes 0 new Circle shapes 1 new Square drawall shapes La strutt
242. lessa Esistono dei moduli il cui scopo di raggruppare altri elementi che posso no essere moduli a loro volta e di presentarli come un unit logica General mente si usa il termine package per riferirsi a un insieme di entit logicamente correlate per esempio un gruppo di classi o di sottoprogrammi Il concetto di package di solito implica quello di spazio di nomi namespace uno spa zio di nomi serve a identificare un insieme di entit e ad evitare conflitti di nomenclatura fra tali entit e quelle appartenenti ad un altro spazio di nomi 132 CAPITOLO 4 IL PROGETTO due entit aventi lo stesso nome ma appartenenti a spazi di nomi diversi sono entit distinte Un sottosistema una parte di un sistema pi grande relativamente autonoma e caratterizzata da una propria funzione e quindi da un interfaccia I sottosistemi si possono modellare per mezzo dei package o in altri modi che vedremo pit oltre Infine accenniamo al concetto di componente Questo viene generalmente inteso come un elemento software interamente definito dalle interfacce offer te e richieste che possa essere sostituito da un altro componente equivalente anche se diversamente implementato e che possa essere riusato in contesti diversi analogamente ai componenti elettronici Secondo questa definizione qualsiasi modulo realizzato rispettando rigorosamente il principio dell infor mation hiding e capace di offrire servizi di utilit abbastanz
243. li un controllore centrale due sottosistemi di monitoraggio rispettivamente per la temperatura e l alimentazione un certo numero di sensori per la temperatura e per la tensione di rete e un sottosistema per la gestione delle situazioni di emergenza Il diagramma di sequenza rappresentativo di una serie di diagrammi che mostrano il comportamento del sistema in varie situazioni questo particolare diagramma mostra una possibile sequenza in cui si rileva un incendio Inoltre dalle specifiche risulta che l incendio pi pericoloso della mancanza di alimentazione per cui una eventuale attivit di gestione di una mancanza di elettricit deve essere interrotta in caso di incendio Da quanto detto risulta che 1 il controllore centrale d inizio alle attivit degli altri sottosistemi e deve restare in ascolto di eventuali messaggi di allarme dai sottosistemi di monitoraggio 5Si suppone che l impianto antincendio abbia un alimentazione autonoma ed affidabile 5 2 PROGETTO DI SISTEMA 169 Controller Emergency fire_alert fire_emergency power_alert power_emergency Controller FireMonitor TemperatureSensor Emergency i i i i 1 1 L start i m FireMonitor TemperatureSensor SURE get_temp fire_alert i start stop get_temp fire_emergency stop 1 1
244. li indi rizzari directories 4 rappresenta il dominio degli attributi di una voce in un indirizzario e 20 rappresenta i numeri telefonici Se un organizzazione volesse mantenere un database contenente i nomi e i numeri di telefono dei propri dipendenti potrebbe pubblicare lo schema logico del database etichet tando il tipo telephoneNumber con l identificatore OID 2 5 4 20 In questo modo chiunque sviluppi del software che debba interagire col database ha un riferimento univoco alla definizione del tipo telephoneNumber l iden tificatore permette quindi di assegnare un significato standard agli elementi di un sistema informativo B 4 2 Tipi strutturati I tipi strutturati sono ENUMERATED SEQUENCE SET e CHOICE I tipi ENUMERATED sono simili ai tipi enumerati del Pascal o del C possibile assegnare un valore numerico alle costanti dell enumerazione DaysOfTheWeek ENUMERATED 4 sunday 0 monday 1 saturday 6 I tipi SEQUENCE sono simili ai record del Pascal o alle struct del C L ordine dei campi nella sequenza significativo WeatherReport SEQUENCE stationNumber INTEGER 1 99999 time0fReport UTCTime pressure INTEGER 850 1100 temperature INTEGER 100 60 B 4 ASN 1 221 Il tipo UTCTime che appare in questo esempio un tipo predefinito uno useful type i cui valori possono avere la forma YY MMDDHHMMSSZ oppure YYMMDDHHMMSStHHMM dove i secondi sono opzionali Nella prima fo
245. liamo memo rizzare possono appartenere a qualsiasi classe che realizzi tali operazioni cio che comprenda le operazioni di HTKey nella propria interfaccia offer ta insieme ad altre eventuali operazioni Nell esempio la classe KeyString implementa queste due operazioni e la relazione fra KeyString e HTKey una realizzazione rappresentata da una linea tratteggiata terminante con una punta a triangolo equilatero Le interfacce si rappresentano in forma ridotta per mezzo di un cerchio come mostrato in Figura 4 5 In questo caso la classe o altro elemento di modello che realizza l interfaccia viene collegata a quest ultima per mezzo di una semplice linea non tratteggiata mentre una classe che richiede l interfac 4 4 MODULI NEI LINGUAGGI 137 interface HTKey equals in k HTKey boolean hash int HashTable get in k HTKey Object put in k HTKey in v Object key value A KeyString 1 1 Object Figura 4 4 Interfacce in UML 2 cia viene collegata all interfaccia con una dipendenza freccia tratteggiata o col simbolo di assembly introdotto nell UML2 KeyString KeyString sanae HashTable HTKey O HashTable HTKey Figura 4 5 Interfacce in UML 3 Package L UML dispone di un elemento di modello chiamato package per esprimere il rag
246. ll architettura quindi un linguaggio di programmazione deve fornire prima di tutto dei mezzi per separare e raggruppare le entit appartenenti ai moduli Inoltre in ciascun modulo bisogna separare l interfaccia dall implementazione cio la parte vi sibile da quella invisibile quindi i linguaggi devono fornire anche i mezzi per specificare quali dichiarazioni sono visibili all esterno e quali no Il termine incapsulamento si usa spesso per riferirsi alla separazione al raggruppamento e all occultamento selettivo delle entit che formano un modulo definire un modulo come chiudere i suoi componenti in una capsula o un pacchetto che li protegge da un uso incontrollato Classi Come gi accennato le classi in UML si possono usare per modellare dei componenti software che possono facilmente essere implementati con i cor rispondenti costrutti dei linguaggi di programmazione orientati agli oggetti In fase di progetto si specificano completamente gli attributi e le operazioni se non si gi fatto nella fase di analisi indicando tipi argomenti valori restituiti e visibilit Le operazioni da specificare sono quelle che defini scono l interfaccia e quindi hanno visibilit pubblica interfaccia verso ogni altra classe o protetta interfaccia verso le classi derivate Le operazioni con visibilit privata generalmente vengono aggiunte nella fase di codifica occasionalmente nella fase di progetto dettagliato In fase
247. lla oppure un grafico o non essere visualizzato affatto essendo destinato ad ulteriori elaborazioni meglio che la funzione di produrre un output venga affidata a un modulo specializzato in modo da avere un sistema pi strutturato e flessibile Precondizioni e postcondizioni La divisione di responsabilit comporta anche la necessit di specificare gli obblighi reciproci dei moduli Un modulo fornitore di un servizio garantisce ad ogni modulo cliente che in conseguenza dell espletamento del servizio per esempio l esecuzione di una procedura saranno vere certe relazioni logiche postcondizioni sullo stato del sistema Il modulo fornitore per si aspetta che all atto dell invocazione del servizio siano vere altre relazioni precondi zioni Per esempio un modulo che deve calcolare la radice quadrata y di un numero x ha come precondizione un vincolo sul segno del valore di x x gt 0 e come postcondizione una relazione fra x e il risultato x y Le post condizioni e le pre condizioni quindi rappresentano rispettivamente le responsabilit del modulo fornitore e quelle del modulo cliente riguardo a un dato servizio buona prassi scrivere le pecondizioni e postcondizioni di ciascuna operazione nella documentazione di progetto Gestione degli errori Un altro aspetto importante della divisione delle responsabilit la gestione degli errori e delle situazioni anomale Se si prevede che nello svolgimento di un servi
248. male mentre un teorema una formula dimostrabile nell ambito del sistema stesso Infine si pu dimostrare che questa teoria formale corretta e completa cio che ogni teorema di questa teoria una tautologia e viceversa 3 4 3 Logica del primo ordine La logica del primo ordine anche FOL first order logic permette di formare delle frasi in cui possibile riferirsi a entit individuali oggetti o individui sia specificamente per mezzo di simboli costanti e funzioni che denota no particolari entit sia genericamente per mezzo di simboli variabili che si riferiscono a individui non specificati analogamente ai pronomi indefini ti nel linguaggio naturale Le frasi del linguaggio inoltre possono essere quantificate rispetto alle variabili che vi compaiono cio si pu indicare se determinate propriet valgono per tutti i valori di tali variabili o solo per alcuni Le frasi pi semplici che possiamo esprimere nel linguaggio della logica del primo ordine sono del tipo gli oggetti a b c sono legati dalla relazione p 0 come caso particolare l oggetto a gode della propriet p Queste formule vengono combinate per costruire frasi pi complesse usando i connettivi ed i quantificatori Per esempio consideriamo queste frasi 1 Aldo bravo Beppe bravo Carlo bravo Se A B un teorema una tautologia 70 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 2
249. malfunzionamento dovuto alla divisione per zero Criterio di copertura delle condizioni Il problema dell esempio precedente sta nel fatto che nel programma la deci sione se eseguire il ramo then o il ramo else dipende da una condizione logica complessa Il criterio di copertura delle condizioni pi fine del criterio di copertura delle decisioni poich richiede che ciascuna condizione elementare venga resa sia vera che falsa dai diversi dati appartenenti al test Nell esem pio considerato questo criterio viene soddisfatto per esempio dal test x 0 y 5 x 5 y 5 Questo test per non soddisfa il criterio di copertura delle decisioni si pu verificare che per il test visto la condizione complessiva sia sempre vera per cui non riesce a rilevare la divisione per zero nel ramo else Criterio di copertura delle decisioni e delle condizioni Questo criterio combina i due precedenti richiedendo che sia le condizioni elementari sia le condizioni complessive siano vere e false per diversi dati di test Nell esempio considerato questo criterio viene soddisfatto dal te st x 0 y 5 x 5 y 5 x 5 y 5 osserviamo per che in questo caso non si rileva la divisione per zero nel ramo then 6 3 2 Testing funzionale Nel testing funzionale bisogna prima di tutto analizzare un modello concet tuale del sistema da collaudare con l obiettivo di trovare dei sottoinsiemi del dominio di ingresso da c
250. mbinazioni delle condizioni I test vengono scelti in modo tale da esercitare le varie combinazioni degli ingressi Consideriamo per esempio un interfaccia per un database che accetti dei comandi per mostrare il contenuto di un indice diviso in dieci sezioni Per chiedere la visualizzazione di una sezione l utente deve dare un comando formato da due caratteri dei quali il primo D oppure indifferentemente L ed il secondo la cifra corrispondente alla sezione richiesta da 0 a 9 Se il comando formato correttamente il sistema risponde visualizzando la sezione se il primo carattere non corretto il sistema stampa un messaggio di errore messaggio A e se il secondo carattere non corretto viene stam pato un altro messaggio di errore messaggio B Per scrivere la tabella di decisione dobbiamo individuare le condizioni booleane sugli ingressi cause e quelle sulle uscite effetti e numerarle per comodit di riferimento i nu meri sono stati scelti in modo da distinguere condizioni sugli ingressi sulle uscite e intermedie 198 CAPITOLO 6 CONVALIDA E VERIFICA Cause 1 il primo carattere D 2 il primo carattere L 3 il secondo carattere una cifra 20 il primo carattere D oppure L Effetti 50 visualizzazione della sezione richiesta 51 messaggio A 52 messaggio B La causa 20 intermedia fra le condizioni sugli ingressi e quelle sulle uscite La tabella di
251. mento fra i due stati ad alto livello avviene quando la sottomacchina dello stato Attivo ter mina il proprio funzionamento La transizione attivata dagli eventi riaggancio viene ereditata dai sottostati questo significa che in qualsiasi sottostato di Attivo il riaggancio riporta la macchina nello stato Inattivo Stati concorrenti Uno stato pu essere scomposto anche in regioni concorrenti che descrivono attivit concorrenti nell ambito dello stato che le contiene Queste attivit a loro volta sono descritte da macchine a stati La Fig 3 26 mostra il 114 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI an Ed sollev nre Attivo memoria n fata sconnessione Attesa2 in a Ss Conversazione cifra n f Attesa3 Chiamata F riaggancio accettazione Figura 3 25 Una macchina a stati gerarchica funzionamento di un termoventilatore in cui il controllo della velocita e quello della temperatura sono indipendenti on A gt StandBy Operation Temperature o Speed oS LowTemp cool high low war Figura 3 26 Una macchina a stati gerarchica con regioni concorrenti Gli stati concorrenti possono interagire attraverso eventi condivisi scam bio di segnali parametri degli eventi o dei segnali e attributi dell oggetto a cui appartiene la macchina a stati Le interazioni avvengono oltre che con lo scambio di eventi anche at
252. mero ciclomatico di un programma il numero di cammini completi cio cammini fra il nodo iniziale ed il nodo finale linearmente indipendenti del grafo di controllo modificato aggiungendo un arco fra il nodo terminale ed il nodo iniziale in modo da rendere il grafo fortemente connesso Se e il numero degli archi ed n il numero dei nodi il numero ciclomatico v e n 2 Se un programma composto di p sottoprogrammi la formula diventa vs e n42p Il numero ciclomatico pu essere calcolato anche senza costruire il grafo di controllo Se d il numero di decisioni istruzioni condizionali presenti nel programma le formule per il numero ciclomatico rispettivamente per un programma monolitico e per un programma composto di p sottoprogrammi diventano v d 1 v d p C 3 2 I criteri di Weyuker La ricercatrice Elaine Weyuker ha proposto una serie di criteri che dovreb bero essere soddisfatti dalle metriche di complessit Sebbene questi criteri siano pi che altro di interesse teorico e siano oltretutto controversi sono un 250 APPENDICE C METRICHE DEL SOFTWARE utile esempio del tipo di problemi che devono essere affrontati sia quando si inventa una metrica per qualche propriet del software sia quando vogliamo applicarne una gi esistente e dobbiamo quindi valutarne l adeguatezza Nel seguito P e Q denotano programmi o parti di programmi c una misura di complessit l equivalenza funzionale e
253. mmaterialit del software legata la difficolt di quantificare e de finire rigorosamente le caratteristiche del prodotto che ne determinano la qualit mentre per esempio la qualit di una parte meccanica largamente riconducibile a propriet fisiche e quindi misurabili questo generalmente non avviene per il software e Il software complesso un programma pu essere composto da un numero grandissimo di istruzioni e ciascuna di esse potenzialmente condiziona il comportamento di tutte le altre Inoltre il software non lineare nel senso che un piccolo cambiamento nel codice pu portare a grandi cambiamenti spesso indesiderati nel funzionamento di un applicazione A proposito della complessit del software osserviamo che questa tanto maggiore quanto meno il software strutturato Diciamo che un sistema soft ware strutturato se suddiviso in componenti moduli ciascuno dei quali interagisce con pochi altri componenti Le istruzioni contenute in ciascun componente hanno un campo d azione limitato al componente stesso eccet tuate quelle istruzioni che devono espressamente interagire con altri compo nenti Questo argomento verr ripreso nel capitolo relativo al progetto del software Oltre alle caratteristiche del software s esposte sulla produzione del software pesa il fatto che si tratta di un attivit ancora giovane sviluppatasi per di pi ad un ritmo velocissimo Questo comporta varie conse
254. mmazione come per esempio il programma make e di gestione delle configurazioni per esempio i sistemi CVS ed SVN La maggior parte dell attivit di progetto rivolta alla definizione della struttura logica del sistema ma nelle fasi pi vicine all implementazione si pu definire almeno a grandi linee anche la struttura fisica Nel seguito ci riferiremo essenzialmente alla struttura logica 4 2 1 Interfaccia e implementazione Per progettare l interfaccia di un modulo bisogna compiere un insieme di scel te guidate dai princip della divisione delle responsabilit e dell information hiding occultamento dell informazione La divisione delle responsabilit Il principio della divisione delle responsabilit dice che bisogna cercare di suddividere il lavoro svolto dal sistema e ricorsivamente da ciascun sotto 128 CAPITOLO 4 IL PROGETTO sistema fra i vari moduli in modo che a ciascuno di essi venga affidato un compito ben definito e limitato ricordiamo il vecchio motto del sistema operativo Unix do one thing well I moduli progettati secondo questo criterio hanno la propriet della coesione cio di offrire un insieme omogeneo di servizi Per esempio un modulo che calcola dei valori e provvede anche a scriverli sull output poco coeso poich la rappresentazione dei risulta ti indipendente dal procedimento di calcolo per esempio un insieme di risultati potrebbe essere visualizzato con una tabe
255. mpilazione lin terfaccia di un modulo pu essere definita da un file header la relazione di uso pu essere rappresentata dalle direttive include Non si possono defi nire dei veri e propri dati astratti ma i programmatori possono attenersi ad una disciplina nell uso di tipi derivati cio accedere alle strutture dati che implementano un tipo solo attraverso le operazioni previste per quel tipo rinunciando a sfruttare la possibilit concessa dal linguaggio di accedere ai dati direttamente I linguaggi di programmazione pi evoluti permettono una rappresenta zione pi diretta dei concetti relativi alla programmazione modulare In ogni caso la conoscenza dei costrutti linguistici con cui si rappresentano i vari con cetti necessaria per verificare la correttezza dell implementazione rispetto al progetto e per comprendere la corrispondenza fra architettura logica ed architettura fisica 134 CAPITOLO 4 IL PROGETTO Nel s guito verranno introdotte le notazioni UML per i concetti fonda mentali del progetto orientato agli oggetti 4 4 1 Incapsulamento e raggruppamento Come gi osservato un programma consiste in un insieme di istruzioni che in un certo linguaggio definiscono numerose entit elementari come variabili funzioni e tipi Ovviamente il programma non deve essere una massa amorfa e indifferenziata di definizioni queste definizioni devono essere raggruppa te in modo da corrispondere ai moduli previsti da
256. n Area C Circle return Float function Perimeter C Circle return Float procedure Draw C Circle type Rectangle is new Figure with record Width Float Height Float end record function Area R Rectangle return Float function Perimeter R Rectangle return Float procedure Draw R Rectangle type Square is new Rectangle with null record end Figures 290 APPENDICE F MODULI IN C E IN ADA In questo esempio i tipi Circle e Rectangle ereditano da Figure il campo Start a cui aggiungono i campi propri dei tipi derivati Le funzioni appartenenti all interfaccia vengono ridefinite per ciascun tipo osserviamo che l oggetto su cui operano tali funzioni viene passato esplicitamente co me parametro Il tipo Square eredita da Rectangle senza aggiungere altri campi come indica la clausola null record Il linguaggio Ada 95 permette anche di definire funzioni astratte analo gamente alle funzioni virtuali pure del C Bibliografia ECSS E 40B Draft 1 Space engineering Software ESA ESTEC 2002 ANSI IEEE 1008 1987 IEEE Standard for Software Unit Testing ANSI and IEEE 1987 ISO IEC 12207 2008 E Systems and software engineering Software life cycle processes Ing nierie des syst mes et du logiciel Processus du cycle de vie du logiciel ISO IEC and IEEE 2008 ESA PSS 05 0 Issue 2 ESA Software Engineering Standards issue 2 European Space Agency 1991 ISO IEC IEEE 24765 2010 E Sy
257. na transizione post P 2 post y y 2 P y z F La rete cost definita semplicemente la descrizione di un grafo data elencandone i nodi e gli archi col relativo orientamento una coppia x y un arco orientato da x a y quindi la terna P T F rappresenta solo la struttura della rete Per rappresentare lo stato iniziale del sistema modellato dalla rete si introduce la funzione marcatura iniziale oltre a una funzione peso il cui significato verr chiarito pi oltre Una Rete Posti Transizioni quindi una quintupla Npyr P T F W Mo dove e la funzione W il peso o molteplicit degli archi W F IN 0 e la funzione Mo la marcatura iniziale Mo P gt IN B 8 1 Abilitazione e regola di scatto La marcatura iniziale descrive lo stato iniziale del sistema in questo stato alcune azioni saranno possibili e altre no Delle azioni possibili alcune o tutte verranno eseguite in un ordine non specificato e non specificabile in questo formalismo L esecuzione di queste azioni modificher lo stato del sistema che verr descritto da una nuova funzione marcatura ovvero cam bier il valore associato a ciascun place valore chiamato convenzionalmente numero di token Come gi detto le azioni sono modellate dalle transizioni Quando l a zione corrispondente ad una transizione possibile nello stato attuale si dice che la transizione abilitata nella marcatura at
258. ndenti a diversi istanti del tempo La relazione di accessibilit descrive la struttura del tempo per esempio se ammettiamo che ad uno stato possano seguire due o pi stati alternativi abbiamo un tempo ramificato Si possono quindi considerare dei tempi lineari o ramificati o circolari sistemi periodici o ancora pi complessi Inoltre il tempo pu essere continuo o discreto Nel seguito ci riferiremo ad un tempo lineare e discreto L insieme dei mondi possibili quindi una successione di stati s ove la relazione di accessibilit tale che R 5 sj se e solo se lt j 3 4 LOGICA 89 Nelle logiche temporali i due operatori modali principali assumono questi significati e O henceforth d ora in poi e eventually prima o poi I due operatori sono legati dalle relazioni Fat OF 047 Da questi operatori se ne possono definire altri o next prossimo istante U until finch pUg se e solo se esiste k tale che q vero in s e p vero per tutti gli s con i lt k m always in the past sempre in passato sometime in the past qualche volta in passato Nell esempio seguente usiamo una logica temporale per modellare un sem plice sistema a scambio di messaggi potrebbe far parte della specifica di un protocollo di comunicazione send m gt state connected send_ack m gt receive m B receive m gt A send m O A send m gt
259. ne che prescrive come collaudare l interfacciamento fra i moduli nel corso della costruzione del sistema Sez 6 5 1 2 1 4 Programmazione codifica e test di unit In questa fase i singoli moduli definiti nella fase di progetto vengono imple mentati e collaudati singolarmente Vengono scelte le strutture dati e gli algoritmi che di solito non vengono specificati dal DSP Evidentemente questa fase cruciale in quanto consiste nella realizzazio ne pratica di tutte le specifiche e le scelte delle fasi precedenti Il codice prodotto in questa fase oltre ad essere conforme al progetto deve avere delle qualit che pur essendo invisibili all utente concorrono in modo determi nante sia alla bont del prodotto che all efficacia del processo di produzione Fra queste qualit citiamo la modificabilit e la leggibilit Per conseguire tali qualit necessario adottare degli standard di codifica che stabiliscono ad esempio il formato nel senso tipografico dei file sorgente le informazioni che devono contenere oltre al codice autore identificazione del modulo e della versione ed altre convenzioni L attivita di codifica strettamente collegata a quella di testing e di debugging Tradizionalmente queste tre attivit sono affidate alla stessa persona che le esegue secondo i propri criteri Tuttavia l attivit di testing di unit per la sua influenza critica sulla qualit del prodotto deve essere svolta in mo
260. ne che ha la stessa segnatura nome dell operazione tipo del valore restituito numero tipo e ordine degli argomenti di un operazione della classe base ma una diversa implementazione Naturalmente la ridefinizione utile se la nuova implementazione compatibile col significato originario dell ope razione altrimenti non varrebbe il principio di sostituzione Per esempio consideriamo una classe Studente con l operazione iscrivi che rappresenta l iscrizione dello studente secondo la procedura normale Se una categoria di studenti per esempio quelli gi in possesso di una laurea richiede una procedura diversa si pu definire una classe StudenteLaureato derivata da Studente che ridefinisce opportunamente l operazione iscrivi Una classe derivata pu essere ulteriormente specializzata in una o pi classi e una classe base pu essere ulteriormente generalizzata finch non si arriva alla classe universale che comprende tutti i possibili oggetti Quando 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 105 si hanno delle catene di generalizzazioni pu essere utile distinguere le classi basi o derivate dirette da quelle indirette a seconda che si ottengano in un solo passo o no a partire da un altra classe Le classi base e derivate indirette si chiamano anche rispettivamente antenati e discendenti La generalizzazione si rappresenta con una freccia terminante in un trian golo vuoto col vertice che tocca la superc
261. ne di un tasto Nel s guito per spesso si user il termine evento al posto di occorrenza stati situazioni in cui un oggetto soddisfa certe condizioni esegue delle attivit o semplicemente aspetta degli eventi transizioni conseguentemente al verificarsi di un evento un oggetto pu modificare il proprio stato una transizione il passaggio da uno stato ad un altro che si pu modellare come se fosse istantaneo azioni possono essere eseguite in corrispondenza di transizioni e non sono interrompibili per cui si possono modellare come se fosero istantanee attivit possono essere associate agli stati possono essere interrotte dal ve rificarsi di eventi che causano l uscita dallo stato ed hanno una durata non nulla Un evento pu essere una chiamata di operazione un cambiamento un segnale o un evento temporale Un evento di chiamata avviene quando viene ricevuta una richiesta di esecuzione di un operazione 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 111 Un evento di cambiamento il passaggio del valore di una condizione logica da falso a vero e si rappresenta con la parola when seguita da un e spressione booleana Per esempio l espressione when p gt P rappresenta l evento p supera la soglia P I segnali sono delle entit che gli oggetti si possono scambiare per comu nicare fra di loro e possono essere strutturati in una gerarchia di generaliz zazione per esempio un ipotetico segn
262. nfluenzare negativamente la qualit dello studio di fattibilit poich il produttore di software per non perdere il contratto pu sottovalutare i costi e le difficolt della proposta ovvero sopravvalutare le proprie capacit e risorse Questi errori di valutazione rischiano poi di 2 1 IL MODELLO A CASCATA 25 causare ritardi e inadempienze contrattuali con perdite economiche per il fornitore o per il committente A volte lo studio di fattibilit viene fornito come prodotto finito indipen dente dall eventuale prosecuzione del progetto che pu cadere se il commit tente rinuncia pu essere affidato alla stessa organizzazione che ha fornito lo studio di fattibilit oppure essere affidato ad un altra organizzazione In questo caso lo studio di fattibilit servito ad evitare il danno economico derivante dalla decisione di sviluppare un prodotto eccessivamente costoso o addirittura irrealizzabile Inoltre le conoscenze acquisite e rese accessibili nel corso dello studio di fattibilit contribuiscono ad arricchire il patrimonio di competenze del committente Il semilavorato prodotto dallo studio di fattibilit un documento che dovrebbe contenere queste informazioni e una descrizione del problema che deve essere risolto dall applicazione in termini di obiettivi e vincoli e un insieme di scenari possibili per la soluzione sulla base di un analisi dello stato dell arte cio delle conoscenze e delle tecnologie
263. nformatiche La necessit di una guida rivolta specificamente all industria del software discende dal fatto che la 9001 pur essendo proposta come riferimento del tutto generale sta ta concepita inizialmente per l industria manifatturiera per cui molte delle sue indicazioni non sono applicabili direttamente all industria informatica La ISO 9000 3 fornisce un interpretazione della 9001 adatta alle condizioni proprie dell industria informatica La ISO 9004 una specie di manuale utente per le 9001 9002 e 9003 d una descrizione pi ampia dei rispettivi requisiti e fornisce indicazioni riguardo alle possibili scelte delle aziende per soddisfare tali requisiti In particolare la ISO 9004 2 si riferisce alle aziende fornitrici di servizi Questa norma rilevante per l industria del software poich le aziende informatiche offrono dei servizi oltre che dei prodotti importante rilevare che le norme contengono soltanto dei requisiti per il sistema qualit e non prescrivono i metodi da applicare per soddisfarli tocca alle singole organizzazioni fare queste scelte E 1 LE NORME ISO 9000 271 E 1 1 La qualit nelle norme ISO 9000 La norma ISO 9000 3 tratta i seguenti aspetti della gestione per la qualit Responsabilit della direzione sistema qualit verifiche ispettive interne del sistema qualit azioni correttive riesame del contratto specifica dei requisiti del committente pian
264. no riconducibili allo schema di Fig 5 24 che risolve il problema di organizzare un sistema formato da elementi diversi ma derivati da un interfaccia comune che possono contenere altri elementi derivati dalla stessa interfaccia Questo schema noto come pattern Compostte 5 3 2 Adapter In Fig 5 25 la classe Conroller richiede l interfaccia Actuator La seman tica dell operazione astratta position posizionare un utensile sul punto 180 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Expression Widget 2 evaluate l Window Compound Simple setTitle string add Widget Literal Variable BinaryExpression rep string name string operator ArithOp Panel Button TextField value float value float evaluate action string getText evaluate evaluate Menu espressioni aritmetiche interfaccia grafica Figura 5 23 Due problemi simili Component operation Leaf Composite operation operation Figura 5 24 Design pattern Composite di coordinate cartesiane x y L interfaccia offerta dalla classe Robot ha l operazione move che posiziona l utensile sul punto di coordinate polari 0 0 Le due classi si possono adattare inserendo la classe RobotAdap ter che real
265. non formalizzata matematicamente ed una se mantica troppo ricca e complessa per essere formalizzata Al di fuori del linguaggio naturale non esistono dei veri e propri linguaggi informali ma so lo delle notazioni grafiche inventate ed usate liberamente per schematizzare qualche aspetto di un sistema la cui interpretazione viene affidata all intuito del lettore ed a spiegazioni in linguaggio naturale I disegni fatti alla lavagna durante le lezioni rientrano in questo tipo di notazioni Stile di rappresentazione Un altra possibile suddivisione fra linguaggi descrittivi e operazionali La differenza fra questi linguaggi pu essere compresa considerando per esempio un semplice sistema costituito da un contenitore di gas con una valvola di scarico I requisiti di sicurezza esigono che quando la pressione p del gas supera un certo valore di soglia P la valvola si apra e quando la pressione torna al di sotto del valore di soglia la valvola si chiuda Possiamo esprimere questo requisito con una formula logica p lt P amp valvola chiusa in cui valvola chiusa una proposizione che vera quando la valvola chiusa In questo caso il sistema rappresentato da una relazione logica fra le propriet delle entit coinvolte e si ha quindi una rappresentazione descrittiva o dichiarativa Lo stesso sistema pu avere una rappresentazione operazionale cio in termini di una macchina astratta che si pu trovare in certo stato e
266. nte non n vera n falsa finch il simbolo x non viene sostituito da un espressione che denoti un particolare individuo per esempio Aldo o anche il padre di Aldo Dopo questa sostituzione la formula pu essere vera o falsa ma ha comunque un valore definito Se vogliamo esprimere nella logica del primo ordine la frase qualcuno bravo dobbiamo usare un nuovo tipo di simbolo il quantificatore esistenzia le drb x cio esiste qualcuno che bravo Questa formula ha significato cos com perch afferma una propriet dell insieme degli studenti bravi la propriet di non essere vuoto Una formula come b x dove cio appaiono variabili non quantificate si dice aperta mentre una formula come 4xb x con le variabili quantificate si dice chiusa 3 4 LOGICA 71 Sintassi Quanto sopra viene espresso pi formalmente dicendo che un linguaggio del primo ordine costituito da e un insieme numerabile V di variabili x y z e un insieme numerabile F di simboli di funzione f g h a ciascun simbolo di funzione associato il numero di argomenti ariet della funzione F Fp UF UFoU dove Fn l insieme dei simboli n ari di funzione le funzioni di ariet zero sono chiamate costanti a b c Ji e un insieme 7 di termini t te t3 definito dalle seguenti regole 1 una variabile un termine 2 se f un simbolo n ario di funzione e t1 tn sono t
267. nzione inverso group THEORY BEGIN G TYPE insieme non interpretato non vuoto e G elemento neutro i G gt G inverso G G gt G operazione binaria daGxGaG x y z VAR G associative AXIOM x y z x y z id_left AXIOM e x X inverse_left AXIOM i x x e inverse_associative THEOREM i x x y y END group Questa teoria descrive una struttura algebrica formata dall insieme G e dall operazione binaria che chiameremo per semplicit prodotto che 8Nell ambiente PVS tutte le formule sono chiuse se una variabile non ha un quantificatore esplicito viene considerata come quantificata universalmente 3 4 LOGICA 83 gode delle propriet di chiusura associativit esistenza dell elemento neutro e invertibilita La prima dichiarazione dice che G un tipo non interpretato cio non definito in termini di altri tipi e non vuoto indicato dal simbolo Se guono le dichiarazioni dell operazione di inversione e dell operazione binaria caratteristica del gruppo I simboli x y e z sono variabili sull insieme G che vengono usate nelle definizioni successive I tre assiomi definiscono la propriet di associativita l elemento neutro o identico e la propriet di invertibilit Le variabili che compaiono in queste formule hanno implicitamente il quantificatore universale Infine un teorema da dimostrare per ogni x e y appartenenti a G
268. o attivo oppure si pu richiedere che un oggetto attivo resti in attesa di un evento prima di procedere nella sua esecuzione Questo tipo di informazioni si rappresentano in modo naturale con macchine a stati associate agli ogget ti attivi A volte le macchine a stati sono gi state definite nel modello di analisi che nel modello di progetto possono essere completate o rese pi det tagliate Nell esempio di Fig 3 27 pag 115 riportato in forma semplificata nella Fig 5 22 il produttore ed il consumatore si sincronizzano attraverso gli eventi produci e consuma send consuma Produttore send produci Consumatore send produci Elaborazione Figura 5 22 Due oggetti attivi interagenti Questo tipo di sincronizzazione si pu implementare con i semafori di sincronizzazione Per realizzare questo esempio i due eventi potrebbero es 176 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI sere rappresentati da due variabili booleane produci e consuma associate a due semafori e incapsulate in una classe Buffer che offre i le operazioni signal produci wait _produci signal consuma e wait_consuma Un thread che deve attendere un evento per esempio consuma esegue la corrispondente operazione del buffer wait_consuma che legge in mu tua esclusione la variabile logica corrispondente al segnale consuma e fintantoch la variabile non vera si mette in attesa sul semaforo asso ciato Per in
269. o essere composti o semplici Gli elementi composti sono per esempio finestre pannelli e ment e tutti hanno l operazione add ereditata da Compound che permette di aggiungere un widget all elemento composto Gli elementi semplici sono per esempio bottoni e campi per l inserimento di testi ed hanno varie operazioni specifiche di ciascuna classe In particolare la classe Button astratta avendo nella propria interfaccia l operazione astratta ac tion che rappresenta una volta implementata l azione da eseguire quando un particolare bottone viene cliccato Supponiamo di voler realizzare un interfaccia in cui una finestra contie ne un bottone e un campo testo dove il bottone serve a scrivere sull uscita standard il contenuto del campo testo preventivamente riempito dall utente Tutti i meccanismi a basso livello per la gestione del mouse della tastiera della visualizzaizone grafica sono forniti dal framework oltre alla struttura logica ed ai meccanismi di interazione fra i vari elementi Il programmato 164 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI Widget Window Compound Simple setTitle string add Widget Panel Button TextField action string getText Menu Figura 5 16 Un semplice framework re deve soltanto scrivere una classe p es MyButton derivata da Button che implementi l ope
270. o agli aspetti pi tradizionalmente ingegneristici della materia e purtroppo o forse per fortuna sar possibile trattare solo pochi argomenti Questi dovrebbero per dare una base sufficiente ad impo stare il lavoro di progettazione nella vita professionale Il corso si propone di fornire le nozioni fondamentali sia su argomenti di immediata utilit pratica sia su temi rilevanti per la formazione culturale dell ingegnere del software In questa sezione vogliamo introdurre alcuni motivi conduttori che ricor reranno negli argomenti trattati in queste dispense 1 4 1 Le parti in causa Lo sviluppo e l uso di un sistema software coinvolge molte persone ed necessario tener conto dei loro ruoli delle esigenze e dei rapporti reciproci per ottenere un prodotto che risponda pienamente alle aspettative Per questo l ingegneria del software studia anche gli aspetti sociali ed organizzativi sia dell ambiente in cui viene sviluppato il software sia di quello in cui il software viene applicato Questo aspetto dell ingegneria del software non verr trattato nel nostro corso ma qui vogliamo chiarire alcuni termini che saranno usati per designare alcuni ruoli particolarmente importanti Sviluppatore sono sviluppatori coloro che partecipano direttamente allo sviluppo del software come analisti progettisti programmatori o col laudatori Due o pi ruoli possono essere ricoperti da una stessa perso na In alcuni casi il termine
271. o alla chiamata dell entry Il primo dei task che arriva al punto di sincronizzazione rispettivamente accept o entry call aspetta che arrivi anche l altro Durante l esecuzione del corpo dell entry il task cliente viene sospeso e se pi clienti invocano una stessa entry questi vengono messi in coda Il server con un istruzione select pu accettare chiamate per pi entries in questo caso viene eseguita la prima entry che stata chiamata da qualche cliente Un istruzione di entry call formata dal nome del task contenente la entry seguito da un punto dal nome dell entry e da eventuali parametri fra parentesi Nel nostro esempio i nomi dei task sono A B e C le entries sono E1 ed E2 ed i corpi delle entries sono R1 ed R2 La Fig B 7 mostra il testo del programma corrispondente alla rete di Fig B 8 in cui le transizioni rappresentano l esecuzione delle istruzioni ed i place rappresentano lo stato del programma fra una transizione e l altra Osservando la rete possiamo mettere in evidenza la concorrenza fra le transizioni SA1 SB1 ed SC1 il conflitto fra accept Ei e accept E2 la sequenza fra R1 e end E1 e fra R2 e end E2 234 APPENDICE B FORMALISMI DI SPECIFICA task body A is task body B is task body C is SA1 SB1 SCi B E1 select B E2 SA2 accept El do SC2 end A R1 end C end Ei or accept E2 do R2 end E2 end select SB2 end
272. ole qualsiasi formula si pu spostare da un lato all altro del simbolo di sequente negandola analogamente ai termini additivi di un equazione algebrica Le etichette azm cut e ctr si possono leggere come assioma taglio e contrazione L unico assioma del sistema formale viene visto come una regola di inferenza con un insieme vuoto di premesse Nel calcolo dei sequenti la dimostrazione di una formula F si costruisce all indietro partendo da un sequente della forma F Le regole d inferenza vengono applicate all indietro dato un sequente si cerca una regola la cui conseguenza abbia le stessa struttura del sequente e questo viene sostituito dalle premesse Poich le regole d inferenza possono avere due premesse questo procedimento costruisce un albero di sequenti chiamato albero di dimostrazione proof tree avente per radice il sequente iniziale Applicando le varie regole ogni ramo dell abero pu crescere dando origine a nuovi rami ma quando un sequente ha la stessa struttura dell assioma F AF A A la regola arm produce un sequente vuoto La dimostrazione termina con successo se e quando tutti i rami sono chiusi con l assioma La Figura 3 6 mostra come esempio la dimostrazione della formula A V AB gt A A B 3 4 5 Logiche tipate Nelle logiche tipate il dominio ripartito in tipi types sorts Esiste un quantificatore per ciascun tipo per ogni predicato viene f
273. ome una classe un componente o un package con lo stereotipo utility gt Nel progetto architetturale non necessario mostrare la struttura interna della libreria e di solito non serve nemmeno elencare le operazioni dell interfaccia di programmazione Nemmeno nel pro getto in dettaglio necessario generalmente mostrare queste informazioni anche se in certi casi pu essere utile esplicitare quali parti dell interfaccia di programmazione vengono usate e con quali classi della libreria si interagisce 5 2 PROGETTO DI SISTEMA 163 library Li Database utility mathlib Connection double abs double x double ceil double x double floor double x Query Result Figura 5 15 Due tipi di librerie Framework Come abbiamo detto un framework offre uno schema di soluzione preconfe zionato per un determinato tipo di problema e viene usato in un applicazione particolare specializzandone alcune caratteristiche Questa specializzazione avviene generalmente per mezzo del polimorfismo il framework offre al pro gettista delle classi e delle interfacce il cui comportamento viene specializ zato derivando altre classi in cui si possono ridefinire i metodi delle classi e interfacce originarie ed aggiungere ulteriori funzioni Un esempio evidentemente semplificato di framework viene mostrato in Fig 5 16 Un interfaccia grafica formata da elementi Widget che posson
274. ominale di lavoro M di ciascun componente MP SO p 5 Si calcola la quantit corretta di lavoro Ml di ciascun componente usando i rispettivi coefficienti correttivi M MM II A Il modello avanzato Il modello COCOMO avanzato introduce dei coefficienti correttivi anche nel calcolo della ripartizione dei costi fra le fasi di sviluppo Inoltre le stime si basano su un modello dell applicazione pi articolato che prevede un ar chitettura strutturata gerarchicamente in sottosistemi e moduli Per ulte riori informazioni sul modello avanzato si faccia riferimento alla letteratura relativa Valutazione del metodo Da alcune esperienze di applicazione del metodo COCOMO risulta che in grado di stimare i costi con un errore inferiore al 20 nel 25 dei casi per il modello base nel 68 dei casi per il modello intermedio e nel 70 dei casi per il modello avanzato Nel valutare l applicabilit del metodo bisogna tener presente che le formule e le tabelle sono state ottenute per mezzo di analisi statistiche su progetti con queste caratteristiche applicazioni generalmente complesse e critiche ciclo di vita a cascata requisiti stabili attivit di sviluppo svolte in parallelo da pi gruppi di programmatori elevata maturit dell organizzazione produttrice e competenza dei pro gettisti DI BWIN C 5 STIMA DEI COSTI 259 Un organizzazione che voglia applicare questo metodo di stima deve quindi int
275. omma fra oggetti VECTOR function SIGMA A VECTOR return ITEM questa e la somma degli elementi di un VECTOR end Questo package pu essere istanziato in questo modo package INT_VECT is new VECT_OP INTEGER TABLE F 2 2 Eccezioni In Ada le eccezioni sollevate in un package possono essere dichiarate come nel seguente esempio package StackADT is type Stack is private procedure Push S in out Stack E in Integer procedure Pop S in out Stack E out Integer Full Empty exception private type Table is array 1 10 of integer type Stack is record t Table index integer 0 end record end StackADT 288 APPENDICE F MODULI IN C E IN ADA L istruzione raise viene usata per sollevare un eccezione package body StackADT is procedure Push S in out Stack E in Integer is begin if S index gt 10 then raise Full end if end Push procedure Pop S in out Stack E out Integer is begin if S index 0 then raise Empty end if end Pop end StackADT Uno handler una sequenza di istruzioni compresa fra la parola chiave exception e la fine del blocco cui appartiene lo handler Generalmente uno handler costituito da una sequenza di clausole when che specificano le azioni da compiere quando viene sollevata un eccezione Nel seguente esempio si suppone che la procedura StackADTTest possa sollevare l eccezione Full procedure StackADTTest is i INTEGER s Stac
276. ommittente utente Figura 2 3 Requisiti e specifiche La stesura delle specifiche quindi un lavoro di interpretazione dei requi siti e non si pu dare per scontato che le specifiche rispecchino fedelmen te i requisiti cio le reali esigenze del committente o utente come mostra una famosa vignetta riproposta con innumerevoli variazioni nella letteratura dell ingegneria del software Fig 2 4 da 16 In una delle due accezioni usate la convalida consiste nel valutare la correttezza e la qualit del prodotto rispetto ai requisiti mentre la verifica 34 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO Tungsten carge bushes Sun shade Stainless steel Solid mahogany it 2 sione i What Product Marketing What the salesman Design group s initial specified promised design a i ZE 4 i DI Eas EST f fi TER o Ho Sone Seana sa di P Corp Product Architecture s Pre release version modified design Sa 2 What the customer actually wanted Figura 2 4 Il processo di sviluppo del software 16 prende come termine di riferimento le specifiche In questa accezione sia la convalida che la verifica si possono applicare in pi fasi del processo in par ticolare ogni semilavorato del processo a cascata si considera come specifica per quello successivo e come implementazione di quello precedente s
277. on Applied Mathematics volume 19 pages 19 32 AMS 1967 E Gamma R Helm R Johnson and J Vlissides Design Patterns Elements of Reusable Object Oriented Software Addison Wesley 1995 C Ghezzi A Fuggetta S Morasca A Morzenti and M Pezz In gegneria del Software Progettazione sviluppo e verifica Mondadori 1991 C Ghezzi M Jazayeri and D Mandrioli Ingegneria del Software Fondamenti e principi Pearson Education Italia 2004 Tom Gilb Principles of software engineering management Addison Wesley Longman Publishing Co Inc Boston MA USA 1988 C A R Hoare An axiomatic basis for computer programming Commun ACM 12 10 576 583 October 1969 I Jacobson G Booch and J Rumbaugh The Unified Software Development Process Addison Wesley 1999 F Jahanian and A K Mok Safety analysis of timing properties in real time systems IEEE Transactions on Software Engineering SE 12 9 890 904 September 1986 J R Levine T Mason and D Brown lex amp yace O Reilly amp Associates 1992 H Lichter M Schneider Hufschmidt and H Zillighoven Prototyping in industrial software projects bridging the gap between theory and practice IEEE Trans on Software Engineering 20 11 November 1994 R C Linger Cleanroom process model IEEE Software 11 2 50 58 1994 E Mendelson Introduction to Mathematical Logic 3rd Edition Van Nostrand 1987 BIBLIOGRAFIA 293 24 MIL
278. onda dell uso e delle persone a cui sono destinate Una specifica descrive che cosa deve fare un sistema o quali propriet deve avere ma non come deve essere costruito per esibire quel comporta mento o quelle propriet La specifica di un palazzo non dice come fatta la sua struttura di quanti piloni e travi composto di quali dimensioni e via dicendo non dice cio qual la realizzazione di un palazzo che soddisfi i re quisiti specificati nel campo del software la realizzazione di solito si chiama implementazione Un palazzo la realizzazione di una specifica ma naturalmente la costru zione del palazzo deve essere preceduta da un progetto Un progetto un insieme di documenti che descrivono come deve essere realizzato un sistema Per esempio il progetto di un palazzo dir che in un certo punto ci deve essere una trave di una certa forma con certe dimensioni Questa descri zione della trave a sua volta una specifica dei requisiti propriet fisiche richieste della trave stessa Infine la trave vera fatta di cemento la realizzazione di tale specifica Possiamo quindi vedere il processo di svilup po di un palazzo come una serie di passaggi si produce una prima specifica orientata alle esigenze del committente poi una specifica orientata ai requi siti del sistema poi un progetto che da una parte un implementazione delle specifiche e dall altra esso stesso una specifica per il costruttore
279. one e da un istruzione L eccezione sollevata da un istruzione throw viene gestita da uno handler il cui argomento formale ha lo stesso tipo dell operando della throw Conviene definire delle classi destinate a rappresentare i diversi tipi di eccezione non esistono eccezioni predefinite dal linguaggio ma alcune eccezioni sono defi nite nella libreria standard Nel seguente esempio vengono definite le classi RangeExc e SizeExc che rappresentano rispettivamente le eccezioni sul va lore dell indice di un elemento e sulla dimensione del vettore Le due classi sono vuote cosa permessa dalla sintassi del linguaggio poich in questo caso non ci interessa associare informazioni alle eccezioni Nel file di intestazione della classe Vector le eccezioni sollevate da cia scuna funzione vengono dichiarate esplicitamente per mezzo delle clausole throw diverse dalle istruzioni throw Vector h class Vector double p 282 APPENDICE F MODULI IN C E IN ADA int size public enum max 32000 class RangeExc class SizeExc Vector int s throw SizeExc double amp operator int i throw RangeExc LF wes bj Le clausole throw vengono ripetute anche nelle definizioni in modo che il compilatore possa verificare la coerenza fra dichiarazioni e definizioni Vector cc include Vector h Vector Vector int s throw SizeExc if s lt 0 max lt s throw SizeExc p new double size s dou
280. one in evidenza le re ciproche affinit e differenze Per esempio pu essere utile classificare i prodotti di un azienda i suoi clienti o i suoi dipendenti Per descrivere precisamente una classificazione PUML mette a disposi zione il concetto di insieme di generalizzazioni Informalmente un insieme di generalizzazioni un modo di raggruppare le sottoclassi di una classe base cio un insieme di sottoinsiemi a cui si pu dare un nome che descriva il cri terio con cui si raggruppano le sottoclassi Un insieme di generalizzazioni completo se ogni istanza della classe base appartiene ad almeno una delle sot toclassi e disgiunto se le sottoclassi sono disgiunte l intersezione di ciascuna coppia di sottoclassi vuota Per default un insieme di generalizzazioni incompleto e disgiunto 13Qsserviamo che si parla di strutture ricorsive non cicliche L aggregazione una relazione gerarchica cio priva di cicli 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 107 Lavoratore incomplete disjoint Operaio Impiegato Professore Figura 3 19 Insieme di generalizzazioni incompleto e disgiunto Nell esempio di Fig 3 19 si suppone che una persona possa fare un solo la voro l insieme di generalizzazioni quindi disgiunto ed incompleto perch evidentemente esistono molte altre categorie di lavoratori In Fig 3 20 in vece si suppone che una persona possa pratica
281. onitor una sezione critica cio un attivit non interrompibile Questo rispecchia il requisito che il trattamento di un incendio abbia una priorit pi alta rispetto all altra situazione di rischio Nella seconda regione il controllore attiva il monitor dell alimentazione che esegue un blocco loop condizionato sia dal valore restituito da pwr_up che da quello di get _temp poich il ciclo deve terminare anche in caso di incendio All uscita dal ciclo c un blocco opt che viene eseguito soltanto se non stato rilevato un incendio Esistono vari altri operatori che qui non tratteremo Osserviamo infi ne che abbiamo usato due tipi di frecce per due diversi tipi di messaggi i 5 2 PROGETTO DI SISTEMA 171 1 fire_alert a fire_emergency Controller FireMonitor PowerMonitor TemperatureSensor PowerSensor Emergency par start i i i Too o I 1 i i h 1 1 i loop 1 teT J i j i i t get_temp i i i 1 T 1 1 ritical 1 1 I i 1 i 1 1 1 1 i 1 1 1 1 1 power_alert stop LIU i stan A n a o loop 1 t lt T amp p J i p pwr_up i pat J power emergency stop Figura 5 20 Un sistema concorrente 3 messaggi sincroni sono destinati a oggetti passivi i sensori e il gestore delle emergenze i messaggi asincroni sono destinati a
282. ori costanti parole chiave e un insieme di produzioni della forma A gt a dove A un simbolo non terminale e a una sequenza di simboli ciascuno dei quali pu essere terminale o non terminale Una produzione di questa forma dice che il simbolo A pu essere sostituito dalla sequenza at Tipicamente tali grammatiche vengono descritte con una notazione basata sulla forma normale di Backus Naur BNF ben nota a chiunque abbia stu diato un linguaggio di programmazione E utile tener presente che i linguaggi 1Osserviamo che la sostituzione pu essere applicata qualunque sia il contesto di A cio i simboli che precedono e seguono A questo spiega il termine non contestuali 218 APPENDICE B FORMALISMI DI SPECIFICA che possono essere specificati non si limitano ai linguaggi di programmazione ma comprendono anche i linguaggi di comando dei sistemi operativi e delle applicazioni interattive i formati dei file di configurazione e in generale i formati di qualsiasi dato letto o prodotto da un applicazione Per esempio la seguente specifica in linguaggio YACC 20 descrive una sintassi per le espressioni aritmetiche espr espr espr espr espr espr espr espr espr IDENTIFIER INTEGER Il programma Yacc analogamente al programma Lex gi visto partendo da questa sintassi pu produrre una funzione in linguaggio C che riconosce le espressioni aritmetiche in un file di testo
283. passare ad un altro stato effettuando cio una transizione quando avvengono certi eventi La figura 3 1 mostra la macchina astratta corrispondente all esempio che si pu trovare nello stato aperto o chiuso secondo il valore della pressione Le espressioni when p gt P e when p lt P denotano gli eventi associati al passaggio della pressione a valori rispettivamente maggiori o minori della soglia P la prima espressione per esempio significa p gt P diventa vero 3 3 FORMALISMI ORIENTATI AL CONTROLLO 53 chiuso valvola chiusa and p lt P when p gt P when p lt P aperto not valvola chiusa and p gt P Figura 3 1 Una descrizione operazionale e sua corrispondenza con la descrizione dichiarativa Quindi i linguaggi descrittivi rappresentano un sistema in termini di en tit costituenti delle loro propriet e delle relazioni fra entit mentre i linguaggi operazionali lo rappresentano in termini di stati e transizioni che ne definiscono il comportamento Spesso una specifica completa richiede che vengano usate tutte e due le rappresentazioni Osserviamo che nel nostro esempio la formulazione descrittiva esprime direttamente il requisito di sicurezza mentre la formulazione operazionale descrive un comportamento del sistema tale che rispetti il requisito ed quindi meno astratta 3 3 Formalismi orientati al controllo Questi formalismi descrivono gli aspetti dei sistemi
284. per esempio rapporti periodici sull avanzamento dei lavori linee guida per gli sviluppatori verbali delle riunioni e simili Gli strumenti per la gestione delle versioni del codice sorgente possono essere usate anche per mantenere la documen tazione ma esistono anche strumenti destinati specificamente alla do cumentazione In particolare si possono usare strumenti orientati alla Unttp www gnu org software gettext 2 1 IL MODELLO A CASCATA 33 collaborazione ed alla condivisione delle informazioni come le pagine wiki convalida e verifica La correttezza funzionale e l adeguatezza ai requisiti sia del prodotto finale che dei semilavorati devono essere accertati controllo di qualit Oltre ai controlli finali sul prodotto occorre control lare ed assicurare la qualit del processo di sviluppo nel suo complesso verificando che le varie attivit rispettino gli standard e le procedure previste Convalida e verifica La coppia di termini convalida validation e verifica verification viene usata in letteratura con due accezioni leggermente diverse Per comprendere la differenza bisogna chiarire i concetti di requisiti e specifiche i requisiti sono ci che il committente e l utente si aspettano dal prodotto software e sono espressi in modo informale ed approssimativo quando non restano impliciti e sottintesi le specifiche sono l espressione esplicita e rigorosa dei requisiti Fig 2 3 LON Specifiche c
285. pla L eredita multipla si ha quando una classe ha pi di una classe base diretta Questa possibilit particolarmente utile per ottenere un interfaccia come composizione di altre interfacce Le interfacce delle classi base rappresentano diversi aspetti delle entit modellate dalla classe derivata I clienti della classe derivata possono trattare separatamente questi diversi aspetti ottenendo cos un buon disaccopiamento fra le varie classi Nel seguente esempio in Java un videogioco deve simulare dei velivoli Ciascuno di questi viene visto sotto due aspetti la simulazione del comporta mento Aircraft e la raffigurazione grafica Drawable Questi due aspetti vengono gestiti da due sottosistemi distinti rispettivamente AirTrafficCtrl e DisplayMgr abstract class Aircraft public double speed public abstract void fly AirTrafficCtrl atc 5 1 EREDIT E POLIMORFISMO 155 interface Drawable void draw class JetLiner extends Aircraft implements Drawable public JetLiner speed 850 0 public void fly AirTrafficCtrl atc flight simulation public void draw graphic rendering class DisplayMgr private Drawable d public DisplayMgr Drawable dd d dd public void display use draw gt class AirTrafficCtrl private Aircraft c private DisplayMgr m public AirTrafficCtrl Aircraft ac DisplayMgr dm c ac m dm public void simulate use fl
286. place oppure no Molto spesso l assenza di limiti nella marcatura di un place indica un situazione indesiderata nel sistema modellato per esem pio il traboccamento di qualche struttura dati o il sovraccarico di qualche risorsa per cui utile formalizzare il concetto di limitatezza in modo da poter verificare questa propriet Un posto di una rete P T si dice k limitato k bounded se in qualunque marcatura raggiungibile il numero di token non supera k Una rete P N con marcatura M si dice limitata bounded se e solo se IhemVweery m VpepM p lt k cio se esiste un intero k tale che in ogni marcatura raggiungibile da M la B 5 RETI DI PETRI 239 marcatura di ciascun place sia non maggiore di k Se k 1 la rete si dice binaria B 8 8 Rappresentazione matriciale possibile rappresentare una rete di Petri con le sue possibili marcature e le sequenze di scatti per mezzo di matrici e vettori Questa rappresentazione permette di ricondurre l analisi della rete a semplici operazioni su matrici facilitando quindi l uso di strumenti automatici Le matrici di ingresso I e di uscita O di una rete sono due matrici ret tangolari di dimensione P x T P righe per T colonne l elemento J della matrice di ingresso il peso dell arco dal posto p alla transizione t e l elemento O della matrice di uscita il peso dell arco dalla transizione t al posto p ossia piger Lig W pi b pt g
287. poich ciascuno di essi permette di scoprire diversi tipi di guasti Correttezza dei risultati pu essere decisa e dall utente convalida e dal confronto con le specifiche verifica in questo caso le speci fiche si rivelano tanto pi utili quanto sono formali se le specifi 194 CAPITOLO 6 CONVALIDA E VERIFICA che sono eseguibili il confronto pu avvenire con i risultati di un prototipo ottenuto direttamente dalle specifiche e dal confronto con versioni precedenti avviene nei test di regres sione in cui si verifica una nuova versione del software Terminazione pu essere decisa in base a modelli statistici che permettano di stimare il numero di anomalie sopravvissute al test oppure in base a criteri di copertura Sez 6 3 1 Una forma particolare di analisi dinamica l esecuzione simbolica che consiste nell eseguire il programma da verificare per mezzo di un interprete capace di rappresentare simbolicamente le variabili e di fornire i risultati sotto forma di relazioni algebriche equazioni e disequazioni fra le variabili di ingresso fondamentale infine tener presente la Tesi di Dijkstra Un test pu rilevare la presenza di malfunzionamenti ma non dimostrarne l assenza 6 3 1 Test strutturale Nel test strutturale la selezione dei dati di test viene guidata dalle informa zioni che abbiamo sul codice da testare e presuppone quindi che il codice sorgente sia disponibile L idea generale di
288. ponente in diverse interfacce permette di esprimere pi chiaramente le dipendenze fra componenti Generalmente le interfacce vengono associate a dei port definiti come pun ti di interazione del componente con l ambiente esterno Un port quindi caratterizzato da una o pi interfacce coinvolte in una determinata intera zione Nella Fig 4 8 b le interfacce PwrVolume Tuner e Player destinate all interazione con l utente sono raggruppate nel port User mentre le coppie di interfacce TunerREQ e TunerRPY e PlayerREQ e PlayerRPY usate rispet 5In UMLI il termine componente designava un elemento di modello destinato a rap presentare i moduli fisici di un sistema e la loro corrispondenza con i moduli logici implementati 140 CAPITOLO 4 IL PROGETTO tivamente per comunicare con la radio e col lettore di CD sono assegna te ai port Radio e CdPlay Gli altri due port riguardano l interazione con l alimentazione e l amplificatore PwrVolume Switch Amplifier Switch i i Amplifier Supply Amp ee Radio TunerRPY Tuner component i component G PwrVolume TunerREe O F TunerREQ StereoSystem Tuner StereoSystem O PlayerRPY ____ PlayerRPY Player L Player O O User PlayerREQ CdPlay PlayerREQ a b Figura 4 8 Componenti in UML Un componente pu essere realizzato direttamente da un istanza di una classe o indirettament
289. pro dotto insieme alla documentazione associata Attivit workflow Nello UP si riconoscono cinque attivit dette workflow o flussi di lavo ro raccolta dei requisiti requirement capture analisi analysis progetto design implementazione implementation e collaudo test Le prime due attivit corrispondono a quella che abbiamo chiamato complessivamen te analisi e specifica dei requisiti pi precisamente la raccolta dei requisiti porta alla definizione di un modello dei casi d uso che rappresenta le funzioni ed i servizi offerti all utente mentre l attivit di analisi produce un modello di analisi che rappresenta i concetti e le entit del dominio di applicazione rilevanti per il prodotto da sviluppare 2 3 MODELLI EVOLUTIVI 39 Fasi Le quattro fasi dello UP sono Inizio inception i suoi obiettivi corrispondono a quelli visti per lo studio di fattibilit a cui si aggiunge una analisi dei rischi di varia natura tecnica economica organizzativa in cui pu incorrere il progetto Anche il milestone di questa fase simile all insieme di documenti e altri artefatti per esempio dei prototipi che si possono produrre in uno studio di fattibilit Un documento caratteristico dello UP prodotto in questa fase il modello dei casi d uso cio una descrizione sintetica delle possibili interazioni degli utenti col sistema espressa mediante la notazione UML Elaborazione elaboration gli obietti
290. proprie scelte ed i propri comportamenti possono avere sulla societ possiamo pensare per esempio all impatto di un prodotto sull ambiente sui rapporti sociali o sull occupazione particolarmente importante tener conto dei rischi economici e umani connessi all uso del software Il software estremamente pervasivo essendo un componente di sistemi disparati come per esempio sistemi di comunica zione elettrodomestici veicoli impianti industriali Inoltre alcuni prodotti software possono essere riusati in applicazioni diverse da quelle per cui so no stati concepiti originariamente per cui il progettista di software pu non essere in grado di anticipare la destinazione finale del proprio lavoro Se sottovalutiamo la pervasivit e l adattabilit del software rischiamo di non valutare i rischi in modo adeguato Le situazioni catastrofiche portate spesso ad esempio dei rischi del software distruzione di veicoli spaziali guasti in ap parati militari o in centrali nucleari possono non mettere in evidenza il fatto che del software difettoso si pu trovare in qualsiasi officina o in qualsiasi au tomobile mettendo a rischio la salute e la vita umana anche nelle situazioni pi comuni e quotidiane Un ingegnere deve sentirsi sempre responsabile 1 4 CONCETTI GENERALI 15 per il proprio lavoro ed eseguirlo col massimo scrupolo qualunque sia il suo campo di applicazione 1 4 Concetti generali In questo corso ci limiterem
291. puter system La rappresentazione a V mostra come la fase di test di integrazione del sistema di elaborazione sia guidata dalle specifiche del sistema di elaborazio ne e come la fase di test di convalida di sistema sia guidata dalla specifica dei requisiti di sistema Osserviamo che in base ai risultati delle attivit di convalida possibile ripetere le fasi di specifica per cui il modello a V pu essere applicato come un modello intermedio fra il modello a cascata puro ed i modelli iterativi che vedremo pit oltre Un altro esempio 30 di processo a V mostrato in Fig 2 6 Questo processo descrive specificamente lo sviluppo del sistema software 36 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO Requisiti utente beens eee see ss esa eee anm n gt Test di accettazione Specifica dei requisiti sw Test di sistema Si Progetto del sistema sw gt Test di integrazione lt lt Progetto in dettaglio gt Test di unita Sg wee Programmazione Figura 2 6 Un processo a V da 30 2 3 Modelli evolutivi Abbiamo osservato che nello sviluppo del software bisogna prevedere la ne cessit di cambiamenti quindi opportuno usare processi di sviluppo in cui la necessit di introdurre dei cambiamenti venga rilevata tempestivamente ed i cambiamenti s
292. quella del destinatario L ordine dei messaggi lungo le linee verticali ne rispecchia l ordine temporale Si pu disegnare anche un asse dei tempi parallelo alle lifeline su cui evidenziare gli eventi etichettando gli istanti corrispondenti con degli identificatori o con dei valori temporali che possono essere usati per specificare vincoli di tempo I periodi in cui un oggetto coinvolto in un interazione possono essere messi in evidenza sovrapponendo una striscia rettangolare alla linea verticale La Fig 3 30 mostra un semplice diagramma di sequenza che descrive 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 117 Programmer set_max_time d timer set_delay d timeout heater stop Running entry timer start heater start exit heater stop set_max_temp t heater set_t_max t Timer OP set_delay d delay d Heater Running do loop t read set_t_max t t_max t when t gt t_max send hot Figura 3 29 Esempio diagrammi di stato Vinterazione di due utenti con un centralino telefonico Diagrammi di comunicazione Un diagramma di comunicazione chiamato diagramma di collaborazione in UMLI1 mette in evidenza l aspetto strutturale di un interazione mostrando esplicitamente i legami istanze di associazioni fra gli oggetti e ricorrendo a un sistema di numerazione strutturato per indicare l ordinamento temporale dei messaggi La Fig 3 31
293. r Lig 0 t p F Oi j W t pi pagr Og 0 Osserviamo che ogni colonna di queste matrici associata ad una transi zione e che ciascun elemento della colonna rappresenta la variazione della marcatura causata dallo scatto della transizione per ogni place di ingresso o di uscita La marcatura M viene rappresentata da un vettore colonna m le cui componenti sono le marcature dei singoli posti m M pi Lo scatto di una transizione t nella marcatura m produce la nuova marcatura m m lej Osj ovvero introducendo la matrice d incidenza C O I m m Cej 5Ricordiamo che S la cardinalit dell insieme S cio per un insieme finito il numero dei suoi elementi La notazione Ae rappresenta la i esima colonna della matrice A 240 APPENDICE B FORMALISMI DI SPECIFICA Queste equazioni significano che per ciascun place la nuova marcatura uguale alla precedente meno i pesi degli archi uscenti dal place pi i pesi degli archi entranti sono cio una riformulazione della regola di scatto Per ogni sequenza di scatti S si definisce un vettore colonna s di dimen sione T x 1 in cui ogni componente s riporta il numero di volte che la tran sizione t scattata nella sequenza S Quindi se M S M vale l equazione fondamentale m m Cs B 8 9 Reti conservative Spesso ci interessa verificare che il numero di token in una rete o in una parte di essa rimanga costante Una rete si dice quind
294. razione action nel modo desiderato quindi scrivere il programma principale dell operazione in cui si istanzia una finestra e vi si aggiungono un istanza di TextField e una di MyButton La Fig 5 17 mostra la struttura risultante Un framework pu essere rappresentato in UML come un componente o un package Nemmeno per i framework come gi visto per le librerie generalmente richiesta una rappresentazione della struttura interna 5 2 3 Gestione dei dati Nel definire la struttura globale del sistema bisogna anche scegliere come me morizzare e gestire i dati permanenti una delle scelte principali fra l uso del filesystem offerto dal sistema operativo e l uso di un sistema di gestione di database Quest ultima soluzione generalmente preferibile quando la ge stione di dati costituisca una parte importante per dimensioni e complessit delle funzioni offerte dal sistema La scelta di usare un gestore di databa se comporta scelte ulteriori principalmente quella fra sistemi relazionali e sistemi orientati agli oggetti Oltre ai database relazionali e quelli orientati agli oggetti esistono nume rosi sistemi per la gestione dei dati Citiamo per esempio i sistemi basati sul protocollo LDAP Lightweight Directory Access Protocol usati per i servi 5 2 PROGETTO DI SISTEMA 165 FRAMEWORK
295. re pi di uno sport quindi l insieme di generalizzazioni overlapping non disgiunto Sportivo a incomplete overlapping Podista Nuotatore Velista Figura 3 20 Insieme di generalizzazioni incompleto e non disgiunto Nell esempio di Fig 3 21 l insieme dei dipendenti di un azienda viene classificato secondo due criteri ortogonali retribuzione e mansione Si hanno quindi due insiemi di generalizzazioni ognuno completo e disgiunto Ogni dipendente un istanza sia di una classe di retribuzione Classel eccetera che di una classe di mansioni Tecnico o Amministrativo Poich nessun dipendente pu appartenere solo a una classe di retribuzione o a una classe di mansioni tutte le classi della Fig 3 21 a sono astratte Nella Fig 3 21 b si mostra una classe concreta costruita per eredit multipla da una classe di retribuzione e una classe di mansioni Nelle versioni dell UML precedenti alla 2 0 esisteva il concetto di discrimi nante che aveva un significato simile a quello degli insiemi di generalizzazioni anche se era definito in modo diverso Osservazione L esempio mostrato in Fig 3 21 serve a chiarire il significato degli insiemi di generalizzazioni ma non necessariamente il modo migliore per modellare la situazione presa ad esempio Si pu osservare infatti che un 108 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI
296. reSensor PowerSensor Figura 5 35 Artefatti e componenti I nodi modellano generalmente dei singoli calcolatori che possono essere collegati in rete Se fosse necessario specificare dettagliatamente la struttu ra del calcolatore allora un nodo pu rappresentare parti di un calcolatore come la CPU o le unit periferiche ma questo non comune Un nodo considerato solo come hardware viene chiamato dispositivo e viene rappre sentato come in Fig 5 36 etichettato con lo stereotipo device gt Oltre a modellare la parte hardware di un sistema un nodo pu rappresentare anche 5 5 PROGETTO DETTAGLIATO 187 un ambiente di esecuzione cio un sistema software esterno all applicazio ne sviluppata entro cui viene eseguita l applicazione Un esempio ovvio di ambiente di esecuzione il sistema operativo che per generalmente non viene modellato esplicitamente Un sistema che generalmente viene model lato esplicitamente come ambiente di esecuzione un server web visto come piattaforma su cui vengono eseguiti programmi plug in cio sviluppati sepa ratamente ed eseguiti dal server su richiesta Gli ambienti di esecuzione si rappresentano come nodi con lo stereotipo execution environment I diagrammi di deployment descrivono l architettura fisica mostrando i nodi i loro collegamenti e gli artefatti istallati sui nodi L istallazione di un artefatto su un nodo pu essere raffigurata disegnando l art
297. reate PI A1 ConcreteFactory1 poco roduet createProductA ProductA L createProductB ProductB r ProductB1 i i i i L create ProductA2 ConcreteFactory2 f 777 createProductA ProductA DI createProductB ProductB Teter lilla ProductB2 Figura 5 32 Design pattern Abstract Factory Container Client _ gt Iterator createlterator Iterator first Element addElement Element next Element removeElement Element isDone boolean 9 create Element List LC gt Listiterator create Tree gt Treelterator Figura 5 33 Problema accessso uniforme a contenitori diversi 5 4 Architettura fisica Per architettura fisica si intende l insieme dell architettura software fisica e dell architettura hardware L architettura software costituita dai com ponenti software fisici o artefatti che sono il prodotto finale del processo di sviluppo cio i file necessari per il funzionamento del sistema sviluppa to L architettura hardware costituita dai nodi che eseguono i componenti software Gli artefatti possono essere file eseguibili librerie file sorgente file di configurazione pagine web o altre cose ancora Vengono rappresentati in UML 2 come
298. relativi alla loro evoluzio ne temporale alle possibili sequenze di eventi o di azioni alla sincronizzazione fra le attivit dei loro sottosistemi o fra il sistema e l ambiente in cui ope ra Questi aspetti sono particolarmente importanti nei sistemi reattivi che devono reagire a stimoli provenienti dall ambiente che si presentano in un ordine generalmente non prevedibile I formalismi orientati al controllo sono un campo di studio molto vasto e articolato In questo corso verranno date solo alcune nozioni elementari relative al formalismo degli automi a stati finiti ed alle sue estensioni adottate nel linguaggio UML Sezione 3 5 8 Fra i formalismi che non verranno trattati nel corso citiamo le reti di Petri le algebre di processo e le logiche temporali 54 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI 3 3 1 Automi a stati finiti Col formalismo degli automi a stati finiti ASF o macchine a stati descri viamo un sistema attraverso gli stati in cui si pu trovare le transizioni cio i passaggi da uno stato all altro gli ingressi stimoli esterni che causano le transizioni le uscite del sistema che possono essere associate alle transizioni macchine di Mealy o agli stati macchine di Moore e lo stato iniziale da cui parte l evoluzione del sistema L ambiente esterno agisce sul sistema rappresentato dall automa gene rando una successione di ingressi discreti e il sistema risponde a ciascun ingresso cambiando
299. requisiti si parler pi diffusamente in seguito Altri requisiti possono riguardare il processo di sviluppo anzich il pro dotto Per esempio il committente pu richiedere che vengano applicate determinate procedure di controllo di qualit o vengano seguiti determinati standard Documenti di specifica Il prodotto della fase di analisi e specifica dei requisiti generalmente costi tuito da questi documenti Documento di Specifica dei Requisiti DSR il fondamento di tut to il lavoro successivo e se il prodotto sviluppato per un committente esterno ha pure un valore legale poich viene incluso nel contratto Manuale Utente Descrive il comportamento del sistema dal punto di vista dell utente se tu fai questo succede quest altro Piano di Test di Sistema Definisce come verranno eseguiti i test finali per convalidare il prodotto rispetto ai requisiti Anche questo docu mento pu avere valore legale se firmato dal committente che cosi accetta l esecuzione del piano di test come collaudo per l accettazione del sistema di fondamentale importanza che il DSR sia completo e consistente Completo significa che contiene esplicitamente tutte le informazioni ne cessarie e consistente significa che non contiene requisiti reciprocamente contraddittori Idealmente dovrebbe essere scritto in un linguaggio formale tale da permettere un interpretazione non ambigua ed una verifica rigoro sa ma di
300. ri Mandrioli Capitolo 5 Progetto orientato agli oggetti We need to go beyond the condemnation of spaghetti code to the active encouragement of ravioli code Raymond J Rubey SoftTech Inc Come abbiamo gi osservato parlando della fase di analisi e specifica dei re quisiti nelle metodologie orientate agli oggetti un sistema viene visto come un insieme di oggetti interagenti e legati fra loro da vari tipi di relazioni In fase di analisi e specifica dei requisiti si costruisce un modello in cui il sistema software cio il prodotto che vogliamo realizzare viene visto nel contesto dell ambiente in cui deve operare Questo modello in cui le en tit appartenenti al dominio dell applicazione detto anche spazio del proble ma sono preponderanti rispetto al sistema software il punto di partenza per definire l architettura software la cui struttura negli stadi iniziali della progettazione ricalca quella del modello di analisi La fase di progetto parte quindi dalle classi e relazioni definite in fase di analisi a cui si aggiungono classi definite in fase di progetto di sistema e relative al dominio dell implementazione o spazio della soluzione Nelle fasi successive del progetto questa struttura di base viene rielaborata riorga nizzando le classi e le associazioni introducendo nuove classi e definendone le interfacce e gli aspetti pi importanti delle implementazioni lhttp www gnu org fun jokes pasta code
301. ri modelli di processo in cui l associazione fra attivit e fasi del processo avviene in altri modi 2 1 Il modello a cascata Il modello a cascata waterfall prevede una successione di fasi consecuti ve Ciascuna fase produce dei semilavorati deliverables cio documenti relativi al processo oppure documentazione del prodotto e codice sorgente o compilato che vengono ulteriormente elaborati dalle fasi successive Il modello presuppone che ciascuna fase sia conclusa prima dell inizio del la fase successiva e che il flusso dei semilavorati sia pertanto rigidamente unidirezionale come in una catena di montaggio i risultati di una fase sono il punto di partenza della fase successiva mentre non possono influenzare una 2 1 IL MODELLO A CASCATA 23 Analisi e specifica gt Progetto C Verifica e convalida das ordinamento logico ordinamento temporale gt corrispondenza Figura 2 2 Il modello a cascata fase precedente Questo implica che in ogni fase si operi sul prodotto nella sua interezza la fase di analisi produce le specifiche di tutto il sistema quella di progetto produce il progetto di tutto il sistema Quindi questo modello adatto a progetti in cui i requisiti iniziali sono chiari fin dall inizio e lo svi luppo del prodotto prevedibile Infatti se in una certa fase si verificassero degli imprevisti come la scoperta di errori od omissioni nel progetto o nel le specifiche oppure l
302. rispondenza non formalmente corretta ma pu aiutare a ricordare certe regole del calcolo dei sequenti Un sequente vero se vale almeno una di queste condizioni e almeno un antecedente falso e almeno un conseguente vero e almeno una formula compare sia come antecedente che come conse guente segue dalle due condizioni precedenti Il calcolo dei sequenti ha un solo assioma T AFA A dove I e A sono multiinsiemi di formule Questo assioma si pu giusti ficare informalmente in base alla corrispondenza vista sopra considerando l assioma come equivalente a TA A gt AVA si verifica che tale formula una tautologia Le regole d inferenza sono mostrate nella Tabella 3 3 Nella tabella i simboli immediatamente a destra di ciascuna regola d inferenza servono a identificare sinteticamente la regola Per esempio il simbolo aL si pu 80 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI THA A ATEFA A A TFA THA A A TAFA ARM TEA cut ATFA SU L TFAA SU R Hak Allan Alan Dadnazy ARS RIAV Padbvn TRAPS AME op SEARA VE Tea YR Saia e A a Tabella 3 3 Le regole d inferenza nel calcolo dei sequenti leggere come inserimento a sinistra L left della negazione Infatti la regola corrispondente dice che da un sequente della forma I A A si pu dedurre un sequente della forma A rT A analogamente per la regola etichettata dal simbolo R R sta per right In base a queste due reg
303. risultato si dovrebbe ottenere attraverso l uso di specifiche formali l applicazione di metodi rigorosi di ve rifica statica cio basata sull analisi del codice e non sulla sua esecuzione e la certificazione per mezzo di collaudo statistico indipendente Il software viene prodotto come una serie di incrementi ciascuno dei quali viene spe cificato realizzato e collaudato ripetutamente finch non supera le prove di certificazione dopo di che l incremento pu essere consegnato all utente che lo convalida eventualmente chiedendo una modifica delle specifiche e ripe tendo il ciclo Quando un incremento accettato si passa all incremento successivo Pit in dettaglio e Le attivit di specifica sviluppo e certificazione verifica sono affidate a tre gruppi distinti e Il software viene sviluppato in cicli successivi ognuno dei quali produce un incremento del prodotto e In ogni ciclo vengono definiti i requisiti dell incremento e in base a questi requisiti il gruppo di sviluppo produce il codice ed il gruppo di certificazione prepara i dati di prova test cases Il gruppo di svilup po non esegue i programmi e si affida unicamente a metodi di analisi statica per valutare la correttezza del codice Quando il gruppo di sviluppo confida di aver prodotto del codice corretto lo consegna al gruppo di certificazione che prova il sistema complessivo insieme di incrementi ottenuti fino a quel momento certificandone l affidabili
304. rma Z letteralmente la lettera zeta Nei tipi SET i valori dei campi si possono presentare in qualsiasi ordine TypeA SET p BOOLEAN q INTEGER r BIT STRING valA TypeA p TRUE r 83F H q 7 TypeB SET r 0 INTEGER s 1 INTEGER t 2 INTEGER I numeri fra parentesi quadre si chiamano tag e servono a distinguere com ponenti dello stesso tipo I tipi CHOICE sono simili alle union del C typeC CHOICE x 0 REAL y 1 INTEGER z 2 NumericString B 4 3 Moduli Le definizioni di una specifica in ASN 1 possono essere raggruppate in moduli Ogni modulo identificato da un OBJECT IDENTIFIER e dichiara quali tipi e valori vengono esportati o importati 222 APPENDICE B FORMALISMI DI SPECIFICA WeatherReporting 2 6 6 247 7 DEFINITIONS BEGIN EXPORTS WeatherReport IMPORTS IdentifyingString FROM StationsModule WeatherReport SEQUENCE idString IdentifyingString stationNumber 0 99999 END In questo esempio si suppone che StationsModule sia un modulo definito altrove identificato dal nome e dall OBJECT IDENTIFIER qui non indicato B 4 4 Sintassi di trasferimento La sintassi di trasferimento specifica il modo in cui i dati descritti dalla sintassi astratta vengono codificati per essere trasmessi Una sintassi di tra sferimento standardizzata ISO 8825 1987 costituita dalle Basic Encoding Rules BER B 5 Formalismi orient
305. rmazionale che non usi linguaggi di specifica eseguibili ma generalmente sono disponibili degli interpreti per i linguaggi formali di specifica che rendono possibile la 2 3 MODELLI EVOLUTIVI 45 prototipazione Il prodotto finale pu essere implementato nello stesso linguaggio delle specifiche o in un linguaggio diverso Letture Obbligatorie Cap 7 Ghezzi Jazayeri Mandrioli oppure Cap 1 Ghezzi Fuggetta et al oppure Cap 3 Pressman Facoltative Sez 13 7 2 Pressman Cap 2 Arlow Neustadt 46 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO Capitolo 3 Analisi e specifica dei requisiti In questo capitolo presentiamo alcuni linguaggi e metodi usati nella fase di analisi e specifica dei requisiti I requisiti descrivono ci che l utente si aspetta dal sistema e specificarli significa esprimerli in modo chiaro uni voco consistente e completo I requisiti si distinguono in funzionali e non funzionali I requisiti funzionali descrivono cosa deve fare il sistema generalmente in termini di relazioni fra dati di ingresso e dati di uscita oppure fra sti moli dall ambiente al sistema e risposte del sistema Questi requisiti sono generalmente esprimibili in modo formale I requisiti non funzionali esprimono dei vincoli o delle caratteristiche di qualit Queste ultime sono pi difficili da esprimere in modo formale in particolare difficile esprimerle in modo quantitativo Fra le caratteristiche di qualit d
306. rogetto produrre una architettura software cio una descrizione della struttura del sistema da realizzare espressa in termini dei suoi moduli cio dei suoi componenti e delle loro relazioni reciproche Questa descrizione deve rispondere a due esigenze contrastanti deve es sere abbastanza astratta da permettere una facile comprensione del sistema e quindi la verifica dell adeguatezza del progetto rispetto alle specifiche ed abbastanza dettagliata da fornire una guida alla successiva fase di codifica L attivita di progetto un processo iterativo attraverso una serie di ap prossimazioni successive a partire da un primo progetto ad alto livello che indica una suddivisione del sistema in pochi grandi blocchi fino ad otte nere una struttura sufficientemente dettagliata per l implementazione Ge neralmente la fase di progetto viene scomposta di due sottofasi il progetto architetturale o di sistema ed il progetto dettagliato difficile stabilire a priori a quale livello di dettaglio si debba fermare la fase di progetto Inoltre l uso di metodi formali di tecniche di prototipazione e di linguaggi ad alto livello adatti sia al progetto che alla codifica rende sfumata la distinzione fra progetto e codifica Neppure la distinzione fra la fase di analisi e specifica dei requisiti e la fase di progetto completamente netta poich nella fase di progetto spesso si rilevano delle incompletezze e inconsistenze delle specifiche
307. scatto 229 B 8 2 Esempio produttore consumatore 231 B 8 3 Situazioni fondamentali 232 B 8 4 Esempio 2 eee ea Ree eR RSE eS EES 233 B 8 5 Raggiungibilit delle marcature 234 B 8 6 Vitalita delle transizioni 235 B 8 7 Reti limitate 2 0 2000 237 B 8 8 Rappresentazione matriciale 239 B 8 9 Reti conservative o oo a a 240 B 8 10 Sequenze di scatti cicliche 242 Metriche del software 245 C 1 Linee di codice LL 246 C 2 Software science LL 247 C 3 Complessit 2 eign 2 oe ee en 248 C 3 1 Numero ciclomatico 000 248 C 3 2 I criteri di Weyuker Le bd kee bee e 249 C 4 Punti funzione LL 251 C 5 Stima dei costi 253 C 5 1 Il modello COCOMO 0 0 0 0 02 254 C 5 2 Il modello di Putnam 259 Gestione del processo di sviluppo 261 DI Diagrammi WBO iaia ele 261 D2 Diagramma PERI a eee ad ld a ah e N 262 D Diagrammi Gani eoe s n Rit N 263 D 4 Esempio di documento di pianificazione 263 D 5 Gestione delle configurazioni lt ao a a be dba 267 INDICE E Qualit E 1 Le norme ISO 9000 E 1 1 La qualita nelle norme ISO 9000 E 2 Certificazione ISO 9000 E 3 Il Capability Maturity Model F Moduli in C e in Ada F 1 Incapsulamento e raggruppamento in C F 1 1 Classi e interfacce Lia an F 1 2 Namespace Polo
308. si serve lo sviluppatore per definire un modello Per esempio in UML esistono gli elementi classe e associazione corrispondenti ai concetti espo sti nelle sezioni precedenti Gli attributi e le operazioni a loro volta sono elementi di modello che fanno parte dell elemento classe Gli elementi di modello e quindi i modelli di cui fanno parte definiscono la semantica del sistema Agli elementi di modello corrispondono elementi http www omg org 10T alcune metodologie per si d un ruolo centrale al punto di vista dei casi d uso 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 93 di presentazione che visualizzano la semantica degli elementi di modello in forma grafica e testuale Generalmente un elemento di presentazione pu rappresentare solo una parte delle informazioni contenute nel corrisponden te elemento di modello cos che il livello di dettaglio della rappresentazione grafica di un modello possa essere scelto di volta in volta secondo le esigenze Molti elementi hanno una forma minima per esempio un semplice simbolo e delle forme estese pi ricche di informazioni Per esempio una classe pu essere rappresentata da un rettangolo contenente solo il nome della classe oppure da un rettangolo diviso in tre scompartimenti contenenti nome at tributi ed operazioni che a loro volta possono essere specificati in modo pi o meno dettagliato Un diagramma un insieme di elementi di presentazione che visualizza una parte d
309. sistema viene descritta come se ad ogni passo uno solo dei sottosistemi potesse compiere una transizione mentre in generale possibile che transizioni in sottosistemi distinti possano avvenire in modo concorrente 4 il numero degli stati del sistema totale cresce esponenzialmente col numero dei sottosistemi 58 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI produzione deposito deposito produzione consumo consumo enzo p2 m3 c2 deposito produzione Figura 3 4 Esempio 2 Mentre i punti 1 e 4 dimostrano la poca scalabilita degli ASF il punto 3 ne mette in evidenza un altra caratteristica non esprimono la concorrenza dei sottosistemi per cui si prestano solo alla specifica di sistemi sequenziali Il problema dell aumento della complessit quando si compongono sotto sistemi dipende dal fatto che nel modello di ASF qui presentato lo stato del sistema globale in quanto in un dato istante l intero sistema viene mo dellato da un unico stato e atomico in quanto lo stato non contiene altra informazione che la propria identit e le funzioni di transizione e di uscita Un modo per rendere meno complesse le specifiche di sistemi per mezzo di ASF consiste nell estendere il concetto di stato associandovi delle strutture dati Nel nostro esempio i tre stati dell ASF che rappresenta il magazzino potrebbero essere sostituiti da un unico stato a cui associata una variabile il cui valore
310. solito in linguaggio naturale al pi strutturato secondo qualche standard e accompagnato da notazioni semiformali diagrammi etc 28 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO A proposito dell uso del linguaggio naturale nei documenti di specifica osserviamo che il significato dei termini usati pu essere definito dai glos sari Per ogni progetto opportuno preparare un glossario dei termini ad esso specifici inoltre esistono numerosi glossari standard come per esempio la norma ISO 8402 relativa alla terminologia della gestione e assicurazione della qualit Un documento pu anche contenere istruzioni relative ad usi particolari generalmente pi ristretti di termini appartenenti al linguaggio ordinario Per esempio uso comune che il verbo inglese shall denoti comportamenti o caratteristiche obbligatori il verbo should denoti com portamenti o caratteristiche desiderabili ma non obbligatori ed il verbo may denoti comportamenti o caratteristiche permessi o possibili Il DSR deve riportare almeno queste informazioni 15 e una descrizione del dominio dell applicazione da sviluppare compren dente l individuazione delle parti in causa e delle entit costituenti il do minio persone oggetti materiali organizzazioni concetti astratti con le loro relazioni reciproche gli scopi dell applicazione i requisiti funzionali i requisiti non funzionali i requisiti sulla gestione d
311. sono non essere corrette rispet to ai requisiti e devono essere a loro volta convalidate Verifica e convalida devono quindi completarsi a vicenda Aforisticamente si dice che con la ve rifica ci accertiamo che il prodotto sia fatto bene building the product right e con la convalida ci accertiamo che il prodotto sia quello giusto building the right product Nel seguito faremo riferimento solo alla verifica e marginalmente al la convalida del codice pur tenendo presente che come gi accennato i prodotti di ogni fase del processo di sviluppo devono essere verificati o convalidati 191 192 CAPITOLO 6 CONVALIDA E VERIFICA 6 1 Concetti fondamentali Introduciamo qui alcuni concetti fondamentali nel campo della convalida e della verifica cominciando dai termini errore anomalia e guasto Guasto malfunzionamento failure un comportamento del programma non corretto rispetto alle specifiche Anomalia difetto fault bug un aspetto del codice sorgente che provoca dei guasti Errore errore concettuale o materiale che causa anomalie Gli errori sono quindi la causa delle anomalie che a loro volta sono la causa dei malfunzionamenti Osserviamo per che non c una corrispon denza diretta e biunivoca fra anomalie e guasti Un particolare guasto pu essere provocato da una o pi anomalie e l effetto di una anomalia pu essere bilanciato e quindi nascosto da quello di un altra Alcune anomalie posso no non provocare
312. specificandone gli elementi strutturali classi componenti interfacce con le relazioni reciproche e il loro modo di interagire Questa descrizione viene integrata con una discussione dei vantaggi e svantaggi della soluzione delle condizioni di applicabilit e delle possibili tecniche di implementazione Normalmente vengono presentati anche dei casi di studio Un design pattern non un componente software ma solo uno schema di soluzione per un particolare aspetto del funzionamento di un sistema Gli elementi strutturali di un pattern rappresentano dei ruoli che saranno inter pretati dalle entit effettivamente realizzate Ciascuna di queste entit pu interpretare un ruolo diverso in diversi pattern poich in un singolo siste ma o sottosistemi si devono risolvere diversi problemi con diversi pattern Inoltre bene tener presente che un pattern non una ricetta rigida da ap plicare meccanicamente ma uno schema che deve essere adattato alle diverse situazioni anche con un po d inventiva I design pattern tendono ad essere usati in una fase del progetto detta progetto dei meccanismi mechanistic design intermedia fra il progetto di si stema e quello in dettaglio per molti pattern sono applicabili in tutto l arco della fase di progetto e inoltre esistono dei pattern concepiti espressamente per il progetto di sistema fra cui le architetture citate nella Sez 5 2 1 5 3 1 Composite Le strutture di Fig 5 23 so
313. ssere scomposta in funzioni componenti Quando non si ritiene utile scomporre ulteriormente una funzione questa pu essere speci ficata in linguaggio naturale in pseudocodice o in linguaggio naturale strut turato o in un linguaggio algoritmico simile ai linguaggi di programmazione ad alto livello e tipato Gli elementi della notazione sono agenti esterni rappresentati da rettangoli sono i produttori e i consuma tori dei flussi di dati all ingresso e all uscita del sistema complessivo funzioni o processi rappresentate da cerchi sono le trasformazioni operate sui dati flussi rappresentati da frecce sono i dati scambiati fra le funzioni nel verso indicato depositi rappresentati da doppie linee sono memorie permanenti Ogni elemento viene etichettato con un nome La Fig B 3 mostra il primo livello della specifica di un sistema di mo nitoraggio dei malati in un ospedale Una prima espansione viene mostrata in Fig B 4 e in Fig B 5 mostriamo l espansione della bolla monitoraggio centrale di Fig B 4 infermiere ie monitoraggio rapporto paziente gt infermiere paziente dati fis allarme dati rapp dati recenti archivio paziente Figura B 3 Primo livello 3Un linguaggio simile a un linguaggio di programmazione spesso non specificato formalmente 224 APPENDICE B FORMALISMI DI SPECIFICA dati fis dati paz monit monit allarme i p
314. ssioni regolari si chiama Lex In Lex un espressione regolare formata da caratteri testuali e da ope ratori I caratteri testuali sono lettere cifre simboli aritmetici e segni d interpunzione Gli operatori usati nelle espressioni regolari sono i seguenti ieee classi di caratteri per esempio a zA Z0 9 rappresenta l insieme costituito dai caratteri alfabetici minuscoli e maiuscoli e dalle cifre decimali qualsiasi carattere escluso il carattere di nuova linea espressioni alternative scelta per esempio ab cd rappresenta ab e cd zero o pi volte l espressione precedente chiusura di Kleene espressione opzionale per esempio ab c rappresenta ac e abc una o pi volte l espressione precedente m n ripetizione fra med n volte a 2 riconosce aa a 2 4 rappre senta aa aaa aaaa La concatenazione di due espressioni si esprime semplicemente scrivendole una di seguito all altra Osserviamo che tutti gli operatori del Lex si possono esprimere in termini degli operatori fondamentali di concatenazione scelta e chiusura eventualmente introducendo la stringa nulla A questa notazione si aggiunge la possibilit di dare un nome a delle espressioni e di riferirsi ad esse scrivendone il nome fra parentesi graffe B 2 1 Esempio Il seguente esempio una semplice grammatica per riconoscere i token usati in espressioni di assegnamento formate da identificatori costanti intere ed operatori aritmetici e d
315. stems and software engineering Vocabulary Ing nierie des syst mes et du logiciel Vocabulaire ISO IEC and IEEE 2010 IAEA TRS 384 Verification and Validation of Software Related to Nu clear Power Plant Instrumentation and Control IAEA International Atomic Energy Agency 1999 CEI EN 50128 2002 04 Applicazioni ferroviarie tranviarie filotranvia rie metropolitane Sistemi di telecomunicazione segnalamento ed ela borazione Software per sistemi ferroviari di comando e di protezione Railway applications Communications signalling and processing systems Software for railway control and protection systems CEI Comitato elettrotecnico italiano 2002 European standard ISO 8807 1989 Information processing systems Open Systems In terconnection LOTOS A formal description technique based on the temporal ordering of observational behaviour ISO Intenational Organization for Standardization 1989 J Arlow and I Neustad UML 2 and the Unified Process Second Edition Addison Wesley 2005 291 292 10 11 12 13 14 15 16 17 18 19 22 23 BIBLIOGRAFIA Tommaso Bolognesi and Ed Brinksma Introduction to the iso specification language lotos Computer Networks 14 25 59 1987 R Fairley Software Engineering Concepts McGraw Hill 1985 R W Floyd Assigning meaning to programs In Proceedings of the American Mathematical Society Symposia
316. sviluppare A questo scopo possiamo considerare alcuni criteri di classificazione dei sistemi che vedremo nel resto di questa sezione 3 1 1 Requisiti temporali Una prima importante classificazione delle applicazioni pu essere fatta in base ai requisiti temporali rispetto ai quali i sistemi si possono caratterizzare come sequenziali senza vincoli di tempo concorrenti con sincronizzazione fra processi in tempo reale con tempi di risposta prefissati Nei sistemi sequenziali un risultato corretto rispetto alla specifica del sistema in termini di relazioni fra ingresso e uscita accettabile qualunque sia il tempo impiegato per ottenerlo Naturalmente sempre desiderabile che l elaborazione avvenga velocemente ma la tempestivit del risultato non un requisito funzionale bensi un requisito relativo alle prestazioni o all usabilita Inoltre un sistema sequenziale quando visto come un singolo processo le cui interazioni con l ambiente operazioni di ingresso e di uscita avvengono in una sequenza prefissata I sistemi concorrenti invece sono visti come insiemi di processi autono mi eventualmente distribuiti cio eseguiti da pi di un elaboratore che in alcuni momenti possono comunicare fra di loro Le interazioni reciproche dei processi e fra questi e l ambiente sono soggette a vincoli di sincroniz zazione ed avvengono in sequenze non determinate a priori Per vincoli di 3 1 CLASSIFICAZIONI DEI SIST
317. t statisticamente e restituendo i risultati al gruppo di sviluppo Questo modifica il software e fornisce al gruppo di certificazione una notifica 211 212 APPENDICE A MODELLO CLEANROOM di cambiamento del progetto engineering change notice Il ciclo viene quindi ripetuto e Il processo termina quando si raggiunge un affidabilt accettabile L affidabilit viene quantificata misurando la frequenza dei guasti nel cor so del collaudo Il collaudo una simulazione dell uso del software basata sul profilo operativo dell applicazione cio uno schema tipico delle interazioni degli utenti col sistema Per esempio se si deve valutare l affidabilit di un sito web si pu ricavare un profilo operativo dalla storia degli accessi a siti web simili questo profilo dice che tipo di richieste vengono fatte e con quale frequenza e con queste informazioni si pu simulare il carico del nuovo sito Appendice B Formalismi di specifica B 1 Modello Entita Relazioni Il modello Entit Relazioni ER un modello descrittivo semiformale per applicazioni orientate ai dati di tipo semantico Permette di descrivere la struttura concettuale dei dati cio le relazioni logiche fra gli oggetti del mondo reale rappresentati dai dati indipendentemente sia dalle operazioni che devono essere eseguite sui dati p es ricerca ordinamento che dalla loro implementazione Un entit rappresenta un insieme di oggetti ciascuno
318. t e dalle parentesi e Gli assiomi sono tutte le espressioni date dai seguenti schemi A B A 3 1 A B gt C As bs As 0 3 2 8 A B A B 3 3 Questa teoria formale ha quindi un insieme infinito di assiomi osser viamo anche che qualsiasi assioma ottenuto da questi schemi una tautologia e L unica regola d inferenza il modus ponens MP una formula B conseguenza diretta di A e A gt B Si scrive anche A A DB B Dimostriamo per esempio che F F per ogni formula F5 F F gt F gt F gt WF PF da 3 2 A C F B F F 34 F gt F gt F gt F da 3 l A F Bara Fr 3 5 F F gt F gt F gt F da 3 4 e 3 5 per MP A F F gt F F B F gt F gt F SFF 86 F gt F gt F da 3 1 A F B F 3 7 5Scriviamo F invece di F per evidenziare graficamente la formula 3 4 LOGICA 69 FoF da 3 6 e 3 7 per MP A F gt fF gt P R b PF 3 8 Un utile risultato dimostrabile su questa teoria formale il Teorema della deduzione se I un insieme di wff A e B sono wff e TU A B allora T A B In particolare se A B allora ASB Cio si pu affermare che A implica logicamente B se B dimostrabile da A coerentemente col comune modo di dimostrare i teoremi in matematica Osservazione Il Teorema della deduzione propriamente un metateore ma perch afferma una propriet di un sistema for
319. tano alla disponibilit di un calcolatore di lunghe notti al terminale e di un po di bevande e generi di conforto durante il lavoro 14 CAPITOLO 1 INTRODUZIONE Linguaggi notazioni testuali o grafiche e formalismi per esprimere i con cetti usati e le loro realizzazioni disegno tecnico per l ingegneria mec canica UML per il software Standard documenti che stabiliscono requisiti uniformi che devono essere soddisfatti da processi procedure eccetera norme UNI per l ingegneria industriale standard ANSI per l informatica Strumenti ambienti di sviluppo e programmi che assistono l ingegnere nel la progettazione anche automatizzandone alcune fasi programmi di calcolo delle strutture per l ingegneria civile strumenti CASE per il software Naturalmente questo armamentario non completo senza la capacit da parte del progettista di supplire con l esperienza e l inventiva ai limiti delle teorie e delle procedure formalizzate fondamentale conoscere le regole del mestiere ma queste da sole non bastano per trovare tutte le soluzioni 1 3 1 Deontologia Si accennato al fatto che ogni prodotto deve rispondere alle esigenze della societ oltre che a quelle del produttore e del cliente Le esigenze della societ sono in primo luogo quelle espresse da leggi e normative di vario genere Al di l degli adempimenti legali ogni progettista come ogni altro individuo responsabile delle conseguenze che le
320. tecari RegistroPrestiti Catalogo RegistroUtenti i I y y subsystem Persistenza i l V subsystem Database Figura 5 9 Esempio progetto di sistema 1 In questo esempio si sono mostrate solo le relazioni di dipendenza fra i moduli Un passo successivo consiste nell individuare le interfacce mostrate nel diagramma di Fig 5 10 in cui si vede anche che si scelto di imple mentare il database con un pacchetto software esterno MySQL La Fig 5 11 mostra un alra versione in cui si tralascia la rappresentazione esplicita delle interfacce Architetture standard Esistono alcuni schemi di interconnessione o topologie fra sottosistemi che insieme a determinati schemi di interazione vengono usati comunemente e spesso sono caratteristici di certi tipi di applicazioni Di solito conviene scegliere uno di questi schemi come punto di partenza del progetto 158 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI IGestUtenti subsystems IGestLibri InterfBiblio O IGesiFiostti 0 subsystem Amministrazione RegBibl IRegPrest ICatal l IRegUtenti subsystem subsystem subsystem subsystem RegistroBibliotecari RegistroPrestiti Catalogo RegistroUtenti O IPersist subsystem Persistenza O IMySQL subsystem MySQL
321. temi concorrenti e distribuiti Un componente TTCN 3 definito da un insieme di port analoghi a quelli visti in Sez 4 4 1 a loro volta caratterizzati dal tipo dei messaggi trasmessi e dalla loro direzione in out inout Un componente esegue delle funzioni che possono contenere istruzioni send e receive o chiamate di procedura remota Le istruzioni receive possono verificare se il messaggio ricevuto soddisfa le condizioni richieste per passare un certo test 6 6 IL LINGUAGGIO TTCN 3 209 Per eseguire i test il collaudatore scrive delle procedure testcase che istanziano i componenti li collegano fra di loro connettendo i port e at tivano i componenti Un componente pu contenere altri componenti e i port del componente pi esterno sistema di test devono essere collegati al sistema sotto test Questo collegamento avviene attraverso un adattatore che un componente scritto nel linguaggio del sistema sotto test usando un framework che offre al sistema di test scritto in TTCN 3 un interfaccia pre definita Il collaudatore deve reimplementare le operazioni di tale interfaccia in modo da adattarla al sistema sotto test Letture Obbligatorie Cap 6 Ghezzi Jazayeri Mandrioli esclusa Sez 6 9 oppure Cap 13 e 14 Pressman 210 CAPITOLO 6 CONVALIDA E VERIFICA Appendice A Modello Cleanroom Il modello Cleanroom 22 un modello evolutivo concepito con l obiettivo di produrre software privo di errori Questo
322. tessi vengano introdotti facilmente Nei processi basati su modelli evolutivi il software viene prodotto in modo incrementale in passi successivi Fig 2 7 Ogni passo produce a seconda delle varie strategie possibili una parte nuova oppure una versione via via pi raffinata e perfezionata del sistema complessivo Il prodotto di ciascun passo viene valutato ed i risultati di questa valutazione determinano i passi successivi finch non si arriva ad un sistema che risponde pienamente alle esigenze del committente almeno finch non si sentir il bisogno di una nuova versione 2 3 1 Prototipazione Un prototipo una versione approssimata parziale ma funzionante dell ap plicazione che viene sviluppata La prototipazione cio la costruzione e l uso di prototipi entra nei modelli evolutivi in diversi modi 21 e Un prototipo pu essere costruito e valutato nel corso dello studio di fattibilit e Un prototipo esplorativo viene costruito e consegnato all utente durante l analisi dei requisiti in modo che l utente possa provarlo e chiarire i requisiti del sistema e Un prototipo sperimentale viene usato nella fase di progetto per stu diare diverse implementazioni alternative 2 3 MODELLI EVOLUTIVI 37 Analisi e specifica Progetto Verifica e convalida ciclo 1 ciclon SR ordinamento logico gt ordinamento temporale gt corrispondenza Figura 2 7 Un processo incrementale
323. ti per settori specifici per esempio 21 22 CAPITOLO 2 CICLO DI VITA E MODELLI DI PROCESSO ESA PSS 05 4 orientato all industria spaziale Analisi e specifica Progetto gt Verifica e convalida Nu ordinamento logico Figura 2 1 Il ciclo di vita del software Il ciclo di vita del software di cui la Fig 2 1 mostra le quattro attivit relative allo sviluppo del software in senso stretto tralasciando le attivit di consegna manutenzione e ritiro segue lo schema generale appena esposto ma con alcune importanti differenze particolarmente nella fase di produzio ne Come abbiamo visto nel software la riproduzione fisica del prodotto ha un peso economico ed organizzativo molto inferiore a quello che si trova nei prodotti tradizionali per cui nel ciclo di vita del software il segmento corri spondente alla produzione costituito dall attivit di programmazione che al pari delle fasi precedenti di analisi e di progetto un attivit di caratte re intellettuale piuttosto che materiale Un altra importante differenza sta nella fase di manutenzione che nel software ha un significato completamente diverso da quello tradizionale come vedremo pit oltre Il ciclo di vita del software verr studiato prendendo come esempio un particolare modello di processo il modello a cascata in cui ciascuna attivit del ciclo di vita corrisponde ad una fase del processo Fig 2 2 Succes sivamente si studieranno alt
324. to di forma shape astratto e si possono disegnare effettivamente solo le sue realizzazioni concrete come cerchio e 152 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI quadrato La classe Shape in realt un cattivo esempio di programma zione poich non rappresenta adeguatamente il concetto reale che dovrebbe modellare e questa inadeguatezza porta alla realizzazione di software poco affidabile Infatti possibile istanziare contro la logica dell applicazione un oggetto Shape a cui si potrebbe applicare l operazione draw ottenendo un risultato inconsistente Una prima correzione a questo errore di progetto consiste nel rendere esplicito il fatto che la classe rappresenta un concetto astratto In C questo si ottiene specificando che draw un operazione virtuale pura per mezzo dello specificatore 0 file Shape h class Shape Point position public virtual void draw 0 virtual void move Point p position p Ilsa La classe Shape ora una classe astratta cio non istanziabile a causa dell incompletezza della sua implementazione Fig 5 5 utility __ SUSE Globals gt Shape position Point drawall draw move Circle Square draw draw Figura 5 5 Esempio polimorfismo 2 5 1 EREDIT E POLIMORFISMO 153 Una struttura ancor pi modulare si pu ottenere r
325. traverso la valutazione delle espressioni che costituiscono le guardie e le azioni associate alle transizioni L esecuzione 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 115 delle azioni pu modificare gli attributi condivisi fra stati concorrenti per bene evitare finch possibile di modellare in questo modo l interazione fra stati Questo meccanismo di interazione infatti poco strutturato e poco leggibile e rende pi probabili gli errori nella specifica o nella realizzazione del sistema La valutazione delle guardie invece non pu avere effetti col laterali In una guardia si pu verificare se un oggetto si trova in un certo stato usando l operatore logico oclInState del linguaggio OCL send consuma Produttore not finito send produci Consumatore send produci finito send fine Figura 3 27 Due macchine a stati interagenti possibile descrivere attivit concorrenti anche senza ricorrere alla scom posizione in regioni concorrenti quando tali attivit sono eseguite da oggetti diversi a cui sono associate macchine a stati distinte La Fig 3 27 mostra il comportamento di un produttore e di un consumatore che si sincronizzano scambiandosi segnali Infine le figure 3 28 e 3 29 mostrano come esempio un sistema formato da tre componenti interagenti 3 5 9 Diagrammi di interazione I diagrammi di interazione mostrano gli scambi di messaggi fra oggetti Esi stono d
326. trovare dei dati di ingresso che causino l esecuzione di tutte le operazioni previste dal programma nelle va rie sequenze possibili Il problema fondamentale sta nel fatto che il numero delle possibili sequenze di operazioni in generale non limitato si pensi ai programmi contenenti cicli che possono essere iterati per un numero di volte determinabile solo a tempo di esecuzione I dati di test vengono scelti in base a dei criteri di copertura che defini scono l insieme di sequenze di operazioni che devono essere eseguite nel corso del test si dice che il test esercita determinate operazioni o sequenze Il grafo di controllo Nel test strutturale ci si riferisce ad una rappresentazione astratta del pro gramma detta grafo di controllo Nella sua forma pi semplice il grafo di controllo viene costruito associando un nodo a ciascuna istruzione o condizio ne di istruzioni condizionali o iterative e collegando i nodi con archi in modo 6 3 ANALISI DINAMICA 195 tale che i cammini del grafo rappresentino le possibili sequenze di esecuzione A seconda del grado di dettaglio desiderato pi istruzioni possono essere rappresentate da un solo nodo oppure una istruzione pu essere scomposta in operazioni elementari ciascuna rappresentata da un nodo Criterio di copertura dei comandi Questo criterio richiede che ogni istruzione eseguibile del programma cio ogni nodo del grafo sia eseguita per almeno un dato appartenente al test
327. truzione del composto implicano la creazione e la distruzione dei componenti In ogni caso un componente pu appartenere ad un solo composto e il composto il padrone del componente In un modello un associazione una composizione se la propriet tipo di aggregazione all estremit dalla parte dell entit complessa ha il valore composition La composizione si rappresenta con una losanga nera dalla parte dell entit complessa oppure si possono disegnare i componenti all interno dell entit stessa La Fig 3 13 mostra queste due notazioni Auto Auto Motore 1 1 4 4 Motore Ruota Ruota Figura 3 13 Composizione Una classe pu appartenere come componente a pi di una composizione ma un istanza di una classe componente pu appartenere ad una sola istanza di una classe composta Nella Fig 3 14 la classe Motore in relazione di composizione con Nave e Auto ma una qualsiasi sua istanza pu essere componente di una sola istanza di una delle due classi 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 101 Nave Auto 1 1 1 4 Scafo Motore Ruota Nave Auto Motore Motore Motore Figura 3 14 Composizione fra classi e fra oggetti Infine la Fig 3 15 mostra un semplice diagramma delle classi con asso ciazioni aggregazioni
328. ttivit formato da nodi e archi I nodi rappresentano attivit svolte in un processo punti di controllo del flusso di esecuzione o oggetti elaborati nel corso del processo Gli archi collegano i nodi per rappresentare i flussi di controllo e di informazioni Il diagramma di Fig 3 32 descrive un processo di controllo alla ricezione di un segnale di start se il sistema abilitato vengono messe in funzione le valvole A e B e la pompa P Quando tutte e due le valvole sono aperte viene emesso il segnale A and B open e quando la pompa stata avviata si apre la valvola C e viene emesso il segnale finished lo schema nel riquadro 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 119 tratteggiato non fa parte del diagramma Le tre linee orizzontali spesse rappresentano un nodo di controllo di tipo fork diramazione del flusso di controllo in attivit parallele e due nodi di tipo join ricongiungimento di attivit parallele Be Sane a ges EE e Compute parameters I start fork AN not enabled enabled i l Open valve A Open valve B Start pump P I A A and B open ae Open valve C join in finished Figura 3 32 Un diagramma di attivita I diagrammi di attivita possono descrivere attivita svolte da entita diffe renti raggruppandole graficamente Ciascuno dei gruppi cos ottenuti una partizione detta anche corsia s
329. tuale quando l azione viene eseguita si dice che la transizione scatta 230 APPENDICE B FORMALISMI DI SPECIFICA Una transizione t abilitata nella marcatura M se e solo se Vee M p gt W p t cio per ogni posto di ingresso alla transizione si ha che la sua marcatura maggiore o uguale al peso dell arco che lo unisce alla transizione Nel caso che sia vuoto la transizione sempre abilitata La funzione peso un mezzo per esprimere semplicemente certe condi zioni Supponiamo per esempio che un sistema operativo per ottimizzare l accesso al disco raggruppi le richieste di lettura in blocchi di N operazioni questo si potrebbe modellare con un posto la cui marcatura rappresenta il numero di richieste da servire una transizione che rappresenta l esecuzione delle richieste e un arco il cui peso uguale a N fa si che l esecuzione avvenga solo quando c un numero sufficiente di richieste Graficamente il peso di un arco si indica scrivendone il valore accanto all arco Se il peso non indicato uguale a 1 L abilitazione di una transizione t in una marcatura M si indica con la formula M t che si legge t abilitata in M Dopo lo scatto di una transizione la rete assume una nuova marcatura M il cui valore determinato dalla seguente regola di scatto ove M la marcatura precedente allo scatto Voe stte M p M p ni W p t Vpe te M p M p W t p Vents M
330. turit di un organizzazione produt trice di software cio la sua capacit di gestire i processi di sviluppo Sono previsti cinque livelli di maturit 1 Iniziale Initial Ogni nuovo progetto viene gestito ad hoc con poca o punta pianificazione 2 Ripetibile Repeatable Esiste una gestione del progetto capace di applicare le esperienze dei progetti passati a nuovi pro getti riguardanti applicazioni simili 3 Definito Defined Vengono applicate metodologie e tecniche ben definite sia per il processo di sviluppo che per la sua ge stione Tutti i progetti usano versioni particolari di un unico processo standardizzato nell mbito dell organizza zione 4 Gestito Managed Viene applicato un piano di misura per il controllo della qualit del prodotto e del processo 5 Ottimizzante Optimizing I risultati delle misure vengono analizzati com metodi quantitativi ed usati per migliorare continua mente il processo di sviluppo prevista l introduzione di nuove metodologie e tecniche Il CMM prevede delle strategie di miglioramento per le organizzazioni che vogliono passare ad un livello superiore da 1 a 2 Introduzione di gestione di progetto pianificazione gestione della configurazione assicurazione della qualit da 2 a 3 Capacit di adattamento a nuovi problemi di cambiare i processi 1 Few processes are defined and success depends on individual effort and heroics SEI http www sei cmu edu technolo
331. ubsystem Persistenza subsystem MySQL Figura 5 11 Esempio progetto di sistema 3 Scomposizione in strati e partizioni Un metodo di applicabilit generale per organizzare un architettura si basa sulla scomposizione per strati e per partizioni Nella scomposizioni in strati ogni strato un sottosistema che offre dei servizi ai sottosistemi di livello superiore e li implementa attraverso i servizi offerti dai sottosistemi a livello inferiore Nella scomposizione in partizioni ogni partizione un sottosistema che realizza una funzione del sistema complessivo I due criteri generalmente vengono applicati insieme poich una partizione pu essere stratificata ed uno strato pu essere diviso in partizioni L individuazione delle partizioni cio dei sottosistemi responsabili di rea lizzare le diverse funzioni dell applicazione viene guidata principalmente dal le informazioni raccolte nei documenti di specifica dei requisiti per esempio dai diagrammi dei casi d uso Gli strati vengono individuati in base ai diversi livelli di astrazione dei serviz richiesti per realizzare il sistema esemp tipici di architetture a strati sono i sistemi operativi ed i protocolli di comunicazione Un esempio di scomposizione per strati mostrato in Fig 5 13 dove lo schema a componenti dell esempio sul software per una biblioteca viene ridisegnato raggruppando i sottosistemi in cinque str
332. ude l insieme di elementi definiti dalla classe de rivata quest ultima cio un sottoinsieme della classe base La classe base ha meno caratteristiche attributi operazioni associazioni vincoli della classe derivata Una classe base pu avere pi classi derivate e in questo caso ne riassume alcune caratteristiche comuni attributi operazioni associazioni vincoli Le caratteristiche di tale classe cio definiscono un insieme di oggetti che include l unione degli insiemi di oggetti definiti dalle sottoclassi Un oggetto appartenente ad una classe derivata quindi appartiene anche alla classe base possibile che ogni oggetto appartenente alla classe base appartenga ad almeno una delle classi derivate oppure che alcuni oggetti appartengano solo alla classe base 104 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI La relazione di generalizzazione si pu anche chiamare specializzazione cambiando il punto di vista ma restando immutato il significato una classe una specializzazione di un altra classe se aggiunge delle caratteristiche alla sua struttura o al suo comportamento quindi un estensione oppure vi ag giunge dei vincoli si ha quindi una restrizione Per esempio data una classe ellisse con gli attributi asse maggiore e asse minore la classe ellis se colorata un estensione poich aggiunge l attributo colore mentre la classe cerchio una restrizione
333. ue tipi di diagrammi di interazione i diagrammi di sequenza e quelli di comunicazione 116 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Timer delay timer set delay d Programmer start stop d set_max_temp temp set_max_time time Heater start heater stop t_max t signal hot read timeout set_t_max t start stop Figura 3 28 Esempio diagramma delle classi Diagrammi di sequenza Un diagramma di sequenza descrive l interazione fra pi oggetti mettendo in evidenza il flusso di messaggi scambiati e la loro successione temporale I diagrammi di sequenza sono quindi adatti a rappresentare degli scenari pos sibili nell evoluzione di un insieme di oggetti bene osservare che ciascun diagramma di sequenza rappresenta esplicitamente una o pi istanze delle possibili sequenze di messaggi mentre un diagramma di stato definisce im plicitamente tutte le possibili sequenze di messaggi ricevuti eventi o inviati azioni send da un oggetto interagente con altri Un diagramma di sequenza costituito da simboli chiamati lifeline che rappresentano i diversi ruoli degli oggetti coinvolti nell interazione Sotto ogni lifeline c una linea verticale che rappresenta l evoluzione temporale di ciascun oggetto Lo scambio di un messaggio o la chiamata di un operazio ne si rappresenta con una freccia dalla linea verticale dell oggetto sorgente a
334. ui estrarre i dati di test 6 3 ANALISI DINAMICA 197 Il modello si basa sui requisiti o pi precisamente sulle specifiche Se queste ultime sono abbastanza precise esse stesse costituiscono un modello da cui estrarre le informazioni necessarie per il test Se le specifiche sono informali devono essere analizzate per costruire il modello Un approccio generale al testing strutturale si basa sulla costruzione di un grafo al quale si possono applicare i criteri di copertura visti nel testing strutturale ove il grafo considerato il grafo di controllo del codice Questo grafo si riferisce a seconda dell applicazione e o del metodo di specifica a vari aspetti dell applicazione e non dell implementazione quali il flusso del controllo il flusso dei dati l evoluzione dello stato ed altri ancora Tabelle di decisione e grafi causa effetto Le condizioni sui dati di ingresso e su quelli di uscita vengono rappresen tate da variabili booleane Le dipendenze logiche AND OR NOT esclu sione possono essere rappresentate in forma tabulare o grafica ma anche quando si usa la forma grafica generalmente questa viene ricondotta ad una forma tabulare pi adatta ad un analisi sistematica e pi facilmente automatizzabile In forma tabulare si usano tabelle di decisione In queste tabelle le righe rappresentano i possibili valori booleani delle condizioni sui dati di ingresso e di uscita e le colonne rappresentano le possibili co
335. una classe driver Ciascun metodo di questa classe esegue un caso di test e il framework fornisce un programma che esegue i test e raccoglie i risultati Il framework CppUnit si pu descrivere in modo semplificato come in Fig 6 4 dove UnitA la classe da collaudare UnitB una classe che col labora con la precedente e UnitATest il driver La classe TestFixture crea ed inizializza le istanze della classe sotto test e le altre classi e poi le distrugge alla fine del test TestCaseAaCaller esegue il caso di test a cio il metodo testCaseAa della classe UnitATest e TestRunner la classe di pi alto livello nel programma di test quella che coordina le altre La Fig 6 5 l applicazione del framework al test di una classe Complex Supponiamo che la classe Complex sia cos definita class Complex double real double imaginary public Complex double r double i 0 real r imaginary i friend bool operator const Complex amp a const Complex amp b friend Complex operator const Complex amp a const Complex amp b F bool operator const Complex amp a const Complex amp b 200 CAPITOLO 6 CONVALIDA E VERIFICA component component Higher1 Client1 4 Interf1 components component FE i Interf2 i Client2 i i Pinterf1 Provider1 component O i 1 1 1 UnderTest compon
336. ura del programma pu essere rapresentata in UML come in Fig 5 4 dove lo stereotipo utility gt indica che una classe contiene solo operazioni o dati globali non quindi una vera classe ma un espediente per rappresentare moduli non riconducibili al modello object oriented utility L__SUS ___ Globals si Shape drawall Circle Square Figura 5 4 Esempio polimorfismo 1 Nella funzione drawa11 il tipo dell oggetto a cui viene applicata la fun zione draw che deve disegnare una figura sullo schermo noto soltanto a tempo di esecuzione si sa solo che l oggetto apparterr alla classe Shape o a una classe derivata da questa La funzione draw quindi polimorfica e viene chiamata con binding dinamico Il fatto che la funzione drawal1 ignori il tipo degli oggetti su cui deve operare ne migliora grandemente la mo dularit e la riusabilit rispetto ad un implementazione che invece richieda una conoscenza statica dei tipi Questa funzione completamente disaccop piata dall implementazione delle classi Circle e Square e inoltre continua a funzionare immutata anche se si aggiungono altre classi derivate da Shape 5 1 3 Classi astratte e interfacce Osserviamo che nel nostro esempio l operazione draw della classe Shape ha un implementazione banale un operazione nulla poich non si pu disegna re una forma generica il concet
337. valori particolari richiesti dal test ricavandoli da tabelle o dall interazione con il collaudatore 6 5 TEST IN GRANDE 207 Nel test di integrazione si vuole testare l interfacciamento fra moduli il cui funzionamento gi stato testato individualmente possibile eseguire il test di integrazione dopo che tutti i moduli sono stati testati individualmente assemblandoli e provando il sistema completo big bang test In genere si preferisce una strategia incrementale del test di integrazione che permette di integrare i moduli man mano che vengono completati e che superano il test di unit In questo modo gli errori di interfacciamento vengono scoperti prima ed in modo pit localizzato e si risparmia sul numero di driver e di stub che devono essere sviluppati La strategia del test di integrazione generalmente ricalca la strategia di sviluppo e quindi pu essere top down o bottom up o una combinazione delle due Con la strategia top down non c bisogno di driver poich i mo duli sviluppati e testati in precedenza fanno da driver per i moduli integrati successivamente Analogamente con la strategia bottom up non c bisogno di stub La strategia top down permette di avere presto dei prototipi men tre la strategia bottom up permette di testare subito i moduli terminali che generalmente sono i pi critici 6 5 2 Test di sistema Il test di integrazione sebbene nella sua ultima fase si applichi al sistema completo ri
338. vi inoltre permette a un proces so di eseguire in modo concorrente pi flussi di controllo Ciascun flusso di controllo viene realizzato da un entit chiamata thread o processo leggero lightweight process definita da uno stack e un contatore di programma In un processo con pi flussi di controllo detto multithreaded i thread condi vidono la memoria di lavoro e il codice eseguibile In generale ogni thread pu eseguire un proprio segmento di codice ma tutti i segmenti di codice associati ai thread fanno parte del testo del processo a cui appartengono In pratica il programmatore deve scrivere in un sottoprogramma le azioni che devono essere eseguite da un thread e poi usando apposite chiamate di sistema chiedere al sistema operativo di creare il thread entro un processo Anche per i thread ci sono delle chiamate di sistema per il controllo dell ese cuzione e per i meccanismi di sincronizzazione Lo standard adottato dalla maggior parte dei sistemi Unix l interfaccia Posix Threads 3Pit precisamente la successione dei valori assunti da tale insieme http www yolinux com TUTORIALS LinuxTutorialPosixThreads html 5 2 PROGETTO DI SISTEMA 167 Oggetti attivi Il flusso di controllo un concetto fondamentale nell analisi dei sistemi con correnti Nella sezione precedente stato definito come la sequenza di valori assunti dal contatore di programma e dallo stack di un thread In modo pi astratto si pu i
339. vi di questa fase consistono nell e stendere e perfezionare le conoscenze acquisite nella fase precedente e nel produrre una baseline architetturale eseguibile Questa una pri ma versione eseguibile anche se parziale del sistema che non si deve considerare un prototipo ma una specie di ossatura che serva da base per lo sviluppo successivo Il milestone della fase comprende quindi il codice che costituisce la baseline il suo modello costituito da vari diagrammi UML e le versioni aggiornate dei documenti prodotti nella fase di inizio Costruzione construction ha l obiettivo di produrre il sistema finale partendo dalla baseline architetturale e completando le attivit di rac colta dei requisiti analisi e progetto portate avanti nelle fasi precedenti Il milestone comprende fra l altro il sistema stesso la sua documen tazione in UML una test suite e i manuali utente La fase si conclude con un periodo di beta test Transizione transition gli obiettivi di questa fase consistono nella cor rezione degli errori trovati in fase di beta test e quindi nella consegna e messa in opera deployment del sistema Il milestone consiste nel la versione definitiva del sistema e dei manuali utente e nel piano di assistenza tecnica Distribuzione delle attivit nelle fasi Come risulta dai paragrafi precedenti in ciascuna fase si possono svolgere attivit diverse Nella fase di inizio sono preponderanti le attivit di raccolta e
340. viare un evento un thread esegue l operazione corrispondente signal _consuma che asserisce in mutua esclusione la variabile logica e segnala al semaforo che la variabile stata cambiata Il semaforo quindi risveglia il thread che era in attesa Nella libreria Boost Thread i semafori di sincronizzazione sono chiamati variabili di condizione Mostriamo di seguito una possibile dichiarazione della classe Buffer descritta sopra seguita dalla definione di una variabile globale buf class Buffer boost mutex pmutex semaforo mutex boost mutex cmutex boost condition prod semaforo di sincronizzazione boost condition cons bool produci segnale bool consuma public Buffer produci false consuma false void signal_produci void wait_produci void signal_consuma void wait_consuma ti Buffer buf I membri pmutex e cmutex sono semafori di mutua esclusione i membri prod e cons di sincronizzazione La variabile buf stata dichiarata con visibilit globale in modo che sia visibile alle procedure dei thread ma questa soluzione ovviamente serve solo a semplificare questo esempio In un caso reale si userebbero altre tecniche che qui non ci interessano L operazione wait_consuma implementata come segue 10Nella filosofia orientata agli oggetti le variabili globali sono Il Male L operazione scoped_lock fa parte delle librerie Boost Nella libreria standard del
341. volto a verificare la correttezza dei singolo moduli rispetto all interfacciamento col resto del sistema Quindi il test di integrazione non pu verificare le propriet globali del sistema che non si possono riferire a qualche particolare modulo o sottosistema Alcune di queste propriet sono la robustezza e la riservatezza security Fra i possibili test di sistema citiamo il test di stress ed il test di robustezza Il test di stress consiste nel sottoporre il sistema ad uno sforzo superiore a quello previsto dalle specifiche per assicurarsi che il superamento dei limiti non porti a malfunzionamenti incontrollati ma solo ad una degradazione del le prestazioni La grandezza che definisce lo sforzo dipende dall applicazione per esempio potrebbe essere il numero di utenti collegati contemporanea mente ad un sistema multiutente od il numero di transazioni al minuto per un database Il test di robustezza consiste nell inserire dati di ingresso scorretti Anche in questo caso ci si aspetta che il sistema reagisca in modo controllato per esempio stampando dei messaggi di errore e nel caso di sistemi interattivi rimettendosi in attesa di ulteriori comandi dall utente 208 CAPITOLO 6 CONVALIDA E VERIFICA 6 5 3 Test di accettazione Il test di accettazione un test di sistema eseguito dal committente invece che dal produttore che in base al risultato decide se accettare o no il pro dotto Il test di accettazione ha quindi una
342. wimlane In Fig 3 33 l esempio precedente stato ridisegnato usando le partizioni Un altro esempio in Fig 3 34 de scrive in modo molto semplificato il processo di sviluppo di un prodotto mostrando quali reparti di un azienda sono responsabili per le varie attivit 120 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Controller Valve A Valve B Pump P Valve C e Compute parameters not enabled enabled Open B Start P A and B open Ca finished Figura 3 33 Un diagramma di attivit con partizioni Il nodo Specification un nodo oggetto in questo caso il documento di specifica prodotto dall attivit Design Letture Obbligatorie Cap 5 e Sez 4 6 Ghezzi Jazayeri Mandrioli oppure Cap 2 esclusi 2 5 1 2 5 2 pagg 90 100 di 2 6 2 2 6 4 2 7 3 Ghezzi Fuggetta et al oppure Cap 7 esclusi 7 4 2 7 6 2 7 7 Sez 8 4 8 9 Sez 23 1 Sez 24 1 Pressman Facoltative Cap 23 Pressman Sulla logica Cap 1 e 2 Quine 3 5 LINGUAGGI ORIENTATI AGLI OGGETTI 121 Design dept Marketing dept Manufacturing dept Design new product Specification Market product Make product Sell product Figura 3 34 Corsie e nodi oggetto 122 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Capitolo 4 Il progetto L obiettivo dell attivit di p
343. y public class VideoGame public static void main String args JetLiner planes new JetLiner 2 planes 0 new JetLiner planes 1 new JetLiner DisplayMgr dm new DisplayMgr planes AirTrafficCtrl atc new AirTrafficCtrl planes dm dm display atc simulate In Java come gi osservato un interface corrisponde ad una classe virtuale pura del C Le parole chiave extends e implements denotano l eredit rispettivamente da classi ordinarie eventualmente astratte e da classi virtuali pure Il Java permette di ereditare direttamente da una sola classe ordinaria e da pi classi virtuali pure La Fig 5 7 una rappresentazione diretta del codice Una rappresen tazione pi strutturata in Fig 5 8 in cui sono stati introdotti due nuovi elementi Rendering e Simulation 156 CAPITOLO 5 PROGETTO ORIENTATO AGLI OGGETTI VideoGame 4 O Drawable DisplayMgr 7 JetLiner AirTrafficCtrl x V N Aircraft Figura 5 7 Esempio polimorfismo 4 VideoGame Drawable JetLiner DisplayMgr C BUA T O Rendering AirTrafficCtrl O Simulation Aircraft Figura 5 8 Esempio polimorfismo 5 5 2 Progetto di sistema In questa sezione consideriamo alcune linee guida per il progetto di sistema nel quale si fanno del
344. zio si possano verificare delle situazioni anomale bisogna decidere se tali situazioni possono essere gestite nel modulo fornitore nascondendone gli effetti ai moduli clienti oppure se il modulo fornitore deve limitarsi a segnalare il problema delegandone la gestione ai moduli clienti 4 2 MODULI 129 Information hiding Il principio dell information hiding afferma che bisogna rendere inaccessibile dall esterno tutto ci che non strettamente necessario all interazione con gli altri moduli in modo che vengano ridotte al minimo le dipendenze e quindi sia possibile progettare implementare e collaudare ciascun modulo indipendentemente dagli altri Dopo che stato individuato il compito di un modulo si vede che tale compito per essere svolto ha bisogno di varie strutture dati e di operazioni o di altre risorse magari pi astratte come tipi di dati o politiche di gestione di certe risorse Il progettista deve decidere quali di queste entit devono far parte dell interfaccia ed essere cio accessibili dall esterno Le entit che non sono parte dell interfaccia servono unicamente a implementare le altre e non devono essere accessibili Questa scelta non sempre facile e immediata poich spesso pu sembrare che certe parti dell implementazione per esempio una procedura possano essere utili ad altri moduli Comunque quando si deciso che una certa entit fa parte dell implementazione bisogna che questa sia
345. zione d interpretazione delle funzioni stabilisce il significato dei sim boli che usiamo nel nostro linguaggio per denotare le funzioni Nell esempio dell aritmetica una funzione di interpretazione delle funzioni potrebbe asso ciare la funzione aritmetica somma somma Fp al simbolo di funzione f f F cio D f somma In particolare stabilisce il significato delle costanti per esempio possiamo associare al simbolo a il numero zero al sim bolo b il numero uno e cos via Di solito quando si usa la logica per parlare di un argomento ove esiste una notazione tradizionale si cerca di usare quella notazione a meno che non si voglia sottolineare la distinzione fra linguaggio e dominio come stiamo facendo qui Quindi in genere possibile usare il simbolo per la somma il simbolo 1 per il numero uno eccetera La funzione d interpretazione dei predicati stabilisce il significato dei sim boli che denotano le relazioni Per esempio una funzione di interpretazio ne dei predicati pu associare la relazione minore o uguale al simbolo di predicato p L assegnamento di variabili stabilisce il significato delle variabili Per esempio possiamo assegnare il valore tre alla variabile x L assegnamento di termini stabilisce il significato dei termini Per esem pio dato il termine f b x e supponendo che f somma b uno E x tre allora f b x quattro Infine la funzione d interpret
346. zioni 94 CAPITOLO 3 ANALISI E SPECIFICA DEI REQUISITI Se la classe ha uno o pitt stereotipi v oltre i loro nomi vengono scritti sopra al nome della classe Uno stereotipo pu anche essere rappresentato da un icona nell angolo destro in alto del rettangolo La rappresentazione minima di una classe consiste in un rettangolo con tenente solo il nome ed eventualmente lo stereotipo Se la classe ha uno stereotipo rappresentabile da un icona la rappresentazione minima consiste nell icona e nel nome Attributi Ogni attributo ha un nome che l unica informazione obbligatoria Le altre informazioni associate agli attributi sono tipo pu essere uno dei tipi fondamentali predefiniti dall UML corrispon denti a quelli usati comunemente nei linguaggi di programmazione un tipo definito in un linguaggio di programmazione o una classe definita in UML dallo sviluppatore visibilit privata protetta pubblica package quest ultimo livello di visibi lit significa che l attributo visibile da tutte le classi appartenenti allo stesso package Sez 4 4 1 mbito scope istanza se l attributo appartiene al singolo oggetto sta tico se appartiene alla classe cio condiviso fra tutte le istanze della classe analogamente ai campi statici del C o del Java molteplicit indica se l attributo pu essere replicato cio avere pi valori si pu usare per rappresentare un array valore iniziale v

Download Pdf Manuals

image

Related Search

Related Contents

POS58III Line Thermal Printer User's Manual  ATA-171/172/17 1P (ATA-S1/S2/P) User`s Guide  reglement d`utilisation du centre de remise en forme  Smeg FR165SE Instructions for Installation and Use  Samsung MZ27 User Manual  Powermate CV6548049 Parts list  Clematis® User Manual  Esko Proof Client - Product Documentation  高速カウンタユニット JW-2HC 取扱説明書  

Copyright © All rights reserved.
Failed to retrieve file