= Sviluppo software in gruppi di lavoro complessi = == Gli obiettivi del corso == Il corso (6CFU) presenta gli aspetti più organizzativi dello sviluppo software, ma mira a formare figure professionali che contribuiscono allo sviluppo, più che alla pura gestione dei progetti. Verranno trattati i seguenti argomenti: 1. Cenni ai modelli organizzativi di sviluppo (cattedrale, ''bazaar'', ''kibbutz'', gruppi di lavoro "agili") 1. Il supporto fornito dai ''tool'' di ''configuration management'' e ''versioning'' 1. ''Continuous integration & delivery'' 1. ''!DevOps'' 1. Documentazione e specifica mirata al lavoro collaborativo (''Design By Contract'' e linguaggi per la ''separation of concerns'') === Modalità d'esame === L'esame consiste in una prova in laboratorio e una prova orale. [[PageOutline]] == A.A. 2017/18 == * [https://calendar.google.com/calendar/embed?src=im3m7e84t10gqkl7dmqcjbole4%40group.calendar.google.com&ctz=Europe/Rome Calendario lezioni ed esami] * [https://orari.unimi.it/EasyRoom/Orario/index.php?view=easycourse&include=attivita&anno=2017&attivita=ECF94-103_1&_lang=it Orario ufficiale] Le registrazioni sono fornite '''a uso esclusivo degli studenti del corso''' e possono essere utilizzate solo per lo studio personale. Per accedere occorre usare la username ''studente'', la password è il titolo del primo capitolo di ''"The Mythical Man-Month"''. === 26 settembre 2017, Aula α, 14:30-16:30 ==== Introduzione * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo00.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo00-handout.pdf Slide (versione per la stampa)] * [https://mmonga.typeform.com/to/fwLAiC Questionario] * [https://www.computer.org/web/swebok/v3 Riferimento per la terminologia dell'ingegneria del software] * [https://archive.org/details/mythicalmanmonth00fred F. Brooks, The Mythical Man-Month] ('''lettura obbligatoria''') === 28 settembre 2017, Aula α, 16:30-18:30 ==== Cattedrale, bazaar, kibbutz * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo01.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo01-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo01.webm Registrazione (162MB WebM)] * [http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ E. Raymond, The Cathedral and the Bazaar] ('''lettura obbligatoria''') * [https://homes.di.unimi.it/monga/lib/oss-icse04.pdf M. Monga, From bazaar to kibbutz: how freedom deals with coherence in the Debian project] === 3 ottobre 2017, Aula α, 15:30-17:30 ==== Introduzione ai metodi di sviluppo agili * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo02.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo02-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo02.webm Registrazione (161MB WebM)] * [http://agilemanifesto.org/ Agile manifesto] === 5 ottobre 2017, Aula α, 16:30-18:30 ==== Metodologie agili (Scrum) * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo03.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo03-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo03.webm Registrazione (164MB WebM)] * [http://www.scrumdesk.com/Download/Documents/AgileResources/ScrumGuidelines.pdf Scrum] === 10 ottobre 2017, Aula α, 15:30-17:30 * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo04.webm Registrazione (221MB WebM)] === 12 ottobre 2017, Aula α, 16:30-18:30 ==== Tecniche linguistiche per lo sviluppo collaborativo: asserzioni * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo04.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo04-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo04b.webm Registrazione (152MB WebM)] * [https://doi.org/10.1145/143062.143098 D. Rosenblum, Towards a method of programming with assertions] ('''lettura obbligatoria''') Per accedere alla ''digital library ACM'' da fuori unimi, attivare il [http://www.sba.unimi.it/BibliotecaDigitale/2484.html#c12243 proxy] === 17 ottobre 2017, Aula α, 15:30-17:30 ==== Design by Contract * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo05.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo05-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo05.webm Registrazione (188MB WebM)] * [http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-367.pdf Eiffel: Analysis, Design and Programming Language (ECMA 367)] I capitoli interessanti sono il 7 e l'8 e la lettura del 7 è **obbligatoria**. * IstruzioniEiffel === 19 ottobre 2017, Aula α, 16:30-18:30 ==== Eiffel * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo05b.webm Registrazione (108MB WebM)] * [http://eiffel-guide.com/ Bigino sintassi Eiffel] === 24 ottobre 2017, Aula 309, 15:30-18:30 * [https://gitlab.com/svigruppo/eiffel-bowling Laboratorio Eiffel] === 26 ottobre 2017, Aula α, 16:30-18:30 ==== Aspect-Oriented Programming * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo06.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo06-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo06.webm Registrazione (147MB WebM)] === 31 ottobre 2017, Aula α, 15:30-17:30 ==== Software Configuration Management (prof. Carlo Bellettini) * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo07.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo07-handout.pdf Slide (versione per la stampa)] * (Registrazione non disponibile) === 2 novembre 2017, Aula α, 16:30-18:30 ==== Git 1 (prof. Carlo Bellettini) * [http://homes.di.unimi.it/~sisop/lucidi1718/video/git1.mp4 Registrazione (107MB MP4)] === 7 novembre 2017, Aula α, 15:30-17:30 ==== Git 2 (prof. Carlo Bellettini) * [http://homes.di.unimi.it/~sisop/lucidi1718/video/git2.mp4 Registrazione (110MB MP4)] === 10 novembre 2017, Aula α, 16:30-18:30 ==== Git 3 (prof. Carlo Bellettini) * [http://homes.di.unimi.it/~sisop/lucidi1718/video/git3.mp4 Registrazione (106MB MP4)] === 14 novembre 2017, Aula α, 15:30-17:30 ==== Git 4 (prof. Carlo Bellettini) * [http://homes.di.unimi.it/~sisop/lucidi1718/video/git4.mp4 Registrazione (107MB MP4)] === 21 novembre 2017, Aula 309 , 15:30-18:30 ==== Laboratorio Git * [https://gitlab.com/svigruppo/git-internals Lab Git internals] === 23 novembre 2017, Aula α, 16:30-18:30 ==== Build automation * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo11.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo11-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo11.webm Registrazione (150MB WebM)] === 28 novembre 2017, Aula α, 15:30-17:30 ==== Continuous integration * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo12.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo12-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/svigruppo12.webm Registrazione (226MB WebM)] === 30 novembre 2017, Aula α, 16:30-18:30 ==== Continuous integration & delivery Continuazione lezione precedente * [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo12.pdf Slide] -- [http://homes.di.unimi.it/~sisop/lucidi1718/svigruppo12-handout.pdf Slide (versione per la stampa)] * (Registrazione non disponibile, sorry!) === 5 dicembre 2017, Aula α, 15:30-17:30 ==== Case Study: A Scrum adoption in TXT Retail, an Aptos Company * [http://homes.di.unimi.it/~sisop/lucidi1718/txt1.pdf Slide1] [http://homes.di.unimi.it/~sisop/lucidi1718/txt2.pdf Slide2] === 12 dicembre 2017, Aula β, 15:30-17:30 ==== Docker (prof. Massimo Santini) * [http://broad-foot.surge.sh/#1 Slide] * [https://github.com/mapio/docker-tutorial Tutorial] * [http://homes.di.unimi.it/~sisop/lucidi1718/video/docker1.mp4 Registrazione 1 (75MB MP4)] [http://homes.di.unimi.it/~sisop/lucidi1718/video/docker2.mp4 Registrazione 2 (84MB MP4)] === 19 dicembre 2017, Aula 309, 15:30-18:30 ==== Laboratorio Git * [wiki:Lab02 Laboratorio Git 2] * [https://maryrosecook.com/blog/post/git-from-the-inside-out Git from the inside out] === 9 gennaio 2018, Aula 309, 15:30-18:30 ==== Laboratorio riassuntivo * [git@gitlab.com:svigruppo/simulazione-esame.git Esempio di prova d'esame] == Materiali anni precedenti == * [wiki:WikiStart@73 A.A. 2016/17] * [https://www.reddit.com/r/unimi_svigruppo/wiki/index A.A. 2015/16] (Resp. prof. Carlo Bellettini, occorre iscrizione al gruppo subreddit)