# Méthodologie de conception constructiviste

La Méthodologie de conception constructiviste est une approche qui vise à assurer l'interopérabilité entre des composant logiciels, tels que des synthétiseur vocals, et d'autres composants, tels que des bases de connaissances de bon sens, afin de créer des systèmes d'I.A. plus vastes, plus étendus et plus performants. Elle repose principalement sur des méthodes telles que le routage de messages et l'utilisation de protocoles de communication que les composants logiciels emploient pour échanger des informations, souvent à l'aide d'un middleware système tableau d'affichage.
La plupart des intelligence artificielles impliquent une forme de technologies intégrées, par exemple, l'intégration des technologies de synthèse vocale avec celle de la reconnaissance vocale. Cependant, ces dernières années on discute de plus en plus de l'importance de intégration de systèmes en tant que domaine à part entière. Les partisans de cette approche sont des chercheurs tels que Marvin Minsky, Aaron Sloman, Deb Roy, Kristinn R. Thórisson et Michael Arbib. Une des raisons de l'attention récente que suscite l'intégration en I.A. est qu'on crée déjà un certain nombre de systèmes d'I.A. (relativement) simples pour des domaines de problèmes spécifiques (comme vision par ordinateurs, synthèse vocales, etc.), et qu'intégrer ce qui est déjà disponible constitue une approche plus logique pour une I.A. plus étendue que de construire des systèmes monolithiques à partir de zéro.

## Focus sur l'intégration

Le focus sur l'intégration des systèmes, en particulier en ce qui concerne les approches modulaires, découle du fait que la plupart des intelligences d'échelles significatives se composent d'une multitude de processus et/ou utilisent une entrée et une sortie multi-modale. Par exemple, un type d'intelligence humanoïde doit de préférence être capable de parler grâce à la synthèse vocale, d'entendre grâce à la reconnaissance vocale, de comprendre grâce à un mécanisme logique (ou autre mécanisme indéfini), etc. Pour produire un logiciel artificiellement intelligent d'une intelligence plus étendue, l'intégration de ces modalités est nécessaire.

## Défis et solutions

La collaboration est une partie intégrante du développement logiciel comme le montrent la taille des entreprises de logiciels et la taille de leurs départements. Parmi les outils facilitant la collaboration logicielle figurent diverses procédures et normes que les développeurs suivent pour assurer la qualité, la fiabilité et la compatibilité de leurs logiciels avec ceux créés par d'autres (telles que les normes du W3C pour le développement de pages web). Cependant, la collaboration dans les domaines de l'I.A. fait défaut, n'étant en grande partie pas observée en dehors des écoles, départements ou instituts de recherche respectés (et parfois même pas au sein de ceux-ci). Cela présente aux praticiens de l'intégration des systèmes d'I.A. un problème considérable et oblige souvent les chercheurs en I.A. à « réinventer la roue » chaque fois qu'ils veulent qu'une fonctionnalité spécifique fonctionne avec leur logiciel. Encore plus dommageable est le syndrome du "not invented here", qui se manifeste par une forte réticence des chercheurs en I.A. à s'appuyer sur le travail d'autrui.
Le résultat de ceci dans développement de l'intelligence artificielle est un ensemble important d'« îlots de solutions » : la recherche en I.A. produit de nombreux composants logiciels isolés et mécanismes qui traitent séparément diverses parties de l'intelligence. Pour prendre quelques exemples :
* Synthèse vocale
** FreeTTS de CMU
* Reconnaissance vocale
** Sphinx de CMU
* Raisonnement logique
** OpenCyc de Cycorp
** Open Mind Common Sense Net de MIT
Avec la popularité croissante du mouvement du logiciel libre, une grande partie des logiciels créés, y compris les systèmes d'I.A., est disponible pour exploitation publique. La prochaine étape naturelle consiste à fusionner ces composants logiciels individuels en systèmes intelligents cohérents et d'une nature plus étendue. Comme la communauté crée déjà une multitude de composants (qui servent souvent le même objectif), la manière la plus accessible d'intégration consiste à offrir à chacun de ces composants un moyen facile de communiquer entre eux. Ce faisant, chaque composant devient à lui seul un module, qui peut ensuite être testé dans divers environnements et configurations d'architectures plus vastes. Certains défis et limitations de l'utilisation des logiciels d'I.A. résident dans les erreurs fatales incontrôlées. Par exemple, des erreurs graves et fatales se manifestent dans des domaines très précis tels que l'oncologie humaine, comme dans un article publié dans le journal Oral Oncology Reports intitulé «When AI goes wrong: Fatal errors in oncological research reviewing assistance». L'article indique une erreur grave dans l'intelligence artificielle basée sur GBT dans le domaine de la biophysique.
De nombreuses communautés en ligne pour les développeurs d'I.A. existent, où tutoriels, exemples et forums visent à aider aussi bien les débutants que les experts à construire des systèmes intelligents. Cependant, peu de communautés réussissent à établir une norme ou un code de conduite populaire permettant d'intégrer aisément la vaste collection de systèmes divers.

## Méthodologies
### Méthodologie de conception constructionniste

L'intégration de systèmes d'intelligence artificielle (MCC, ou « I.A. constructionniste ») est une méthodologie formelle proposée en 2004, pour être utilisée dans le développement de la robotique cognitive, des humanoïdes communicatifs et des systèmes d'I.A. étendus. La création de tels systèmes nécessite l'intégration d'un grand nombre de fonctionnalités qui doivent être soigneusement coordonnées pour obtenir un comportement système cohérent. La MCC se base sur des étapes de conception itératives qui conduisent à la création d'un réseau de modules nommés interagissant, communiquant via des flux explicitement typés et des messages discrets. Le protocole de messages OpenAIR (voir ci-dessous) s'inspire de la MCC et est fréquemment utilisé pour aider au développement de systèmes intelligents en utilisant la MCC.

## Exemples

* ASIMO, le robot humanoïde de Honda et Qrio, la version humanoïde de Sony.
* Cog, le projet de robot humanoïde du M.I.T. sous la direction de Rodney Brooks.
* AIBO, le chien-robot de Sony, intègre la vision, l'audition et des compétences motrices.
* TOPIO, le robot humanoïde de TOSY peut jouer au ping-pong avec un humain.