Inicio Investigación Arquitectura Dominio-Frontera

Arquitectura Dominio-Frontera

El desarrollo de los sistemas corporativos de software es un rompecabezas multidimensional. Complejidad del dominio, reglas de negocio, diversidad de tecnologías, estructura del sistema existente, escala general, cantidad de interesados, eternos cambios... son solamente algunas de estas dimensiones. Para resolver el rompecabezas, los equipos de desarrollo necesitan un nuevo paradigma de desarrollo de software.

El desarrollo de software hoy

Dos problemas principales en el desarrollo moderno de software son:

- gestión no adecuada de abstracción, y
- falta de las herramientas de nueva generación


Estos dos problemas están fuertemente acoplados y juntos forman un "nudo" que imposibilita el progreso de la ingeniería de software. Para "desenredar el nudo", se debe resolver uno de estos dos problemas.

Mientras el nivel de abstracción de los sistemas bajo desarrollo ha crecido enormemente los últimos 20 años, los métodos de la ingeniería no han seguido esta tendencia. En vez de desarrollar los drivers y las aplicaciones para el uso común (editores de texto por ejemplo), sobre 95% del software construido hoy en día cae en la categoría de "software corporativo". Por otro lado, los equipos de desarrollo todavía aplican las mismas prácticas de los lenguajes textuales de programación.

La única herramienta "formal" de desarrollo de software aún es el compilador estándar (Java, .NET, etc). Los desarrolladores están atados a los IDEs correspondientes y obligados a resolver el rompecabezas antes mencionado escribiendo los códigos fuentes! No existe una manera formal del separar las preocupaciones ni tampoco una posibilidad de ver problema desde un punto de vista más abstracto.

Si existiera una herramienta formal para separar el desarrollador de los códigos fuentes, el "nudo" podría empezar a desenredarse
Gestión de Abstracción

Nuevas metodologías y nuevas generaciones de las herramientas de software son siempre construidas como capas abstractas alrededor de las generaciones previas, , haciendo "desaparecer", desde el punto de vista de los implementadores, ciertas importantes características de estas generaciones previas.

Lo mismo ocurre en la Arquitectura Dominio-Frontera. Un ejemplo simple es la base de datos. Siendo una necesidad de la tecnología (razones de persistencia) y no la característica propia de los conceptos del mundo real, la base de datos queda atrás, bajo el control de los compiladores y generadores automáticos de código.

Enfoque Dominio-Frontera

Arquitectura Dominio-Frontera define una vista abstracta del sistema de software, creada con el claro objetivo de formalmente separar las preocupaciones en el proceso de desarrollo:

- Las características funcionales de los no funcionales
- Análisis de diseño<
- Lógica de sistema con reglas de negocio de la lógica de navegación usuaria con presentación

Funcional vs. No funcional. Los desarrolladores deben primero saber QUE el sistema debe hacer, y recién luego preocuparse sobre el COMO lo va a hacer. Mientras estas dos preocupaciones no se separen mediante una herramienta formal, los usuarios se irán hundiendo naturalmente en la programación, mezclando todo en una "intríngulis de códigos fuentes".

Análisis vs. Diseño. La fase tradicional de A&D debe ser finalmente quebrada en dos. El análisis trata la formalización del problema, mientras el diseño lo resuelve a la luz de la tecnología existente y los recursos disponibles. Estas dos preocupaciones son muy distintas en el desarrollo moderno de gran escala.

Lógica del sistema vs. Lógica de Presentación. Las interfaces usuarias son "un mal necesario" de un sistema de software. El usuario solamente las necesita para extraer la información útil desde la lógica de dominio. El propio negocio y la lógica de dominio no contienen la lógica de interacción. Estas dos capas deben ser tratadas por separado desde el inicio, y no solamente desde el punto de vista de la estructura de aplicación (como por ejemplo en la conocida arquitectura de 3 capas o el patrón MVC, entre muchos más).

El siguiente esquema representa la Arquitectura Dominio-Frontera:



Todos los sistemas de software se pueden lógicamente descomponer en estas partes:

- Dominio: conceptos de la lógica de sistema, sus relaciones, atributos, reglas de negocio y comportamiento
- Frontera: presentación de la información, la lógica de navegación, acceso al Dominio
- Mundo: usuarios del sistema y sistemas externos

Este modelo extremadamente simple es el punto de partida de las metodologías de software new-age y las arquitecturas independientes de la plataforma.

Enterprise Analyst

Enterprise Analyst es una herramienta de desarrollo de software, basada en UML, MDA y Arquitectura Dominio-Frontera, libre de supuestos tecnológicos y de implementación de sistema, que permite:

- Modelamiento de Dominio, usando diagramas de clases y estados, así como implementación de las operaciones
- Modelamiento de Frontera, usando diagramas casos de uso.

En Enterprise Analyst, el Dominio se modela completamente por separado de la Frontera, para construir tempranamente en el proyecto un prototipo funcional del sistema. Es decir, mucho antes de la necesidad de resolver los asuntos no funcionales, tales como plataforma o lenguaje de implementación, bases de datos, seguridad, etc.

Después de tener el modelo completamente desarrollado, el mismo se puede formalmente probar y ajustar, antes de iniciar las costosas tareas de implementación y testing.

En un futuro próximo, Enterprise Analyst va a introducir la funcionalidad de ejecución de los casos de uso y la generación de prototipos de la interfaz usuaria.

La idea final es llegar a implementar la funcionalidad de generación completa de código.

Desenredadndo el "nudo"

Con la herramienta Enterprise Analyst (EAn) y el enfoque Dominio-Frontera (DF), el "nudo" mencionado antes se puede resolver. Los desarrolladores finalmente pueden tener una herramienta que les OBLIGUE a pensar de una forma distinta y a manejar las preocupaciones de un sistema altamente complejo en una secuencia óptima.

EAn y DF naturalmente establecen la línea entre las características funcionales y no funcionales, entre la lógica del sistema (dominio) y su presentación (frontera) y por supuesto entre las etapas de Análisis y Diseño.

Con EAn y DF la etapa de análisis termina con un producto ejecutable, con un prototipo del sistema final, el cual puede ser realmente probado incluso por su usuario final. La aprobación de este prototipo es un nuevo hito en el proyecto de software.

Con EAn y DF un proyecto de software está "quebrado" en dos, disminuyendo drásticamente el riesgo total, por un temprano y confiable acuerdo en los aspectos relevantes al usuario. No hay necesidad de invertir en la tecnología, implementación, programadores, diseño del modelo de datos, pruebas, hardware, etc. etc. antes de tener resueltos los asuntos principales.

EAn y DF convierten el desarrollo de software en verdadera ingeniería.

Craftware Consultores Ltda. | San Antonio 19, oficina 702, Santiago Centro, Chile | Teléfono: +(56) 2 466 5485 | E-mail: info@craftware.net

Leroy Graphics