PROVA FINALE (INGEGNERIA DEL SOFTWARE)

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

1 Introduzione ai calcolatori Parte II Software di base.
Gestione della memoria centrale
Modulo 1 – Ambiente di lavoro Windows 7
Commenti C#.
Francesco Cristofoli Microsoft Italia
I linguaggi di programmazione
Installazione di Apache 2, PHP5, MySQL 5
File System Cos’è un File System File e Directory
Massa Laura Mela Enrica
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Connessione con MySQL.
1 Area Comunicazione e Sviluppo Web09/10/2003Sito Web Provincia di Torino Provincia di Torino Area Relazioni e Comunicazione 1 01/12/03 Portale della Provincia.
NESSUS.
RCS - Revision Control System Cosè A cosa serve Funzionalità principali Documentazione e installazione Corso di Programmazione Internet 1.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Programmazione)
Struttura dei sistemi operativi (panoramica)
I Thread.
Laboratorio di Informatica
DHTML: Modello degli Eventi 1. 2 Sommario Introduzione Evento onclick Evento onload Gestione errori con onerror Gestione mouse con levento onmousemove.
Espressioni condizionali
Cos’è un CMS? Content Management System
Analisi di Immagini e Dati Biologici
DBMS ( Database Management System)
Distributed File System Service Dario Agostinone.
Psicologia della Percezione La Percezione del Movimento
Portale Capacità STOGIT
La nuova Intranet della Provincia di Ferrara e l’innovazione dei processi interni Ludovica Baraldi Bologna, 25 maggio 2006.
E. Ferro / CNAF / 14 febbraio /13 GRID.it servizi di infrastruttura Enrico Ferro INFN-LNL.
1° passo Aprire Internet Explorer Andare alla homepage di Ateneo Aprire il menu Ateneo Scorrere fino Servizi di Ateneo Cliccare su Servizi Informatici.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
NotCron tutti gli interventi di manutenzione programmata dello stabilimento for
Progettazione multimediale
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
Title: Presentation title Document name: Powerpoint template.ppt EDR: Document owner: Author Last modified on: 09/06/2009 Auditor Digital.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Configurazione in ambiente Windows Ing. A. Stile – Ing. L. Marchesano – 1/23.
Il Sistema Operativo: il File System
La versione 18 di Aleph500: le novità CATALOGAZIONE Rita Vanin Ottobre 2007.
AICA Corso IT Administrator: modulo 4 AICA © EUCIP IT Administrator Modulo 4 - Uso Esperto della Rete Risoluzione dei Problemi e Analisi del Traffico.
Creare pagine web Xhtlm. Struttura di una pagina.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
File system distribuito transazionale con replicazione
Documentazione Tecnica
Backup and Migrate, Captcha ReCaptcha e Spamicide Docente: Simone Zambenedetti. Moduli per la Sicurezza.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Amministrazione della rete: web server Apache
Tool di sviluppo Source control system Ricci Gian Maria 1° Workshop DotNetMarche.Start () Giovedì 12 ottobre 2006 DotNetMarche.Start.
© 2012 Giorgio Porcu – Aggiornamennto 29/01/2012 C OLLABORAZIONE Excel Avanzato.
Progettare corsi con Moodle
Modulo 6 Test di verifica
a cura di Francesco Lattari
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
Modulo 5 - Database. Contenuti della lezione 5.1.1Concetti Fondamentali 5.1.2Organizzazione di un Database 5.1.3Relazioni 5.2.1Lavorare con i database.
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
Realizzazione Sito Web
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Le basi di dati.
Gestione delle configurazioni Configuration management (CM) E` un processo che controlla le modifiche fatte a un sistema e gestisce le diverse versioni.
Transcript della presentazione:

PROVA FINALE (INGEGNERIA DEL SOFTWARE) 3/25/2017 PROVA FINALE (INGEGNERIA DEL SOFTWARE) Davide Mazza davide.mazza@polimi.it http://home.dei.polimi.it/mazza

Configuration Management

Gestione delle configurazioni Configuration management (CM) E` un processo che controlla le modifiche fatte a un sistema e gestisce le diverse versioni di un prodotto che può evolvere Nel nostro contesto: cambiamenti nel software Software Configuration Management (SCM)

