====== Software Project Management ======
===== News =====
* **February 2nd, 2021**: I would like to inform the students that the tomorrow's written paper will be held in room AA1 at Polo Lodovici.
* **January 2nd, 2021**: The final lesson (so the final sprint meeting) scheduled for the 8th of January is postponed to the 15th of January due to professor unavailability. The lesson of the 7th of January, in which we will recap the course, will take place as scheduled.
* **December 26th, 2020**: The lessons for the theory part ended on the 23rd. Below you can find some samples of exams with commented solutions. Please consider that it is obviously possible that the solutions could include errors.
* **December 20th, 2020**: The lesson of tomorrow December 21st will start at 10 instead 11 due to an engagement I have at noon.
* **November 12th, 2020**: On Friday November 13th we will have the first sprint meeting during which each group is asked to present the result of the first sprint. We will use Webex for the presentations.
* **November 10th, 2020**: Dear students due to another engagement I cannot deliver tomorrow lesson.
* **October 26th, 2020**: It is important that you define groups for collaborating on the project ([[https://docs.google.com/spreadsheets/d/1tOdMoBKzBjcHGQI3ACmrkkcaFbc2TuPfgmFQM2jL9BU/edit?usp=sharing|Groups Formation]]). The project will be assigned on Thursday 29th October.
* **October 22th, 2020**: During the lesson scheduled for tomorrow, students will be asked to conduct some exercises so be ready for that.
* **October 14th, 2020**: We confirm that tomorrow the first lab lesson will be held. Prof. Fornari will be in TeamLab and he will use his room for the streaming.
* **September 30th, 2020**: We inform the students that next lesson will be held Monday October 5th. Due to another engagement at 12pm it will last only 1 hour.
* **September 30th, 2020**: The starting of the Lab hours will be announced soon.
* **September 21st, 2020**: We inform the students that the first lesson will be held on Wednesday, September 30th.
===== General Info =====
**Teachers**:
* [[http://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=626&ru=RD|Andrea Polini]]
* [[https://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=1179&ru=PROFCONTR|Fabrizio Fornari]]
**Course objectives and contents (ESSE3)**
* [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2018*N0*N0*S1*13532*8959&ANNO_ACCADEMICO=2020&mostra_percorsi=S|Software Project Management - A.Y. 2020/2021]]
**Lessons schedule**:
* Monday 11am-1pm (Theory)
* Wednesday 9am-11am (Theory)
* Thursday 9am-11am (Lab)
* Friday 11am - 1pm (Lab)
**Students Office hours**:
* Prof. Polini: Wednesday 5pm-6pm at my office (Polo Lodovici building) - please announce yourself via e-mail in advance
* Prof. Fornari: Immediately after each lesson or by requesting an appointment via e-mail.
----
===== Study material =====
**Course Slides**
* {{ :didattica:magistrale:spm:ay_2021:introduction.pdf |Introduction}}
* {{ :didattica:magistrale:spm:ay_2021:cycle.pdf |Software processes}}
* {{ :didattica:magistrale:spm:ay_2021:intro2agile.pdf |Introduction to agile methodologies and SCRUM}}
* {{ :didattica:magistrale:spm:ay_2021:xp.pdf |eXtreme Programming (XP)}}
* {{ :didattica:magistrale:spm:ay_2021:bruf.pdf |Project planning: the traditional way}}
* {{ :didattica:magistrale:spm:ay_2021:scope.pdf |Scope and Objectives}}
* {{ :didattica:magistrale:spm:ay_2021:activity.pdf |Activities: Identification and Networks}}
* {{ :didattica:magistrale:spm:ay_2021:riskmgmt.pdf |Risk Management}}
* {{ :didattica:magistrale:spm:ay_2021:monitoring.pdf |Monitoring and Control}}
* {{ :didattica:magistrale:spm:ay_2021:costs.pdf |Cost prediction strategies}}
**Laboratory Slides**
* {{ :didattica:magistrale:spm:ay_2021:LabIntroduction.pdf |Laboratory Lesson 1 - Introduction, DevOps, Scrum}}
* {{ :didattica:magistrale:spm:ay_2021:LabGitPart1.pdf |Laboratory Lesson 2 - Version Control, Git}}
* {{ :didattica:magistrale:spm:ay_2021:LabGitPart2.pdf |Laboratory Lesson 3 - Git}}
* {{ :didattica:magistrale:spm:ay_2021:LabMavenPart1.pdf |Laboratory Lesson 4 - Maven, Exercises}}
* {{ :didattica:magistrale:spm:ay_2021:LabProjectPlanningPart1.pdf |Laboratory Lesson 5 - Project & Planning}}
* {{ :didattica:magistrale:spm:ay_2021:LabProjectPlanningPart2.pdf |Laboratory Lesson 6 - Sprint Backlog & BPMN}}
* {{ :didattica:magistrale:spm:ay_2021:LabJUnitTesting.pdf |Laboratory Lesson 7 - Testing with JUnit}}
* {{ :didattica:magistrale:spm:ay_2021:LabProjectTime1.pdf |Laboratory Lesson 8 - Project Time & Team Status Check}}
* {{ :didattica:magistrale:spm:ay_2021:LabAutomatedSelenium.pdf |Laboratory Lesson 9 - Automated Testing & Selenium}}
* {{ :didattica:magistrale:spm:ay_2021:LabSprintMeeting.pdf |Laboratory Lesson 10 - Sprint Meeting}}
* {{ :didattica:magistrale:spm:ay_2021:LabSeleniumHeadlessBrowsers.pdf |Laboratory Lesson 11 - Selenium & Headless Browsers}}
* {{ :didattica:magistrale:spm:ay_2021:LabProjectTime2.pdf |Laboratory Lesson 12 - Project Time & Team Status Check}}
* {{ :didattica:magistrale:spm:ay_2021:LabMavenTomcatJenkins.pdf |Laboratory Lesson 13 - Maven, Tomcat & Jenkins}}
* {{ :didattica:magistrale:spm:ay_2021:LabSprintMeeting2.pdf |Laboratory Lesson 14 - Sprint Meeting}}
* {{ :didattica:magistrale:spm:ay_2021:LabJenkins2.pdf |Laboratory Lesson 15 - Jenkins, Automatic Deploy}}
* {{ :didattica:magistrale:spm:ay_2021:LabProjectTime3.pdf |Laboratory Lesson 16 - Project Time & Team Status Check}}
* {{ :didattica:magistrale:spm:ay_2021:LabJenkins3.pdf |Laboratory Lesson 17 - Jenkins, Environments & Acceptance Tests}}
* {{ :didattica:magistrale:spm:ay_2021:LabSprintMeeting3.pdf |Laboratory Lesson 18 - Sprint Meeting}}
* {{ :didattica:magistrale:spm:ay_2021:LabBuildStatusWikiDockerKubernetesFuture.pdf |Laboratory Lesson 19 - Build Status, Documentation, Containers & Future directions}}
* {{ :didattica:magistrale:spm:ay_2021:LabProjectTime4.pdf |Laboratory Lesson 20 - Project Time & Team Status Check}}
* {{ :didattica:magistrale:spm:ay_2021:LabCourseRecap.pdf |Laboratory Lesson 21 - Course Recap}}
* {{ :didattica:magistrale:spm:ay_2021:LabSprintMeeting4.pdf |Laboratory Lesson 22 - Sprint Meeting}}
**Lessons**
Theory:
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/bdc6d45ce2f24889b30edc27992bf060|September 30th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/4eae947e2cb9405c9cba749550e3c85f|October 5th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/0cbb00bb70664544bd5588e954faf7f3|October 7th, 2020}} - Unfortunately I forgot to record the first part of the lesson
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/97e2c26100c94010af1cdd86e24ab2c9|October 12th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/3888daf66db647efb545ffd10fb4a4ce|October 14th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/76a89433ffbc488093f8f158b24df341|October 19th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/c3b8535d9b9d46d6894599028072f0e4|October 21st, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/b8fa47f016f94d0ca66551d27f0445f9|October 26th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/c889bebb44bc4c229062b98b59a01403|November 4th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/3663c37ebd5d4bc4b71ec97fe744298d|November 9th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/32495420c0a148ffafcd8f5ba51d0b5e|November 16th, 2020}}
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/7e00475aa6654e209234be3fe2d530b4|November 18th, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/5b40c4050fdf428e94216c4d8af493be|November 23rd, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/a8a1ac3d70db4c4c91774058fc4e2bb2|November 25th, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/4092413457b743c2ac620bd903e57e0a|November 30th, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/4258eaea3337472cb3a2c3007154b20d|December 2nd, 2020}}
* December 9th, 2020 - {{https://unicam.webex.com/webappng/sites/unicam/recording/edf5913c732e4792894dd9505d34de75|1st part}}, {{https://unicam.webex.com/webappng/sites/unicam/recording/fe8c743342bf42b2b6e31ee88dda15f1|2nd part}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/e97d1d80f07c4f5d8f40cae094d379f0|December 14th, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/3afae7e021c34daba42307ff1c59b224|December 16th, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/68d422a48598442ab5a9f65337db2aa1|December 21st, 2020}}
* {{https://unicam.webex.com/webappng/sites/unicam/recording/8df6afbd23b544e18f858ab79f73c389|December 23rd, 2020}}
Lab:
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/bd9187ebf692401f822abf2347b69750|October 15th, 2020}} - Laboratory Lesson 1
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/b1a0eb66e5d144288751eceaaa8841fe|October 16th, 2020}} - Laboratory Lesson 2
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/24f4c55cbc3e4743a7a4b0e80f663ee9|October 22th, 2020}} - Laboratory Lesson 3
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/71fff3c9df2f402a9ea976eaf60c9c12|October 23th, 2020}} - Laboratory Lesson 4
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/f50db124f2e64191b819ee656debaa20|October 29th, 2020}} - Laboratory Lesson 5
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/9ecac6e460db4df79ce8b30bce0931fa|October 30th, 2020 }} - Laboratory Lesson 6
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/abc3aeb7a7984952b82456717933e715|November 5th, 2020}} - Laboratory Lesson 7
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/40b434c2dbfb482d8291fb7ac886a2c7|November 6th, 2020}} - Laboratory Lesson 8
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/c7190579acdc4f06a29774dae9f2f29c|November 12th, 2020}} - Laboratory Lesson 9
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/24a0c70729f5403db03341c7f1469f4e|November 13th, 2020}} - Laboratory Lesson 10
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/8f9769c9b89d49e0994a2f12cb14c32f|November 19th, 2020}} - Laboratory Lesson 11
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/6bdbaa3c9576449c94a27a9c0cc12351|November 20th, 2020}} - Laboratory Lesson 12
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/f3ff5a78a95c4b18ae4939f517f908dd/playback|November 26th, 2020}} - Laboratory Lesson 13
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/b0c1610e8a6f4863975cb64917307835/playback|November 27th, 2020}} - Laboratory Lesson 14
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/665df1815fa44eae80a503e722868baa/playback|December 3rd, 2020}} - Laboratory Lesson 15
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/51924df84f6c44db8e49b56a22a0bc56/playback|December 4th, 2020}} - Laboratory Lesson 16
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/4760ee13155940fbbd6efccbc4f99437/playback|December 10th, 2020}} - Laboratory Lesson 17
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/5dee8a3c96504be8841fe5d46ec4d373/playback|December 11th, 2020}} - Laboratory Lesson 18
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/02fcbf1ec28e4fa5b09bb43061f4218a/playback|December 19th, 2020}} - Laboratory Lesson 19
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/68f2d788410e4901a8de0b56584c572d/playback|December 20th, 2020}} - Laboratory Lesson 20
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/92599046d7f942c692f7ca8548154f00/playback|January 7th, 2020}} - Laboratory Lesson 21
* {{https://unicam.webex.com/recordingservice/sites/unicam/recording/07e7cbe09cc54ff0a9343846c79d91c8/playback|January 15th, 2020}} - Laboratory Lesson 22
**Textbooks**
* **[HC]** Bob Hughes, Mike Cotterell - [[http://www.mheducation.co.uk/9780077122799-emea-software-project-management|Software Project Management]], 5th Ed. - McGraw-Hill, 2009
* **[SG]** Andrew Stellman, Jennifer Greene - [[http://shop.oreilly.com/product/0636920025849.do|Learning Agile - Understanding Scrum, XP, Lean and Kanban]] - O'Reilly Media, 2015
**Reference books**
* **[IS]** Ian Sommerville - [[https://www.pearsonhighered.com/program/Sommerville-Software-Engineering-10th-Edition/PGM35255.html|Software Engineering]], 10th Ed. - Pearson Education, 2016
* **[RP]** Roger Pressman, Bruce Maxim - [[http://highered.mheducation.com/sites/0078022126/information_center_view0/index.html|Software Engineering: A Practitioner's Approach]], 8th Ed. - McGraw-Hill, 2015
* **[ML]** Mitch Lacey - [[http://www.pearsoned.co.uk/bookshop/detail.asp?item=100000000579661|The SCRUM Field Guide]], 2nd Ed. - Pearson 2016.
* **[RW]** Robert K. Wysocki - [[https://www.wiley.com/en-it/Effective+Project+Management:+Traditional,+Agile,+Extreme,+7th+Edition-p-9781118729311|Effective Project Management]], 7th Ed. - John Wiley and Sons 2014.
----
===== Exam =====
** Project**
* [[https://docs.google.com/spreadsheets/d/1tOdMoBKzBjcHGQI3ACmrkkcaFbc2TuPfgmFQM2jL9BU/edit?usp=sharing|Groups Formation]] is required to be completed by Thursday, October 29th 2020
* [[https://docs.google.com/spreadsheets/d/16D7shtTEO1BNxeauj_X5H25wYkG8DQQGYHenOeD1KOM/edit#gid=0 | Project Evaluation Schema]]
* [[https://github.com/FabrizioFornari/SPM2020Template | Github Template for Issues (User stories), Milestone (Sprints), Projects (Tasks), JUnit Test Examples, Selenium Test Examples and Headless Browser Examples, Automatic Deployment, Build Status, Wiki]]
**Exam Dates A.Y. 2020/2021**
* Wednesday, February 3rd and 24th, 2021 -- at 9.00am, room AA1
* Monday, June 14th, 2021 -- at 11am, room AB1
* Monday, July 5th, 2021 -- at 11am, room AB1
* Monday, September 6th and 27th, 2021 -- at 11am, room AB1
* Wednesday, February 2nd and 23rd, 2022 -- at 9.00am, room AB1
**Exam rules**:
* students have to manage and develop a software project over the duration of the semester with intermediate checkpoints (meeting with the teacher). The group will have to adopt and simulate the practices typical of a SCRUM team. The group will have to apply the methodologies and the tools explained during lecture hourse.
* The course also foresees a final written exam in which the student will have to answer questions and solve exercises on the different parts of the course. The exam will last around 2 hours. Students willing to improve their final mark can ask for an additional oral examination.
** Exam Results **
* {{ :didattica:magistrale:spm:ay_2021:soluzioni.tar.gz |Exercises with commented solutions}}