El Proceso Unificado está Centrado en la Arquitectura

Slides:



Advertisements
Presentaciones similares
Ciclo de vida de desarrollo de software
Advertisements

Arquitecturas de administración de redes y sus submodelos
SISTEMAS DE INFORMACIÓN EN LAS ORGANIZACIONES
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
CICLO DE VIDA DEL DESARROLLO DE SOFTWARE
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
Lenguaje Unificado de Modelado
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
Tecnologías Cliente / Servidor Capitulo III Richard Jiménez V. clienteserver.wordpress.com.
Servicios Web.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Administración de Procesos de Pruebas
Qué es un Sistema de Información
Unified Modeling Language (Lenguaje de Modelamiento unificado)
INTRODUCCIÓN A DINÁMICA DE SISTEMAS. QUE ES DINÁMICA DE SISTEMAS ? Es una metodología para el estudio y manejo de sistemas complejos, tal como los que.
PLANEACION DE UNA ESTRUCTURA ORGANIZACIONAL
Laura Patricia Pinto Prieto Ingeniera de sistemas.
Modelado Arquitectónico
 El primer navegador Web incluía un lenguaje de estilo interno que utilizaba dicho navegador para mostrar las páginas HTML.  Sin embargo estos primeros.
Diseño del Software Diseño de datos Diseño arquitectónico
(c) P. Gomez-Gil, INAOE DISEÑO DE COMPONENTES DE SOFTWARE * NOTAS DEL CURSO Ingeniería de Software I DRA. MARIA DEL PILAR GÓMEZ GIL INAOEP.
Ingeniería de Software
Arquitectura de una aplicación
Ingeniería de Software Orientado a Objetos
ANDRES FELIPE BORRERO SALAZAR COD ALEXANDRA CARREÑO SALAS COD LUCIO ANIBAL CRIOLLO COD ALEJANDRO RUIZ IDROBO COD
Como Desarrollar SW Distribuido de Calidad
DISEÑO DE SOFTWARE 1ª. Parte
Diseño e Implementación
DATA WAREHOUSE Equipo 9.
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Servidores Conceptos Generales.
 ¡Por fin una descripción de la arquitectura! ¡Por fin una descripción de la arquitectura!  La vista de la arquitectura del modelo de casos de uso La.
Ingeniería en Sistemas de Información
UML 2.0 Integrantes: Diana Carolina Valencia M. Jhon Fernando Lopez T. Carlos Alberto Castillo.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
¿Por qué Casos de Uso?.
Importancia en la efectividad del:
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
Términos y Conceptos Básicos
 La arquitectura se desarrolla en iteraciones de la fase de elaboración La arquitectura se desarrolla en iteraciones de la fase de elaboración  Ejemplo.
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
Administración Estratégica para la Competitividad Calidad en el Servicio Dra. Icela Lozano Encinas Dra. Icela Lozano Encinas.
D IRIGIDO POR C ASOS DE U SO. Í NDICE El Usuario Los Casos de Uso, su importancia El aspecto “dirigido-por-casos-de-uso” Todos los modelos se relacionan.
Alexander Aristizabal Ángelo flores herrera
Introducción a UML Departamento de Informática Universidad de Rancagua
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
UML.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Ingeniería de Requerimientos
Tecnologías Cliente / Servidor Capitulo II Richard Jiménez V. clienteserver.wordpress.com.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
UNIDAD 2: “Características del Modelado UML” CONTENDIDO Elaborado por: Ingeniero Harold Cabrera Meza Actualizado por: Ingeniero Nilson Albeiro Ferreira.
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
Un requerimiento es una condición o capacidad a la que el sistema (siendo construido) debe conformar [ Rational ]. Un requerimiento de software puede.
UNIDAD : FUNDAMENTOS DE OPERACIONES Tema 2 La Producción y Logística
Tendencia De Los Sistemas Operativos
DISEÑO DE COMPONENTES Y DESARROLLO BASADO EN COMPONENTES
Proceso de desarrollo de Software
Arquitectura de una aplicación Arquitectur a: desarrolla un plan general del sistema, asegurando que las necesidades de los usuarios sean atendidas. Ingeniería.
Bases de Datos y Sistemas de Gestión de Bases Relacionales.
Las fases del ciclo de la vida de desarrollo de sistemas
VI. EVALUACIÓN DE LOS RECURSOS
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
TECNOLOGIAS DE LA INFORMACION EN LAS ORGANIZACIONES
Modelado Orientado a Objetos Programación Orientada a Objetos Departamento de Sistemas Universidad del Cauca 2006.
1 Tema 2: Introducción al proceso unificado de desarrollo de software.
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Transcripción de la presentación:

El Proceso Unificado está Centrado en la Arquitectura

Í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 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 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 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, 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 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 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 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 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 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 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 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 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 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 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 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 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á condicionada por los casos de uso que 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 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 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