Projet et histoire informatique
Concevoir un projet informatique, organiser les fonctions, tester et documenter, puis situer des jalons historiques.
Environ 35 minutes
- Spécifier un service informatique
- Décomposer et valider un projet
- Situer des jalons de l’histoire informatique
Un programme qui s’exécute répond-il forcément au besoin ?
Un projet réunit des choix de représentation, des algorithmes, une organisation collective et des vérifications. Tu vas relier ces étapes à un exemple de catalogue, puis aux grandes idées qui ont rendu les machines programmables et les services en réseau possibles.
Du besoin à une spécification
Un projet informatique commence par un problème à résoudre pour quelqu’un. Programmer immédiatement expose à fabriquer une interface agréable qui ne répond pas au besoin. Imagine un club souhaitant compter ses livres disponibles. Le besoin est de connaître ce qui peut être emprunté ; utiliser un dictionnaire Python est déjà un choix de représentation. Sépare ces deux décisions. Le problème décrit le service attendu, tandis que la solution indique les moyens choisis pour le rendre.
Une spécification précise les entrées, les résultats et les conditions de validité. Pour compter des livres disponibles, on peut représenter leur disponibilité par un tableau de booléens : True signifie disponible, False signifie emprunté. Le résultat attendu est un entier compris entre zéro et la longueur du tableau. Le tableau vide est autorisé et doit donner zéro. Cette convention évite qu’un membre du groupe interprète True comme « déjà emprunté » pendant qu’un autre utilise le sens contraire.
Fixe un périmètre raisonnable. Une première version qui compte correctement les disponibilités vaut mieux qu’une application prétendant gérer les emprunts, les comptes et les notifications sans fonction fiable. Les extensions sont placées dans une liste séparée. Une règle de réussite doit être observable : « le résultat vaut 2 pour [True, False, True] » est contrôlable ; « le logiciel fonctionne bien » ne précise aucun comportement. Les exemples sont des vérifications, pas la totalité de la spécification.
Exemple résolu
Le club fournit [True, False, True, False]. Spécifie la fonction de comptage sans écrire son code.
- Étape 1 : Définir l’entrée comme un tableau contenant seulement des booléens, avec True pour un livre disponible.
- Étape 2 : Définir la sortie comme le nombre d’éléments True ; prévoir également le tableau vide.
- Étape 3 : Compter les disponibilités aux positions 0 et 2 puis formuler le résultat attendu.
Résultat : La fonction renvoie l’entier 2 pour cette entrée, et 0 pour le tableau vide. Elle ne modifie pas les données reçues.
Piège à éviter : Un rang dans le tableau n’est pas un nombre de livres : le dernier indice ne fournit pas le résultat.
À toi d'essayer
Une fonction recherche le premier titre égal à une chaîne donnée. Quelle convention de sortie proposes-tu lorsqu’aucun titre ne correspond ?
Voir la réponseMasquer la réponse
On peut renvoyer None lorsqu’aucun titre ne correspond, et un indice entier dans le cas contraire. La spécification doit annoncer les deux possibilités et préciser que l’on recherche une égalité exacte. Zéro convient pour un titre à la première position et ne peut donc pas signifier à lui seul « absent ».
Décomposer et travailler ensemble
Décompose le projet en fonctions dont les responsabilités sont simples. Une fonction calcule le nombre disponible, une autre prépare le texte affiché et une troisième dialogue avec l’utilisateur. Le calcul doit pouvoir être testé sans cliquer dans l’interface. L’interface entre deux fonctions désigne ici les données échangées et les conventions communes ; ce n’est pas nécessairement un écran. Écrire ces conventions avant de répartir le travail réduit les incompatibilités lors de l’assemblage.
Le calendrier représente un exemple d’organisation, pas une durée imposée à tous les projets NSI. Une personne peut préparer l’interface avec des résultats d’essai pendant qu’une autre écrit les fonctions. Toutes deux doivent avoir convenu du type du résultat. Une tâche dépendante attend les productions nécessaires, même si son responsable est libre. Pour estimer une date de fin, on suit ces dépendances : additionner toutes les durées comme si rien ne pouvait avancer ensemble serait trompeur.
Travaille par versions identifiables. Chaque modification indique ce qui change et pourquoi. Une version de référence permet de revenir à un programme exécutable si une expérimentation échoue. Dans un groupe, annonce qui modifie quel fichier ; compare les différences avant de réunir les contributions. Un conflit n’est pas résolu en gardant au hasard la copie la plus récente. Chaque membre doit comprendre l’ensemble du service et pouvoir expliquer sa contribution, y compris les choix abandonnés et leurs raisons.
Exemple résolu
Dans le calendrier, les fonctions prennent deux heures et l’interface deux heures, après une heure de spécification. L’assemblage prend une heure et les tests deux heures. Deux personnes sont disponibles pour les tâches parallèles. Détermine la durée totale.
- Étape 1 : Terminer la spécification à l’heure 1.
- Étape 2 : Réaliser fonctions et interface entre les heures 1 et 3 ; leurs deux durées ne s’additionnent pas ici.
- Étape 3 : Assembler entre 3 et 4, puis vérifier entre 4 et 6.
Résultat : La durée minimale selon ces seules dépendances et ressources est de six heures. La somme des charges vaut huit heures de travail.
Piège à éviter : Deux tâches exécutées par une seule personne ne deviennent pas parallèles parce qu’elles sont indépendantes.
À toi d'essayer
Une équipe découvre que l’interface transmet une chaîne « oui » alors que le calcul attend un booléen. Propose une correction qui évite de modifier chaque fonction de calcul.
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
Tester, corriger et documenter
Un test compare un résultat obtenu à un résultat attendu défini indépendamment du programme. Commence par un cas ordinaire, puis des cas limites. Pour le comptage, vérifie un tableau vide, un tableau sans disponibilité, un tableau entièrement disponible et un tableau mélangé. Ces cas explorent des comportements différents. Ils ne prouvent pas à eux seuls la correction pour toute entrée imaginable, mais ils révèlent des erreurs fréquentes de condition, d’initialisation ou de parcours.
Une démarche de mise au point consiste à reproduire le défaut avec le plus petit exemple utile, identifier son origine, corriger puis rejouer les anciens tests. Un résultat incorrect peut venir d’une boucle qui ignore le premier élément, d’un compteur jamais initialisé ou d’une condition inversée. Change une cause à la fois. Conserver le cas qui a révélé l’erreur crée un test de non-régression : il détectera une réapparition du défaut dans une version suivante.
Exemple résolu
Un programme de comptage initialise son compteur à 1, puis ajoute 1 pour chaque valeur True. Explique le défaut et corrige l’algorithme.
- Étape 1 : Sur le tableau vide, la boucle ne s’exécute pas : le programme renvoie pourtant 1.
- Étape 2 : Avant le parcours, aucun élément n’a été examiné ; le compteur doit donc commencer à 0.
- Étape 3 : Parcourir chaque booléen et augmenter le compteur uniquement lorsqu’il vaut True ; renvoyer le compteur à la fin.
Résultat : L’initialisation à zéro donne 0 pour [], 0 pour [False] et 2 pour [True, False, True]. Après chaque étape, le compteur correspond au nombre de disponibilités déjà rencontrées.
Piège à éviter : Changer le résultat final en lui retirant 1 masque l’initialisation fautive et rend le raisonnement moins clair.
La documentation répond à plusieurs lecteurs. Pour l’utilisateur, elle explique comment démarrer, quelles entrées sont admises et comment interpréter les résultats. Pour la personne qui maintient le code, elle décrit les fonctions, leurs paramètres, leurs résultats et les limites connues. Un commentaire utile explique une décision ou une contrainte ; il ne répète pas chaque instruction en français. Indique aussi les ressources réutilisées et leurs licences : trouver du code sur le Web n’autorise pas automatiquement toutes les réutilisations.
Une restitution honnête montre ce qui a effectivement été testé. Une démonstration réussie sur un exemple ne permet pas d’annoncer que toutes les données possibles sont traitées. Si le logiciel ne conserve rien après fermeture, précise cette limite. Pour un projet scolaire, utilise des données fictives ou non personnelles lorsque l’identité des personnes n’est pas nécessaire. La qualité d’un projet se voit aussi dans sa lisibilité, sa possibilité de reprise et la précision des limites annoncées.
À toi d'essayer
Un logiciel doit compter les places libres. Tous les tests ne contiennent que True. Propose un programme erroné qui réussirait ces tests, puis un cas qui le mettrait en défaut.
Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.
Relier les projets à l’histoire de l’informatique
En 1936, Alan Turing formalise un modèle de calcul et l’idée d’une machine universelle. Une même machine peut exécuter des traitements différents lorsqu’on lui fournit leurs descriptions. Ce résultat théorique ne décrit pas un ordinateur portable de son époque et ne signifie pas que tous les problèmes sont calculables. Il permet de comprendre pourquoi un appareil programmable peut changer de fonction sans changer chaque composant matériel.
Le 21 juin 1948, le Manchester Baby exécute un programme conservé dans sa mémoire électronique. Les travaux de Frederic Williams, Tom Kilburn et Geoff Tootill constituent un jalon de la réalisation des machines à programme enregistré. Le qualifier précisément évite une affirmation trop générale sur « le premier ordinateur », dont le sens dépend des critères retenus. Théorie du calcul, construction matérielle et diffusion commerciale sont des étapes distinctes.
En 1969, les premiers nœuds d’ARPANET sont reliés aux États-Unis. Ce réseau est un précurseur important de l’Internet actuel, mais Internet ne se confond pas avec un seul réseau historique. En 1989, Tim Berners-Lee propose au CERN un système qui donnera naissance au Web. Le réseau transporte des données ; le Web organise l’accès à des documents liés entre eux. Utiliser le courrier électronique ou transférer un fichier ne signifie donc pas nécessairement consulter une page Web.
Pour un projet, l’histoire sert à identifier des idées plutôt qu’à aligner des noms. Un catalogue consultable à distance combine représentation des données, algorithmes de recherche, langage, machine et communications. Une invention se construit souvent sur plusieurs contributions. Consulte des documents institutionnels et distingue la date d’une proposition, celle d’une démonstration et celle d’une diffusion. Une photographie de machine ne prouve pas, à elle seule, la date à laquelle un programme a fonctionné.
Expliquer ses choix et réviser
Au bac : préparer une argumentation informatique
- Présente le problème, les entrées et le résultat attendu avant le détail des instructions.
- Justifie une décomposition : explique ce que chaque fonction garantit et ce qu’elle reçoit.
- Appuie la validation sur un exemple précis, puis un cas limite avec résultat attendu.
- Expose une limite et une amélioration possible ; distingue l’outil réalisé du service qu’il rend. Cette méthode prépare la poursuite de la spécialité en terminale.
Vocabulaire
- Spécification :
- Description des comportements attendus et des conditions d’utilisation.
- Interface de fonction :
- Convention sur les paramètres, les résultats et les interactions.
- Test de non-régression :
- Cas conservé pour vérifier qu’une modification ne réintroduit pas un défaut.
- Programme enregistré :
- Programme conservé en mémoire et lu par la machine pour être exécuté.
Erreurs fréquentes : commencer par l’écran avant de définir le résultat ; confondre charge totale et durée du projet ; annoncer une validation générale après un seul essai ; dater le Web comme s’il était identique à Internet.
Bilan
| Question | Repère |
|---|---|
| Que réaliser ? | Un besoin traduit en comportements observables. |
| Comment se répartir ? | Des fonctions et des conventions explicites. |
| Comment vérifier ? | Des cas ordinaires, limites et mélangés. |
| Quel recul historique ? | Des concepts distincts, des dates et des acteurs sourcés. |
Pour poursuivre, retrouve l’espace S’entraîner du site à l’adresse /exercices. Reprends d’abord les fonctions, les tableaux et les booléens si tu hésites sur la signification des paramètres ou du résultat.
À retenir
- Une spécification fixe les entrées, les sorties et les conditions de validité.
- Les tâches indépendantes peuvent avancer en parallèle si les ressources le permettent.
- Un ensemble de tests ne constitue pas une preuve universelle de correction.
- Le Web est un service utilisant Internet ; leurs histoires sont distinctes.
Fiche de révision
Avant de coder
préciser le sens de True, le type du résultat et le cas vide.
Pour décomposer
une fonction de calcul séparée de l’interface est testable sans clic.
Pour vérifier
chercher un cas capable de réfuter le programme, comme un tableau mêlant True et False.
Repères
modèle universel en 1936 ; Baby en 1948 ; ARPANET en 1969 ; proposition du Web en 1989.
Pour présenter
problème, choix, preuve, limite. Un résultat isolé n’autorise pas une généralisation.
Et maintenant ?
Tu as lu le cours. L’étape suivante tient en une action.
Relis le coursLes exercices de ce chapitre arrivent bientôt.Prolonge l’expérience !
Continue à explorer ce chapitre à travers de nouvelles activités, des défis et des expériences interactives. Avec Premium, l’apprentissage continue !
Ici, tu débloques aussi 2 corrections détaillées.
Parent ? Suivez les progrès de votre enfant.
