13. Implementazione. Un buon codice è ben strutturato

Documenti analoghi
Gestione della Configurazione. Porfirio Tramontana - Ingegneria del Software Gestione della Configurazione 1

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

LINGUAGGI DI ALTO LIVELLO

Il linguaggio di programmazione Python

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Linguaggi di alto livello, compilatori e interpreti

Indice. Prefazione. 3 Oggetti e Java 53

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

la traduzione dei programmi ed introduzione a Java

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Linguaggi di programmazione

Elena Baralis 2007 Politecnico di Torino 1

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Basi di Dati. Concetti e Principi Generali. Maria Mirto

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Fondamenti VBA. Che cos è VBA

Linguaggi di programmazione

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

GESTIONE E CONTROLLO DEI DOCUMENTI E DELLE REGISTRAZIONI

Installazioni preliminari

Configuration Change Release Management

Linguaggi di Programmazione

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Software testing. Lezione 8 Configuration Management Federica Spiga federica_spiga@yahoo.it. A.A Autori: F.Spiga

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Anno Accademico Laboratorio di Tecnologie Web Uso di Firebug

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

:33 Pagina V. Indice. Introduzione

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

I Linguaggi di Programmazione

NetBeans. Dott. Ing. Rossella Rubino A.A. 2007/2008 Laboratorio II CdL: Operatore Informatico Giuridico

Tema Di Progetto 1 Descrizione

Algoritmi e Linguaggi

Sistema operativo & file system 1

Le basi del linguaggio Java

Modelli di programmazione parallela

Linguaggi di programmazione e astrazione

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Ciclo di vita per lo sviluppo di software sicuro

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

LA CODIFICA DELLE INFORMAZIONI

ARCHITETTURA DI UN DBMS

Le direttive del Preprocessore

Traduzione e interpretazione

Linguaggi di Programmazione

COSTRUZIONE DI UN APPLICAZIONE

Corso di Fondamenti di Informatica Linguaggi di Programmazione

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

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Linea di comando. Compilazione. Aprire una shell di DOS tramite:

Tipi di Dati Astratti

Introduzione alla Programmazione. Giselda De Vita

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Prefazione... xi. Da leggere prima di iniziare...xiv. Capitolo 1 Introduzione a JavaScript Sezione A Programmazione, HTML e JavaScript...

CORSO ACCESS PARTE IV

Lezione 16. Il Software di base

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

MyMax PROCEDURA QUALITA Gestione Documenti PQ05a Ed. 0 Rev. 5 Pag. 1 di 8

Strategie di programmazione

Programmazione Orientata agli Oggetti in Linguaggio Java

Metodologie di Programmazione. ovvero, Principi e Tecniche per la costruzione di programmi

Cos è la programmazione?

Modularizzazione del software

FlexCMP La piattaforma accessibile per il web 2.0

Linguaggi, Traduttori e le Basi della Programmazione

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Mettere il database sotto source control. Alessandro Alpi

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

AMBIENTI DI PROGRAMMAZIONE

Sommario PREFAZIONE... XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLE APPLICAZIONI JAVA...

Elementi di informatica

Cenni sul preprocessore e il suo utilizzo

CORSO DI LINGUAGGI DI PROGRAMMAZIONE Progetto A.A. 2008/2009

Oggetto Progetto Responsabile di progetto GESTIONE DELLA MODIFICA

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Capitolo 4: Tabelle. y(x) = x 3 ì 2x. Capitolo 4: Tabelle 67. Nota: le tabelle non sono disponibili nel modo di rappresentazione grafica 3D.

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Versione 3.0. a cura di Claudia Cavicchi Biblioteca Clinica F.Bianchi Università di Bologna

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Sommario. Introduzione... 13

perror: individuare l errore quando una system call restituisce -1

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Strutture dati nel supporto a run time

Bibliografia. INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Definizione di DB e di DBMS

Client - Interfaccia - Implementazione

Il calcolatore. Architettura di un calcolatore (Hardware)

Fondamenti di Programmazione

IDE DevC

Indice. Introduzione PARTE PRIMA PRELUDIO: SERVIZIO CON SORRISO 1

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

INTRODUZIONE A VISUAL STUDIO

I THREAD O PROCESSI LEGGERI

