Chapitre I - Introduction et conseils au lecteur



Documents pareils
Chapitre 1 : Introduction aux bases de données

Baccalauréat technologique

PARCOURS COMPLET AU COURS MOYEN

Annexe : La Programmation Informatique

BANQUES DE DONNÉES PÉDAGOGIQUES

M Études et développement informatique

Le génie logiciel. maintenance de logiciels.

TRUECRYPT SUR CLEF USB ( Par Sébastien Maisse 09/12/2007 )

Méthodes de développement. Analyse des exigences (spécification)

Brique BDL Gestion de Projet Logiciel

FICHE S PEDAGOGIQUE S. Bilan personnel et professionnel Recherche active d emploi

Gé nié Logiciél Livré Blanc

Compte-rendu de projet de Système de gestion de base de données

MODE D'EMPLOI DE LA CALCULATRICE POUR LES COURTS SÉJOURS DANS L'ESPACE SCHENGEN

LICENCE : INFORMATIQUE GENERALE

Ebauche Rapport finale

PROBLEMES D'ORDONNANCEMENT AVEC RESSOURCES

Vers l'ordinateur quantique

Utilisation des médicaments au niveau des soins primaires dans les pays en développement et en transition

Programmation sous QT

La contrefaçon par équivalence en France

I. Introduction aux fonctions : les fonctions standards

ÉCONOMIE ET GESTION LYCÉES TECHNOLOGIQUE ET PROFESSIONNEL

Guide de configuration de SQL Server pour BusinessObjects Planning

Chapitre 4 Pierre, papier, ciseaux

QUELQUES IDEES POUR UNE FORMATION DANS LE CADRE DE LA MAFPEN EN DIRECTION DES HISTORIENS/GEOGRAPHES.

POUR MAC Guide de démarrage rapide. Cliquez ici pour télécharger la version la plus récente de ce document

ENSEIGNEMENT ASSISTÉ PAR ORDINATEUR ET E.A.O. ET LANGUES ÉTRANGÈRES À L'UNIVERSITÉ

INSTRUCTIONS COMPLÉTES

3 Les premiers résultats des plans d'actions

Distinguer entre «Enregistrer» et «Sauvegarder»

PARAGON SYSTEM BACKUP 2010

M Études et développement null informatique. R i. Appellations. Analyste cogniticien / cogniticienne informatique

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Créer votre propre modèle

Logiciel Libre Cours 3 Fondements: Génie Logiciel

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

La pratique - ITIL et les autres référentiels. Fonctions ITIL et informatique en nuage

Évaluation et implémentation des langages

CESI Bases de données

Logiciel SCRATCH FICHE 02

1 Gestionnaire de Données WORD A4 F - USB / / 6020 Alco-Connect

Programmation Objet - Cours II

Mention : En débat

Octroi de crédit : la minimisation des risques de défaillance n'a pas le dernier mot

Atelier de simulation APOLLO XIII

LE MODELE CONCEPTUEL DE DONNEES

PREAVIS DE LA MUNICIPALITE AU CONSEIL COMMUNAL

B2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.

Les diagrammes de modélisation

Premiers pas sur e-lyco

Virtualisation de Windows dans Ubuntu Linux

Utiliser CHAMILO pour le travail collaboratif

Algorithmique avec Algobox

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Pourquoi l apprentissage?

Mode d'emploi AED de formation

Théories de la Business Intelligence

MAIRIE DE LA WANTZENAU MARCHE DE FOURNITURES PROCEDURE ADAPTEE CAHIER DES CHARGES

La valeur actuelle d'un élément de parc informatique

ABACUS vi Version Internet (release 2010)

MINI-MÉMOIRE DE PPP - S4

Fiche méthodologique Rédiger un cahier des charges

RÉSOLUTION DE SYSTÈMES À DEUX INCONNUES

1. Introduction Création d'une requête...2

