Trabajo Práctico Final | Introducción a la Arquitectura de Software   Maestría en Tecnología de la Información | Universidad de Palermo | Argentina 1

La Arquitectura Orientada a Servicios y las Metodologías Ágiles  
Juan Carlos Jiménez Lozano
Resumen - El siguiente trabajo de investigación tiene como objetivo presentar el concepto de las Arquitecturas Orientadas a Servicios (SOA) y dar a conocer las ventajas que tiene el adoptar este paradigma para el desarrollo de sistemas integrados basados en componentes, así mismo, mostrar la manera de combinar las prácticas de las Metodologías Ágiles con los principios de SOA para diseñar y construir servicios empresariales. Palabras Clave: arquitectura de software, desarrollo, metodologías ágiles, SOA

II. ¿QUÉ ES SOA?
Existen algunas definiciones de SOA, cada una tiene frases e ideas similares, contextos diferentes y niveles de abstracción; pero todas concuerdan que SOA es un paradigma para mejorar la flexibilidad de los sistemas. Definición 1 “La arquitectura orientada a servicios, es un concepto de arquitectura de software que define la utilización de servicios para dar soporte a los requisitos del negocio. Permite la creación de sistemas de información altamente escalables que reflejan el negocio de la organización, a su vez brinda una forma bien definida de exposición e invocación de servicios, lo cual facilita la interacción entre diferentes sistemas propios o de terceros” [1] Definición 2 “SOA es un paradigma o estilo de arquitectura que se basa en la creación de un conjunto de servicios, de diferente granularidad, entre los procesos de negocio y las aplicaciones” [2] Definición 3 “SOA es un modelo de componentes, cuyas funcionalidades están implementadas como servicios reutilizables, independientes y con un grado mínimo de acople” [3] De estas tres definiciones se derivan estos retos para los arquitectos de software:

I. INTRODUCCIÓN

L

as actuales exigencias de las empresas hacia las áreas de TI para mejorar el desempeño del negocio, han incrementado la demanda para la creación de sistemas de alta complejidad, calidad y con la menor inversión posible, usando la mejor tecnología y las mejores prácticas en el desarrollo de software. Es por esto que debe existir un lenguaje común entre los objetivos del negocio y TI, para que la empresa sea altamente competitiva y llevar procesos simplificados. SOA presenta un estilo arquitectónico basado en la integración y comunicación unificada de sistemas ya sea de igual o diferente tecnología con el fin de mejorar los canales de comunicación y simplificar tareas que requieran obtener información de distintos sistemas.[1] Por otro lado, las metodologías ágiles buscan que todos los esfuerzos se concentren en entregar el mejor producto de software para satisfacer las necesidades del cliente y en un corto tiempo, utilizando iteraciones y componentes funcionales que demuestren que el proyecto está en un proceso de crecimiento y madurez.[8] Al combinar estos dos acercamientos productivos, se puede tener una herramienta muy eficiente y poderosa, para incrementar el desempeño del negocio, enfocados en resultados a corto plazo.

¿Cómo se puede diseñar un sistema que tenga: un buen ajuste entre los procesos y objetivos del negocio y la arquitectura de TI? ¿Cómo se puede construir una arquitectura que sea capaz de responder a cambios futuros? Este reto se involucra en el contexto de las metodologías ágiles.

