Un linguaggio per la rappresentazione formale di vincoli su scenari d'uso

Documenti analoghi
Ingegneria del Software

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Corso di Ingegneria del Software. Modelli di produzione del software

Esami. Ingegneria del Software. Obiettivi del corso. Sir Tony Hoare s suggestion. There are two ways of constructing a software design.

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Introduzione. Contenuti da Cap. 1 Ghezzi et al.

La Raccolta dei Requisiti. Corso di Ingegneria del Software Anno Accademico 2012/2013

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

Introduzione all informatica

Ingegneria del Software 2010

Automatic generation of test cases

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Informatica di base 6/ed

Tecnico della progettazione implementazione e manutenzione di sistemi di gestione di database

Lezione 1 Ingegneria del Software II- Introduzione e Motivazione. Ingegneria del Software 2 Introduzione e Motivazioni 1

Capitolo 7. Ingegneria del Software. Mauro Giacomini Pearson Addison-Wesley. All rights reserved

Calcolo numerico e programmazione Programmazione

Lo sviluppo del progetto informatico

Progetto software 2007/2008 Lezione I. Dott.ssa Marianna Nicolosi Asmundo

Alcuni diagrammi. OCL (Object Constraint Language)

A. Ferrari sistemi informativi e sistemi informatici

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

IL PROCESSO di PROGETTAZIONE

Materiale didattico. Sommario

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Ingegneria del Software 2014

MATRICE TUNING competenze versus unità didattiche, Corso di Laurea in Informatica (classe L-31), Università degli Studi di Cagliari

Tesi di Laurea Triennale in Ingegneria Informatica REALIZZAZIONE DI UN APPLICATIVO PER LA GESTIONE DI FOGLI DI LAVORO INTEGRATO IN OUTLOOK 2010

Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Verifica e Validazione del Software

MODELLO e RAPPRESENTAZIONE

UML Unified Modeling Language

PROGETTISTA MECCANICO

UML2. Concetti base. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L31 Università di Camerino

Il Software. E il software che implementa le funzionalità di un sistema di elaborazione Due categorie fondamentali di Software (SW)

Use Case Diagram. Catia Trubiani. Laboratorio di Ingegneria del Software a.a

Introduzione al corso

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Sistemi di elaborazione delle informazioni

Corso di Ingegneria del Software. Modelli di produzione del software

Ingegneria del Software

Corso di Linguaggi di Programmazione + Laboratorio

INFORMATICA TECNOLOGIE DELLA COMUNICAZIONE SAPERI MINIMI DISCIPLINARI

Unità di apprendimento 6. Dal problema al programma

Informatica (C.I. Metodologia Scientifica e Linguistica)

Fasi di creazione di un programma

Presentazione del Corso Informazioni utili

Modulo 1: Le I.C.T. UD 1.1b: Informatica, Sistemi Informativi, Software e Dati

Progetto sito web Gigli Elisa

Unified Modeling Language (UML)

Ingegneria del Software L-A

Metodi formali per la verifica dell affidabilità di sistemi: materiale didattico

Introduzione. A Tecnologie 1

Relazioni. Andrea Polini. Laboratorio di Ingegneria del Software Corso di Laurea in Informatica L-31 Università di Camerino

Progettazione curricolo verticale percorso formativo per Unità di Apprendimento (UDA)

Le basi di dati. Definizione 1. Lezione 2. Bisogna garantire. Definizione 2 DBMS. Differenza

Introduzione. Fondamenti di Informatica 1. Dispensa 1 Gennaio Contenuti. Alfonso Miola. K Corso di Fondamenti di Informatica 1

Sistemi di Elaborazione delle Informazioni

Ingegneria del Software

Il sistema informativo aziendale

Il disegno nel ciclo di vita del prodotto

Operations Management Team

Operations Management Team

LE BASI DI DATI. Prima parte Premesse introduttive I MODELLI DEI DATI

indirizzo: Servizi Commerciali

Analisi e specifica dei requisiti

Indirizzo Liceo Scientifico opzione Scienze Applicate Classe 1 a sez. F Anno Scolastico

Che cos e l Informatica

preparazione pane frattau per 4 persone

Syllabus. Versione 1.0 novembre 2017 (Rev.2, gennaio 2018) Copyright AICA Associazione Italiana per l Informatica ed il Calcolo Automatico

Processi (di sviluppo del) software. Fase di Analisi dei Requisiti. Esempi di Feature e Requisiti. Progettazione ed implementazione

Concetti Introduttivi. Il Computer

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

Algoritmo. Calcolabilità

Università di Bergamo Facoltà di Ingegneria INGEGNERIA DEL SOFTWARE. Paolo Salvaneschi A4_3 V2.1. Progettazione. Metodi e Linguaggi

all ingegneria del software Introduzione all'ingegneria del software

