Présentation, abstraction, contrôle
# Présentation, abstraction, contrôle

Le patron de conception PAC (présentation, abstraction, contrôle) a été introduit par la chercheuse en informatique grenobloise Joëlle Coutaz à la fin des années 1980 en tant que modèle abstrait d'architecture logicielle pour les interfaces homme-machine. Il énonce qu'un logiciel interactif peut être organisé comme une hiérarchie de composants constitués chacun de trois facettes :

* la Présentation prend en charge l'interaction avec l'utilisateur, par exemple en affichant un dessin et en gérant les entrées effectuées avec la souris. L'ensemble des facettes de Présentation constitue la partie du programme purement dédiée à l'IHM.
* l'Abstraction gère les données à représenter, ou les fonctions à interfacer. C'est par exemple, dans un téléphone portable, le carnet d'adresses et la gestion des communications téléphoniques. L'ensemble des Abstractions est la partie qui autrefois constituait la totalité des programmes, et qu'on appelle maintenant le noyau fonctionnel.
* le Contrôle gère la correspondance entre les deux autres facettes : cohérence des représentations avec les données internes, conversion des actions de l'utilisateur en opérations du noyau fonctionnel. Les facettes de contrôle servent aussi à créer une hiérarchie de composants logiciels pour organiser le programme : la facette de contrôle du composant parent, communique avec celle du composant fils.

PAC est un modèle abstrait qui ne décrit pas sous quelle forme doivent être réalisées et connectées les différentes facettes. Diverses solutions ont été mises en œuvre par les programmeurs, en utilisant par exemple l'héritage ou des constructions à base de pointeurs.

PAC est parfois confondu, par erreur, avec le patron modèle-vue-contrôleur (MVC) introduit en 1979 autour du langage Smalltalk. PAC est beaucoup plus orienté vers la séparation entre IHM et noyau fonctionnel, donc vers des objectifs de génie logiciel. MVC est plus focalisé sur l'organisation des entrées et des sorties dans les composants logiciels. Noter d'ailleurs que le contrôle de PAC est très différent du contrôle de MVC : le premier a pour rôle de piloter (« control ») la cohérence des facettes logicielles entre elles, le second gère les entrées de l'utilisateur et de ce fait lui permet de piloter (« control ») l'exécution du programme. Certaines interprétations récentes de MVC sont plus proches de PAC que des travaux d'origine sur MVC.

