Contexto
Cuando tienes en mente comprar un automóvil, seguramente te formas una idea del tipo de auto que necesitas. Si es un auto para transportarte en una gran ciudad, probablemente piensas en un auto compacto, que sea cómodo y al mismo tiempo ahorrador de combustible. Por el contrario, si buscas un auto para tu negocio, que lo usarás para hacer las entregas a tus clientes, probablemente te convenga más un auto utilitario.
Una vez que decides por el tipo de automóvil, el siguiente paso es elegir un modelo y marca, dentro la gama que estás buscando. En el caso del auto compacto podrías pensar en un Gol de la Volkswagen, un Sentra de la Nissan o Aveo de la Chevrolet. En el caso de un auto utilitario, podrías buscar un Kangoo de la Renault, Urvan de la Nissan o un Hiace de la Toyota.
El último paso, será elegir detalles de los interiores, colores y equipamiento, completando así tu decisión de compra.
Como puedes observar, para decidirte por un automóvil fue necesario ir de lo general a lo particular. Cada tipo de auto, ya sea compacto, carga, todoterreno o los deportivos, tienen características generales similares que las agencias fabricantes reconocen al diseñar y construir los nuevos modelos de autos. Cada uno tiene características generales destinadas a cubrir una necesidad diferente.
Ese mismo ejercicio lo puedes hacer al realizar el diseño de arquitectura de software. Es un proceso que va de lo general a lo particular. Eliges primero el género del software, después el estilo y finalmente el patrón arquitectónico. Cada nivel te servirá para diseñar el sistema más adecuado a las necesidades y requerimientos del usuario.
Explicación
La arquitectura del software se describe a través de géneros que a su vez puede abordarse por medio de estilos y finalmente estos estilos pueden generar patrones arquitectónicos.
4.1 Géneros arquitectónicos
Los géneros arquitectónicos dictan el enfoque que tendrá el diseño arquitectónico del sistema. Establecen ciertas categorías y subcategorías que describen la estructura del software en general.
El primer paso para generar una arquitectura es definir el género al que pertenece, después se elige un estilo arquitectónico o la combinación de patrones que se ajusten a los requisitos y restricciones especificados en la ingeniería de requerimientos.
Para elegir el género arquitectónico adecuado, te puedes apoyar del siguiente listado basado en las categorías propuestas por Booch (2008):
Haz clic en cada concepto para conocer más detalle.
Para cada uno de estos géneros existe una industria del software que se especializa en fabricar productos que generan millones de dólares anualmente. Según Meza (2014) de la revista Forbes, tan sólo el género del software diseñado para video juegos genera más dinero que la industria del cine y de la música juntos.
4.2. Estilos arquitectónicos
Las arquitecturas de software pueden tener características comunes en muchos niveles. Cuando describen la estructura general se utiliza el término estilo arquitectónico.
“Un estilo arquitectónico es una transformación que impone al diseño de todo el sistema” (Pressman, 2010).
Clemens et al (2010) opinan que el estilo arquitectónico también establece ciertas características para el diseño arquitectónico general del software.
A continuación se describen los estilos de arquitectura:
Haz clic en cada concepto para conocer más detalle.
4.3 Patrón arquitectónico
Un patrón es una solución exitosa ya probada de un problema específico que puede ser reutilizable en diferentes configuraciones y sirve para realizar el diseño de la arquitectura de software.
“Los patrones son una forma de reutilizar el conocimiento y la experiencia de otros diseñadores” (Sommerville, 2011).
La importancia de usar patrones es que pueden utilizar soluciones a problemas comunes y es una forma más sencilla de explicar el diseño que se aplicó al software.
Según Sommerville (2011), una descripción de un patrón debe incluir cuatro elementos esenciales para que sea útil y replicable, reconocidos como “gang of four” (banda de cuatro), término que fue popularizado en 1995 a través del libro Design Patterns: Elements of Reusable de Gamma, Helm, Johnson y Vlissides.
Revisa aquí un ejemplo del patrón de la arquitectura cliente-servidor para una filmoteca.
Existe una diversidad de patrones que puedes utilizar en tu diseño arquitectónico y pueden ser divididos en las siguientes categorías:
Haz clic en cada concepto para conocer más detalle.
Maestro-esclavo, cliente-servidor, cliente-servidor multinivel, peer to peer, orientada al servicio, componentes distribuidos.
Observar y reaccionar, control ambiental, segmentación de proceso (process pipeline).
Aplicaciones transaccionales, Sistemas de información, Sistemas de procesamiento de lenguaje.
Arquitectura Modelo-vista-controlador, tuberías y filtros.
De diseño de interfaz del usuario, de diseño de Webapps, de diseño a nivel componentes.
Encontrarás que algunos autores en materia de software no hacen una distinción entre estilos y patrones arquitectónicos. En este curso se considera que existe algunas sutiles diferencias:
Cierre
En los proyectos de desarrollo es común que después de documentar los requerimientos del sistema se intente empezar a programar, pasando por alto la arquitectura que tendrá. El resultado es un sistema desorganizado, poco consistente, difícil de mantener y lo que es peor, no llega a cubrir los requerimientos no funcionales del usuario. En cambio un proyecto que le dedique tiempo para diseñar la arquitectura adecuada logrará definir características del software de calidad.
El diseño de la arquitectura que tendrá el software que desarrolles es un proceso de selección y ajuste. Comienzas reconociendo el género de arquitectura al que pertenece, este paso permite enfocar la arquitectura a elementos que ayudarán a construir un software eficiente. El siguiente paso será reconocer el estilo arquitectónico, así podrás enfocarte a los patrones que pertenecen a ese estilo, y finalmente seleccionar el patrón arquitectónico que resuelva mejor las necesidades del usuario.
Elegir el o los patrones arquitectónicos puede no ser una tarea sencilla, se requiere verificar que la solución propuesta por el patrón efectivamente te ayuda al diseño, pero con decenas de patrones a escoger que garantizan solucionar situaciones que comúnmente se presentan en los proyectos de desarrollo, es una estrategia mejor que empezar de cero.
Checkpoint
Asegúrate de poder:
Referencias
Glosario
Modelo OSI: También conocido como Open System Interconnection, por sus siglas en inglés. Es un modelo genérico que estructura en 7 capas o niveles la interconexión que surge entre dos sistemas o dispositivos de cómputo. Las 7 capas son: Físico, enlace de datos, red, transporte, sesión, presentación y aplicación.