EL PROCESO UNIFICADO EST CENTRADO EN LA ARQUITECTURA

  • Slides: 21
Download presentation
EL PROCESO UNIFICADO ESTÁ CENTRADO EN LA ARQUITECTURA

EL PROCESO UNIFICADO ESTÁ CENTRADO EN LA ARQUITECTURA

ÍNDICE � ¿Por qué es necesaria la arquitectura? � Comprensión del sistema � Organización

ÍNDICE � ¿Por qué es necesaria la arquitectura? � Comprensión del sistema � Organización del desarrollo � Fomento de la reutilización � Evolución del sistema � Casos de uso y arquitectura

¿POR QUÉ ES NECESARIA LA ARQUITECTURA? Se necesita una arquitectura para: � Comprender el

¿POR QUÉ ES NECESARIA LA ARQUITECTURA? Se necesita una arquitectura para: � Comprender el sistema. � Organizar el desarrollo. � Fomentar la reutilización. � Hacer evolucionar el sistema. Regresar

COMPRENSIÓN DEL SISTEMA Para que una organización desarrolle un sistema, dicho sistema debe ser

COMPRENSIÓN DEL SISTEMA Para que una organización desarrolle un sistema, dicho sistema debe ser comprendido por todos los que vayan a intervenir en él. El hacer que los sistemas modernos sean comprensibles es un reto importante por muchas razones: – – – Abarcan un comportamiento complejo. Operan en entornos complejos. Son tecnológicamente complejos. A menudo combinan computación distribuida, productos y plataformas comerciales (como sistemas operativos y sistemas gestores de bases de datos) y reutilizan componentes y marcos de trabajo. Deben satisfacer demandas individuales y de la organización. En algunos casos son tan grandes que la dirección tiene que dividir el trabajo de desarrollo en varios proyectos, que están a menudo separados geográficamente, añadiendo dificultades a la hora de coordinarlos.

COMPRENSIÓN DEL SISTEMA • • • Por otra parte, estos factores cambian constantemente. Todo

COMPRENSIÓN DEL SISTEMA • • • Por otra parte, estos factores cambian constantemente. Todo esto añade dificultad potencial para comprender la situación. Para realizar un desarrollo centrado en la arquitectura hay que prevenir estos fallos en la compresión del sistema. Por consiguiente, el primer requisito que tiene lugar en una descripción de la arquitectura es que se debe capacitar a los desarrolladores, directivos, clientes y otros usuarios para comprender qué se está haciendo con suficiente detalle como para facilitar su propia participación. Los modelos y diagramas que mencionamos en el Capítulo 3 ayudan a esto, y deben utilizarse para describir la arquitectura. A medida que la gente se vaya familiarizando con UML, encontrarán más fácil de comprender la arquitectura modelada en ese lenguaje. Regresar

ORGANIZACIÓN DEL DESARROLLO • • • Cuanto mayor sea la organización del proyecto software,

ORGANIZACIÓN DEL DESARROLLO • • • Cuanto mayor sea la organización del proyecto software, mayor será la sobrecarga de comunicación entre los desarrollado res para intentar coordinar sus esfuerzos. Esta sobrecarga se incrementa cuando el proyecto está geográficamente disperso. Dividiendo el sistema en subsistemas, con las interfaces claramente definidas y con un responsable o un grupo de responsables establecido para cada subsistema, el arquitecto puede reducir la carga de comunicación entre los grupos de trabajo de los diferentes subsistemas, tanto si están en el mismo edificio como si están en diferentes continentes. Una “buena” arquitectura es la que define explícitamente estas interfaces, haciendo que sea posible la reducción en la comunicación. Una interfaz bien definida “comunica” eficientemente a los desarrolladores de ambas partes qué necesitan saber sobre lo que los otros equipos están haciendo.

ORGANIZACIÓN DEL DESARROLLO • • • Las interfaces estables permiten que el software de

ORGANIZACIÓN DEL DESARROLLO • • • Las interfaces estables permiten que el software de ambas partes progrese independientemente. Una arquitectura y unos patrones de diseño adecuados nos ayudan a encontrar las interfaces correctas entre los subsistemas. Un ejemplo es el patrón Boundary-Control. Entity (Sección 4. 3. 1) que nos ayuda a distinguir el comportamiento específico de los casos de uso, las clases de interfaz y las clases genéricas. Regresar

FOMENTO DE LA REUTILIZACIÓN • • Permítanos usar una analogía para explicar cómo la

FOMENTO DE LA REUTILIZACIÓN • • Permítanos usar una analogía para explicar cómo la arquitectura es importante para la reutilización. La industria de la fontanería está estandarizada desde hace tiempo. Los contratistas de fontanería se benefician de componentes estándar. En lugar de esforzarse en encajar la dimensión de componentes “creativos”, obtenidos de aquí y de allá, el fontanero los selecciona de un conjunto de componentes estandarizados que siempre se ajustarán.

FOMENTO DE LA REUTILIZACIÓN • • • Como el fontanero, los desarrolladores capaces de

