= 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. 2019/20 == * [https://calendar.google.com/calendar/embed?src=im3m7e84t10gqkl7dmqcjbole4%40group.calendar.google.com&ctz=Europe/Rome Calendario lezioni ed esami] * [http://easystaff.divsi.unimi.it/PortaleStudenti/index.php?view=easycourse&include=attivita&faculty_group=0&_lang=it&empty_box=0&col_cells=0&anno=2019&attivita=ECF94-103_1 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"''. === 1. 1 ottobre 2019, Aula 211, 14:30-16:30 (Mattia Monga, Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo00.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo00-handout.pdf Slide (versione per la stampa)] * [https://mmonga.typeform.com/to/ZaujMq Questionario] === 2. 3 ottobre 2019, Aula G22, 16:30-18:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo01.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo01-handout.pdf Slide (versione per la stampa)] * [https://archive.org/details/mythicalmanmonth00fred The Mythical Man Month] (**lettura obbligatoria**) * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo01.webm Registrazione (83MB WebM)] === 3. 8 ottobre 2019, Aula 301, 14:30-16:30 (Mattia Monga) * [http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/ E. Raymond, The Cathedral and the Bazaar] ('''lettura obbligatoria''') * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo02.webm Registrazione (198MB WebM)] * [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] === 4. 10 ottobre 2019, Aula G22, 16:30-18:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo02.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo02-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo03.webm Registrazione (187MB WebM)] * [http://agilemanifesto.org/ Agile Manifesto] ('''lettura obbligatoria''') === 5. 15 ottobre 2019, Aula 301, 14:30-16:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo04.webm Registrazione (55MB WebM)] (A causa di un disguido manca l'ultima mezz'ora) === 6. 17 ottobre 2019, Aula G22, 16:30-18:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo05.webm Registrazione (72MB WebM)] * [http://www.scrumdesk.com/Download/Documents/AgileResources/ScrumGuidelines.pdf Scrum Guidelines] ('''lettura obbligatoria''') === 7. 22 ottobre 2019, Aula 301, 14:30-16:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo06.webm Registrazione (87MB WebM)] === 8. 24 ottobre 2019, Aula G22, 16:30-18:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1920/SGCarlo1.pdf Slide] * [https://www.martinfowler.com/articles/continuousIntegration.html M. Fowler, Continuous Integration] ('''lettura obbligatoria''') === 9. 29 ottobre 2019, Aula 301, 14:30-16:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1819/video/svigruppo02.mp4 Registrazione Git1 2018/19] === 10. 31 ottobre 2019, Aula G22, 16:30-18:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1819/video/svigruppo03.mp4 Registrazione Git2 2018/19] === 11. 5 novembre 2019, Aula 301, 14:30-16:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1819/video/svigruppo04.mp4 Registrazione Git3 2018/19] === 12. 7 novembre 2019, Aula G22, 16:30-18:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1819/video/svigruppo05.mp4 Registrazione Git4 2018/19] === 13. 12 novembre 2019, Aula 301, 14:30-16:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1819/video/svigruppo06.mp4 Registrazione Git5 2018/19] === 14. 14 novembre 2019, Aula G22, 16:30-18:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo03.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo03-handout.pdf Slide (versione per la stampa)] === 15. 19 novembre 2019, Laboratorio 309, 14:30-18:30 * [http://homes.di.unimi.it/~sisop/lucidi1819/svigruppo-lab02.pdf Esercizi Git laboratorio] * [http://homes.di.unimi.it/sisop/lucidi1920/gitesame.zip Tema d'esame Git] === 16. 21 novembre 2019, Aula G22, 16:30-18:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo16.webm Registrazione (124MB WebM)] === 17. 26 novembre 2019, Aula 301, 14:30-16:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo04.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo04-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo17.webm Registrazione (83MB 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 proxy [https://users.unimi.it/banchedati/proxybib.pac proxybib.pac] === 18. 28 novembre 2019, Aula G22, 16:30-18:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo05.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo05-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo18.webm Registrazione (82MB WebM)] * [http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-367.pdf Eiffel] ('''lettura obbligatoria''') del capitolo 7; interessante anche il capitolo 8 === 19. 3 dicembre 2019, Aula 301, 14:30-16:30 (Mattia Monga) * [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo06.pdf Slide] -- [http://homes.di.unimi.it/sisop/lucidi1920/svigruppo06-handout.pdf Slide (versione per la stampa)] * [http://homes.di.unimi.it/sisop/lucidi1920/video/svigruppo19.webm Registrazione (83MB WebM)] === 5 dicembre 2019, Aula G22, 16:30-18:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1920/SGCarlo2.pdf Slide] === 12 dicembre 2019, Aula Delta, 14:30-18:30 Laboratorio * [https://gitlab.com/svigruppo/eiffel-bowling Esercitazione Eiffel] [https://gitlab.com/svigruppo/eiffel-bowling/tree/soluzione1920 Soluzione commentata] (La soluzione è nella ''branch'' `soluzione1920`) * [https://bertrandmeyer.com/2010/01/26/more-expressive-loops-for-eiffel/ I loop `across` sono successivi all'approvazione dello standard, ma molto comodi!] === 17 dicembre 2019, '''Aula Bertoni, 16:30-18:30''' Massimo Santini === 19 dicembre 2019, Aula Delta, 14:30-18:30 Laboratorio === 9 gennaio 2020, Aula G22, 16:30-18:30 Giorgio Audino (Bloomberg) == Materiali anni precedenti == * [wiki:WikiStart@193 A.A. 2018/19] * [wiki:WikiStart@132 A.A. 2017/18] * [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)