jeudi 27 novembre 2008

"RAISONNER POUR PROGRAMMER"


Anna Gram, Dunod,1986,
388 pages,
format, 24x15.5

Ce livre est le résultat du travail d'un groupe de l'AFCET(Groupe GROPLAN)
Comme l'écrivent les auteurs, trois aspects de l'ouvrage peuvent être soulignés :
-l'étude de la problématique du développement raisonné de logiciel
-l'exploration approfondie de cas d'étude à la fois crédibles, suggestifs et suffisamment simples,
-la défense et l'illustration de l'unité de l'informatique

Dans le but de systématiser la démarche informatique, des phases de développement sont isolées :
-les stratégies, règles de comportement général guidant les choix du programmeur, par exemple, obtenir le plus rapidement possible un énoncé exécutable relève de la stratégie "prototyper"
-les tactiques, décrivent des étapes logiques de développement conduisant à un énoncé possédant certaines propriétés. Par exemple : passer d'un énoncé imprécis à un énoncé totalement défini relève de la tactique "spécifier"
exemple: tactique de "décomposition" d'un problème en sous-problèmes indépendants
-tactique d'"itération"
-tactique d'"induction" qui a pour objectif de construire un énoncé récursif
-tactique d'"approximation": organiser la résolution d'un problème en étudiant d'abord un nouveau problème, considéré comme plus simple
-tactique de "Généralisation" : son objectif est de formuler et résoudre le problème à un niveau d'abstraction plus général pour permettre ensuite un plus grand nombre d'Identifications
-tactique de "réutilisation":exploiter au mieux tout travail déjà fait
-les paradigmes sont des étapes élémentaires de la construction d'un programme. Par exemple: expliciter une entité par un nom et une définition informelle revient à appliquer le paradigme "désigner".
Autres exemples :
-"typer" :décrire les propriétés pertinentes d'une entité
-"affaiblir" : transformer un énoncé pour en réduire la complexité
-"renforcer" : consiste à compléter un énoncé par des contraintes supplémentaires
- "décomposer par cas" lorsqu'on distingue plusieurs traitements suivant les données du problème à un endroit donné
-"sérialiser", si, au même endroit, une solution consiste d'abord à définir le résultat un résultat intermédiaire x à partir des données, puis à exprimer le résultat à partir de x
-"répartir" lorsqu'une solution consiste à définir séparément un certain nombre de sous-résultats, qu'il s'agit ensuite de composer entre eux pour obtenir le résultat attendu
-"identifier" : identifier deux problèmes consiste à reconnaître leur identité au-delà des différences de forme de leurs énoncés
-"paramétrer" : paramétrer un énoncé consiste à faire abstraction des valeurs particulières de certaines entités, parce qu'elles ne sont pas pertinentes pour l'élaboration de la solution visée
-"représenter" : consiste à choisir, pour certaines entités, les types, les relations et le moyen d'expression adéquat
Les tactiques sont des compositions de paradigmes.

Ainsi, la mise en œuvre de la tactique d'approximation consiste à appliquer le paradigme Affaiblir, et le cas échéant le paradigme Renforcer pour revenir au problème posé.

Les stratégies sont classées en deux familles :

-Famille 1:
-structuration : vise à mettre l'énoncé d'un problème sous une forme arborescente de sous-énoncés exprimant l'héritage des propriétés
-modularisation : mettre l'énoncé du problème sous la forme d'un graphe de sous-énoncés. L'accent est mis sur la présentation des énoncés, parfois appelées "encapsulation", qui explicite leur interfaces (entités exportées et importées) et leurs parties privées
-Famille 2 :
-spécification en priorité : fixe comme première étape l'obtention d'une définition complète du problème.
-spécification par nécessité : on n'applique la tactique de spécification que lorsqu'aucune tactique n'est applicable
-stratégie du moindre effort : exploiter le plus possible les solutions existantes -prototypage:
-transformation : changer le niveau d'abstraction ou le mode d'expression, soit reformuler certaines définitions.

Afin d'exprimer l'exploration hiérarchique de ces développements, la notion d'arbre d'analyse est introduite.

Plusieurs cas sont traités pour illustrer la démarche:
-location de bateaux
-sous-suites ascendantes
-traduction de nombres:traduire en français un nombre quelconque dont on connaît la notation décimale: "1155 : "onze cent vingt-cinq"
-gestion d'un aéro-club, exemple "classique" en "informatique de gestion", traité avec l'approche orientée "modélisation de l'univers" (modèle relationnel,ER) et traité avec fonctions et types abstraits
-simulation d'un ascenseur

Le livre se termine par les compendia (résumés en latin !) techniques suivants que nous recommandons(45 pages) :
-notation abstraite naturelle
-types de données (types abstraits algébriques,..)
-grammaires et programmation logique(grammaires hors contexte, clauses de Horn et Prolog 2
-systèmes d'information
-systèmes asynchrones et processus communicants

H. Habrias

Aucun commentaire: