Vous êtes sur la page 1sur 17

La programmation

Problme

Programme

Question rsoudre par une solution informatique Instance d'un problme = entres ncessaires pour calculer une solution du problme

Ensemble de donnes Ensemble de rsultats = solution informatique au problme Description d' un ensemble d'actions Excution dans un certain ordre

Critres de qualit des programmes


Lisibles Fiables Maintenables Rutilisables Portables Corrects (preuve) Efficaces (complexit) Contraintes "conomiques" :
Excution la plus courte possible Espace mmoire ncessaire le plus petit possible...

Principes mthodologiques
Abstraire
Retarder le plus longtemps possible l'instant du codage

Dcomposer
"...diviser chacune des difficults que j'examinerais en autant de parties qu'il se pourrait et qu'il serait requis pour les mieux rsoudre." Descartes

Combiner
Rsoudre le problme par combinaison d'abstractions

Mais aussi :
Vrifier, modulaire, rutiliser...

Notion d'algorithme
Rsolution Codage

Enonc

Algorithme

Programme

Description d'un processus de rsolution d'un problme bien dfini Succession d'actions qui, agissant sur un ensemble de ressources (entre), fourniront la solution (sortie) au problme Comment faire pour l'obtenir ?

Conception d'un programme


Spcification Rsolution Codage

Problme

Enonc

Algorithme

Programme

Ne pas se laisser aveugler par l'objectif final : le codage !

Cycle de vie d'un programme (1)


Analyse + spcification Conception Codification

Un processus itratif

Maintenance Vrification

Analyse + spcification
Dfinir clairement le problme Recenser les donnes Dgager les grandes fonctionnalits

Conception
Organiser les donnes Concevoir l'algorithme en pseudo-code

Codification
Traduire l'algorithme dans un langage de programmation

Cycle de vie d'un programme (2)


Analyse + spcification Conception Codification

Un processus itratif

Maintenance Vrification

4. Vrification (test & mise au point)


Utiliser le programme avec des entres spcifiques Utiliser un outil de mise au point

5. Maintenance
Adapter le programme existant pour de nouvelles fonctionnalits et/ou pour corriger les erreurs

Une documentation doit tre associe chaque tape

Paradigmes des langages de haut niveau (1)


Dsigner
Expliciter une entit, en la nommant et en lui associant une dfinition au moins intuitive

Typer
Connatre prcisment les proprits pertinentes dune entit

Paramtrer
Traiter un problme plus gnral que le problme pos Amliorer la rsistance de la solution aux changements Rutiliser

Paradigmes des langages de haut niveau (2)


Srialiser
Construire des squences d'actions

Dcomposer par cas


Dcouper le domaine des donnes initiales

Itrer
Introduire un sous problme intermdiaire paramtr
Rduire la complexit d'un problme

Langage compil
Compilateur Assembleur Editeur de liens Chargeur

Programme source

Programme cible

Code machine

emacs monProg.c gcc -ansi -pedantic monProg.c -o monProg monProg

Mthodologie Projet
Caractristiques :
Travail en groupes Interdpendance des travaux 1 Groupe de coordination

Consquences :
Ncessit de discussionS intra-groupe Ncessit de discussionS inter-groupe

Environnement
2 Sources de difficults :
Conception de lapplication (indpendant machine) Codage de lapplication

Monde unix (linux), Langage C Application des enseignements

Spcifications
Informel Syntaxe Smantique Comprhension Ambigut Prcision intuitive intuitive facile ++ -Semi-formel formel intuitive bonne leve bonne Formel formel formel difficile faible forte

Outils
Syntaxe :
Langage formel (Z), Algbre, Catgorie, (BNF)

Smantique :
Algbre, Automate

Vrification :
logique des prdicats, temporelle, probabilit

Structure horizontale et verticale :


Algbre, Catgorie

Gestion temporelle
Enchanement des tches conceptuelles :
Mthodes sur les dates : PERT

Modlisation :
Discret / Stochastique Diagramme de temps (UML) Logique temporelle

Points cls
Analyse des besoins et Validation Dfinition de la spcification Validation par rapport aux besoins Gnration de code Compatibilit R-utilisation et Paramtrage Matrise de la complexit

Mise en oeuvre
Organisation des directories (lib, bin, doc, ) Variables denvironnement (export) Scripts dinstallation, suppression, sauvegarde Principes des liens sur la version de rfrence Usage doutils de dveloppement (makefile) . et partage de code entre groupes !!!