Rapport d'analyse des besoins

Introduction. I Étude rapide du réseau - Apprentissage. II Application à la reconnaissance des notes.

Procédure Création : 04/05/2009 ARCHIVAGE DE LA MESSAGERIE

Contrôle parental NetAddictFree 8 NetAddictFree 8 - Guide d utilisation

Domaine 1 : S approprier un environnement informatique de travail. Domaine 3 : Créer, produire, traiter et exploiter des données.

Observation des modalités et performances d'accès à Internet

CAHIER DES CHARGES DE REALISATION DE SITE INTERNET

Promotion de la Bio-informatique

ITIL Gestion de la capacité

1 sur 5 10/06/14 13:10

Manuel de l'utilisateur d'intego VirusBarrier Express et VirusBarrier Plus

Le service d'agenda en ligne SOGo

Fiche animateur : module écriture collaborative

Présentation du Programme Régional de Formations Qualifiantes

BACCALAURÉAT PROFESSIONNEL M R I M : MICRO INFORMATIQUE ET RESEAUX : INSTALLATION ET MAINTENANCE

IMO - Informatique, modélisation et optimisation

La mesure des écarts en Sciences de l'ingénieur

L exemple d un serveur Proxy sous Windows NT 4 SERVER MICROSOFT PROXY SERVER 2 Installation et configuration Auteur : Eliane Bouillaux SERIA5

POLITIQUE N o : P AJ-005 POLITIQUE SUR LA PROTECTION DES INFORMATIONS CONFIDENTIELLES

Nombre de marches Nombre de facons de les monter

modélisation solide et dessin technique

Qu'est-ce que le BPM?

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

GUIDE DE DÉMARRAGE SOMMAIRE INTRODUCTION 1. SUIVI DE CAISSE PRÉSENTATION DU CALENDRIER PRINCIPES DE SAISIE N GESTIONSAISIE D'UNE JOURNÉE DE CAISSE

Bernard HAMM, Évelyne LAVOISIER

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

SCOLASYNC : Logiciel de gestion de flotte de «supports USB», synchronisation de fichiers.

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Chapitre 2 Devine mon nombre!

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

PC Check & Tuning 2010 Optimisez et accélérez rapidement et simplement les performances de votre PC!

Analyse tarifaire en ligne (TAO) de l'omc

Dans la série LES TUTORIELS LIBRES présentés par le site FRAMASOFT. Compression - Décompression avec 7-Zip. Georges Silva

Transcription:

Chapitre I - Introduction et conseils au lecteur Cette partie introductive situe la place de l'algorithmique dans le développement logiciel et fournit au lecteur des conseils : conseils pour bien analyser un problème et concevoir un algorithme, conseils pour rédiger un algorithme, conseils pour prévoir des jeux d'essais. Les conseils donnés dans cette partie découlent de notre volonté de faire profiter le lecteur de notre expérience. C'est en voyant des générations d'étudiants se pencher sur des énoncés, en discutant avec eux et en comprenant leurs difficultés que nous avons élaboré ces conseils. Ils doivent être vus comme une aide, non comme une contrainte. Il est possible de passer outre, mais ce ne sera pas sans risque (de se tromper), sans efforts improductifs, sans errements... Nous ne saurions trop conseiller au lecteur de lire ce chapitre avant d'aborder des exercices du livre. Nous pensons également que celui-ci ne devra pas hésiter à y revenir lorsqu'il rencontrera une difficulté, dans l'analyse d'un problème, dans la recherche d'une solution d'un exercice... Malgré toute notre volonté, nous n'avons pas pu éviter, dans ce chapitre, certaines références en avant et il est fort possible qu'un lecteur débutant ait parfois du mal avec certains concepts qui sont utilisés avant même que nous les ayons définis, expliqués... Rappelons quand même que ce livre ne remplace pas un ouvrage de cours. Que le lecteur ne se décourage surtout pas s'il ne comprend pas tout ce chapitre en première lecture. Il pourra toujours revenir sur la difficulté une fois résolus les exercices se rapportant aux concepts incompris. Ne pas tout comprendre du premier coup est, somme toute, «normal». Contenu du chapitre Place de l'algorithmique dans le développement logiciel Conseils pour concevoir et vérifier les algorithmes 1 - Place de l'algorithmique dans le développement logiciel Dans ce paragraphe, nous abordons le développement du logiciel en général puis celui d'un programme en particulier. Nous évoquons également les différents acteurs intervenant durant ce développement. Nous terminons en présentant les notions de validation et de vérification à l'aide de jeux d'essais.

