Finalement, la frontière entre les specs fonctionnelles et techniques est souvent trop peu marquée, de même que la frontière entre les spécifications techniques et l'architecture... Voila quelques exemples tout bêtes qui m'en ont fait comprendre plus que les absconces définitions habituelles :

Les spécifications fonctionnelles (le plus facile) décrivent des comportements et aspects du systême:

  • authentification
  • navigation
  • contenu des vues

Les spécifications techniques décrivent des qualités du systême, par exemple :

  • scalabilité
  • performance
  • résistance aux pannes (exemple tolérance 99.9%)

On en vient à MDA : model driven architecture, qui est une nouvelle approche de la conception logicielle.
MDA tend à découpler au maximum la conception et l'architecture, et également à produire directement le code à partir du modèle.
La conception traite les spécifications fonctionnelles et l'architecture les specs techniques.
Ainsi, si l'on conçoit un modèle conceptuel implémentant les spécifications fonctionnelles, et que l'on a un traducteur modèle->architectureX qui va produire le code selon l'architecture X, on obtient les effets suivants :

  • chaque modification des spécifications implique une modification du modèle, et une nouvelle génération (automatique !) du systême.
  • Si finalement l'architecture X ne répond pas ou répond mal aux specs techniques, on change le traducteur et on prend modèle->architectureY, ce qui génère automatiquement une solution technique totalement diffèrente, mais implémentant exactement de la même manière les specs fonctionnelles !


C'est presque magique. Plus qu'à acheter les traducteurs...Voila le problème...Ils ne sont pas en rayon chez Monoprix ou Migros et en écrire un soi même, c'est comme pour les langues. Si on sait juste dire bonjour en chinois on fera un traducteur qui ne sait faire qu'un "hello world".
MDA reste une technologie extrêmement prometteuse, en particulier pour la création de maquettes. Lorsqu'on a construit un traducteur incluant un pan raisonnable d'une technologie, il est possible de construire une application avec des fonctionnalités basiques en quelques minutes.
Avec deux traducteurs, exemple Java EE et .Net, on pourra aller jusqu'à effectuer des comparatifs d'architecture.

Article sur wikipedia