2024-2025 / PROJ0010-1

Software project engineering and management

Durée

20h Th, 280h Proj.

Nombre de crédits

 Master en sciences informatiques, à finalité spécialisée en "computer systems security"10 crédits 
 Master en sciences informatiques, à finalité spécialisée en "computer systems security" (double diplômation avec HEC)10 crédits 
 Master : ingénieur civil en informatique, à finalité spécialisée en "management"10 crédits 
 Master : ingénieur civil en informatique, à finalité spécialisée en "intelligent systems"10 crédits 
 Master : ingénieur civil en informatique, à finalité spécialisée en "intelligent systems" (double diplômation avec HEC)10 crédits 
 Master en sciences informatiques, à finalité spécialisée en "management"10 crédits 
 Master : ingénieur civil en informatique, à finalité spécialisée en "computer systems security"10 crédits 
 Master : ingénieur civil en informatique, à finalité spécialisée en "computer systems security" (double diplômation avec HEC)10 crédits 
 Master en sciences informatiques, à finalité spécialisée en "intelligent systems"10 crédits 
 Master en sciences informatiques, à finalité spécialisée en "intelligent systems" (double diplômation avec HEC)10 crédits 

Enseignant

Benoît Donnet, Bernard Hauzeur, Guy Leduc, Laurent Mathy

Langue(s) de l'unité d'enseignement

Langue anglaise

Organisation et évaluation

Enseignement durant l'année complète

Horaire

Horaire en ligne

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.
5 compulsory project reviews are organized that close each of the 5 sprints with a formal oral presentation of the project status and a demonstration of the application at stake.

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.
Weekly project meetings are organized project per project to help structuring initial activities, directions, and collaboration. These project meetings form an integral part of the project 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.
These grades that evaluate the achievements (static assessment) are complemented by a letter A B C D indicating our appreciation of your dynamic of progress; in other words, whether we consider the project to be engaged into an upward or downward slope: A - impressive progression (past and ahead), B - fair, C - weak or stagnation ahead, D - poor or degrading.

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)
Teaching assistant (access to the resources of the course):

  • Lev Maclev
Weekly SCRUM facilitators:

  • 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