2 CHAPITRE I - INTRODUCTION ET CONSEILS 1.1 - Développement du logiciel en général Un logiciel peut être défini comme un ensemble de programmes qui contribuent à résoudre un problème. Développer un tel ensemble est un processus qui peut être long, qui doit être minutieux et qui se déroule en plusieurs étapes : Il y a d'abord l'analyse des besoins, phase durant laquelle un analyste va rencontrer le demandeur, dialoguer avec lui et décrire le plus précisément possible ce qui est attendu. On est dans l'espace du problème et on répond à la question «Quoi?». Cette étape se termine par la fourniture d'un cahier des charges (et la signature d'un contrat). Des jeux d'essais de validation sont également prévus. Il y a ensuite la conception d'une solution, phase durant laquelle celle-ci est construite par un analyste (à partir du cahier des charges) en même temps qu'il met en place des outils informatiques. On est dans l'espace de la solution et on apporte une réponse à la question «Comment?». Cette étape se termine par la fourniture d'un document d'analyse, des algorithmes et des jeux d'essais de vérification. Il y a ensuite la phase de codage pendant laquelle les algorithmes sont traduits sous forme de programmes, ce travail étant réalisé par les programmeurs qui ne se posent, en principe, qu'une seule question : «Comment traduire l'algorithme?». Il y a ensuite les tests de vérification, phase durant laquelle chaque programme va être contrôlé, séparément tout d'abord puis dans son interaction avec les autres, de façon à éliminer toutes les erreurs de conception. On est ici toujours dans l'espace de la solution et on répond à la question «Est-ce bien écrit?». Ensuite, viennent les tests de validation, pendant lesquels on vérifie que le logiciel produit est bien celui qu'attendait l'utilisateur. La question à laquelle il faut répondre est «Est-ce bien cela qu'il fallait faire?». Il y a enfin l'installation du logiciel sur les ordinateurs du demandeur et son exploitation par les utilisateurs. Cette succession d'étapes (nous l'avons un peu simplifiée) constitue ce que l'on appelle le cycle de vie d'un logiciel. Il existe plusieurs représentations de ce cycle, une des plus connues étant ce que l'on appelle le cycle en V :

1 - Place de l'algorithmique dans le développement logiciel 3 Installation VJeux d'essais J11 Analyse des Validation besoins Cahier des charges 1 J2 1 Conception Vérification d'une solution Dossier analyse 1 + algorithmes Codage 1.2 - Développement d'un programme Les étapes de création d'un logiciel (un ensemble de programmes) se retrouvent dans la création d'un programme isolé qui doit résoudre un problème ponctuel. Les entrées, contraintes et résultats attendus du problème, nommées spécifications, sont consignées dans le cahier des charges. Une fois le problème analysé, la solution conçue doit être expliquée dans le dossier d'analyse et exprimée de manière à préparer le travail du programmeur : c'est là que va apparaître l'algorithme. L'algorithme constitue, en quelque sorte, une description précise de ce que doit exécuter le programme. Il peut être considéré comme un «programme» destiné à une machine abstraite. Il est rédigé dans un langage qu'un ordinateur ne sait pas interpréter mais qui est conçu pour être compris par un être humain et se traduire facilement dans un langage de programmation. Tout codage d'un programme doit être précédé de la conception de son algorithme. Un programme est un ensemble d'instructions, exécutées dans un ordre chronologique précis. Il en est de même pour un algorithme. Un même algorithme pourra être traduit dans différents langages de programmation : Java, C, Pascal... Cette traduction est encore, pour quelque temps, effectuée à la main par les programmeurs.

