Durée
20h Th, 280h Proj.
Nombre de crédits
Enseignant
Langue(s) de l'unité d'enseignement
Langue anglaise
Organisation et évaluation
Enseignement durant l'année complète
Horaire
Unités d'enseignement prérequises et corequises
Les unités prérequises ou corequises sont présentées au sein de chaque programme
Contenus de l'unité d'enseignement
(ce cours est exclusivement en Anglais)
In this course, teams of 4-6 students will carry out a substantial integrated software project, which builds on the knowledge, know-how and skills acquired during their bachelor studies (programming, software engineering, data bases, operating systems and networks).
Yet, this is not a "coding project", but one that can only succeed through an efficient collaboration between all team members in addition to the proper mastering of a series of tools and techniques as used in leading IT projects (JIRA, SCRUM, GitLab, CI/CD, Kubernetes, devOps/gitOps, knowledge sharing & collaboration tools). The quality of final code is only a part of the grading criteria.
The environment is as close as possible to leading practices in the software industry. Project steps are adjusted given the high volume of practical knowledge to acquire. The project is structured in 5 SCRUM 'sprints' at an average 4 weeks interval during which usable and published product increments are released using 'devOps' techniques.
Seminars are organized to provide fundamental guidance in project design, management, tooling, as well as team coordination, and communication. Students must acquire by themselves much of the additional knowledge required by this project given the enormous diversity of modern software tools, platforms, technologies, methodologies and practices, and availability of suitable information on the Internet.
Acquis d'apprentissage (objectifs d'apprentissage) de l'unité d'enseignement
The project aims at developing the students' ability to carry out a realistic, complex and collaborative software project from an initial and incompletely defined idea throughout to the operational deployment of a working application.
The students will learn and actively practice new disciplines like requirements engineering, architecture, modelling, solution design, source control, test driven development, continuous integration, deployment automation, containerization, project management, team leadership, reporting, oral presentation, and knowledge sharing, thereby improving their autonomy and ability to work efficiently in a team, and their communication and reporting skills.
This course contributes to the learning outcomes I.1, I.2, II.1, II.2, III.1, III.2, III.3, III.4, IV.1, IV.2, IV.3, IV.4, V.1, V.2, VI.1, VI.2, VI.3, VI.4, VII.1, VII.2, VII.3, VII.4, VII.5, VII.6 of the MSc in computer science and engineering.
Savoirs et compétences prérequis
A bachelor degree in computer science or engineering with a major implication in computer science. Incomplete achievement of computer science courses from the bachelor degree may prevent entry into the present course. In concrete terms, to be able to include this course in their program, students in this situation must obtain the authorization of the course's professors, and communicate it to the president of their jury.
Activités d'apprentissage prévues et méthodes d'enseignement
Seminars on:
- modern software architecture and landscapes;
- fundamentals in project management with a focus on Agile methodologies, SCRUM in particular;
- software engineering techniques: requirements engineering, modelling, testing, source code management, CI/CD, microservices;
- (basic) knowledge management;
- team dynamics.
Teams must use:
- XWiki to structure and maintain the whole project documentation from early sketches to final specifications, meeting minutes, progress reports, presentations, and procedures;
- JIRA for the management of the projet's backlog and reporting;
- Gitlab for source code control and integration, with suitable pipelines in place that automate build, test, and deployment steps;
- Docker for building containerized images and local dev support and testing;
- an OpenShift/Kubernetes cluster for application deployment and execution.
Regular work commitment and timely coordinations with team members is essential for a successful outcome. Unplanned, solo, or last-minute behaviours are deeply detrimental to such projects.
Mode d'enseignement (présentiel, à distance, hybride)
Cours donné exclusivement en présentiel
Informations complémentaires:
- Seminars (essential guidance), supporting course's wiki, and countless resources in the Internet where product documentations, techniques and tips shall be learned
- 5 formal project review meetings spread from October to early May, with feedback.
- "Weekly SCRUM" meetings (part of the project execution)
- The project itself is mainly carried out remotely by students (studies, coding, docs, plans, team coordinations, reporting). Teams are free to organize their agenda. An average workload of ~11 hours/week is required over ~22 weeks spread over the 2 quarters: October 1st to early December, then early February to early May
Supports de cours, lectures obligatoires ou recommandées
Plate-forme(s) utilisée(s) pour les supports de cours :
- eCampus
Autre(s) site(s) utilisé(s) pour les supports de cours
- SPEAM wiki (https://jira.montefiore.ulg.ac.be/xwiki/wiki/speam/view/Main)
Informations complémentaires:
Slides used during the seminars and a wiki do provide guidelines, hyperlinks, and tips. Yet such material is far too short to support all activities of the project, nor contain sufficient knowledge required for an efficient execution => these are guidelines, and references to the technologies applicable to their particular project; students are expected to extensively search, collect, and equip themselves with all necessary knowledge and resources for their specific project. Self-learning activites can weigh 15 to 30% of the project execution workload.
In most efficient teams, members do specialize on learning topics and teach each other members in collaboration.
Keywords: DDD, UML, SCRUM, JIRA, Kubernetes, OpenShift, TDD, CI/CD, devOps, gitOps, gitlab, git, OIDC, and according to technology choices: NodeJS, Go-lang, TypeScript, REACT, Svelte, SpringBoot, java, Flutter, MySQL, MongoDB, docker, podman, buildah, Kustomize, ...
Modalités d'évaluation et critères
Travail à rendre - rapport
Evaluation continue
Informations complémentaires:
No exam in June.
Grading is based on the content of the project's wiki (knowledge, docs), of JIRA and Tempo (plans, management), of gitlab (source code, devOps), and OpenShift (deployment) in addition to review presentations and working demonstrations of the application at stake.
Students are expected to document their project, their actual organization and the technical solutions with appropriate justifications about design choices.
Each of the 5 project sprints bears a distinct objective and weight into the final grading. The scale is on 20 points, weighted as follows into the final quote:
- Sprint 0 - 10% - hands on all tools at stake, selection of technologies, drafted project backlog, and demonstration of a mock of the application (modified tuto app)
- Sprint 1 - 15% - requirements engineering, early models, improved backlog, application mock deployed and running in the cluster (menu and navigation)
- Sprint 2 - 25% - careful SCRUM execution (sprint backlogs, retrospectives, velocity) and 50% of the App working, tested, and deployed
- Sprint 3 - 25% - managed SCRUM project delivering 100% of the achievable / planned / predicted functionalities, efficient CI/CD pipelines supporting devOps, quality source code
- Sprint 4 - 25% - a short final run (literally) to prepare the final defense of the project (pitch talk), as well as package the whole for handover to the client. Also a last chance to fix or improve the App and supporting materials.
At Sprint 4 both the grade and this appreciation become global and rate the whole year. The final weighted average is calculated and then can be modified by as much as 2,5 points up or unlimited down according to the overall progress made on all the facets of the project.
Detailed project milestones, requirements, and review criteria for each sprint review are published in the course's wiki.
Every sprint review session consists of an oral presentation with a live demonstration, followed by a question/answer session. All deliverable products of the project (doc, code, procedures, scripts, data, work backlog, reports altogether in Xwiki, JIRA, Tempo, Gitlab, and OpenShift/Kubernetes) shall be up to date at all times for evaluation by the education team, and ultimately reach a final state suitable for a formal handover to the client.
The final grade takes into account the amount and quality of the achievements, the team's efficiency (velocity, organisation, management), the knowledge acquired (hard and soft skills), the quality of the code, docs, reports, and oral presentations, as well as the pertinence of answers to questions during sprint reviews.
Grades are assigned to the whole group given that a project is first and foremost a collective endeavour. However, evidences of a significant difference in the personal involvement of some members of a group may drive the educational team to assign different grades (up or down) to individual members.
Tips: a strong collaboration spirit, helping each other and humbly accepting help is rewarded. Solo behaviour and pride for personal efforts weight negatively.
Resit
In case of issue in May, a resit is possible. Students will have to improve their software based on a requirements sheet. Students will have to submit the updated code and provide a clear description of the improvements and individual contributions in the updated project wiki, JIRA, and gitlab. A repeated final review (with live demo) is organized in August/September.
The grade obtained at the resit session only replaces those of the last 2 review sessions and project deliverables. The first 3 review sessions irrevocably weigh on the final outcome.
Stage(s)
Remarques organisationnelles et modifications principales apportées au cours
Teams comprise 4 to 6 students, formed as much as possible on individual project preferences, while ensuring a diversity of student profiles in each group (i.e. computer scientists and engineers, mixed levels and expertises).
Presence at the seminars and review meetings is compulsory.
The project starts early during the 1st quarter. The final sprint review (final defence and demonstration) takes place on the second week of May. The project execution is suspended from mid-December to January for mid year exams regarding all other courses.
Course materials (archived lectures, course schedule, project list) and administrative communications are hosted on the eCampus web site : PROJ0010-A-a : Software project engineering and management 20h Th, 280h Proj.
Additional resources and facilities notably relating to the execution of software projects are available at the course's dedicated wiki.
Contacts
MS-Teams or Discord group chat and channels will be created per project to communicate with the educational team in addition to e-mail.
Coordinators:
- Benoit Donnet (Benoit.Donnet@uliege.be)
- Bernard Hauzeur (B.Hauzeur@uliege.be)
- Guy Leduc (Guy.Leduc@uliege.be)
- Laurent Mathy (laurent.mathy@uliege.be)
- Lev Maclev
- Clément Smagghe
- Louis Hogge
Association d'un ou plusieurs MOOCs
Aucun MOOC n'est associé à ce cours.
Notes en ligne
Web page
The course web page contains PDF of the seminar slides, projects subjects, Sprints/Reviews details, the Course agenda. In addition, students can interact with the Pedagogical Team through the Discusson Forum.
wiki
additional materials