SlideShare una empresa de Scribd logo
Arquitectura de Software
Adrián Lasso, MVP
alasso@baufest.com

Motivación
Hace un tiempo atrás, al comenzar un proyecto de desarrollo en .NET para un cliente,
en las primeras reuniones con la gerencia de sistemas y los usuarios, planteo la
necesidad de crear un documento de arquitectura de la solución, inmediatamente me
responden que no hacia falta ya que la arquitectura estaba definida. Personal de sistemas
de mi cliente me describe la arquitectura que debería seguir el nuevo sistema a
desarrollar, que puede resumirse con el diagrama de la Figura 1 para un mejor
entendimiento:




Lo que me explicaban, es que ya estaba decidido que el sistema tendría una
Arquitectura Web basada en plataforma Microsoft, o sea, un cliente usando un Internet
Explorer 6.0, un servidor corriendo IIS y los componentes de sistema desarrollados en
ASP.NET accediendo a otro servidor que contendría los datos dentro de un SQL Server.

Después de haber escuchado atentamente la explicación, aunque hubiese sido mejor que
mi cliente tuviese un diagrama como el de arriba, comencé a explicarles que en realidad
lo que me habían contado era solo una vista de lo que se entiende por arquitectura de un
sistema. No era la primera vez que me ocurría en este tipo de situación ya que existe
poca difusión sobre el tema y a raíz de eso se me surgió la idea de este artículo.

Las Vistas de la Arquitectura de una Aplicación
Lo primero que quiero contar es que la Arquitectura de una Aplicación es una de las
posibles perspectivas de una Arquitectura Corporativa. ¿Cómo? ¿Otra arquitectura más?
Si claro, una aplicación vive dentro de una organización y ésta tiene un arquitectura que
describe su estructura y funciones. La idea es describir la estructura de "sistemas" con
modelos que describan la visión que tienen los distintos interesados o stakeholders de
la organización, para poder usar, planificar y tomar decisiones mejores sobre temas de
tecnología informática.

Entonces, y para ir de lo general a lo particular, para una organización cualquiera, se
puede hablar de la arquitectura informática de la misma desde distintas perspectivas y
algunas de ellas son:

   •   Negocio: Describe el funcionamiento interno del negocio central de la
       organización.
   •   Aplicación: Muestra las aplicaciones de la organización, su funcionalidad y
       relaciones.
   •   Información: Describe la información que maneja la organización y cómo está
       ligada a los circuitos de trabajo.
   •   Tecnología: Describe la estructura de hardware y software de base que da
       soporte informático a la organización.

Es importante recalcar que estas perspectivas son las que tienen los interesados de la
organización o empresa, de esta manera, queda claro que habrá interesados en el
negocio y su funcionamiento, las aplicaciones y sus relaciones, la información (los
datos) que maneja la organización y la tecnología (hardware y software de base) que da
sustento informático.

Volviendo a mi cliente, lo que me había contando es en realidad, una de las posibles de
vistas de la arquitectura de una aplicación. En particular la descripción que hizo es más
bien una visión "física" de la solución, o sea, de la infraestructura de hardware con
algunos detalles del software de base en la que debíamos basar el desarrollo.

Otras de las posibles vistas de la arquitectura de una aplicación serían:

   •   Vista Conceptual.
   •   Vista Lógica.
   •   Vista Física.
   •   Vista de Implementación.

Al desarrollar una aplicación puede ser de gran valor describir estas vistas dentro de un
documento de arquitectura. La notación que más ampliamente se está utilizando es el
Lenguaje Unificado de Modelado o UML de sus siglas en inglés.

Vista Conceptual
La arquitectura de una aplicación está guiada, en gran medida, por los requerimientos
(funcionales y no-funcionales) que debe cubrir el sistema y normalmente se toma el
subconjunto más arquitectónicamente importante de dichos requerimientos para
definirla. La vista conceptual es usada para definir los requerimientos funcionales y la
visión que los usuarios del negocio tienen de la aplicación y describir el modelo de
negocio que la arquitectura debe cubrir. Si se está usando el Proceso Unificado como
metodología de desarrollo, esta vista estará descripta en términos de Casos de Uso,
Diagramas de Actividad, Procesos de Negocio, Entidades del Negocio, etc. que
definen la funcionalidad que la aplicación deberá brindar. Esta vista muestra los
subsistemas y módulos en los que se divide la aplicación y la funcionalidad que brinda
dentro de cada uno de ellos. En términos de UML, un ejemplo podría ser el que se
muestra en la Figura 2.