2. Modellazione dei casi d uso

Corso di Ingegneria del Software. Modelli di produzione del software

Simulazione Parallela e Distribuita

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Piano di lavoro classe prima

Ciclo di vita di un sistema informativo

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

UML I diagrammi implementativi

Corso di Laurea Ingegneria Civile

Ore settimanali di lezione: 3 h di cui 2 in compresenza con l insegnante di Lab. di Informatica prof.ssa E.De Gasperi

Basi di Dati. Progettazione di una Base di Dati. Progettazione di una Base di Dati

Programma corso di Informatica Prof.ssa Enrichetta Gentile

UML come abbozzo. Introduzione all UML. UML come linguaggio x programmi. UML come progetto dettagliato

3. Ciclo di Vita e Processi di Sviluppo

Corso di Informatica di Base

2. Finalità generali previste dalle indicazioni nazionali

REPERTORIO DELLE QUALIFICAZIONI PROFESSIONALI DELLA REGIONE CAMPANIA

23/02/2011. I/le corsisti/e dovranno dimostrare di conoscere le varie parti di un computer, saper utilizzare le normali funzioni del

Introduzione al Calcolo Scientifico

CALENDARIO DIDATTICO MODALITÀ ONLINE

Evoluzione dei metodi dell usabilità Requisiti utente

Introduzione alla programmazione Object Oriented. Luca Lista

Transcript:

Un linguaggio per la rappresentazione formale di vincoli su scenari d'uso Relatore: Benedetto Intrigila Realizzato da: Postoronca Maxim Anno accademico: 2009/2010

Introduzione Introduzione Lo scopo della mia tesi è di aggiungere alle metodologie di ingegneria del software il supporto per i vincoli OCL (Object Constraint Language) (1). L ingegneria del software ha diversi processi di sviluppo e quasi tutti utilizzano i vincoli OCL. Gli strumenti attuali sul mercato cercano di aiutare i sviluppatori fornendo un ambiente integrato con tutto quello che li può servire per sviluppare. Il grosso del lavoro viene comunque fatto manualmente ed è prono ad errori. Grazie alla metodologia SMDP si cerca di automatizzare molti passi dei processi di sviluppo, ma si deve tenere in mente che sviluppare un software è un processo creativo e artigianale, per questo non si potrà mai arrivare ad una completa automatizzazione. Una volta ottenuti i vincoli OCL si può: generare in modo automatico il codice sorgente. generare in modo automatico i test case. trasformali in vincoli testuali che possono essere capiti anche da qualcuno senza conoscenze informatiche(per esempio: il manager). verificare col cliente che è effettivamente ciò che vuole. Ho sviluppato un modello per salvare i vari vincoli OCL e che può essere implementato, per esempio, da uno schema XML, cosi come il linguaggio SDML implementa il processo SMDP. Se si vorrà aggiungere questa funzionalità anche al linguaggio SDML si potranno riutilizzare molte strutture già presenti. Estrarre i vincoli OCL da un linguaggio naturale non è un compito facile. Il linguaggio naturale è molto vago e la stessa cosa può essere espressa in più modi. Purtroppo l equivalenza di due o più vincoli OCL è un problema che al momento è risolvibile soltanto dalla mente umana, cosi come l interpretazione perfetta di un testo scritto. Nonostante questo, date delle frasi scritte in un modo semplice, SMDP potrebbe estrarre i vincoli OCL. Anche se il sistema non identificherebbe tutti i vincoli, fa risparmiare comunque molto tempo agli sviluppatori e anche al cliente. 4

Capitolo 1 - Ingegneria del software 1.1 Cosa è il software? Il software è un programma eseguibile su un computer comprendente la documentazione relativa e i dati di configurazione per una corretta esecuzione del programma stesso. Il sistema software consiste di una serie di: programmi, file di configurazione, documentazione di sistema, documentazione utente e siti web. Ci sono 2 tipi di software: Prodotti generici - sviluppati per essere utili ad un insieme ampio di persone (elaboratori di testo, database, etc...), vengono venduti a qualsiasi cliente in grado di comprarli. Prodotti personalizzati - vengono sviluppati in base ai requisiti di un cliente. Spesso molte aziende cominciano con un prodotto generico per poi personalizzarlo ai loro requisiti. La differenza sostanziale tra i due tipi è che nella creazione di software generico sono gli sviluppatori stessi a controllare le specifiche, mentre nella creazione di software personalizzato è l'acquirente che controlla le specifiche. La linea di confine, comunque, si assottiglia sempre di più. 1.2 Cos è l ingegneria del software? L ingegneria del software (2) è la disciplina tecnologica e manageriale che riguarda la produzione sistematica e la manutenzione dei prodotti software entro tempi e costi previsti (3). Questa disciplina prende in considerazione non soltanto il processo tecnico dello sviluppo del software ma anche le attività come il management del progetto e lo sviluppo di strumenti, metodi e teorie per facilitare lo sviluppo. L ingegneria del software si occupa della realizzazione di sistemi software di dimensioni e complessità tali da richiedere nella loro realizzazione, l impiego di più gruppi di sviluppatori. Nella definizione ci sono due concetti chiave: disciplina ingegneristica: gli ingegneri cercano di trovare soluzioni ai problemi, anche quando non esistono teorie applicabili e metodi adatti. tutti gli aspetti della produzione del software: la produzione di software si articola in varie fasi di sviluppo. Gli ingegneri del software possono privilegiare approcci più creativi e meno formali, perché sono più efficaci. I problemi attuali dell ingegneria del software sono: eterogeneità: sviluppare un software affidabile che può coesistere con i vecchi sistemi legacy(spesso non sostituibili). fiducia: riuscire a produrre certificati che dimostrino agli utenti l'affidabilità del software. tempi di consegna: ridurre i tempi per produrre progetti complessi e portarli sul mercato senza comprometterne la qualità(figura 1 Dimensioni di progetti software). 5