procesamiento de transacciones. etc. nos referimos a un juego de servicios residentes en Internet o en una Intranet usando servicios web (Web Services). Componentes de SOA Los componentes principales en SOA son [1]: • • B. METODOLOGÍAS ÁGILES En febrero de 2001 se reunieron 17 expertos en el desarrollo de software y decidieron plantear un Manifiesto Ágil para resolver el problema del desarrollo de software tradicional: • La operación Publicar es. WSDL. El Consumidor de Servicios o Service Requestor: La función que consume el resultado del servicio provisto por un proveedor El Coordinador de Servicios o Service Broker: Su rol es permitir el ajuste entre los proveedores de servicios y los consumidores. 1. • • • El Proveedor de Servicios o Service Provider: La función que brinda un servicio en respuesta a una llamada o petición desde un consumidor. Un servicio web incluye tres componentes básicos: 1) Un mecanismo para encontrar y publicar un servicio. el Consumidor de Servicios establece un criterio de búsqueda. etc. una vez que se encuentra el servicio buscado. registrar una descripción del servicio al Coordinador. El diseño de SOA está enfocado hacia la interface del servicio. A. las interacciones se realizan directamente entre el proveedor y el solicitante del servicio. DEFINICIÓN DE LAS Fig. deben orientarse ellos mismos a esta mentalidad de crear servicios comunes que son orquestados por clientes o middleware para implementar los procesos de negocio e intercambiar información con cada sistema en particular. como puede ser el tipo de servicio. Y el Coordinador se encarga de corresponder los criterios de búsqueda con la descripción de servicios publicadas. lo . La operación de Enlazar crea la relación cliente-servidor entre el consumidor y el proveedor de servicios. SOA proporciona a los arquitectos una metodología y un marco de trabajo. Para cumplir estos retos. para documentar las capacidades de negocio y poder dar soporte a las actividades de integración y consolidación. etc. SOAP. tenemos: XML. Los detalles de esta operación dependen de cómo se encuentre implementado el coordinador de servicios.Trabajo Práctico Final | Introducción a la Arquitectura de Software   Maestría en Tecnología de la Información | Universidad de Palermo | Argentina 2 cual permite publicitarlo a toda la comunidad de potenciales consumidores de este servicio. la calidad. 2) Definición de parámetros de input y output del servicio. En la operación de Buscar. Los componentes de SOA y las operaciones que se realizan entre ellos garantizan que las funciones de un servicio se encuentren disponibles al momento que se requiera utilizar o consumir por un cliente. 3) Un mecanismo de transporte para acceder al servicio Así mismo un web service puede incluir otras tecnologías para proveer mejoras en la seguridad de la información. uno de ellos son los plugins del IDE Eclipse para trabajar con Apache Axis (una implementación del protocolo SOAP basado en Java). Los desarrolladores de software. Este servicio puede ser invocado sobre una red de datos (internet o intranet) y puede ser utilizado para diferentes contextos de negocio. generación de archivos (servicios asíncronos). edición y procesamiento de transacciones. HTTP. UDDI [1] En la actualidad la mayoría de entornos de desarrollo integrado (IDEs) cuentan con herramientas automatizadas para facilitar el desarrollo e implementación de web services. que permite la creación automática de todos los componentes y conectores necesarios para diseñar y publicar un web service. parámetros del servicio. Entre algunos de los estándares que se manejan en los web services. Web Services Cuando hablamos de arquitecturas orientadas a servicios. III.

los cuales especifican la importancia de generar entregas tempranas y continuas de software al cliente. es el criterio principal para la aceptación de los entregables. [4] De este manifiesto se derivaron 12 principios básicos de la filosofía de las metodologías ágiles. Básicamente las metodologías ágiles. • Todos los cambios durante el desarrollo son reversibles. valoramos más los de la izquierda. entre otras técnicas. etc. Entre las prácticas comunes de Scrum tenemos: • Auto organización y dirección del equipo. con el fin de minimizar riesgos en la toma de decisiones a largo plazo y al final de cada iteración entregar un producto probado y funcional. • B. Extreme Programming( XP) XP se enfoca en la colaboración. • El acercamiento colaborativo y cooperativo con los stakeholders es esencial. la simplicidad. los formas de comunicación entre el equipo de desarrollo. iteraciones semanales. • El testing es integrado durante el ciclo de vida. La metodología se enfoca también en los stakeholders que están involucrados directamente en el desarrollo. análisis de requerimientos.[6] A. • La meta es la entrega frecuente de productos. Para esto se utiliza un registro global de los requisitos del usuario con valores funcionales y no funcionales. en la creación temprana y rápida de software. integración continua. • Aptitud para el negocio. A continuación de define brevemente las metodologías ágiles comúnmente utilizadas y sobretodo enfocando sus objetivos hacia la arquitectura orientada a servicios. codificación. Se preocupa por el aprendizaje de los desarrolladores y propiciar un buen clima de trabajo[5]. Método de desarrollo de sistemas dinámicos El MDSD provee un framework para el control de la construcción y mantenimiento de sistemas que cumple estrictas restricciones de tiempo y ofrece una solución para el éxito del Desarrollo Rápido de Aplicaciones RAD. diseño. projects managers. participación real de los clientes. MDSD se basa en estos principios: • Participación imprescindible de los usuarios activos. la atención y mejora continua. diseño incremental. personal de QA. A través de este trabajo hemos aprendido a valorar: Individuos e interacciones sobre procesos y herramientas Software funcionando sobre documentación extensiva Colaboración con el cliente sobre negociación contractual Respuesta ante el cambio sobre seguir un plan Esto es. • Reuniones diarias. C. SCRUM Scrum es un proceso ágil que utiliza iteraciones y prácticas incrementales para administrar y controlar el desarrollo de productos de software complejo. aprovechar los cambios en las diferentes etapas de desarrollo. En un ambiente donde exista un compromiso a nivel empresarial es importante entender y manejar las dependencias entre proyectos. revisión y documentación. análisis de causas.Trabajo Práctico Final | Introducción a la Arquitectura de Software   Maestría en Tecnología de la Información | Universidad de Palermo | Argentina 3 Manifiesto Ágil Estamos descubriendo formas mejores de desarrollar software tanto por nuestra propia experiencia como ayudando a terceros. el trabajo en equipo. • La entrega de demos a los clientes al final de cada iteración. proponen un modelo de desarrollo basado en iteraciones a lo largo de todo el ciclo de vida del proyecto. la auto-organización y promover el desarrollo sostenible. Esto es debido a que se aplican prácticas primarias como: programación en pares. • Los equipos del MDSD deben tener la facultad de tomar decisiones. Las iteraciones incluyen: planificación. y avanzadas cualidades técnicas. • Desarrollo iterativo e incremental para poder ajustar la solución de acuerdo a lo que el cliente necesita. utilizando preguntas concretas y directas a todos los miembros del grupo de desarrollo. • Iteraciones de 30 días Al inicio de cada iteración una reunión con el cliente. estos pueden ser: los usuarios. compartir código. aunque valoramos los elementos de la derecha. La metodología XP es adecuada para proyectos con requisitos imprecisos y muy cambiantes donde existe un alto riesgo técnico. .