En el ejemplo vemos la agrupación funcional de casos de uso en paquetes que,
normalmente, siguen la descomposición jerárquica de la empresa u organización. Al
documentar esta vista, los casos de uso que se incluyen son aquellos que representan
algo funcionalmente significativo, o si tienen impacto en elementos de la arquitectura
general (estresan o ilustran algún punto delicado).

Vista Lógica
Muestra los componentes principales de diseño y sus relaciones de forma independiente
de los detalles técnicos y de cómo la funcionalidad será implementada en la plataforma
de ejecución (ejemplo, .NET Framework). Los arquitectos crean modelos de diseño de
la aplicación, los cuales son vistas lógicas del modelo funcional y que describen la
solución. Se describe la solución en términos de paquetes y clases de diseño. Siguiendo
el supuesto de que se está usando el Proceso Unificado, dentro de esta vista se describe
la Realización de los Casos de Uso, subsistemas, paquetes y clases de los casos de uso
más significativos arquitectónicamente. La Figura 3 muestra este tipo de descripción.
En la actualidad, uno de los patrones de diseño más utilizado para cualquier tipo
aplicaciones es el de Capas (Layers en inglés) donde, básicamente, se divide los
elementos de diseño en paquetes de Interfaz de Usuario, Lógica de Negocio y Acceso a
Datos y Servicios. La Figura 4 muestra una posible partición utilizando este patrón de
diseño.

En el siguiente gráfico se pueden ver los paquetes de la capa de Interfaz del Usuario de
color ladrillo, los paquetes de la capa de Lógica del Negocio en color amarillo y
finalmente, los paquete de la capa de Acceso a Datos de color Gris.
Esta es una de las posibles divisiones en capas, podrían existir otras un poco más
completas e incluso una que defina mayor cantidad de capas. Dado que este es un
modelo de diseño, cabe destacar que ésta es una división lógica, no se especifica en que
procesador "vivirá" cada uno de los paquetes. Esto se muestra en la vista de
implementación.

Vista Física
Esta vista ilustra la distribución del procesamiento entre los distintos equipos que
conforman la solución, incluyendo los servicios y procesos de base. Los elementos
definidos en la vista lógica se "mapean" a componentes de software (servicios,
procesos, etc.) o de hardware que definen más precisamente como se ejecutará la
solución. La Figura 5 es un ejemplo mostrando una vista física.

En el gráfico se muestra una solución Web con tres nodos procesadores, Clientes,
Servidor Web y Servidor de Base de Datos. Dentro de los nodos se ejecutan procesos,
servicios y/o componentes y sus relaciones de dependencia, por ejemplo, el Internet
Explorer "muestra" la página HTML que corresponde a la presentación o Interfaz del
Usuario de la aplicación.




Vista de Implementación
Finalmente la vista de implementación describe cómo se implementan los componentes
físicos mostrados en vista de distribución agrupándolos en subsistemas organizados en
capas y jerarquías, ilustra, además las dependencias entre éstos. Básicamente, se
describe el mapeo desde los paquetes y clases del modelo de diseño a subsistemas y
componentes físicos.
En Figura 6 tenemos un ejemplo que muestra cómo un patrón de diseño en capas
(lógicas) puede "mapearse" a una implementación física del tipo "cliente delgado",
donde el desarrollador deberá programar 5 componentes físicos, una página ASPX que
contenga la Interfaz de Usuario para el Pedido, un componente ASPX.cs de "Code
Behind" que actúa como lógica de la Interfaz de Usuario, un componente DLL que
contendrá la fachada del Pedido y otra DLL que contendrá las entidades del negocio
(Producto, Pedido, etc.). Por último deberá programar o hacer uso de una componente
DLL que contenga la funcionalidad de Acceso a Datos.

Conclusión
El tema de la arquitectura tomó mucha preponderancia es los últimos años como algo
clave a la hora de diseñar una solución informática. Lo importante es comprender que
para la arquitectura existen varias perspectivas y que dentro de estás podemos mostrar
vistas dependiendo de los puntos de vista interesados en la misma y qué, al diseñar una
solución debemos pensar en ellos y dejar plasmado en algún documento las decisiones
arquitectónicas que tomamos.

