Al seu excel·lent llibre [FOW], Fowler documenta una sèrie de patrons arquitectònics (o patrons de disseny arquitectònics, com més us agradi) per al desenvolupament de Sistemes d’Informació. L’obra és una gran guia de referència per a arquitectures que molts ja aplicaven anteriorment però que pocs havien documentat i estableix, molt acuradament, un llenguatge comú (gràcies a l’ús de patrons) per a referir-nos a aquestes arquitectures. Aquest article documenta unes quantes arquitectures típiques en termes dels patrons de Fowler per tal de donar una visió ràpida amb alguns exemples concrets sobre com es combinen i interactuen els patrons que Fowler documenta.
Arquitectura en 3 capes
La pròpia arquitectura en 3 capes és documentada com a patró arquitectònic per alguns autors (incloent-nos-hi, i perdonin que em citi a mi mateix, nosaltres a [UOC-EPOO]). Aquesta arquitectura proposa separar el sistema en 3 capes cadascuna de les quals treballi a un nivell d’abstracció diferent:- Capa de Presentació: El seu nivell d’abstracció és el dels elements d’interfície gràfica d’usuari (pantalles, botons, etc.)
- Capa de Domini: El seu nivell d’abstracció és el dels conceptes del sistema i les seves responsabilitats les d’implementar les regles de negoci.
- Capa de Serveis tècnics: El seu nivell d’abstracció és el de la plataforma (sistema operatiu, fitxers, etc.) i les seves responsabilitats les d’aïllar en la mesura del possible la capa de domini dels elements de la plataforma.
El patró controlador
Per a establir una separació més estricta entre les capes que formen una arquitectura en 3 capes, és convenient aïllar al màxim possible els components de cada capa. Una forma d’aconseguir això és mitjançant el patró Controlador de Larman (documentat [LAR]). Aquest patró ens indica que el responsable de rebre una petició en una determinada capa sigui un controlador: Un objecte que té com a única responsabilitat, justament la de capturar peticions a la seva capa. Larman, que proposa els controladors només per a la Capa de Domini, ens els indica de dos tipus:- Controlador de façana: Només n'hi ha un per a tota la capa i controla totes les peticions a la capa
- Controlador de cas d'ús: N'hi ha un per cas d'ús (i una instància per cada execució d'un cas d'ús) i cada un controla totes les peticions a la capa que es donin dins el mateix cas d'ús.
Les estrelles convidades: Els patrons de Fowler
Algunes arquitectures típiques
A continuació faig una presentació d’algunes de les arquitectures més populars avui en dia (sobretot en entorns web) i les situo en termes dels patrons documentats per Fowler. Per a cada una, faré servir un exemple de tecnologia en voga avui en dia que la fa servir.ADO.Net: Table Module + Record Set + Table Data Gateway
En breu, més…Ruby on Rails: Domain Model + Active Record
En breu, més…Hibernate / JPA: Domain Model + Data Mapper
En breu, més…Arquitectures basades en Transaction Script
En breu, més…Referències
- [FOW] Fowler, M (2005). Patterns of Enterprise Application Architecture. Boston, US: Addison-Wesley
- [UOC-EPOO] Jordi Fernández Gonzalez, Jordi Pradel i Miquel i Jose Antonio Raya Martos (coordinadors Jordi Cabot i Isabel Guitart). (2005) Enginyeria del programari orientat a l’objecte. Barcelona: UOC
- [POSA] Buschmann, F.; Meunier, R.; Rohnert, H.; Sommerlad, P.; Stal, M. (1996). Pattern-Oriented Software Architecture: A System Of Patterns. West Sussex, Anglaterra: John Wiley & Sons Ltd.
- [LAR] Larman, C. (2003). UML Y PATRONES. Una introducción al análisis y diseño orientado a objetos y al proceso unificado (2a ed.). Madrid: Prentice Hall.