4 CHAPITRE I - INTRODUCTION ET CONSEILS 1.3 - Acteurs concernés par le développement logiciel Quels sont les acteurs qui interviennent durant le cycle de vie d'un logiciel ou dans celui d'un programme? On peut les classer en cinq catégories : Acteur le demandeur : l'enseignant, le client. l'analyste : l'apprenant, l'analyste. le programmeur : l'apprenant, le programmeur. le testeur : l'apprenant, l'équipe de test, l'enseignant. l'utilisateur : l'apprenant, l'usager, l'enseignant. Fonction Est confronté à un problème qui peut être résolu par un ou plusieurs programmes. Contribue à la rédaction d'un document, nommé cahier des charges, qui définit ses besoins sous forme de spécifications (quelles données, quels résultats, quelles propriétés...) et qui précise les conditions d'utilisation que devront respecter les futurs utilisateurs. Prend connaissance du cahier des charges fourni par le demandeur et rédige : un document d'analyse expliquant la solution mise en œuvre et les choix retenus lorsqu'il y a plusieurs solutions, les algorithmes mettant en œuvre la solution choisie, des jeux d'essais de vérification qui montrent que les solutions proposées répondent correctement au problème posé. Transcrit les algorithmes fournis par l'analyste en programmes exécutables 1. Vérifie ces programmes avec les jeux d'essais fournis par l'analyste. Rédige des jeux d'essais de validation à partir des spécifications fournies par le demandeur et vérifie que les programmes correspondent à la demande. Dialogue avec le programme en lui fournissant les données nécessaires. Il est, en principe, compétent dans le domaine d'utilisation du programme mais il peut faire des erreurs dans les données qu'il fournit ou dans l'usage qu'il fait du programme. C'est pourquoi ses erreurs potentielles doivent être contrôlées le mieux possible (contrôle de réponse). 1 ou plus exactement interprétables ou compilables.

1 - Place de l'algorithmique dans le développement logiciel 5 Remarque : nous reviendrons sur les différents jeux d'essais évoqués dans ce tableau, en particulier pour expliquer pourquoi il en existe plusieurs types et pour en justifier l'existence. Selon la taille des équipes, il est possible pour une même personne de jouer plusieurs rôles. On pourra ainsi, dans une petite structure, avoir un analyste programmeur ou bien un programmeur testeur. Les conditions optimales de fonctionnement sont toutefois réunies lorsque chaque rôle est joué par des personnes différentes. Au cours de son travail d'analyse et de programmation, l'apprenant est amené à jouer les quatre derniers rôles présentés dans le tableau. Il est primordial qu'il en prenne conscience. Si plusieurs apprenants ont la possibilité de travailler ensemble, ils auront tout intérêt à «faire tourner» les rôles, par exemple en faisant en sorte que chacun donne son algorithme et son programme à tester par un autre. 1.4 - Validation et vérification à l'aide de jeux d'essais La confiance dans les produits logiciels que l'on développe est une propriété essentielle pour leur acceptation. Celle-ci repose sur les deux questions suivantes : «le produit est-il valide?» «le produit est-il correct?» La validité (décrétée après un processus de validation) est une préoccupation du demandeur du produit. Le produit sera valide s'il répond à l'attente du demandeur exprimée en même temps que l'expression des besoins. La correction (décrétée après un processus de vérification) est une préoccupation des informaticiens. Le produit sera correct s'il est bien fait et s'il répond sans erreur aux spécifications du problème énoncées dans le cahier des charges. La validation est un processus expérimental qui consiste à définir des jeux de données pertinents, élaborés à partir des spécifications et à les tester avec le programme terminé, vu comme une «boîte noire». C'est en général le travail d'une personne (testeur) qui n'a pas participé au développement et qui, de ce fait, ne peut pas être influencé par la solution mise en œuvre dans le programme. Les couples (données / résultats) qui servent à ces tests sont les jeux d'essais de validation. La vérification est effectuée sur la solution. Elle peut théoriquement prendre deux formes : preuve ou processus expérimental. Faire la preuve qu'un algorithme ou qu'un programme est «juste» est théoriquement possible en construisant une démonstration composée d'un enchaînement de propositions logiques et en définissant de façon précise ce que sont les propriétés que doit respecter l'algorithme ou le programme. C'est un domaine à part entière de

