• Aucun résultat trouvé

Chapitre 3 LES ENVIRONNEMENTS ET LES METHODES DE

3.4 Concepts et méthodes de développement

3.4.2 Les concepts

Les différentes méthodes de conception reposent sur un certain nombre de concepts [Ber 81], dont les principaux sont: décomposition fonctionnelle, flot de données, structuration des données.

Décomposition fonctionnelle

La décomposition fonctionnelle est à la base de nombreuses méthodologies de développement. Des personnalités telles que Dijkstra LDij 76], Wirth [Wir 73J et Parnas LPar 72J l'ont rendu populaire.

Décomposition d'une fonction .•

en sous-fonctions .• •• • ••

z :c·

<D Il>

c: a.

<D

a. Pt

ê:

'--:""'.... ..

, ' ... 11 ... ~

,

.. ~

I I

Figure 3.2: Schéma de décomposition fonctionnelle

La décomposition fonctionnelle (figure 3.2) est applicable pour tout système. Ses principes de base sont simples: diviser le problème à résoudre en sous-problèmes et recommencer ce raffinement pour les sous-problèmes jusqu'à un niveau que l'on juge suffisant. Chaque niveau prend en compte de plus en plus de détails. Un raffü1ement de ce concept est prôné par la méthode top-down bottom-up. Elle consiste à effectuer une décomposition fonctionnelle, mais aussi à définir les fonctionnalités

d'wie machine virtuelle qui constituent le niveau de base jusqu'auquel on va raffiner la décomposition. Donc, de manière simultanée, on décompose les fonctionnalités en des niveaux de plus en plus détaillés et on construit des nivéaux sur le niveau de base pour connecter les niveaux obtenus par décomposition.

La décomposition fonctionnelle est un concept général qui n'indique pas les critères à prendre en compte lors de la décomposition.

Ces critères peuvent être le temps, les flots de données, l'accès aux ressources ou le contrôle de flux, pour ne citer que ceux-ci. Suivant ces critères, la qualité de la décomposition est plus ou moins bonne car la cohésion des groupes de fonctions obtenues peut varier considérablement.

Flot de données

Ce concept, proposé par Constantine, a été repris par Y ourdon [You 75) et Myers [Mye 75). A la base, ce concept correspond à l'application du concept de décomposition fonctionnelle en prenant le flot de données comme critère de décomposition.

Diagramme de flot de données

Diagramme de structure

PutE

Figure 3 3 : Exemple de diagrammes de flot de données et de structure

Cette approche part d'une analyse du flot de données à travers le problème, ce qui permet d'établir un diagramme du flot de données où l'on indique les données et les transformations qu'elles subissent. Ce diagramme n'a pas de structure, il est principalement séquentiel. On le transfoone en un diagramme structuré hiérarchiquement qui servira de structure au logiciel (figure 3.3). La transition du diagramme flot de données au diagramme de structure est effectuée en déterminant la transformation centrale. On considère que c'est la transformation dont les données d'entrée et de sortie sont les plus abstraites par rapport aux données initiales et fmales, généralement elle se trouve au milieu du flot de données. Ensuite, on structure, autour de la transformation centrale, en répartissant les diverses opérations sur des niveaux inférieurs. Il y a trois catégories d'opérations possibles sur les données: la lecture, l'écriture et la transformation.

La méthode basée sur le flot de données se schématise en quatre grandes étapes qui sont:

- modéliser le problème comme un flot de données

identifier les types d'opérations (lecture, écriture, transformation)

- structurer ces opérations pour former une structure hiérarchique - raffiner et optimiser.

Structuration des données

L'idée de base d'une méthode basée sur ce concept est d'établir quelles sont les principales structures de données qui constituent le lien entre le monde réel et le logiciel Jackson [Jac 75] et Wamier [War 74] en sont à l'origine. Ils considèrent qu'un modèle correct de structures de données peut être transformé en un logiciel correspondant à un modèle c.:orrect du problème réel.

Les structures de données déterminent la structure hiérarchique du programme. Les relations entre les différents niveaux de la structure sont des relations de composition. Ainsi, les données et les opérations associées aux données d'un niveau sont des compositions des données et des opérations du niveau inférieur. Une telle méthode garantit que la structure du logiciel est un bon modèle de 1a structure du problème, ce qui entraîne que le logiciel est relativement facile à comprendre et à modifier. Quand les spécifications du problème évoluent avec des changements de détail, alors les modifications restent des modifications de détail sans avoir de répercussions trop importantes sur la structure.

Une méthode uniquement basée sur le concept de structuration des données a quelques inconvénients. Elle implique l'utilisation d'une méthode pour modéliser le problème avant de pouvoir en extraire et

structurer les données. Elle ne couvre donc pas la phase d'analyse du cycle de vie. Elle correspond en outre à une approche bottom-up, car on construit les structures de données sur d'autres structures de données.

Cette approche est acceptable pour le développement de petits projets mais devient inadéquate pour des projets complexes.

Ce concept est la base d'autres concepts qui jouent un rôle très important, tels que les types abstraits de données. Un type abstrait [Lis 75]

se compose d'un type de données et d'opérations travaillant sur ces données.

Autres concepts

Il existe d'autres concepts qui jouent un rôle non négligeable dans les méthodes de développement de logiciel. La logique des prédicats est le concept de base de la méthode constructive de programmes corrects [Dij 76]. Cette méthode utilise la logique des prédicats associée à une approche top-down pour aboutir à un logiciel correct, la preuve de sa correction est obtenue par construction.