= Sviluppo software in gruppi di lavoro complessi = == AVVISI == * [https://docs.google.com/spreadsheets/d/e/2PACX-1vSTG7ljWckQrlnABBdh3nfpkn6At6A6dGmaAVPL6m-LwnkOY-79PhpxBGPyMp_JasOFez591YRMhhjR/pubhtml?gid=0&single=true Risultati appello 15/9/2020] La prova orale per gli studenti che hanno superato la prova scritta si terrà venerdì 18 settembre a partire dalle ore 11:15, in modalità telematica. * [https://docs.google.com/spreadsheets/d/e/2PACX-1vSoxkhsatmbA6Zrwb_sjQ3TGdJ1M6ar79QXFLoIrm1SJCadr7G_DWWvPKOLPq7MDKKk_80fGyPwPffR/pubhtml?gid=847146732&single=true Risultati appello 13/7/2020] La prova orale per gli studenti che hanno superato la prova scritta si terrà giovedì 16 luglio a partire dalle ore 9:30, in modalità telematica. * [https://docs.google.com/spreadsheets/d/e/2PACX-1vQMq4Zbj8W56mHUMzDo0tPRT7A0_W3xmtNKWZt1HYc69wS4I4UwC8S8W-Niw3PLXx0JreCkNhV-B-dD/pubhtml?gid=847146732&single=true Risultati appello 26/6/2020] La prova orale si svolgerà a distanza. * [https://docs.google.com/spreadsheets/d/e/2PACX-1vRsmApHZEhQT3g8_N90Nu4KZ-1rFdTfIAHpJqUJbHdYfzECxoeb3qJsPG0eOBzyLyi-vSx_eVJU8u_a/pubhtml?gid=847146732&single=true Risultati appello 17/2/2020] La prova orale per gli studenti che l'hanno esplicitamente richiesta si terrà Sabato 23 maggio a partire dalle ore 9:00. La prova si terrà per via telematica e l'ordine di chiamata verrà estratto a sorte. Se nel frattempo dovessero cambiare le restrizioni all'accesso degli uffici, la prova verrà riprogrammata in presenza. (L'url è stato inviato tramite il sistema di verbalizzazione: se non lo aveste ricevuto contattatemi) * [https://docs.google.com/spreadsheets/d/e/2PACX-1vSX0SahacY3yJPDxGB7u6yWWCPCf-xpj7wvtH8X1oOOb-9mcr2llEGwE5TsNLUWrXbRmycOEkdXC97B/pubhtml?gid=847146732&single=true Risultati appello 3/2/2020] * [https://docs.google.com/spreadsheets/d/e/2PACX-1vQFFXq5ZV8ITpN_dpybm59ivwpx2a12A6Qwq7WJLsSJvgISb9pWLns3XFwkpRsCgbTCU5PKKB1RPQja/pubhtml?gid=847146732&single=true Risultati appello 20/1/2020] == 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/MythicalManMonth 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)] * [https://www.eiffel.com/values/design-by-contract/introduction/ Introduzione a Eiffel] === 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)] * [http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-367.pdf Eiffel] ('''lettura obbligatoria''') del capitolo 7; interessante anche il capitolo 8 === 5 dicembre 2019, Aula G22, 16:30-18:30 (Carlo Bellettini) * [http://homes.di.unimi.it/sisop/lucidi1920/SGCarlo02.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!] * [http://se.ethz.ch/~meyer/publications/computer/contract.pdf B. Meyer, Applying "Design by Contract" (1992)] === 17 dicembre 2019, '''Aula Bertoni, 16:30-18:30''' Massimo Santini * [https://docker-tutorial.netlify.com/ Docker] === 19 dicembre 2019, Aula Delta, 14:30-18:30 Laboratorio * [https://gitlab.com/svigruppo/eiffel-animals Tema Eiffel] * [https://homes.di.unimi.it/bellettini/LabTemaEsameGit.zip Tema Git 1] * [https://homes.di.unimi.it/bellettini/LabTemaEsameGit1.zip Tema Git 2] * [https://gitlab.com/svigruppo/simulazione-esame Esempio di tema d'esame completo] === 9 gennaio 2020, Aula Bertoni, 16:30-18:30 Giorgio Audino (Bloomberg) * [http://homes.di.unimi.it/sisop/lucidi1920/audino.pdf Slide] == 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)