Ah, me olvidaba, mi cliente luego de la explicación sobre las distintas vistas de la
arquitectura, se dio cuenta de la necesidad de definir una arquitectura que tuviera en
cuenta las visiones de otros interesados. Diseñamos los distintos mecanismos de
arquitectura y los plasmamos en un documento de arquitectura que nos sirvió y nos
sirve mucho a todos los involucrados con el desarrollo.
Por último me parece útil comentar que todos los gráficos de este documento fueron
realizados con el esténcil de Modelado con UML de Microsoft Visio. Este esténcil tiene
la particularidad de crear modelos y no solo diagramas, genera código para C#, Visual
Basic.NET y C++, y otras capacidades que merecen una visita al sitio de Visio.

Agradezco a mis colegas de Baufest, Enrique Vetere y Pablo Rodriguez su colaboración
en la revisión e ideas para este articulo.

Referencias útiles
   •   Centro de Architecture .NET en MSDN -
       http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en-
       us/dnea/html/eaarchover.asp
   •   Para una introducción complementaria ver: Microsoft Architecture Overview -
       http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en-
       us/dnea/html/eaarchover.asp
   •   Para temas más teóricos y donde encontraran más links: Institute For Enterprise
       Architecture - http://www.enterprise-architecture.info/index.htm


Adrián Lasso (alasso@baufest.com) es vicepresidente de Baufest empresa Argentina
especializada en consultoría en Ingeniería de Software y el desarrollo de sistema a
medida para grandes empresas. Cuenta con más de 15 años de experiencia en el
desarrollo de aplicaciones corporativas y desde 1990 está especializado en UML, temas
de arquitectura y diseño de aplicaciones y es consultor certificado en el Proceso
Unificado.

Más contenido relacionado

La actualidad más candente

Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentes
AndresRealp1
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
enlinea70
 
Monografia top sw
Monografia top swMonografia top sw
Monografia top sw
jamoca25
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
Kleo Jorgee
 
4 1 personalizacion de metodologias
4 1 personalizacion de metodologias4 1 personalizacion de metodologias
4 1 personalizacion de metodologias
landeta_p
 
Aplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificacionesAplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificaciones
edsacun
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
Roberth Loaiza
 
Diseño del software
Diseño del softwareDiseño del software
Diseño del software
duberlisg
 
ers para una pagina de viajes
ers para una pagina de viajesers para una pagina de viajes
ers para una pagina de viajes
Gabriel Gongora
 

La actualidad más candente (20)

Diseño Lógico
Diseño LógicoDiseño Lógico
Diseño Lógico
 
Diseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentesDiseño en-el-nivel-de-componentes
Diseño en-el-nivel-de-componentes
 
Fundamentos del diseño de software
Fundamentos del diseño de software Fundamentos del diseño de software
Fundamentos del diseño de software
 
Arquitecturas
ArquitecturasArquitecturas
Arquitecturas
 
Diseño de Software
Diseño de SoftwareDiseño de Software
Diseño de Software
 
Monografia top sw
Monografia top swMonografia top sw
Monografia top sw
 
DISEÑO LOGICO DE UNA BASE DE DATOS
DISEÑO LOGICO DE UNA BASE DE DATOSDISEÑO LOGICO DE UNA BASE DE DATOS
DISEÑO LOGICO DE UNA BASE DE DATOS
 
Modelado de requisitos
Modelado de requisitosModelado de requisitos
Modelado de requisitos
 
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWAREDISEÑO DE LA ARQUITECTURA DEL SOFTWARE
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE
 
Especificación de Arquitectura de Software
Especificación de Arquitectura de SoftwareEspecificación de Arquitectura de Software
Especificación de Arquitectura de Software
 
4 1 personalizacion de metodologias
4 1 personalizacion de metodologias4 1 personalizacion de metodologias
4 1 personalizacion de metodologias
 
Aplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificacionesAplicaciones del modelo y especificaciones
Aplicaciones del modelo y especificaciones
 
Diseño arquitectónico
Diseño arquitectónicoDiseño arquitectónico
Diseño arquitectónico
 