FOMENTO DE LA REUTILIZACIÓN • • • Como el fontanero, los desarrolladores capaces de reutilizar conocen el dominio del problema y qué componentes especifica como adecuados la arquitectura. Los desarrolladores piensan en cómo conectar esos componentes para cumplir con los requisitos del sistema y realizar el modelo de casos de uso. Cuando tienen disponibles componentes reutilizables. los usan. Como los elementos estándar de fontanería, los componentes software reutilizables están diseñados y probados para encajar, y así el tiempo de construcción y el coste son menores. El resultado es predecible. Como en la industria de la fontanería, donde la estandarización llevó siglos, en la estandarización del software se va avanzando con la experiencia —pero esperamos que se incremente la “componentización” de aquí a un par de años— De hecho, ya ha comenzado.

FOMENTO DE LA REUTILIZACIÓN • • • La industria del software todavía tiene que

FOMENTO DE LA REUTILIZACIÓN • • • La industria del software todavía tiene que alcanzar el nivel de estandarización que mucho dominios hardware han conseguido, pero las buenas arquitecturas y las interfaces bien definidas son pasos en esa dirección. Una buena arquitectura ofrece a los desarrolladores un andamio estable sobre el que trabajar. El papel de los arquitectos es definir ese andamiaje y los subsistemas reutilizables que el desarrollador pueda utilizar. Se obtienen subsistemas reutilizables diseñándolas con cuidado para que puedan ser utilizados conjuntamente. Un buen arquitecto ayuda a los desarrolladores para que sepan dónde buscar elementos reutilizables de manera poco costosa, y para que puedan encontrar los componentes adecuado-, para ser reutilizados. El UML acelerará el proceso de “construcción de componentes”, porque un lenguaje de modelado estándar es un prerrequisito para construir componentes específicos del dominio que puedan estar disponibles para su reutilización. Regresar

EVOLUCIÓN DEL SISTEMA • • • Si hay algo de lo que podemos estar

EVOLUCIÓN DEL SISTEMA • • • Si hay algo de lo que podemos estar seguros, es de que cualquier sistema de un tamaño considerable evolucionará. Evolucionará incluso aunque aún esté en desarrollo. Más tarde, cuando esté en uso, el entorno cambiante provocará futuras evoluciones. Hasta que esto ocurra, el sistema debe ser fácil de modificar; esto quiere decir que los desarrolladores deberían ser capaces de modificar panes del diseño e implementación sin tener que preocuparse por los efectos inesperados que puedan tener repercusión en el sistema. En la mayoría de los casos, deberían ser capaces de implementar nuevas funcionalidades íes decir, casos de uso) en el sistema sin tener que pensar en un impacto dramático en el diseño e implementación existentes.

EVOLUCIÓN DEL SISTEMA • • • En otras palabras, el sistema debe ser en

EVOLUCIÓN DEL SISTEMA • • • En otras palabras, el sistema debe ser en sí mismo flexible a los cambios o tolerante a los cambios. Otra forma de enunciar este objetivo es afirmar que el sistema debe ser capaz de evolucionar sin problemas. Las arquitecturas del sistema pobres, por el contrario, suelen degradarse con el paso del tiempo y necesitan ser “parcheadas” hasta que al final no es posible actualizarlas con un coste razonable. Regresar

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • •

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • • • El sistema de conmutación de telecomunicaciones de Ericsson se desarrolló inicialmente al principio de los setenta usando una primera versión de nuestros principios de las arquitecturas. La descripción de la arquitectura software es un artefacto importante que ha guiado el desarrollo completo del trabajo a lo largo de la vida del sistema. La arquitectura estaba guiada por un par de principios que ahora se han incorporado al Proceso Unificado. Uno de estos principios era el de la modularización de funciones. Las clases o los elementos de diseño equivalentes se agruparon en bloques funcionales, o subsistemas de servicio, que los clientes podían considerar como opcionales (incluso si se entregaban a todos los clientes). Un subsistema de servicio tenia una fuerte cohesión interna. Los cambios en el sistema solían localizarse en un subsistema de servicio y raramente estos cambios afectaban a más de un servicio.

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • •

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • • • Otro de los principios era el de separar el diseño de interfaces del diseño de subsistemas de servicio. El objetivo era conseguir diseños “conectables’”, donde muchos subsistemas de servicio podían soportar la misma interfaz. Cambiar un subsistema de servicio por otro podía hacerse sin cambiar los clientes del subsistema de servicio (los cuales dependían solamente de las interfaces, no del código del subsistema de servicio). Un tercer principio era hacer corresponder los subsistemas de servicio en el diseño a uno o más componentes de la implementación. Los componentes de los subsistemas de servicio podían ser distribuidos en diferentes nodos de computación.

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • •

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • • Había exactamente un componente por cada nodo de proceso en el cual el subsistema de servicio podía ser ejecutado. Así, si el subsistema de servicio se ejecutaba en el ordenador central (servidor), entonces habría exactamente un componente para el subsistema. Si el subsistema estaba siendo implementado en ambos, clientes y servidor, habría dos componentes. Este principio simplificó la gestión de los cambios en el software en las diferentes instalaciones.

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • •

EJEMPLO. EL SISTEMA AXE DE ERICSSON SOBRE LA IMPORTANCIA DE LA ARQUITECTURA • • Todavía hay otro principio, que era el bajo acoplamiento entre los subsistemas de servicio. La única comunicación entre los subsistemas de servicio eran las señales. Aunque las señales eran asíncronas (semántica de envío sin respuesta), éstas no sólo soportaban encapsulación, sino también distribución. Dado que su comienzo y su consiguiente desarrollo fue guiado por una arquitectura bien diseñada, el sistema AXE continua hoy en uso, con más de un centenar de clientes y varios miles de instalaciones. Se espera que continúe funcionando durante décadas, con los cambios necesarios.

CASOS DE USO Y ARQUITECTURA • • • Ya hemos señalado que existe cierta

CASOS DE USO Y ARQUITECTURA • • • Ya hemos señalado que existe cierta interacción entre los casos de uso y la arquitectura. En el Capítulo 3 mostramos por primera vez cómo desarrollar un sistema que proporciona los casos de uso correctos a sus usuarios. Si el sistema proporciona los casos de uso correctos —casos de uso de alto rendimiento, calidad y facilidad de utilización— los usuarios pueden emplearlo para llevar a cabo sus objetivos. Pero, ¿cómo podemos conseguirlo? La respuesta, como ya hemos sugerido, es construir una arquitectura que nos permita implementar los casos de uso de una forma económica, ahora y en el futuro. Vamos a clarificar cómo sucede esta interacción, observando primero qué influye en la arquitectura (Figura 4. 1) y después qué influye en los casos de uso.

FIGURA 4, 1, EXISTEN DIFERENTES TIPOS DE REQUISITOS Y PRODUCTOS QUE INFLUYEN EN LA

FIGURA 4, 1, EXISTEN DIFERENTES TIPOS DE REQUISITOS Y PRODUCTOS QUE INFLUYEN EN LA ARQUITECTURA, APARTE DE LOS CASOS DE USO. TAMBIÉN SON DE AYUDA EN EL DISEÑO DE UNA ARQUITECTURA LA EXPERIENCIA DE TRABAJOS ANTERIORES Y LAS ESTRUCTURAS QUE PODAMOS IDENTIFICAR COMO PATRONES DE LA ARQUITECTURA.

CASOS DE USO Y ARQUITECTURA • • Como ya hemos dicho, la arquitectura está

CASOS DE USO Y ARQUITECTURA • • Como ya hemos dicho, la arquitectura está condicionada por los casos de uso queremos que soporte el sistema: los casos de uso son directores de la arquitectura. Después de todo, queremos una arquitectura viable a la hora de implementar nuestros casos de uso. En las primeras iteraciones, elegimos unos pocos casos de uso, que pensamos que son los que nos ayudarán mejor en el diseño de la arquitectura. Estos casos de uso arquitectónicamente significativos incluyen los que son más necesarios para los clientes en la próxima versión y quizá para versiones futuras.

CASOS DE USO Y ARQUITECTURA Sin embargo, la arquitectura no sólo se ve condicionada

CASOS DE USO Y ARQUITECTURA Sin embargo, la arquitectura no sólo se ve condicionada por los casos de uso arquitectónicamente significativos, sino también por los siguientes factores: • • • Sobre qué productos software del sistema queremos desarrollar. como sistemas operativos o sistemas de gestión de bases de datos concretos. Qué productos de middleware queremos utilizar. Por ejemplo, tenemos que seleccionar un object request broker (ORB), que es un mecanismo para la conversión y envío de mensajes a objetos en entornos heterogéneos , o un marco de trabajo independiente de la plataforma, es decir, un subsistema ‘”prefabricado”, para construir interfaces gráficas. Qué sistemas heredados queremos utilizar en nuestro sistema. La utilización en nuestra arquitectura de un sistema heredado, como por ejemplo un sistema bancario existente, nos permite reutilizar gran parte de la funcionalidad existente, pero también tenemos que ajustar nuestra arquitectura para que encaje con el producto “’antiguo”.

CASOS DE USO Y ARQUITECTURA • • A qué estándares y políticas corporativas debemos

CASOS DE USO Y ARQUITECTURA • • A qué estándares y políticas corporativas debemos adaptarnos. Por ejemplo, podemos elegir el Lenguaje de Definición de Interfaces (Interface Defintion Language, IDL) para especificar todas las interfaces de las clases, o el estándar TMN de telecomunicaciones para especificar objetos en nuestro sistema. Requisitos no funcionales generales (no específicos de los casos de uso), como los requisitos de disponibilidad, tiempo de recuperación, o uso de memoria. Las necesidades de distribución especifican cómo distribuir e! sistema, quizá a través de una arquitectura cliente/servidor. Regresar