Horizone Server IN00B02WEB. Horizone PDK

Transcript:

13. Implementazione Significa tradurre la progettazione in codice scritto in un particolare linguaggio di programmazione Due scelte fondamentali: scelta del paradigma di programmazione (imperativo, funzionale, logico, ad oggetti, visuale, ecc.) e dello specifico linguaggio di programmazione (C, ML, Prolog, java, VisualBasic, ) scelta dell ambiente di sviluppo : editor, compilatore, debugger, linker, ecc. (es. CodeWarrior, Visual C++,...) 1 Un buon codice è ben strutturato in diversi moduli e interfacce gerarchia dei moduli all interno del singolo modulo: astrazione procedurale all interno della singola procedura: no sequenze di istruzioni condizionali innestate ma comando switch / array di procedure no valori numerici distribuiti nel codice ma uso di costanti no variabili globali nelle procedure ma passaggio esplicito dei parametri 2

Un buon codice è ben leggibile Stile di programmazione conforme alle convenzioni del linguaggio (indentazione) Raggruppare la dichiarazioni nelle interfacce Usare nomi significativi per gli indentificatori (di tipo, di variabile, di costante, di procedura, ecc.) Usare gli stessi criteri con cui si valuta la leggibilità di documento scritto (es. la pagina di una rivista ) 3 Un buon codice è ben documentato Specificare ogni procedura: pre e post-condizioni e modalità di utilizzo Commentare puntualmente i punti critici (algoritmi e strutture dati) Isolare chiaramente le parti obsolete e i comandi per il debugging Usare strumenti per fare della documentazione un deliverable che accompagna il codice (es. javadoc) 4

La gestione delle configurazioni Come tenere tutte le informazioni e i prodotti relativi a un progetto in uno stato consistente? 5 Problemi tipici nel processo di sviluppo Cambiamento, ad esempio per eliminare un anomalia nel codice modificare tutti i conf. item che sono toccati dalla modifica Accesso concorrente allo stesso componente allo stesso tempo Doppia manutenzione Copie locali (ovvero conflitti di aggiornamento) 6

Doppia manutenzione In molte organizzazioni, il codice riutilizzabile viene ricopiato, modificato e/o arricchito in modo da costituire nuovi programmi. due (o più) prodotti condividono alcuni moduli e lo fanno mantenendo copie separate dei medesimi 7 Doppia manutenzione Mancato aggiornamento di una (o più) delle copie esistenti Se la parte di codice ricopiata conteneva degli errori e non si è tenuta traccia di tutte le copie prodotte, che succede quando si manifesta un malfunzionamento in uno specifico programma? dove si trovano tutte le istanze di codice generate a partire dal medesimo sorgente iniziale? 8

Come evitare i disallineamenti? Creare un magazzino (repository) condiviso Fare copie locali ogni volta che serve un modulo Spesso si tende a scomporre il programma in via di sviluppo in moduli indipendenti. Si impone che ciascun programmatore possa operare solo su una copia di un modulo, ricavata da un repository centralizzato e condiviso. Una volta che la correzione è stata completata e certificata, si ricopia nel repository la versione aggiornata del modulo in oggetto. 9 Repository comuni e spazio di lavoro privato 10

Accesso concorrente Nel caso di accesso in parallelo ad uno stesso modulo da parte di diversi programmatori attraverso il meccanismo delle copie locali, può accadere che vengano perse alcune delle modifiche apportate. 11 Baseline La versione ufficiale di un insieme completo di documenti che fanno riferimento a un progetto E` la base dati che contiene tutti i documenti approvati I componenti sono configuration item 12

Baseline (definizioni possibili) Insiemi consistenti di (versioni di) elementi, fotografati in un determinato istante di tempo una specifica o un prodotto che sono stati sottoposti a review formale e hanno ricevuto l approvazione da parte del manager responsabile, che sono utilizzati come base per lo sviluppo successivo, e che possono essere modificati solo utilizzando procedure formalizzate per il controllo dei cambiamenti [IEEE] 13 Baseline 14

Configuration Item E` considerato come elemento unitario ai fini della gestione delle configurazioni modulo sorgente modulo oggetto specifica dei requisiti specifica di progetto piano di test casi di test manuale utente 15 Esempio di Baseline Contiene specifica dei requisiti documenti di progetto codice tests relativi a un certo progetto 16