Fundamentos
FundamentosFundamentos
Fundamentos
 
Vistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de SoftwareVistas Arquitectonicas Ingenieria de Software
Vistas Arquitectonicas Ingenieria de Software
 
Modelos requisitos casos de uso si_investigación
Modelos requisitos casos de uso si_investigaciónModelos requisitos casos de uso si_investigación
Modelos requisitos casos de uso si_investigación
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 
Diseño del software
Diseño del softwareDiseño del software
Diseño del software
 
ers para una pagina de viajes
ers para una pagina de viajesers para una pagina de viajes
ers para una pagina de viajes
 
12.diseño basado en patrones
12.diseño basado en patrones12.diseño basado en patrones
12.diseño basado en patrones
 

Destacado

Elecciones 2012
Elecciones 2012Elecciones 2012
Elecciones 2012
meowingrrr
 
Recomanacions llibres Nadal 2011
Recomanacions llibres Nadal 2011Recomanacions llibres Nadal 2011
Recomanacions llibres Nadal 2011
Practiques2
 
C:\Fakepath\Presencia De Internet
C:\Fakepath\Presencia De InternetC:\Fakepath\Presencia De Internet
C:\Fakepath\Presencia De Internet
cmontu
 
E V O L U C IÓ N ( M U Y C O M P L E T O)(97 2003)
E V O L U C IÓ N ( M U Y  C O M P L E T O)(97  2003)E V O L U C IÓ N ( M U Y  C O M P L E T O)(97  2003)
E V O L U C IÓ N ( M U Y C O M P L E T O)(97 2003)
jaival
 
Programa de Intercâmbio - SENAI
Programa de Intercâmbio - SENAIPrograma de Intercâmbio - SENAI
Programa de Intercâmbio - SENAI
floripahosting
 
Igor e cadu2
Igor e cadu2Igor e cadu2
Igor e cadu2
cehmsc
 
Underwater World
Underwater WorldUnderwater World
Underwater World
Sanja .
 
Circuito das Grutas (MG)
Circuito das Grutas (MG)Circuito das Grutas (MG)
Circuito das Grutas (MG)
Sylvio Bazote
 
Doc1
Doc1Doc1
Doc1
jsa81
 

Destacado (20)

Elecciones 2012
Elecciones 2012Elecciones 2012
Elecciones 2012
 
Recomanacions llibres Nadal 2011
Recomanacions llibres Nadal 2011Recomanacions llibres Nadal 2011
Recomanacions llibres Nadal 2011
 
C:\Fakepath\Presencia De Internet
C:\Fakepath\Presencia De InternetC:\Fakepath\Presencia De Internet
C:\Fakepath\Presencia De Internet
 
Convite comício
Convite comícioConvite comício
Convite comício
 
El Computador y sus componentes
El Computador y sus componentesEl Computador y sus componentes
El Computador y sus componentes
 
Fem tastets
Fem tastetsFem tastets
Fem tastets
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
E V O L U C IÓ N ( M U Y C O M P L E T O)(97 2003)
E V O L U C IÓ N ( M U Y  C O M P L E T O)(97  2003)E V O L U C IÓ N ( M U Y  C O M P L E T O)(97  2003)
E V O L U C IÓ N ( M U Y C O M P L E T O)(97 2003)
 
Programa de Intercâmbio - SENAI
Programa de Intercâmbio - SENAIPrograma de Intercâmbio - SENAI
Programa de Intercâmbio - SENAI
 
Igor e cadu2
Igor e cadu2Igor e cadu2
Igor e cadu2
 
Graffiti
GraffitiGraffiti
Graffiti
 
Union p n
Union p nUnion p n
Union p n
 
ANTISEPSIA. CLASE I. Prof. Dr. Luis del Rio Diez
ANTISEPSIA. CLASE I. Prof. Dr. Luis del Rio DiezANTISEPSIA. CLASE I. Prof. Dr. Luis del Rio Diez
ANTISEPSIA. CLASE I. Prof. Dr. Luis del Rio Diez
 
Perspectivas Residencial Molini
Perspectivas Residencial MoliniPerspectivas Residencial Molini
Perspectivas Residencial Molini
 
Ventura?
Ventura?Ventura?
Ventura?
 
Underwater World
Underwater WorldUnderwater World
Underwater World
 
