Technical Review of my Book Innovative Design Thinking Approaches in Software Engineering

Imagen
The book   Innovative Design Thinking Approaches in Software Engineering   (IGI Global, 2025), which I had the privilege of authoring, editing, and coordinating alongside Dr. Carolina Tripp-Barba, addresses a pressing need in contemporary software development: rethinking engineering methodologies to prioritize empathy, creativity, and human value. Through a collection of eight original chapters written by an international and interdisciplinary group of researchers, the volume presents a multi-faceted view of how Design Thinking can reshape software engineering processes in both theory and practice. Among the key contributions of this work are: The formalization of the FusionFlow model , a methodology that blends Design Thinking, Artificial Intelligence, and Agile practices to enable iterative, user-driven, and adaptive software development (Chapter 3). The application of Legal Design Thinking (LDT)   to improve legal technology tools by enhancing usability, ethics, and ac...

Siete patrones arquitectónicos de software que debe conocer, según los ingenieros de software.

En esta entrada del blog describiré un resumen de los siete patrones arquitectónicos de software más populares que he encontrado en la literatura (Sommerville, 2011), algunos de ellos los utilicé en proyectos de desarrollo web y de escritorio en los que en un tiempo participé. Estos, según los expertos, se considera que son los que debemos conocer. Si bien es cierto que especializarse en uno no es lo recomendado, pues el implementar tal o cual dependerá de los requerimientos de tu proyecto, si es necesario al menos conocerlos y saber qué es lo que son. A continuación describiré  lo que es 1) arquitectura dirigida por eventos, 2) arquitectura en capas,  3) arquitectura monolítica, 4) arquitectura de microservicios, 5) modelo-vista-controlador, 6) arquitectura master-slave y 7) arquitectura dirigida por modelos.

  1. Arquitectura dirigida por eventos: se basa en componentes desacoplados y con una comunicación asíncrona. En la literatura se propone como ideal para sistemas donde los eventos desencadenan acciones, fomentando la escalabilidad y la capacidad de respuesta.
  2. Arquitectura en capas: es una estructura jerárquica con capas distintas (Presentación, Lógica de Negocio, Datos). Esta arquitectura es común en aplicaciones empresariales, mejorando la mantenibilidad a través de la compartimentación y el desarrollo modular.
  3. Arquitectura monolítica: utiliza un código base unificado y unidad de despliegue, es adecuada, según los expertos, para aplicaciones más pequeñas o instancias centradas en la simplicidad. Agiliza el desarrollo y el despliegue con posibles problemas de escalabilidad.
  4. Arquitectura de microservicios: básicamente es un sistema distribuido con servicios independientes e interoperables, suele ser recomendada para sistemas grandes e intrincados, mejorando la escalabilidad, el aislamiento de fallos y permitiendo el desarrollo de servicios independientes, así como la reutilización de código.
  5. Modelo-Vista-Controlador (MVC): es una muy popular, pero antigua, data desde los años 70s, consiste en la segregación de las preocupaciones (los famosos concerns) en componentes de modelo, vista y controlador. Es común utilizarla en aplicaciones web, mejora la organización y el mantenimiento del código al separar la lógica compleja de la interfaz de usuario. En esta entrada del blog explico más a detalle lo que es el MVC.
  6. Arquitectura maestro-esclavo: maneja un control centralizado (maestro) con múltiples nodos de trabajo (esclavos). De gran utilidad en la informática distribuida, optimizando el procesamiento paralelo y el equilibrio de carga.
  7. Arquitectura dirigida por modelos: surge a inicios del año 2000, es estándar del Object Management Group. Básicamente, consiste en tres capas, en las cuales, especificas todo con modelos, lo que puedes transformar para generar los modelos de la capa independiente de computación (capa 1) a la capa independiente de la plataforma (capa 2) y a su vez de esta obtienes modelos específicos de la plataforma (capa 3), de los cuales obtienes el código fuente. Repito, la idea es no escribir código, casi nada, solo modelar y transformar modelos. Ejemplo en imagen (tomada de Betari 2018).


Recuerda, es importante conocer lo que son, para que, cuando estemos participando en un proyecto tener la idea de cual nos podría ser de utilidad para nuestro desarrollo.

Es cuánto.

Referencias:
  • Betari, Oualid & Filali, Saida & Azzaoui, Amine & Boubnad, Mohamed. (2018). Applying a model driven architecture approach: Transforming CIM to PIM using UML. International Journal of Online Engineering (iJOE). 14. 170. 10.3991/ijoe.v14i09.9137. 
  • Sommerville, I. (2011). Software engineering (ed.). America: Pearson Education Inc.

Si quieres citar este artículo en tu texto, documento, etc. puedes hacerlo de la siguiente forma:

Aguilar-Calderón, J. A. (15 de enero de 2024). Siete patrones arquitectónicos de software que debemos conocer, según los ingenieros de software. ANOVA LAB MX. https://anovalabmx.blogspot.com/2024/01/siete-patrones-arquitectonicos-de.html

Comentarios

Mi foto
José Alfonso Aguilar
Mazatlán, Sinaloa, Mexico
Me gusta aprender y escribir sobre tecnología y desarrollo. Soy Ingeniero en Sistemas Computacionales, trabajo como Profesor-Investigador en la Facultad de Informática Mazatlán, de la Universidad Autónoma de Sinaloa. México. Me gusta combinar la docencia-investigación con el giro profesional del desarrollo de software y gestión de proyectos de innovación.

Entradas más populares de este blog

Historia y versiones de HTML (HyperText Markup Language)

Todo lo que debes saber sobre el Model-View Controller (MVC) para Aplicaciones Web

Hablemos de Propiedad Intelectual