Projet SAE 1.01
Implémentation d'un besoin client, c'est à dire créer une application permettant de répondre à un problème/demande d'un client.
Apprentissages critiques
Implémenter des conceptions simples
Traduire une conception en code fonctionnel en respectant les spécifications et les langages cibles (Python, HTML/CSS, SQL…).
Élaborer des conceptions simples
Analyser un besoin client et proposer une architecture ou un algorithme adapté avant toute implémentation.
Faire des essais et évaluer leurs résultats
Tester systématiquement la solution produite et comparer les résultats obtenus aux spécifications initiales.
SAE 1.01 — Implémentation d'un besoin client
$ cat contexte.md
La SAE 1.01 avait pour objectif de répondre à un besoin client concret en développant un jeu de Reversi/Othello en java sans interface graphique. Le projet impliquait d'analyser le cahier des charges, de concevoir une architecture adaptée, puis d'implémenter et de tester une partie de l'application. Il fallait également créer un robot contre qui jouer en mode "solo". Nous avons pris la liberté d'en créer deux de deux difficultés différentes.
Ce travail mobilise directement les trois apprentissages critiques de la compétence Réaliser : de la conception initiale jusqu'à la vérification du bon fonctionnement du jeu en regard des spécifications.
Analyse & Réflexivité
Quelles ont été vos démarches, prises de décisions, degré d'implication et d'autonomie ?
Pour cette SAE, nous avons d'abord essayé de définir un plan de l'ordre des méthodes à développer puis nous avons commencer à coder. Nous avons commencé très en avance mais avons perdu du temps sur des modifications d'architectures car nous avions oubliés certains problèmes lors de la conception. Malgré cela, nous avons terminés en avance sans avoir besoin d'aucune aide externe.
Quelles ressources avez vous choisies et combinées pour réaliser vos tâches et résoudre les problèmes rencontrés dans cette SAE ?
J'ai utilisé quasiment exclusivement la ressource une, le développement en Java en complément de mes connaissances personelles en algorithmique et qualité de développement.
Cette ressource est exactement celle qui falait utiliser, elle traite du développement en Java, des structures de données à utiliser et des tests unitaires. Tout ceci était très utile durant cette SAE.
En quoi cela valide t'il la maîtrise des apprentissages critiques ?
AC11.01 : Implémenter des conceptions simples : le code source livré démontre ma capacité à traduire une spécification en programme fonctionnel. Les choix d'implémentation (algorithmes, structures) sont documentés.
AC11.02 : Élaborer des conceptions simples : l'ordonancement des méthodes effectués (voir le main en début de projet attestent d'une phase de conception menée avant tout codage. J'ai su identifier quels actions développer avant les autres et proposer une architecture cohérente.
AC11.03 – Faire des essais et évaluer leurs résultats : le code comprend quelques méthodes de tests sur les fonctions les plus délicate et montrent le bon fonctionnement de celles ci.
Que ferais-je différemment si je recommençais ?
Je consacrerais davantage de temps à la phase de conception avant d'écrire la première ligne de code. La tentation de "coder directement" est forte mais inefficace : un schéma clair en amont évite une grande partie des erreurs.
J'écrirais également mes tests en parallèle du code, voire avant, plutôt qu'en fin de projet. Cela m'aurait permis de détecter des bugs bien plus tôt et de gagner pas mal de temps précieux lors de la phase de débogage.
Aussi, il aurait pu être pertinent d'utiliser des notions de matrices vu en R1.07 (mathématiques fondamentales) pour améliorer l'exploration des matrices, ce qui aurait pu rendre l'algorithme plus rapide.
Travaux réalisés
Dépôt git de l'application
Le dépôt git contenant le code source de la SAE 1.01 en java.
Voir le dépôt