Projet et histoire de l’informatique

Comment transformer une idée en programme vérifiable et partageable ?

Environ 45 minutes

  • Spécifier et organiser un petit projet.
  • Construire des tests et diagnostiquer un défaut.
  • Situer des événements et distinguer matériel, logiciel et réseau.
Sommaire
  1. Du besoin au contrat du programme
  2. Découper et collaborer
  3. Tester, diagnostiquer et présenter
  4. Des repères pour comprendre l’évolution
  5. Relier le projet à une histoire documentée
  6. S’entraîner

Comment transformer une idée en programme vérifiable et partageable ?

Un projet informatique associe une question, des données, des choix d’algorithmes et une organisation collective. Son histoire rappelle que les progrès viennent autant des modèles et des logiciels que du matériel. Nous suivrons un projet de recherche d’itinéraire dans un petit réseau et utiliserons quelques repères datés pour comprendre ces évolutions. Tu dois savoir écrire des fonctions, manipuler un graphe et construire des tests simples.

Du besoin au contrat du programme

Un projet commence par un besoin formulé du point de vue de son utilisateur. « Afficher un itinéraire entre deux salles » est un besoin ; « utiliser une classe Python » est déjà un choix de réalisation. Le premier travail consiste à préciser les entrées, les sorties, les situations d’échec et les limites. Sans ce contrat, deux programmes peuvent produire des réponses différentes tout en prétendant accomplir la même tâche.

Pour notre réseau, les salles sont des sommets et les passages autorisés des arêtes. On suppose que chaque passage compte pour une unité et que le réseau est non orienté. La fonction reçoit le graphe, un départ et une arrivée. Elle renvoie une liste de sommets décrivant un chemin de longueur minimale en nombre de passages, ou une valeur distincte indiquant l’absence de chemin. Un nom de salle inconnu doit être traité selon une règle annoncée.

Exemple résolu

Une équipe propose « calculer le meilleur trajet ». Reformule ce besoin en contrat testable.

  1. Étape 1 : Préciser le critère : meilleur signifie ici le moins de passages, pas la durée minimale ni le confort maximal.
  2. Étape 2 : Décrire les entrées : un graphe fini, deux noms de sommets présents dans ce graphe et des arêtes de même coût.
  3. Étape 3 : Décrire la sortie : une liste allant du départ à l’arrivée, dont chaque paire consécutive est une arête ; si aucune liaison n’existe, renvoyer None.
  4. Étape 4 : Prévoir le cas où départ et arrivée sont identiques : une liste contenant ce seul sommet convient et la longueur du chemin vaut zéro.

Résultat : Le contrat permet de vérifier la validité d’un chemin, sa longueur et les cas sans solution. Deux chemins différents de même longueur minimale peuvent être acceptables.

Piège à éviter : Exiger une seule liste exacte alors que plusieurs chemins minimaux existent peut rejeter une réponse correcte.

Un prototype doit avoir une ambition réalisable. Une recherche sur cinq salles est suffisante pour vérifier les premiers choix. On pourra ensuite agrandir le réseau ou améliorer l’interface. Ajouter simultanément une carte, une connexion utilisateur et une optimisation de durée multiplie les causes d’erreur. Mieux vaut une fonction testée sur un périmètre clair qu’une démonstration séduisante dont le résultat n’est pas vérifiable.

Découper et collaborer

La modularité sépare les responsabilités. Un module décrit les données du réseau ; un autre contient la recherche de chemin ; un autre présente le résultat. La fonction de calcul ne doit pas dépendre de la couleur d’un bouton ou du format d’une fenêtre. Une interface précise entre modules permet de modifier la présentation sans réécrire l’algorithme. Elle indique notamment les paramètres, les types attendus, le retour et les erreurs possibles.

Le chevauchement des tâches suppose une interface convenue ; l’intégration commence avant la dernière séance.

Travailler en parallèle suppose de se mettre d’accord avant d’écrire des fonctions incompatibles. Une personne peut préparer les données, une autre le calcul et une troisième les tests, mais toutes utilisent le même contrat. Des points réguliers servent à vérifier ce qui fonctionne ensemble. Un planning doit réserver du temps pour l’intégration : assembler les parties seulement à la dernière séance transforme des désaccords simples en blocages difficiles à isoler.

Un gestionnaire de versions conserve une histoire des changements. Un commit correspond à un état enregistré avec un message explicatif. Une branche permet de préparer un changement séparément ; une fusion réunit ensuite des travaux. Un dépôt distant facilite le partage, mais il n’est pas identique au logiciel Git lui-même. Un changement présent sur une machine n’est pas automatiquement partagé avec le reste du groupe.