para la agilizar el proceso de entrega de funcionalidades. mediante la simplificación de procesos de comunicación punto a punto. Decidir lo más tarde posible: Significa dejar los detalles de la interfaz del servicio abiertos hasta que se tenga una clara muestra de lo que debe hacer. En la mayoría de proyectos empresariales. y definir un punto de aprendizaje para implementar nuevos servicios. la dependencia es un concepto básico de integración. Con esto los desarrolladores pueden asegurarse que están diseñando el servicio de acuerdo a los requerimientos que el negocio solicita. es por esto que la sincronización de proyectos es útil en la fase de implementación. Lean Software Development (LSD) Es un método de desarrollo de software. El objetivo es enfocarse en los procesos y servicios que generan más valor para la organización. El mapeo de la cadena de valor es una técnica para detectar de forma sistemática los productos que son de valor para el cliente en lugar de organizaciones. Eliminar Desperdicios: Al momento de diseñar una arquitectura de servicios se debe separar entre lo importante y lo que se va a desechar. Promover la integridad: Asegurar vínculos estrechos entre los procesos de negocio y los servicios de TI. Asegurarse que los servicios desarrollados son capaces de entregar la Calidad de Servicio (QoS) esperada. ya que es donde se analizan en detalle los servicios y están expuestos a cambios en el alcance. Colaboración) permiten crear pequeñas unidades de trabajo y alto rendimiento. estos prototipos están basados en los procesos básicos del negocio. es decir trabajar sobre los mismos conceptos. . estos principios fundamentales son aplicados para mejorar el desarrollo de software.[6] A continuación se presenta un análisis de cómo ejecutar los procesos de SOA aplicando los principios de LSD. sin importar qué metodología o arquitectura se esté utilizando. 4. Por un lado SOA utiliza los servicios como bloques de construcción para las aplicaciones y requiere que se defina una arquitectura formal para su implementación. Responsabilidad. y utilizar la IV. sin embargo ambos conceptos poseen ciertas discrepancias al momento de implementar una solución. basado en principios de la industria de manufactura. se incrementa la capacidad de entrega de servicios y las responsabilidades no se centran en las decisiones del responsable del proyecto. mientras que las metodologías ágiles proponen prácticas para la comunicación constante y feedback. Se analizan los procesos del negocio(que van ser soportado por SOA) o el proceso 3. empezando por obtener una visión general del modelo de negocios antes de entrar a los detalles. Se puede crear pequeñas interfaces funcionales. 6. Entregar lo más rápido posible: En un ambiente SOA se pueden utilizar tarjetas para escribir las historias de los usuarios y servicios. activos o tecnologías. Crear un simple modelo económico de compromiso y utilizarlo para orientar las decisiones de desarrollo. en lugar de pretender conocer todo su funcionamiento. evitar construir inventarios de documentación de análisis detallada y enfocarse en diseñar un portafolio general de los servicios que se va a construir. 1. Algunos autores[6] – [7].Trabajo Práctico Final | Introducción a la Arquitectura de Software   Maestría en Tecnología de la Información | Universidad de Palermo | Argentina 4 de desarrollo de software (para desarrollar la SOA) Incrementar aprendizaje: El feedback ayuda a definir la reutilización de los servicios. 5. proponen una analogía que dice “Intentar combinar SOA y Metodologías ágiles resulta como mezclar agua y aceite” pero existen técnicas que afirman que estos conceptos se pueden mezclar entre si. esto permite dar a entender a los desarrolladores lo que es importante para el negocio. LA COMBINACIÓN DE SOA Y LAS METODOLOGÍAS ÁGILES 2. Tanto SOA como las metodologías ágiles tienen como meta desarrollar productos adaptables para sistemas de IT empresariales. A. Capacitar al equipo: Capacitando y delegando las decisiones de diseño de nivel micro para el profesional responsable de entregar un servicio SOA. que propone “Identificar y eliminar desperdicios a través del mejoramiento continuo y reducir defectos y ciclos de tiempo mientras se entrega un flujo constante de valor incremental para el negocio”. además de no utilizar métodos formales para la fase de análisis y diseño dentro un ciclo de vida de un sistema. para obtener feedback de utilización de los usuarios o aplicaciones. esto mejora la integración del equipo de desarrollo con la compañía y mejora el diseño del modelo del servicio. La utilización de tableros de control y tarjetas SRC (Servicio.

infoq. “Desarrollo ágil de software”. los proyectos ágiles están preparados para cambios en las interfaces que estén obligados a implementar. se pude decir que los principios de LSD. Ver todo el entorno: La naturaleza de SOA está enfocada a un ambiente empresarial. “SOA and Agile: Friends or Foes?”. la fácil adaptación de mejoras y la reutilización de componentes para nuevos servicios.org/iso/es/ Ágil.Trabajo Práctico Final | Introducción a la Arquitectura de Software   Maestría en Tecnología de la Información | Universidad de Palermo | Argentina 5 refactorización de código o arquitectura con ayuda de un modelo de servicios. “Service-Oriented Agility: An initial analysis for use of Agile methods for SOA development” .wikipedia. Inc. http://es. Nicolai M.com/articles/SOA-AgileFriends-Or-Foes [8] Wikipedia. CONCLUSIONES Un proyecto de SOA puede resultar altamente beneficiado con la aplicación de las metodologías ágiles y las prácticas de LSD. ambos conceptos se enfocan al cambio y la mejora continua. “Un enfoque teórico e intuitivo a la arquitectura orientada a servicios (SOA)” [4] El Manifiesto http://agilemanifesto. La técnica de refactorización continua significa modificar constantemente las interfaces y los componentes del servicio.extremeprogramming. se tiene un modelo de madurez continua. REFERENCIAS [1] Wikipedia. lo cual implica aplicar las mejores prácticas para asegurar que la identificación y orquestación del equipo se encuentra estrechamente alineada con el núcleo del proceso de negocio. La creación de prototipos para las interfaces de los servicios se debe considerar como un requisito para la implementación de un sistema SOA. 2007 [3] Astorga. Como conclusión final.org/wiki/Desarrollo_ágil_de_soft ware 7. [5] Extreme Programming. http://es.org/wiki/Arquitectura_orientada_ a_servicios [2] Josuttis.org [6] Krogdahl. V. Luef. Steindl. [7] Elsammadisy Ami. “SOA in Practice”.wikipedia. permiten la mezcla entre estos dos conceptos. la principal ventaja es la entrega de un producto funcional que gracias al feedback que se reciba de los consumidores del servicio. http://www. O ́Reilly Media. Agosto. http://www. VI. “Arquitectura Orientada a Servicios”. Julian y Quiróz Juan.

Sign up to vote on this title
UsefulNot useful