Organizadores
OrganizadoresOrganizadores
Organizadores
 
Circuito das Grutas (MG)
Circuito das Grutas (MG)Circuito das Grutas (MG)
Circuito das Grutas (MG)
 
Anamnesi1
Anamnesi1Anamnesi1
Anamnesi1
 
Doc1
Doc1Doc1
Doc1
 

Similar a 210452 arquitectura-de-software-adrian-lasso

diseño lógico y diseño físico
diseño lógico y diseño físicodiseño lógico y diseño físico
diseño lógico y diseño físico
errroman
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Software
lcastillo110
 
Análisis y diseño de sistemas
Análisis y diseño de sistemas Análisis y diseño de sistemas
Análisis y diseño de sistemas
Kimi Garcia
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De Sistemas
Sergio Sanchez
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Avanet
 

Similar a 210452 arquitectura-de-software-adrian-lasso (20)

diseño lógico y diseño físico
diseño lógico y diseño físicodiseño lógico y diseño físico
diseño lógico y diseño físico
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
DiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del SoftwareDiseñO Del Software E IngenieríA Del Software
DiseñO Del Software E IngenieríA Del Software
 
Tema 4: Diseño arquitectónico de software
Tema 4: Diseño arquitectónico de softwareTema 4: Diseño arquitectónico de software
Tema 4: Diseño arquitectónico de software
 
Manual de sistema
Manual de sistemaManual de sistema
Manual de sistema
 
Software exposicion
Software exposicionSoftware exposicion
Software exposicion
 
9.diseño de la arquitectura
9.diseño de la arquitectura9.diseño de la arquitectura
9.diseño de la arquitectura
 
Análisis y diseño de sistemas
Análisis y diseño de sistemas Análisis y diseño de sistemas
Análisis y diseño de sistemas
 
Unidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De SistemasUnidad 2.1 DiseñO De Sistemas
Unidad 2.1 DiseñO De Sistemas
 
Unidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptxUnidad 2 - Arquitectura.pptx
Unidad 2 - Arquitectura.pptx
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
MVC.ppt
MVC.pptMVC.ppt
MVC.ppt
 
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
Taller Campus Party 2011: Desarrollo de Aplicaciones con .NET (Sesión 2)
 
Arquitectura de software.docx
Arquitectura de software.docxArquitectura de software.docx
Arquitectura de software.docx
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
Ingenieria de requerimientos
Ingenieria de requerimientos Ingenieria de requerimientos
Ingenieria de requerimientos
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
 
Framework
FrameworkFramework
Framework
 
Sistema distribuido
Sistema distribuido Sistema distribuido
Sistema distribuido
 

210452 arquitectura-de-software-adrian-lasso

  • 1. Arquitectura de Software Adrián Lasso, MVP alasso@baufest.com Motivación Hace un tiempo atrás, al comenzar un proyecto de desarrollo en .NET para un cliente, en las primeras reuniones con la gerencia de sistemas y los usuarios, planteo la necesidad de crear un documento de arquitectura de la solución, inmediatamente me responden que no hacia falta ya que la arquitectura estaba definida. Personal de sistemas de mi cliente me describe la arquitectura que debería seguir el nuevo sistema a desarrollar, que puede resumirse con el diagrama de la Figura 1 para un mejor entendimiento: Lo que me explicaban, es que ya estaba decidido que el sistema tendría una Arquitectura Web basada en plataforma Microsoft, o sea, un cliente usando un Internet Explorer 6.0, un servidor corriendo IIS y los componentes de sistema desarrollados en ASP.NET accediendo a otro servidor que contendría los datos dentro de un SQL Server. Después de haber escuchado atentamente la explicación, aunque hubiese sido mejor que mi cliente tuviese un diagrama como el de arriba, comencé a explicarles que en realidad lo que me habían contado era solo una vista de lo que se entiende por arquitectura de un sistema. No era la primera vez que me ocurría en este tipo de situación ya que existe poca difusión sobre el tema y a raíz de eso se me surgió la idea de este artículo. Las Vistas de la Arquitectura de una Aplicación Lo primero que quiero contar es que la Arquitectura de una Aplicación es una de las posibles perspectivas de una Arquitectura Corporativa. ¿Cómo? ¿Otra arquitectura más?
  • 2. Si claro, una aplicación vive dentro de una organización y ésta tiene un arquitectura que describe su estructura y funciones. La idea es describir la estructura de "sistemas" con modelos que describan la visión que tienen los distintos interesados o stakeholders de la organización, para poder usar, planificar y tomar decisiones mejores sobre temas de tecnología informática. Entonces, y para ir de lo general a lo particular, para una organización cualquiera, se puede hablar de la arquitectura informática de la misma desde distintas perspectivas y algunas de ellas son: • Negocio: Describe el funcionamiento interno del negocio central de la organización. • Aplicación: Muestra las aplicaciones de la organización, su funcionalidad y relaciones. • Información: Describe la información que maneja la organización y cómo está ligada a los circuitos de trabajo. • Tecnología: Describe la estructura de hardware y software de base que da soporte informático a la organización. Es importante recalcar que estas perspectivas son las que tienen los interesados de la organización o empresa, de esta manera, queda claro que habrá interesados en el negocio y su funcionamiento, las aplicaciones y sus relaciones, la información (los datos) que maneja la organización y la tecnología (hardware y software de base) que da sustento informático. Volviendo a mi cliente, lo que me había contando es en realidad, una de las posibles de vistas de la arquitectura de una aplicación. En particular la descripción que hizo es más bien una visión "física" de la solución, o sea, de la infraestructura de hardware con algunos detalles del software de base en la que debíamos basar el desarrollo. Otras de las posibles vistas de la arquitectura de una aplicación serían: • Vista Conceptual. • Vista Lógica. • Vista Física. • Vista de Implementación. Al desarrollar una aplicación puede ser de gran valor describir estas vistas dentro de un documento de arquitectura. La notación que más ampliamente se está utilizando es el Lenguaje Unificado de Modelado o UML de sus siglas en inglés. Vista Conceptual La arquitectura de una aplicación está guiada, en gran medida, por los requerimientos (funcionales y no-funcionales) que debe cubrir el sistema y normalmente se toma el subconjunto más arquitectónicamente importante de dichos requerimientos para definirla. La vista conceptual es usada para definir los requerimientos funcionales y la visión que los usuarios del negocio tienen de la aplicación y describir el modelo de negocio que la arquitectura debe cubrir. Si se está usando el Proceso Unificado como
  • 3. metodología de desarrollo, esta vista estará descripta en términos de Casos de Uso, Diagramas de Actividad, Procesos de Negocio, Entidades del Negocio, etc. que definen la funcionalidad que la aplicación deberá brindar. Esta vista muestra los subsistemas y módulos en los que se divide la aplicación y la funcionalidad que brinda dentro de cada uno de ellos. En términos de UML, un ejemplo podría ser el que se muestra en la Figura 2. En el ejemplo vemos la agrupación funcional de casos de uso en paquetes que, normalmente, siguen la descomposición jerárquica de la empresa u organización. Al documentar esta vista, los casos de uso que se incluyen son aquellos que representan algo funcionalmente significativo, o si tienen impacto en elementos de la arquitectura general (estresan o ilustran algún punto delicado). Vista Lógica Muestra los componentes principales de diseño y sus relaciones de forma independiente de los detalles técnicos y de cómo la funcionalidad será implementada en la plataforma de ejecución (ejemplo, .NET Framework). Los arquitectos crean modelos de diseño de la aplicación, los cuales son vistas lógicas del modelo funcional y que describen la solución. Se describe la solución en términos de paquetes y clases de diseño. Siguiendo el supuesto de que se está usando el Proceso Unificado, dentro de esta vista se describe la Realización de los Casos de Uso, subsistemas, paquetes y clases de los casos de uso más significativos arquitectónicamente. La Figura 3 muestra este tipo de descripción.
  • 4. En la actualidad, uno de los patrones de diseño más utilizado para cualquier tipo aplicaciones es el de Capas (Layers en inglés) donde, básicamente, se divide los elementos de diseño en paquetes de Interfaz de Usuario, Lógica de Negocio y Acceso a Datos y Servicios. La Figura 4 muestra una posible partición utilizando este patrón de diseño. En el siguiente gráfico se pueden ver los paquetes de la capa de Interfaz del Usuario de color ladrillo, los paquetes de la capa de Lógica del Negocio en color amarillo y finalmente, los paquete de la capa de Acceso a Datos de color Gris.
  • 5. Esta es una de las posibles divisiones en capas, podrían existir otras un poco más completas e incluso una que defina mayor cantidad de capas. Dado que este es un modelo de diseño, cabe destacar que ésta es una división lógica, no se especifica en que procesador "vivirá" cada uno de los paquetes. Esto se muestra en la vista de implementación. Vista Física Esta vista ilustra la distribución del procesamiento entre los distintos equipos que conforman la solución, incluyendo los servicios y procesos de base. Los elementos definidos en la vista lógica se "mapean" a componentes de software (servicios, procesos, etc.) o de hardware que definen más precisamente como se ejecutará la solución. La Figura 5 es un ejemplo mostrando una vista física. En el gráfico se muestra una solución Web con tres nodos procesadores, Clientes, Servidor Web y Servidor de Base de Datos. Dentro de los nodos se ejecutan procesos, servicios y/o componentes y sus relaciones de dependencia, por ejemplo, el Internet Explorer "muestra" la página HTML que corresponde a la presentación o Interfaz del Usuario de la aplicación. Vista de Implementación Finalmente la vista de implementación describe cómo se implementan los componentes físicos mostrados en vista de distribución agrupándolos en subsistemas organizados en capas y jerarquías, ilustra, además las dependencias entre éstos. Básicamente, se describe el mapeo desde los paquetes y clases del modelo de diseño a subsistemas y componentes físicos.
  • 6. En Figura 6 tenemos un ejemplo que muestra cómo un patrón de diseño en capas (lógicas) puede "mapearse" a una implementación física del tipo "cliente delgado", donde el desarrollador deberá programar 5 componentes físicos, una página ASPX que contenga la Interfaz de Usuario para el Pedido, un componente ASPX.cs de "Code Behind" que actúa como lógica de la Interfaz de Usuario, un componente DLL que contendrá la fachada del Pedido y otra DLL que contendrá las entidades del negocio (Producto, Pedido, etc.). Por último deberá programar o hacer uso de una componente DLL que contenga la funcionalidad de Acceso a Datos. Conclusión El tema de la arquitectura tomó mucha preponderancia es los últimos años como algo clave a la hora de diseñar una solución informática. Lo importante es comprender que para la arquitectura existen varias perspectivas y que dentro de estás podemos mostrar vistas dependiendo de los puntos de vista interesados en la misma y qué, al diseñar una solución debemos pensar en ellos y dejar plasmado en algún documento las decisiones arquitectónicas que tomamos. Ah, me olvidaba, mi cliente luego de la explicación sobre las distintas vistas de la arquitectura, se dio cuenta de la necesidad de definir una arquitectura que tuviera en cuenta las visiones de otros interesados. Diseñamos los distintos mecanismos de arquitectura y los plasmamos en un documento de arquitectura que nos sirvió y nos sirve mucho a todos los involucrados con el desarrollo.
  • 7. Por último me parece útil comentar que todos los gráficos de este documento fueron realizados con el esténcil de Modelado con UML de Microsoft Visio. Este esténcil tiene la particularidad de crear modelos y no solo diagramas, genera código para C#, Visual Basic.NET y C++, y otras capacidades que merecen una visita al sitio de Visio. Agradezco a mis colegas de Baufest, Enrique Vetere y Pablo Rodriguez su colaboración en la revisión e ideas para este articulo. Referencias útiles • Centro de Architecture .NET en MSDN - http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en- us/dnea/html/eaarchover.asp • Para una introducción complementaria ver: Microsoft Architecture Overview - http://msdn.microsoft.com/architecture/default.aspx?pull=/library/en- us/dnea/html/eaarchover.asp • Para temas más teóricos y donde encontraran más links: Institute For Enterprise Architecture - http://www.enterprise-architecture.info/index.htm Adrián Lasso (alasso@baufest.com) es vicepresidente de Baufest empresa Argentina especializada en consultoría en Ingeniería de Software y el desarrollo de sistema a medida para grandes empresas. Cuenta con más de 15 años de experiencia en el desarrollo de aplicaciones corporativas y desde 1990 está especializado en UML, temas de arquitectura y diseño de aplicaciones y es consultor certificado en el Proceso Unificado.