Mise en Projet
À l'issue de ce chapitre, l'apprenant·e sera sensibilisé·e à l'utilisation de la démarche descendante et structurée. Les exercices devraient lui permettre d'appliquer avec succès cette méthode quand il/elle sera confronté·e à des programmes d'une grande complexité.
Objectif
Le but est de préparer l'apprenant·e à l'analyse et à la réalisation de gros programmes informatiques par "découpage" :
- En découpant la tâche en différentes activités progressives permettant d'atteindre l'objectif avec méthode;
- En décomposant les processus en un certain nombre de modules ce qui permettra de garder une vision globale du processus.
Ceci sera illustré par quelques exemples expliqués en détail au point suivant de ce chapitre.
Présentation
Le chemin que vous avez parcouru est conséquent... À partir de zéro, vous avez appris l'algorithmique, la gestion des variables, les tours de main et vous avez réalisé de nombreux exercices courts en pseudo-code et en Python. Cette "gymnastique intellectuelle" vous a permis d'acquérir une excellente habileté à programmer/coder.
Toutefois, il vous reste une étape à franchir, celle d'acquérir la méthode pour la réalisation de programmes complexes comme l'informatisation d'une comptabilité, d'un stock, d'un fichier clients ou produits... Cela va vous demander une analyse beaucoup plus approfondie que pour les programmes déjà réalisés.
Les étapes du développement
Un canevas qui a fait ses preuves est illustré ci-dessous. Il est extrait de l'excellent ouvrage "Images pour programmer-Volume I" p.70 du Professeur Charles Duchâteau (CeFIS-UNamur Belgique). Nous allons passer en revue ses différentes étapes.
- Quoi faire ?
- La tâche que l'on vous confiera sera toujours floue, mal définie;
- Votre première activité sera de décortiquer ce qu'on vous demande, de soulever de nombreuses questions et d'en avoir les réponses;
- Exemple : informatiser un fichier clients :
- Quels renseignements, combien d'adresses par client (résidence, facturation,...), pouvoir ajouter un client, le modifier, le supprimer ?
- Quelles recherches pouvoir faire sur ce fichier, les statistiques, faudra-t-il encoder des commandes, des expéditions, des paiements, des retours ?
- Comment faire ?
- Quand le quoi faire sera complètement défini, il faudra voir comment procéder concrètement dans la vie courante;
- Qui va faire quoi, comment, selon quelles procédures ?
- Lorsqu'il faudra modifier les coordonnées d'un client, comment va-t-on s'y prendre pour le retrouver, le modifier, sauvegarder les modifications ?
- Comment faire pour expédier et facturer telle commande et savoir si elle est bien arrivée, si elle a été payée... ?
- Comment faire faire ?
- Lorsque le comment faire aura été clairement et complètement défini commencera la phase d'architecture des programmes pour "faire faire" la tâche par l'ordinateur;
- Quels modules développer (voir ci-dessous), quelles seront les interactions de ces modules entre eux ?
- Comment lier des commandes, des envois, des paiements... à un client précis ?
- Comment faire les statistiques des commandes par région, par client... ? Comment savoir quelles publicités envoyer à tel client ?
- Comment dire ?
- Lorsque le comment faire faire aura été clairement et complètement défini commencera la phase de programmation ou codage;
- Il s'agira de rédiger les différents programmes en fonction des spécifications définies à l'étape précédente.
- Quel langage informatique utiliser, comment s'y prendre pour que les choses fonctionnent impeccablement, comment valider les programmes ?
- Comment transmettre à la machine ?
- Lorsque le comment dire aura été clairement et complètement défini il restera à enregistrer tous ces programmes sur l'ordinateur et les faire fonctionner.
Dans toutes ces étapes, il est essentiel de ne pas vouloir aller trop vite. On considère que vouloir gagner un mois d'analyse fera plus tard perdre quatre mois de programmation du fait des imprécisions qui apparaîtront sur le tard et obligeront à modifier la structure des programmes déjà réalisés, ce qui prendra beaucoup plus de temps que si les choses avaient été bien définies au départ.
Le développement modulaire
Le cerveau humain a ses limites. Lorsqu'on se trouve devant une tâche trop complexe à maîtriser, une solution est de décomposer cette tâche en sous-tâches et, éventuellement, d'encore passer à un "étage de découpe" supplémentaire, tel que le montre le schéma ci-dessous.
Les avantages de décomposer une tâche complexe en modules plus simples sont multiples :
- On ne développe qu'une petite partie du programme à la fois mais...
- ... tout en gardant en tête la finalité de l'ensemble, ce qui permet de rester cohérent;
- Les "blocs" ainsi obtenus pourront éventuellement servir de modules de base pour de futurs programmes;
- Après des spécifications précises, certains blocs pourront être développés par des personnes différentes.
Nous allons prendre quelques énoncés de programmes plus complexes que ceux développés en pseudo-code et nous allons détailler la façon de faire pour leur appliquer cette fameuse démarche descendante et structurée.
Rendez-vous au point suivant de ce chapitre.
Bon courage et bonne réussite.