À toi d'essayer

Le module de recherche renvoie une liste de salles, mais l’interface attend une chaîne contenant des noms séparés par des virgules. Quelle correction d’organisation proposer avant de réécrire l’algorithme ?

Voir la réponse

Clarifier le contrat commun. Garder par exemple une liste dans le module de recherche, car elle est facile à tester, puis faire la conversion en texte dans l’interface. Les deux équipes vérifient un petit exemple partagé avant de poursuivre.

Un conflit de fusion signale que deux changements ne peuvent pas être réunis automatiquement. Il ne se résout pas en gardant arbitrairement la version la plus récente. Il faut comprendre les deux intentions, conserver le comportement demandé et relancer les tests. Les commentaires expliquent les raisons des choix difficiles ; ils ne compensent pas des noms de fonctions incohérents ou une documentation qui décrit une ancienne version.

Tester, diagnostiquer et présenter

Exemple résolu

Prépare les tests d’une fonction de recherche d’itinéraire dans un graphe non orienté.

  1. Étape 1 : Tester une chaîne A–B–C : le chemin de A vers C doit comporter deux passages et respecter les arêtes.
  2. Étape 2 : Tester deux sommets isolés : aucune liste de chemin ne doit être inventée entre eux.
  3. Étape 3 : Tester un graphe avec un cycle : la fonction doit terminer sans répéter indéfiniment les mêmes sommets.
  4. Étape 4 : Tester deux itinéraires minimaux : vérifier la longueur et les arêtes plutôt qu’imposer un itinéraire unique.

Résultat : Les tests contrôlent des propriétés du contrat, dont l’absence de solution et la terminaison sur un cycle.

Piège à éviter : Des exemples tous pris sur une même chaîne ne testent ni la déconnexion ni les choix multiples.

Lorsqu’un test échoue, on conserve l’entrée qui reproduit le défaut, on compare le résultat obtenu au résultat attendu et on réduit la situation au plus petit exemple utile. On cherche ensuite la cause : indice hors limite, effet de bord, condition oubliée, structure modifiée pendant un parcours ou mauvaise interprétation du contrat. Corriger le symptôme d’affichage peut laisser intacte une erreur du calcul.

Une assertion exprime une propriété à vérifier. Elle est utile pendant la mise au point, mais n’est pas une preuve générale et ne remplace pas le traitement prévu des erreurs utilisateur. Un test peut aussi être faux : résultat attendu mal calculé, hypothèse absente du contrat ou comparaison trop stricte. Un échec indique un désaccord à analyser, pas automatiquement une faute dans la fonction testée.

À toi d'essayer

Deux appels successifs donnent des résultats différents parce que le premier parcours supprime les voisins de la liste d’adjacence. Quelle propriété ajouter aux tests et quelle cause rechercher ?

Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.

Au bac : présenter une démarche de mise au point

  1. Lire la spécification et nommer le résultat attendu avant toute modification.
  2. Exécuter un cas simple, puis un cas de frontière ou d’erreur. Conserver les données et observer les variables utiles.
  3. Justifier la correction proposée, relancer le cas qui échouait puis les autres tests.
  4. Expliquer ce que les tests couvrent et ce qu’ils ne prouvent pas. Présenter une démonstration courte à partir d’un exemple maîtrisé.

Des repères pour comprendre l’évolution

Les espacements de la frise sont proportionnels au temps ; une idée, une réalisation et une décision de diffusion sont des événements distincts.

En 1936, Alan Turing formalise un modèle abstrait de calcul et la notion de machine universelle. Une machine universelle peut simuler les calculs d’autres machines décrites dans ce modèle. Ce repère concerne les fondements du calcul, pas la construction d’un ordinateur portable avant l’heure. Il aide à comprendre pourquoi des matériels différents peuvent exécuter des programmes répondant aux mêmes principes algorithmiques.

Le 21 juin 1948, le Manchester Baby exécute un programme stocké dans sa mémoire électronique. Les travaux de Frederic Williams et Tom Kilburn sont associés à cette réalisation. Le repère porte sur une démonstration du programme enregistré dans une mémoire électronique accessible, et non sur l’affirmation vague qu’aucune machine à calculer n’existait auparavant. Stocker des instructions comme des données ouvre une grande souplesse de programmation.

