A1 · Programmation structurée : le coût du changement
Lab
Nécessite Python 3.12 ou plus récent, pydantic.
Décompressez l'archive, puis dans ce dossier :
uv run python verify.py
Évaluation
Évaluation de sortie A1 : coût du changement et masquage de l'information
Durée : 35 minutes pour le rendu, puis un défi oral de 3 à 5 minutes.
Vous pouvez utiliser la documentation et un assistant d'IA. Consignez cette aide dans la note de provenance. Vous restez responsable de chaque affirmation et de chaque commande.
Rendu
Utilisez les deux implémentations dans lab/. Remettez un court rapport de
preuves comprenant les sections suivantes.
1. Jugement sur le coût du changement, A1.1
Choisissez l'implémentation dont le coût est le plus faible pour le changement
de format monétaire attribué par l'enseignant : 25.00 EUR ou le code EUR
suivi de l'espace insécable Unicode U+00A0 puis de 25.00. Avant toute
modification, prédisez les fichiers et
fonctions touchés. Effectuez le changement, lancez la commande de vérification
et comparez le diff observé à votre prédiction.
2. Décomposition par masquage de l'information, A1.2
Décomposez tangled.py autour des décisions cachées, et non des étapes du
traitement. Pour chaque frontière, indiquez :
- la décision qu'elle cache ;
- la plus petite interface publique nécessaire ;
- un changement futur qui devrait rester local.
Joignez le diff obtenu et la sortie de vérification.
3. Diagnostic d'une abstraction qui fuit, A1.3
Repérez une obligation imposée à l'appelant qui révèle une décision d'implémentation. Retracez le coût d'un changement de cette décision, puis proposez la plus petite modification de frontière qui supprime cette obligation. Indiquez un compromis introduit par votre proposition.
Preuves exigées
Incluez les commandes exactes, les sorties pertinentes, une condition de
falsification, une limite et la note de provenance définies dans
docs/assessment-model.md.
Défi oral
L'enseignant annonce un autre changement ou révèle un appelant caché. Mettez à jour la frontière prévue avant de modifier le code, puis expliquez comment la nouvelle preuve affecte votre jugement initial.
Références
- Parnas, On the Criteria To Be Used in Decomposing Systems into Modules, CACM 15(12), 1972
- Ousterhout, A Philosophy of Software Design, ch. 2 and ch. 4, 2018