Un possibile schema Baseline memorizzata in DB Inserimento e modifica richiedono autorizzazione (per sistemi complessi, CCB--Change Control Board) A livello minimale: Lock in modifica di elementi che si stanno cambiando Accesso concorrente in lettura 17 Versione e Revisione di Componenti Tenere le vecchie versioni (potrebbero essere usate da altri) X.1 X.2 X.3 X.4 X.2.1 X.2.2 TOOLS Memorizzazione dei delta Gestione automatica di lock-unlock Numerazione automatica versioni/revisioni X.2.3 18

Memorizzazione delle versioni 19 Paradigma check-in check-out Check-out preleva una copia di una versione di un modulo da un repository e la deposita nello spazio di lavoro criteri per la selezione della versione (ultima, x.y, data, ) possibilità di porre o meno un lock sulla specifica versione (lock = modifica possibile o meno) Modifica della copia nello spazio di lavoro (isolamento) Check-in deposita una nuova versione di un modulo nel repository (se consentito, se presente lock, ) criteri per stabilire identificatore nuova versione (vecchia +1, manualmente, regole, ) Possibile una stretta serializzazione del lavoro (single writer, multiple readers) 20

Essempio check-out / check-in 21 Paradigma lock-modify-unlock Lock esclusivo: al momento del check-out viene posto un lock sul file non è ammesso il check-out di file su cui è già posto un lock solo un programmatore per volta può modificare il file il lock viene automaticamente rilasciato al momento del check-in del file Reserved/unreserved check-out reserved: chi ha operato il check-out del file sarà il primo a poterne fare il check-in unreserved: non c è garanzia che chi ha operato il check-out del file sia il primo a poterne fare il check-in dello stesso file possono esserci contemporaneamente più unreserved check-out ma un solo reserved check-out un reserved check-out può essere cancellato o rilasciato (diventando unreserved) 22

Paradigma copy-modify-merge non esiste il concetto di lock chiunque può effettuare il check-out di un file al momento del check-in, il tool di CM controlla se nel frattempo qualcuno ha già effettuato un check-in dello stesso file se così è, il programmatore che sta tentando il checkin viene obbligato a effettuare prima un merge (che consiste nell aggiornare la propria copia del file importando le modifiche effettuate da terzi) l operazione di merge è supportata dal tool di CM (es. file di testo); se fallisce, il sistema evidenzia i conflitti e invita il programmatore a risolverli manualmente prima del check-in 23 Gli strumenti di supporto MAKE descrive un insieme di componenti e le mutue dipendenze MAKE usa la data dell ultima modifica per capire chi deve essere ricompilato in modo da mantenere tutto consistente SCCS, RCS gestione delle versioni e delle revisioni 24

Sistemi per il controllo delle versioni: SCSS / RCS sccs admin -i -nfile file ci file Checks in the file for the first time, creating the revision history file. sccs get file co file Check out a file for reading. sccs edit file co -l file Check out a file for modification. sccs delta file ci file Check in a file previously locked. what file ident file Print keyword information. sccs prs file rlog file Print a history of the file. sccs sccsdiff -rx -ry file rcsdiff -rx -ry file Compare two revisions. sccs diffs file rcsdiff file Compare current with last revision. sccs edit -ix-y file rcsmerge -rx-y file Merge changes between two versions into file.??? rcs -l file Lock the latest revision.??? rcs -u file Unlock the latest revision. 25 CVS e Peerversy CVS E` uno strumento per la gestione delle configurazioni di tipo free e open source Tutti i file soggetti al CM stanno in un "repository" Possibili multipli checkout Se si si fa checkin dello stesso file modificato da piu` utenti viene fatto (se possibile) un "merge Peerversy Funziona in modalità peer to peer Non esiste un repository condiviso I repository di tutti gli utenti vengono sincronizzati quando possibile 26

Domande ed esercizi In che cosa consiste l attività di gestione delle configurazioni? Che cos è un configuration item? Che cos è un delta? Che vantaggi e svantaggi esistono nella memorizzazione di un delta rispetto alla memorizzazione completa di una versione? 27