Skip to content
Snippets Groups Projects
Commit 4bee1596 authored by Alexandre MEYER's avatar Alexandre MEYER
Browse files

Merge branch 'main' of https://forge.univ-lyon1.fr/Alexandre.Meyer/lifapcd into main

parents aa2e4d45 046e858a
No related branches found
No related tags found
No related merge requests found
Pipeline #144145 passed
......@@ -43,3 +43,16 @@ Le [dépôt git de l'UE](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_Concepti
* Choisir et installer un [éditeur de code](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp/*/blob/master/doc/ide.md)
* Installer les librairies (SDL2 notamment)
* etc.
### Évaluation (les différentes notes)
* Un contrôle mi-parcours de 1h30 (40%) avant la phase de réalisation du projet
* [Sujet 2018](cours/doc/examens/2018_LIFAP4_CC_conception.pdf) / [Sujet QCM 2018](cours/doc/examens/2018_LIFAP4_CC_QCM.pdf)
* [Sujet 2019](cours/doc/examens/2019_LIFAP4_CC_conception.pdf) / [Sujet QCM 2019](cours/doc/examens/2019_LIFAP4_CC_QCM.pdf)
* [Sujet 2020](cours/doc/examens/2020_LIFAP4_CC_conception.pdf) / [Sujet QCM 2020](cours/doc/examens/2020_LIFAP4_CC_QCM.pdf)
* Évaluation du module "Image" (TDs outils) (10%)
* Projet (50%) :
* Cahier des charges (2%)
* Démo mi-*projet (3%),
* 3 notes finales "Technique", "Conception" et "Organisation" (3×15%). Regardez dans la [section Projet](projet) pour le détail des notes.
......@@ -9,14 +9,12 @@ description: "Cours"
#### Cours 0 : Introduction de l'UE
* [Télécharger les transparents du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAPCD_CM0_OrganisationUE.pdf)
* [Visionner la vidéo du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/videosCM.html#CM0)
* [Télécharger les transparents du cours](doc/LIFAPCD_CM0_OrganisationUE.pdf)
#### Cours 1 : Conception et gestion de projet
* [Télécharger les transparents du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAPCD_CM1_ConceptionGestionProjet.pdf)
* [Visionner la vidéo du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/videosCM.html#CM1)
* [Télécharger les transparents du cours](doc/LIFAPCD_CM1_ConceptionGestionProjet.pdf)
* Méthodes de conception
* Cahier des charges
* Diagramme de Gantt
......@@ -24,8 +22,7 @@ description: "Cours"
#### Cours 2 : Programmation modulaire
* [Télécharger les transparents du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAPCD_CM2_ProgrammationModulaire.pdf)
* [Visionner la vidéo du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/videosCM.html#CM2)
* [Télécharger les transparents du cours](doc/LIFAPCD_CM2_ProgrammationModulaire.pdf)
* Diagramme des classes (UML)
* Règle d'intégrité
* Règles de programmation
......@@ -33,10 +30,9 @@ description: "Cours"
#### Cours 3 : Outils pour la programmation
* [Télécharger les transparents du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAPCD_CM3_OutilsProgrammation.pdf)
* [Visionner la vidéo du cours](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/videosCM.html#CM3)
* [Télécharger les transparents du cours](doc/LIFAPCD_CM3_OutilsProgrammation.pdf)
* Compilation de fichier (GCC)
* Compilation de projet (Makefile)
* Compilation de projet (Makefile et CMake)
* Débogage (gdb)
......@@ -69,16 +65,3 @@ description: "Cours"
* Avec SDL2 + 2 mots sur SFML
* Avec "Dear ImGui"
* Avec un framework plus conséquent : Qt
## Évaluation (les différentes notes)
* Un contrôle mi-parcours de 1h30 (40%) avant la phase de réalisation du projet
* [Sujet 2018](doc/examens/2018_LIFAP4_CC_conception.pdf) / [Sujet QCM 2018](doc/examens/2018_LIFAP4_CC_QCM.pdf)
* [Sujet 2019](doc/examens/2019_LIFAP4_CC_conception.pdf) / [Sujet QCM 2019](doc/examens/2019_LIFAP4_CC_QCM.pdf)
* [Sujet 2020](doc/examens/2020_LIFAP4_CC_conception.pdf) / [Sujet QCM 2020](doc/examens/2020_LIFAP4_CC_QCM.pdf)
* Évaluation du module "Image" (TDs outils) (10%)
* Projet (50%) :
* Cahier des charges (2%)
* Démo mi-*projet (3%),
* 3 notes finales "Technique", "Conception" et "Organisation" (3×15%). Regardez dans la [section Projet](../projet/) pour le détail des notes.
\ No newline at end of file
File added
File added
File added
File added
......@@ -15,7 +15,7 @@ Il y a des TD au tableau/stylo et des TD sur machine. Pour la partie marchine, l
<img src="doc/conception.jpg" width="100" class="center">
* [TD Conception : étude de la conception de différentes applications, diagramme des classes](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAP4_TD1_ConceptionLogicielle.pdf)
* [Elements de correction du TD Conception](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAP4_TD1_ConceptionLogicielle_corriges.pdf)
<!--* [Elements de correction du TD Conception](http://liris.cnrs.fr/~npronost/UCBL/LIFAP4/LIFAP4_TD1_ConceptionLogicielle_corriges.pdf)-->
<br>
<br>
......@@ -36,7 +36,7 @@ Choisisser un éditeur de code. Nous vous conseillons de choisir parmi VSCode, V
Voir l'énoncé de la [Partie 1](doc/LIFAPCD_TD-O1_ClasseImage.pdf)
* Ecriture des classes Image et la structure Pixel
* Ecriture de la structure Pixel et de la classe Image
* Organisation des fichiers
* Début des tests de la mémoire avec Valgrind
......@@ -46,8 +46,9 @@ Voir l'énoncé de la [Partie 1](doc/LIFAPCD_TD-O1_ClasseImage.pdf)
#### TD-O2 Gestionnaire de version et documentation
* Passage du code dans un projet git
* Dupliquez le projet suivant.
* Ajoutez-y les membres de votre groupe.
* Se connecter sur la [forge Lyon 1](https://forge.univ-lyon1.fr)
* Dupliquez le projet suivant de module Image
* Ajoutez-y les membres de votre groupe
* [Réalisez le tutorial "Premier pas" se trouvant ici](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp/-/blob/master/doc/git.md)
* Documentation de la classe Image avec les balises doxygen. [Voir les explications générales sur doxygen ici](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp/-/blob/master/doc/doxygen.md).
......@@ -58,8 +59,8 @@ Voir l'énoncé de la [Partie 1](doc/LIFAPCD_TD-O1_ClasseImage.pdf)
Voir l'énoncé de la [Partie 3](doc/LIFAPCD_TD-O3_Debogage.pdf)
* Gestion de mémoire/Optimisation de code sur un exemple "jouet"
* puis débogage des fonctions de sauvegarde et de chargement d'une image
* Gestion de mémoire et optimisation de code sur un exemple "jouet"
* Débogage des fonctions de sauvegarde et de chargement d'une image
* Gdb
* Valgrind
......@@ -72,13 +73,10 @@ Voir l'énoncé de la [Partie 4](doc/LIFAPCD_TD-O4_SDL.pdf)
* Installer les librairies SDL2
* Écrire la classe ImageViewer
* Tester votre module avec le script de notation
* Diagramme des classes
* Faire le diagramme des classes du module Image
<br>
<br>
<br>
## Module Image à rendre
......@@ -93,45 +91,45 @@ Votre archive sera testée avec un script particulier (cf. plus bas). Vous devez
Votre module Image doit respecter les conventions suivantes.
* À faire en groupe de 2 ou 3
* À faire en groupe de 2 ou 3 étudiants
* Votre archive s'appelle `NUMEROETU1_NUMEROETU2_NUMEROETU3.tgz` ou `NUMEROETU1_NUMEROETU2_NUMEROETU3.tar.gz` (pas de zip) où `NUMEROETU1` est le numéro étudiant du premier membre du groupe, etc.
* Tous les fichiers se décompressent dans un répertoire ayant pour nom `NUMEROETU1_NUMEROETU2_NUMEROETU3` (même nom que l'archive)
* Ce répertoire doit contenir les sous*répertoires `bin`, `src`, `obj`, `data` et `doc`
* Le fichier `Makefile` ou le projet `CMake`compile les trois programmes :
* `bin/exemple` exécute le code générant les images en sortie (i.e. exécute mainExemple.cpp)
* `bin/test` appelle `testRegression` (test de non*régression qui vérifie tout) et affiche les tests effectués à l'écran (i.e. exécute mainTest.cpp)
* `bin/affichage` fait l'affichage de l'image dans une fenêtre SDL avec zoom/dézoom (i.e. exécute mainAffichage.cpp)
* `readme.md` est un fichier texte expliquant la librairie. Au minimum comment compiler et exécuter, ce que fait le module et chacun des exécutables, l'organisation de l'archive, etc., et il doit indiquer les noms/prénoms/numéros des étudiants.
* Vos fichiers sources (.h et .cpp) sont placés dans le dossier `src`
* Les images sauvées et lues seront toujours placées dans le dossier `data`
* `doc/image.doxy` est le fichier de configuration de doxygen
* `doc/html/index.html` est la page d'entrée de la documentation (générée avec doxygen)
* Ce répertoire doit contenir les sous-répertoires `bin`, `src`, `obj`, `data` et `doc`
* Le fichier `Makefile` (donné explicitement ou bien générable par le fichier `CMakeLists.txt` de CMake) compile les trois programmes :
* `bin/exemple` exécute le code générant les images en sortie (i.e. exécute mainExemple.cpp)
* `bin/test` appelle `testRegression` (test de non-régression qui vérifie tout) et affiche les tests effectués à l'écran (i.e. exécute mainTest.cpp)
* `bin/affichage` fait l'affichage de l'image dans une fenêtre SDL avec zoom/dézoom (i.e. exécute mainAffichage.cpp)
* `readme.md` est un fichier texte expliquant la librairie. Au minimum comment compiler et exécuter, ce que fait le module et chacun des exécutables, l'organisation de l'archive, etc., et il doit indiquer les noms/prénoms/numéros des étudiants et l'id du projet sur la forge
* Vos fichiers sources (.h et .cpp) sont placés dans le dossier `src`
* Les images sauvées et lues seront toujours placées dans le dossier `data`
* Dans le dossier `doc`, vous aurez
* `doc/image.doxy` est le fichier de configuration de doxygen
* `doc/html/index.html` est la page d'entrée de la documentation (générée avec doxygen)
Ces conventions sont très répandues, et il serait de bonne habitude de les appliquer pour tous vos rendus de TP (info ou autres), ou vos projets futurs publiés sur internet. Vous utiliserez notamment ces conventions pour votre projet.
**Vous n'avez pas le droit de modifier le code fourni.** Les programmes principaux, les noms des fichiers, des classes, des fonctions, des
données, etc., doivent être exactement les mêmes que ceux donnés. Ceci conditionne fortement le succès du script.
**Vous n'avez pas le droit de modifier le code fourni.** Les programmes principaux, les noms des fichiers, des classes et structures, des fonctions, des données, etc., doivent être exactement les mêmes que ceux donnés. Ceci conditionne fortement le succès du script.
### Script de test du module Image
Votre archive du module Image sera testée avec le script présent dans le répertoire `TD_moduleImage` [fourni durant le TD ici](https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp), s'appelant evalModuleImage.py (script Python). Avant de soumettre votre archive, vérifiez que l'exécution du script se déroule sans erreur. Pour vous, il y a 3 manières de lancer le script :
* sous linux avec le code du scirpt en tapant la commande `python3 evalModuleImage.py NUMEROETU1_NUMEROETU2_NUMNUMEROETU3.tgz`;
* sous linux avec le code du script en tapant la commande `python3 evalModuleImage.py NUMEROETU1_NUMEROETU2_NUMNUMEROETU3.tgz`;
* sur la machine de l'université en [suivant les explications ici]https://forge.univ-lyon1.fr/Alexandre.Meyer/L2_ConceptionDevApp);
* en clonant [ce projet](), à chaque commit le script est lancé.
#### Script et notation
* Si le script échoue à une étape, le correcteur n'ira pas plus loin (même si la suite est juste).
* Si le script rapporte des erreurs, corrigez*les avant de soumettre votre archive.
* Le script vous donne également une note **INDICATIVE** à la fin. Pour la note finale, des vérifications supplémentaires (non automatiques) seront effectuées par les enseignants.
* Si le script rapporte des erreurs, corrigez les avant de soumettre votre archive.
* Le script vous donne également une note **INDICATIVE** à la fin. **Pour la note finale, des vérifications supplémentaires (non automatiques) seront effectuées par les enseignants.** La note indicative est donc une note maximale possible.
#### Précision technique sur ce script
* **Ce script doit tourner sous Linux avec python3** (uniquement Linux à cause de valgrind). Si vous l'exécutez sur votre machine personnelle, il faut installer python, doxygen, valgrind, SDL2, etc. Voir les installations à faire sur [la page projet](projet).
* Si votre code nécessite l'utilisation du standard CPP11 ou plus, n'oubliez pas d'ajouter l'option `*std=c++11`` (ou plus) dans les lignes de commande g de votre Makefile.
* Ce script doit tourner sous Linux avec python3 (uniquement Linux à cause de valgrind). Si vous l'exécutez sur votre machine personnelle, il faut installer python, doxygen, valgrind, SDL2, etc. Voir les installations à faire sur [la page projet](projet).
* Si votre code nécessite l'utilisation du standard CPP11 ou plus, n'oubliez pas d'ajouter l'option `-std=c++11` (ou plus) dans les lignes de commande g++ de votre Makefile.
* Sous MacOS, [regardez les consignes ici](doc/tools_MacOS.pdf) (merci Erwan)
* Sous Windows, installer WSL, puis tout se passe comme sous Linux
* Si le message suivant apparaît, vous devez utiliser Python 3 (Python 2 produit ce type d'erreur).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment