lunes, 30 de octubre de 2017

Arquitectura de software - Parte 4 (fin)

¡Hola a todos!

Para continuar con la cuarta y última parte sobre Arquitectura de Software me centraré en los temas Arquitecturas Orientadas a Servicios y Evaluaciones de Arquitecturas.

Tiempo de lectura estimado: 8-9 minutos.

Antes de comenzar, me gustaría recordar que en la parte anterior (parte 3) sobre Arquitectura de Software vimos Representación de la Arquitectura (Viewpoints, Views, Perspectives, SAD) y Patrones de Arquitectura (Contexto + Problema  + Solución, ej. Broker). Sigamos ahora con estos dos últimos temas: SOA y Evaluaciones.

Arquitectura Orientada a Servicios

La puesta en práctica del paradigma Service Oriented Computing (SOC) requiere la implementación de una Service Oriented Architecture (SOA).

SOC es un paradigma de computación que utiliza servicios como elementos fundamentales para dar soporte al desarrollo rápido y de bajo costo, de aplicaciones distribuidas en ambientes heterogéneos.

SOA es una forma lógica de diseñar un sistema de software para proveer servicios a usuarios finales, aplicaciones u otros servicios, a través de interfaces públicas que pueden ser descubiertas.
Algunas características de este tipo de arquitecturas son:
  • Los servicios se mapean a funcionalidades de negocio
  • Cada servicio tiene una interfaz bien definida que le permite ser publicado, descubierto e invocado
  • Una organización puede publicar sus servicios de forma externa, para interactuar con sus socios de negocio, o de forma interna a la organización
  • Debe cumplir con principios tales como Contratos estandarizados, Abstracción, Reusabilidad, Autonomía

viernes, 20 de octubre de 2017

Arquitectura de software - Parte 3

¡Hola a todos!

Para continuar con la tercera (y penúltima) parte sobre Arquitectura de Software me centraté en la Representación de la Arquitectura y Patrones de Arquitectura.

Tiempo de lectura estimado: 8-9 minutos.

Antes de comenzar, me gustaría recordar que en la parte anterior (parte 2) sobre Arquitectura de Software vimos cómo debería ser nuestro Proceso de definición de la Arquitectura y los distintos Atributos de calidad. Sigamos ahora con los temas Representación y Patrones.

Representación de la arquitectura

La Representación de la arquitectura se basa en los conceptos de Puntos de vista (Viewpoints) y Vistas (Views). La motivación de realizar una representación de la arquitectura basada en estos dos conceptos es que no es posible capturar los aspectos funcionales y propiedades de calidad de un sistema complejo en un modelo simple, comprensible y de valor para todos los stakeholders. Un sistema complejo es más efectivo describirlo utilizando un conjunto de vistas interrelacionadas que lo ilustren colectivamente.

Una view es una representación de uno o más aspectos estructurales de una arquitectura que ilustra como la arquitectura lleva adelante uno o más concerns de uno o más stakeholders.
Un viewpoint es una colección de patrones, plantillas y convenciones para la construcción de una vista.

viernes, 13 de octubre de 2017

Arquitectura de software - Parte 2

¡Hola a todos!

Para continuar con la segunda parte sobre Arquitectura de Software me centraté en el Proceso de definición y los distintos Atributos de calidad de la Arquitectura.

Tiempo de lectura estimado: 5-6 minutos.

Antes de comenzar, me gustaría recordar que en la primer parte sobre Arquitectura de Software vimos como introducción a la temática una definición de arquitectura, su propósito, quienes la influencian y finalmente el rol del arquitecto. Sigamos ahora con el proceso de definición de la arquitectura y sus atributos de calidad.

El Proceso de Definición de la Arquitectura es el proceso en el que deberíamos capturar las necesidades de los stakeholders, diseñar una arquitectura que cumpla con esas necesidades y describirla claramente sin ambigüedades.

Como arquitectos deberíamos resolver qué es significativo para la arquitectura y que no. Podríamos decir que algo es significativo para la arquitectura si tiene un impacto en la estructura del sistema o en las propiedades de calidad más importantes.

viernes, 6 de octubre de 2017

Arquitectura de software - Parte 1

¡Hola a todos!

Tal como mencioné en el post anterior hoy comenzaré con un acercamiento al tema Arquitectura de software. Como introducción voy a compartir una definición de arquitectura, siguiendo por cual es su propósito, quienes la influencian y finalmente el rol del arquitecto.

Tiempo de lectura estimado: 5-6 minutos.

Una de las definiciones modernas de arquitectura de software y que a mi entender es simple y clara es la del Software Engineering Institute (SEI) de la Universidad de Carnegie-Mellon “...es la estructura o estructuras del sistema, que comprende elementos de software, las propiedades visibles externamente de dichos elementos y la relación entre ellos”, basada en el libro Software Architecture in Practice.
Desde una visión no tan conceptual, se puede decir que la arquitectura es estructura y comportamiento, se enfoca en elementos significativos o relevantes, se presenta a un alto nivel de abstracción, está presente en cualquier sistema y balancea necesidades de los involucrados.
Su propósito es comprender el sistema y organizar el desarrollo, fomentar la reutilización de componentes y facilitar la evolución del sistema

Generalmente, la arquitectura se ve influenciada por distintos factores que afectan significativamente tanto su definición como su mantenimiento, algunos de ellos se pueden clasificar en:
  • los stakeholders (involucrados)
  • la organización que desarrolla el sistema
  • el ambiente tecnológico 
  • la experiencia del arquitecto