I cambiamenti sono continui, e concorrenti Sviluppo del Software I cambiamenti sono continui, e concorrenti I cambiamenti danno luogo a nuove versioni Con certi livelli di correttezza (es. Varie versioni di un modulo mano a mano che vengono individuati e eliminati i malfunzionamenti Per macchine e sistemi operativi diversi (una versione per Unix e una per Windows) Con diverse funzionalità Per soddisfare diversi requisiti

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 una copia separate dei medesimi A B C D A B C D Prodotto A Prodotto B

Doppia manutenzione: problema Mancato aggiornamento di una (o più) delle copie esistenti Prodotto 1 A B C D1 C1 D Prodotto 2 Modifica di D Modifica di C

Come evitare i disallineamenti? Usare un "magazzino" (repository) condiviso Fare copie locali ogni volta che serve un modulo

Copie locali si usa uno schema di sviluppo a repository condiviso e spazio di lavoro privato 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.

Repository comune e spazio di lavoro privato Check out Check out A B C A A1 C C1 F Commit repository Commit spazio di lavoro privato

Conflitti di aggiornamento In generale, 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. Check out Check out A B C A B B C F conflitto A1 BX BY C1 Commit Commit

Modifiche simultanee di dati condivisi Diventa necessario coordinare la modifica concorrente ai programmi in corso di sviluppo. In presenza di un’unica copia di tutti i moduli, se diversi programmatori accedono alla stessa porzione di codice per apportare le modifiche che ciascuno ritiene necessarie … le modifiche introdotte da uno sviluppatore hanno un impatto su moduli sviluppati da altri … possono gravemente interferire l'una con le altre provocando malfunzionamenti del programma o gravi errori. A B C F usa

Il problema dei conflitti di aggiornamento Con repository condiviso e aree di lavoro private… lo schema check-out, check-in con lock check-out in sola lettura check-out per modifica (lock) commit della nuova versione (revisione) Rami separati di sviluppo

Gestione delle configurazioni Problematiche gestite: Modifiche concorrenti da parte di più utenti Storico delle modifiche Segnalazione e gestione dei conflitti Ripristino delle versioni precedenti Necessario quando gli sviluppatori di un software sono >1 Molto utile anche per il programmatore singolo

Strumenti per la gestione delle configurazioni Principali software per il controllo di versione in ambito open source: CVS: Cuncurrent Versions System (1985) SVN: Subversion (2000) GIT (2005)

Subversion

Subversion Open source Architettura Client/Server Adatto per il controllo versione di codice sorgente (ma anche per progetti diversi come documenti latex, pagine html, …) Nasce come alternativa a CVS (ormai obsoleto) Scaricabile da http://subversion.apache.org/

Miglioramenti rispetto a CVS Versionamento delle directory: CVS considera solo i singoli file SVN controlla anche il contenuto delle directory e quindi spostamento e copia dei file Commits atomici: Commit applicati in blocco Se ci sono conflitti l’intero commit è bloccato in modo da evitare versioni incomplete Versionamento dei metadati: SVN mantiene lo storico delle modifiche alle proprietà di file e cartelle Astrazione dal livello di rete: In questo modo possono essere usati diversi protocolli come per esempio HTTP

Repository Il repository è il deposito dove risiedono i nostri dati. E’ un server su cui gira il pacchetto server di Subversion È possibile creare diversi repository su ogni server Subversion: ciascuno di essi è accessibile con un URL specifico. Ad ogni repository viene associato un numero di revisione: E’ inizialmente zero Viene incrementato ad ogni modifica atomica Identificare univocamente tutte le versioni storiche del sistema

Client Il Client si connette al server per: Scaricare la copia locale iniziale (checkout) Aggiornale la copia locale (update) Mandare le modifiche locali (commit) Software per il client: Quello ufficiale a riga di comando Software con GUI (tipo TortoiseSVN per Windows) Plugin integrati negli IDE più noti come Eclipse e VisualStudio

Checkout Il checkout crea nel client la copia locale di lavoro svn checkout http://www.servensvn.it/progetto/ [directory] Il checkout crea nel client la copia locale di lavoro Nella copia locale vengono copiati tutti i file dello copia più aggiornata presente nel repository Viene indicato il numero di revisione corrente Se il repository è appena stato creato? Il primo checkout creerà un cartella “vuota” Il numero di visione iniziale è zero Vanno aggiunti i file che saranno sotto controllo di versione Copio il file nella cartella Eseguo “svn add nome_file”

Checkout

Commit e Update svn commit [file/directory] Il comando commit esegue un upload sul repository di tutte le modifiche locali: File modificati File/Cartelle aggiunti File/Cartelle rimossi File/Cartelle spostati o rinominati svn update Il comando update aggiorna la copia locale con l’ultima versione presente sul repository E’ buona norma fare un update prima di un commit

Commentare i Commit E’ buona norma aggiungere un commento ad ogni commit In quali casi? Sempre! Guardando lo storico dei commenti è possibile capire quali aspetti del progetto sono in corso si sviluppo Molto utile per coordinare il lavoro di più programmatori Utile anche per trovare bachi relativi ad una certa funzionalità Basta cercare il commit in cui è stata aggiornata quella particolare funzionalità Sempre meglio mettere nello stesso commit modifiche correlate tra loro (implementano o aggiornano una particolare funzionalità)

SVN status,add,commit

Ulteriori comandi SVN tiene traccia dello spostamento, copia rimozione di file e cartelle Solo se vengono usati opportuni comandi svn add svn remove svn copy svn move

Numeri di Revisione Repository vuoto Revisione: 0 Revisione: 1 Test.java Revisione: 2 Test.java Rubrica.java Cerchio.java Revisione: 3 Contatto.java Rubrica.java Cerchio.java

Estrazione di una Revisione svn –r <numero revisione> svn –r HEAD svn –r PREV Perché tornare ad una versione precedente? Abbiamo combinato un casino e vogliamo fare un rollback (merge) Vogliamo capire le differenze che ci sono con una versione precedente Ci serve distribuire una versione precedente Per esempio, se è compatibile con librerie vecchie

Memorizzazione delle versioni Approccio molto efficiente: Duplicazioni virtuali File di testo compressi Le modifiche sono memorizzate per differenze: Quando viene aggiunta una nuova versione del file: Non viene memorizzata una copia della nuova versione Solo le righe aggiunte rispetto alla versione precedente (delta) Comportamento diverso per i file di testo e per i file binari int main (){ int a; int b; int somma; somma=a+b; } int main (){ int a; int b; int somma; somma=a+b; printf(“somma: %d,somma”); }

Quali file mettere sotto il controllo di versione? Ora che sappiamo come funziona svn, quali file mettere sotto controllo di versione? Perché? I file Java, C, C++ ? Gli eseguibili? Le immagini? I file Latex? I PDF?

Memorizzazione nella copia locale Nella copia locale tutte le informazioni sul controllo di versione sono contenute nelle cartelle nascoste “.snv” E’ presente una cartella “.svn” in ogni cartella sotto controllo di versione Se i file di progetto vengono distribuiti è importante cancellare le directory “.svn” commit accidentali da parte di altri utenti! Usare: svn export

Gestione dei Conflitti Paradigma Lock-Modify-Merge: svn lock <target> svn unlock <target> --force (per forzare il comando) Scomodo! Bisogna lockare a priori tutti i file che forse verranno modificati Utile solo come meccanismo di segnalazione tra gli utenti

Gestione dei Conflitti 3/25/2017 In generale si adotta un paradigma più libero: Ognuno utente può modificare qualsiasi file Se dopo un commit c’è un conflitto, lo risolvo! Ipotesi: generalmente i programmatori lavorano a parti diverse del progetto. Il conflitto è un evento raro. Se si lavora a parti diverse dello stesso file (metodi di una Classe) non vi è nessuno conflitto. Subversion segnala un conflitto solo quando le modifiche coinvolgono le stesse righe di codice: Vengono mostrate le due versioni in conflitto Scelgo quale delle due versioni è quella corretta Oppure faccio il merge manuale! Esempio: all’interno di un ciclo for!

Branching Le Branch sono delle copie duplicate di un progetto Per sviluppare versioni differenti di un programma Per creare delle versioni safe da modificare per testare funzionalità che non saranno integrate nel programma finale Quale comando di Svn si può usare per creare una Branch? La creazione di una Branch è un operazione veloce?

Etichette (Tag) Le etichette sono un modo per dare un nome esplicito ad una particolare versione del progetto Per esempio: “Release 1.0” Anche in questo caso si usa un “svn copy” Nessuna duplicazione effettiva di dati (nel repository) Permette di trovare facilmente nel repository i file che fanno parte di una versione taggata E’ un’alternativa più elegante dal segnarsi il numero di revisione di una particolare release

Progetto Prova Finale Per sviluppare il progetto dovrete usare Svn Registratevi ad uno dei tanti servizi svn gratuiti Nelle prossime lezioni di laboratorio vedremo come configurare e usare il plugin eclipse con il vostro repository svn Servizi Svn gratuiti sourceforge.net/ code.google.com http://www.assembla.com/

Riferimenti Guida HTML.it http://programmazione.html.it/guide/leggi/147/guida-subversion/ Guida Ufficiale http://svnbook.red-bean.com/index.en.html Tutorial Introduttivo: http://www.simonecarletti.it/blog/2007/03/strumenti-di-sviluppo-subversion-svn/