En 1989, Tim Berners-Lee propose au CERN un système hypertexte à l’origine du Web. En 1993, le CERN rend le logiciel du Web librement disponible par une décision de mise dans le domaine public. Internet et le Web ne sont pas synonymes : Internet fournit une infrastructure de communication ; le Web organise notamment l’accès à des ressources reliées par des liens. Une application peut utiliser Internet sans être une page Web.

Ces étapes montrent des rôles complémentaires. Le matériel exécute et mémorise ; les modèles théoriques définissent ce qu’est un calcul ; les langages et les logiciels rendent les machines utilisables ; les réseaux permettent leur coopération. Une innovation ne découle donc pas seulement d’un processeur plus rapide. Les interfaces, les formats partagés et les conditions de diffusion influencent aussi les usages.

Exemple résolu

Une présentation affirme : « Tim Berners-Lee a créé Internet en 1989 ». Comment la corriger ?

  1. Étape 1 : Identifier l’objet de l’événement : la proposition faite au CERN concerne le Web, un système hypertexte utilisant une infrastructure de réseau.
  2. Étape 2 : Distinguer les notions : le réseau Internet et les ressources du Web ne correspondent pas à la même couche.
  3. Étape 3 : Associer la date à l’action précise : proposition en 1989 ; décision de diffusion du logiciel du Web par le CERN en 1993.

Résultat : On peut dire que Tim Berners-Lee a proposé le Web au CERN en 1989. Cela ne signifie pas qu’il a créé Internet cette année-là.

Piège à éviter : Réunir invention, premier prototype et diffusion publique sous une seule date efface des étapes différentes.

À toi d'essayer

Un service échange des mesures entre deux ordinateurs connectés à Internet, sans navigateur ni pages hypertextes. L’absence de Web prouve-t-elle l’absence de réseau ?

Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.

Relier le projet à une histoire documentée

Pour documenter un repère historique, note le protagoniste, la date, la nature exacte de l’événement et la source consultée. Une archive contemporaine et une page rétrospective d’institution ne jouent pas le même rôle. Il faut vérifier ce que le document établit réellement et éviter les expressions absolues comme « premier ordinateur » sans préciser le critère. Plusieurs inventions répondent à des critères différents : mécanique, électronique, programmable ou à programme enregistré.

La restitution d’un projet suit une logique comparable : poser une question précise, montrer les choix et fournir une observation vérifiable. Une démonstration réussie n’établit pas que tous les cas fonctionnent. On présente le périmètre testé, les limites et une amélioration justifiée. Le groupe doit aussi expliquer la contribution de chacun et montrer comment les parties ont été réunies, plutôt qu’aligner des captures sans raisonnement.

Attention :

Erreurs fréquentes : confondre besoin et solution ; documenter un comportement différent du code ; attribuer tout progrès au matériel ; confondre Internet et Web ; annoncer une couverture complète à partir d’un seul essai.

Vocabulaire

Spécification :
Description du comportement attendu d’un programme.
Module :
Ensemble de fonctions ou de données organisé autour d’une responsabilité.
Régression :
Défaut introduit dans un comportement qui fonctionnait auparavant.
Programme enregistré :
Instructions conservées en mémoire et traitées par la machine.

Bilan

RepèreSens
ProjetBesoin, contrat, modules, tests et présentation.
HistoireÉvénement précis, protagonistes, date et source.
DémarcheExpliquer ses choix et distinguer résultat observé et généralisation.

S’entraîner

Pour poursuivre ton entraînement, ouvre la rubrique S’entraîner du site, à l’adresse /exercices. Reprends d’abord les questions de cette leçon sans afficher les réponses, puis compare ton raisonnement à la correction.

À retenir

  • Un contrat précise entrées, sorties et cas particuliers.
  • Un test réussi prouve seulement le cas effectivement vérifié.
  • Le programme enregistré permet de conserver les instructions en mémoire.
  • Le Web est un service utilisant Internet, pas un synonyme du réseau.

Fiche de révision

Projet

partir d’un service attendu, définir une interface commune, intégrer tôt et garder les cas qui révèlent un défaut.

Réseau de salles

vérifier les arêtes et la longueur du résultat ; plusieurs chemins minimaux peuvent être corrects.

Repères

1936 pour le modèle de Turing ; 1948 pour le programme électronique enregistré du Manchester Baby ; 1989 pour la proposition du Web ; 1993 pour sa diffusion libre par le CERN.

Présentation

expliquer le besoin, montrer une exécution et annoncer les limites avec leurs raisons.

Et maintenant ?

Tu as lu le cours. L’étape suivante tient en une action.

Relis le coursReprends l’essentiel avant de passer à la suite.

    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.

    Tous les cours de NSI