Figura 1 Dimensioni di progetti software 1.3 Che differenza c'è tra ingegneria del software e informatica? L'informatica si occupa di teorie e metodi che sono alla base dei sistemi software e di quelli informatici, mentre l'ingegneria del software si occupa dei problemi pratici relativi allo sviluppo del software e alla sua produzione. Non è sempre possibile applicare le teorie dell informatica ai problemi reali e complessi. 1.4 Che differenza c'è tra ingegneria del software e ingegneria dei sistemi? L'ingegneria dei sistemi si occupa di tutti gli aspetti legati allo sviluppo e all'evoluzione di sistemi complessi. Questi sistemi includono sviluppo hardware, progettazione delle politiche dei processi e della messa in opera del sistema. L'ingegneria del software fa parte di questo processo. 1.5 Responsabilità etica e professionale dell'informatico Come tutte le discipline ingegneristiche, anche l'ingegneria del software viene svolta in un ambito legale e sociale che limita la libertà degli ingegneri. Il loro lavoro comporta responsabilità, portandoli ad agire in maniera eticamente e moralmente responsabile se vogliono essere rispettati come professionisti. Ci sono delle nozioni di responsabilità professionale da rispettare: 6

riservatezza: occorre rispettare la riservatezza dei propri datori di lavoro e dei propri clienti. competenza: bisogna non mentire sul proprio livello di competenza. diritti di proprietà intellettuale: occorre rispettare i copyright sul software prodotto da terze persone. uso improprio del computer: non bisogna fare errato uso dei sistemi informatici. Organizzazioni come ACM, IEEE, BCS pubblicano un codice di condotta(codice etico), sottoscritto dagli associati all'atto dell'iscrizione. 1.6 Che cos è un processo software? Un processo software è un insieme di attività che producono un software complesso, il quale non può essere realizzato senza stabilire delle precise metodologie di processo lavorativo. Anche se i processi software sono molto diversi tra loro, esistono delle fasi nel ciclo di vita del software che sono comuni a tutti: specifica: il cliente e gli ingegneri definiscono cosa sviluppare e con quali vincoli. sviluppo: progettazione e programmazione. convalida: si verifica che il software corrisponde alle richieste del cliente. evoluzione: manutenzione del software e modifiche per soddisfare i cambiamenti dei requisiti del cliente e del mercato. 1.7 Che cosa è un modello di processo software? I modelli rappresentano i vari approcci (punti di vista) al ciclo di vita del software, ovvero sono una visione astratta del ciclo stesso. Alcuni esempi di processi software sono: Workflow : rappresenta le attività che vengono svolte insieme ai dati in input, output e le dipendenze. Dataflow: mostra le azioni eseguite da persone o da computer per elaborare i dati. Role-action: è il modello più vicino alla modellazione a oggetti che rappresenta i ruoli e le responsabilità delle persone coinvolte nel processo di sviluppo. I modelli di processi variano a seconda del software da scrivere e a seconda del contesto. Se il contesto è stereotipato si usa un metodo semplice, se è un contesto nuovo si deve combinare uno o più modelli. La gran parte dei modelli si basano su uno dei tre modelli generali: 1. Waterfall: conosciuto anche come modello a cascata. Nel Waterfall(Figura 2 Modello Waterfall) le attività come le specifiche, il design, l implementazione, il testing, ecc. vengono viste come processi separati. L idea è, descrivere con chiarezza l output di ogni fase che è l input di quella successiva. Dopo che ogni fase è stata definita e approvata si passa alla prossima senza poter tornare indietro. Il modello identifica le fasi e le attività da svolgere durante il progetto del software. Trae ispirazione dalle attività ingegneristiche tradizionali. 7