I.1.3. Les principes
Dans cette section nous listons sept principes fondamentaux
(proposés par Carlo Ghezzi) dont nous essayerons d'appliquer dans le
présent travail:
· rigueur,
· séparation des problèmes (« separation
of concerns »),
· modularité,
· abstraction,
· anticipation du changement,
· généricité,
· construction incrémentale.
I.1.3.1. Rigueur
La production de logiciel est une activité
créative, mais qui doit se conduire avec une certaine rigueur. Certains
opposent parfois créativité et rigueur. Il n'y a pas
contradiction : par exemple, le résultat d'une activité de
création pure peut être évalué rigoureusement, avec
des critères précis.
7
le temps : il faut bien construire la première
description formelle à partir de connaissances non formalisées !
Mais dans certaines circonstances les techniques formelles sont utiles.
I.1.3.2. "Séparation des problèmes"
C'est une règle de bons sens qui consiste à
considérer séparément différents aspects d'un
problème afin d'en maîtriser la complexité. C'est un aspect
de la stratégie générale du « diviser pour
régner ».
Elle prend une multitude de formes :
? séparation dans le temps (les
différents aspects sont abordés successivement), avec la notion
de cycle de vie du logiciel que nous brosserons dans la suite,
? séparation des qualités que l'on
cherche à optimiser à un stade donné (ex : assurer la
correction avant de se préoccuper de l'efficacité),
? séparations des `vues' que l'on peut avoir
d'un système (ex : se concentrer sur l'aspect flots de
données' avant de considérer l'aspect ordonnancement des
opérations ou flot de contrôle'),
? séparation du système en parties (un
noyau, des extensions, ...),
? etc.
Les méthodes aident à organiser le travail en
guidant dans la séparation et l'ordonnancement des questions à
traiter.
I.1.3.3. Modularité
Un système est modulaire s'il est composé de
sous-systèmes plus simples, ou modules. La modularité
est une propriété importante de tous les procédés
et produits industriels (cf. l'industrie automobile ou le produit et le
procédé sont très structurés et modulaires).
La modularité permet de considérer
séparément le contenu du module et les relations
entre modules (ce qui rejoint l'idée de séparation des
questions). Elle facilite également la réutilisation de
composants biens délimités.
Un bon découpage modulaire se caractérise par
une forte cohésion interne des modules (ex : fonctionnelle,
temporelle, logique, ...) et un faible couplage entre les modules
(relations inter modulaires en nombre limité et clairement
décrites).
Toute l'évolution des langages de programmation vise
à rendre plus facile une programmation modulaire, appelée
aujourd'hui programmation par composants'.
8
|