6 CHAPITRE I - INTRODUCTION ET CONSEILS l'informatique. La preuve d'un algorithme très court peut être très longue et il est hors de question de rédiger des preuves dans le cadre de notre travail. L'autre méthode est une démarche expérimentale. Elle met en rapport des séries de valeurs fournies à l'algorithme ou au programme et des séries de résultats qu'il det produire. Ce sont les jeux d'essais de vérification. Il y a donc bien deux séries de valeurs : les jeux d'essais de validation, qui relèvent du problème et qui s'appliquent au programme terminé, les jeux d'essais de vérification, qui relèvent de la solution et qui s'appliquent à tout ou partie des algorithmes ou des programmes constituant cette solution. Pour que la validation et la vérification soient probantes, il ne faut pas tester avec des séries de valeurs prises au hasard mais choisir ces séries à la suite d'un raisonnement prenant en compte : l'expression des besoins et les spécifications pour la validation, les spécifications et la structure des algorithmes pour la vérification. Prenons un exemple, simple, pour illustrer les différences entre ces deux «types» de jeux d'essais, celui d'un programme qui simule le comportement d'un distributeur gratuit de boissons chaudes. Cet appareil propose du café ou du chocolat, ces deux boissons pouvant être sucrées ou non sucrées. Nous ne prenons pas en compte les pannes. Vu de l'extérieur, ce distributeur se présente sous la forme de trois boutons avec lesquels l'utilisateur indique son choix. Certaines combinaisons de boutons sont interdites (il n'est pas possible de sélectionner café ET chocolat). Sont acceptées les demandes suivantes : café non sucré, café sucré, chocolat non sucré, chocolat sucré. Un jeu d'essais de validation contiendra donc des valeurs permettant de tester toutes ces combinaisons, sans avoir besoin de connaître la solution : boisson? sucre? boisson servie café oui café sucré café non café non sucré chocolat oui chocolat sucré chocolat non chocolat non sucré L'analyste qui a étudié ce problème va probablement produire un algorithme ressemblant à celui de la page suivante :

1 - Place de l'algorithmique dans le développement logiciel 7 Ce graphe peut se tester de deux façons : Soit l'on se focalise sur les conditions et l'on envisage toutes les combinaisons de valeurs pour les demandes en sucre et en boisson. On calcule alors le nombre de chemins (il y en a quatre), éventuellement partiellement redondants et on propose une série de tests couvrant tous ces chemins (voir le schéma présenté dans la partie A, page suivante). Soit l'on se focalise sur les actions et l'on veut toutes les tester en essayant de ne pas le faire plusieurs fois. On calcule alors le nombre de chemins linéairement indépendants (il y en a deux) et on propose une série de tests couvrant ces chemins (voir le schéma présenté dans la partie B, deux pages plus loin).

8 CHAPITRE I - INTRODUCTION ET CONSEILS A) chemins parcourant toutes les combinaisons de valeurs : chemin n 1 : café sucré chemin n 2 : café non sucré chemin n 3 : chocolat sucré chemin n 4 : chocolat non sucré