Principios de diseño de la arquitectura del software

Embed Size (px)

Citation preview

  1. 1. Principios de Diseo de la Arquitectura del Software IDS5501 V.1.0 @josebovet
  2. 2. 2 Clase anterior Principios Diseo del Software. Introduccin al diseo de Software. Diseo en el contexto de la ingeniera de software. El PROCESO,CONCEPTOS, y el MODELO del diseo.
  3. 3. 3 Objetivos de las clase Introduccin a la Arquitectura de Software. Gneros Arquitectnicas Estilos Arquitectnicos. Diseo Arquitectnico. Evaluacin de los diseos alternativos para la Arquitectura. Mapeo de la arquitectura con el uso del flujo de datos. Principios del diseo de Arquitectura
  4. 4. 4 Introduccin
  5. 5. Qu es?
  6. 6. 6 Qu es? El diseo arquitectnico representa la estructura de los datos y de los componentes del programa que se requieren para construir un sistema basado en computadora.
  7. 7. 7 Qu es? La arquitectura es demasiado importante para dejarla en manos de una sola persona, no importa cun brillante sea. Scott Ambler Csate con tu arquitectura de prisa, arrepintete en tu tiempo libre. Barry Boehm.
  8. 8. 8 Quin lo hace?
  9. 9. 9 Quin lo hace? Ingenieros de Software / Especialistas. El diseador de una base de datos crea la arquitectura de los datos para un sistema. El arquitecto del sistema selecciona un estilo arquitectnico apropiado a partir de los requerimientos obtenidos durante el anlisis de los datos.
  10. 10. 10 Por qu es importante?
  11. 11. 11 Por qu es importante? Usted intentara construir su casa sin un plano, o s? Tampoco comenzara los planos con el dibujo de la plomera del lugar.
  12. 12. 12 Por qu es importante?
  13. 13. 13 Por qu es importante? Antes de preocuparse por los detalles, necesitara tener el panorama general: La casa en s. Eso es lo que hace el diseo arquitectnico, da el panorama y asegura que sea el correcto.
  14. 14. Cules son los pasos?
  15. 15. 15 Cules son los pasos? 1. El diseo de la arquitectura comienza con el diseo de los datos. 2. Contina con la obtencin las representaciones de la estructura arquitectnica del sistema. 3. Se analizan alternativas de estilos o patrones arquitectnicos. 4. Seleccionada la alternativa, se elabora la arquitectura con el empleo de un mtodo de diseo.
  16. 16. 16 Cul es el producto final?
  17. 17. 17 Cul es el producto final? Un modelo de arquitectura que incluye datos y la estructura del software. Adems, se describen las propiedades y relaciones(interacciones) que hay entre los componentes.
  18. 18. 18 Ejemplos Modelo Datos
  19. 19. 19 Cmo me aseguro de que lo hice bien?
  20. 20. 20 Cmo me aseguro de que lo hice bien? Comprobaciones En cada etapa se revisan los productos del trabajo del diseo del software para que sean claros, correctos, completos y consistentes con los requerimientos y entre s.
  21. 21. Arquitectura de Software La arquitectura de un sistema es un marco general que describe su forma y estructura: sus componentes y la manera en la que ajustan entre s.Jerrold Grochow
  22. 22. La arquitectura del software de un programa o sistema de cmputo es la estructura o estructuras del sistema, lo que comprende a los componentes del software, sus propiedades externas visibles y las relaciones entre ellos. "
  23. 23. 23 Arquitectura de Software. Permite 1. Analizar la efectividad del diseo para cumplir los requerimientos establecidos. 2.Considerar alternativas arquitectnicas en una etapa en la que hacer cambios al diseo todava es relativamente fcil. 3.Reducir los riesgos asociados con la construccin del software.
  24. 24. 24 3 Razones de importancia de la Arquitectura Las representaciones de la arquitectura del software permiten la comunicacin entre todas las partes interesadas en el desarrollo de un sistema. Resalta las primeras decisiones que tendrn un efecto profundo en todo el trabajo de ingeniera de software siguiente. Constituye un modelo relativamente pequeo y asequible sobre cmo est estructurado el sistema y la forma en la que sus componentes trabajan juntos
  25. 25. Descripciones Arquitectnicas ...el esfuerzo debe centrarse en representaciones de la arquitectura que guiarn todos los dems aspectos del diseo.
  26. 26. 26 Definicin descripcin Arquitectnica Un conjunto de productos para documentar una arquitectura. IEEE
  27. 27. 27 Objetivos 1. Establecer un marco conceptual con un vocabulario que se use durante el diseo de la arquitectura del software. 2. Proporcionar lineamientos detallados para representar una descripcin arquitectnica. 3. Estimular las mejores prcticas del diseo arquitectnico.
  28. 28. 28 Descripcin Arquitectnica de Java ES
  29. 29. 29 Decisiones Arquitectnicas
  30. 30. 30 Decisiones Arquitectnicas El arquitecto del sistema considera varias alternativas y decide en ltima instancia las caractersticas arquitectnicas especficas que satisfagan del mejor modo la preocupacin. Las decisiones arquitectnicas en s mismas se consideran una perspectiva de la arquitectura. Las razones de las decisiones dan una visin de un sistema y su concordancia con las preocupaciones de los participantes.
  31. 31. 31 Gneros Arquitectnicos Programar sin una arquitectura en mente es como explorar una caverna slo con una linterna: no sabes dnde has estado, a dnde vas ni dnde ests. Danny Thorpe
  32. 32. 32 Gneros Arquitectnicos El gnero Arquitectnico dicta el enfoque especfico para la estructura que deba construirse. Especifican una categora dentro del dominio general del software, dentro de cada categora hay varias subcategoras.
  33. 33. 33 Algunos gneros Arquitectnicos
  34. 34. 34 Inteligencia Artificial Sistemas que simulan o incrementan la cognicin humana, su locomocin u otros procesos orgnicos
  35. 35. 35 Comerciales y no lucrativos Sistemas que son fundamentales para la operacin de una empresa de negocios.
  36. 36. 36 Comunicaciones Sistemas que proveen la infraestructura para transferir y manejar datos, para conectar usuarios o para presentar datos en la frontera de una infraestructura.
  37. 37. 37 Contenido de Autor Sistemas que se emplean para crear o manipular artefactos de texto o multimedios.
  38. 38. 38 Dispositivos Sistemas que interactan con el mundo fsico a fin de brindar algn servicio puntual a un individuo.
  39. 39. 39 Entretenimiento y Deportes Sistemas que administran eventos pblicos o que proveen una experiencia grupal de entretenimiento.
  40. 40. 40 Financieros Sistemas que proporcionan la infraestructura para transferir y manejar dinero y otros ttulos.
  41. 41. 41 Juegos Sistemas que dan una experiencia de entretenimiento a individuos o grupos.
  42. 42. 42 Gobierno Sistemas que dan apoyo a la conduccin y operaciones de una institucin
  43. 43. 43 Sistema Operativo Sistemas que estn inmediatamente instalados en el hardware para dar servicios de software bsico.
  44. 44. Legal 44 Politica Local Industrial Mdicos Militares Cientficos Transporte
  45. 45. 45 Cada gnero representa un desafo nico. Por ejemplo: Considere la arquitectura del software de un sistema de juego. Esta clase de sistemas, en ocasiones llamados aplicaciones interactivas de inmersin, requieren el cmputo de algoritmos intensivos, grficas avanzadas en computadora, fuentes de datos continuas en multimedios, interactividad en tiempo real a travs de dispositivos de entrada convencionales y no convencionales, y otras preocupaciones especializadas.
  46. 46. 46 Estilos Arquitectnicos En el fondo de la mente de todo artista hay un patrn o tipo de arquitectura. G. K. Chesterton
  47. 47. 47 Estilos Arquitectnicos Describen las categoras del sistema que incluye: 1) Un conjunto de componentes (como una base de datos o mdulos de cmputo) que realizan una funcin requerida por el sistema. 2) Conectores que permiten la comunicacin, coordinacin y cooperacin entre los componentes. 3) Restricciones que definen cmo se integran los componentes para formar el sistema. 4) Modelos semnticos que permiten que un diseador entienda las propiedades generales del sistema al analizar las propiedades conocidas de sus partes constituyentes.
  48. 48. 48 Estilos Arquitectnicos - Taxonoma Arquitecturas centradas en los datos. Arquitecturas de flujo de datos Arquitecturas de llamar y regresar. Arquitecturas orientadas a objetos Arquitecturas en capas.
  49. 49. 49 Arquitecturas centradas en los datos. En el centro de esta arquitectura se halla un almacenamiento de datos al que acceden con frecuencia otros componentes que actualizan, agregan, eliminan o modifican los datos de cierto modo dentro del almacenamiento. Promueven la integrabilidad.
  50. 50. 50 Arquitecturas de flujo de datos. Se aplica cuando datos de entrada van a transformarse en datos de salida a travs de una serie de componentes computacionales o manipuladores. Se basan en un patrn de tubo/filtro que tiene un conjunto de componentes, llamados filtros, conectados por tubos que transmiten datos de un componente al siguiente.
  51. 51. 51 Arquitecturas de llamar y regresar Permite obtener una estructura de programa que es relativamente fcil de modificar y escalar, contiene subestilos. Arquitecturas de programa principal/subprograma: Esta estructura clsica de programa descompone una funcin en una jerarqua de control en la que un programa principal invoca cierto nmero de componentes de programa que a su vez invocan a otros.
  52. 52. 52 Arquitecturas de llamar y regresar Arquitecturas de llamada de procedimiento remoto: Los componentes de una arquitectura de programa principal/ subprograma estn distribuidos a travs de computadoras mltiples en una red.
  53. 53. 53 Arquitecturas Orientadas a Objetos Los componentes de un sistema incluyen datos y las operaciones que deben aplicarse para manipularlos. La comunicacin y coordinacin entre los componentes se consigue mediante la transmisin de mensajes.
  54. 54. 54 Arquitecturas en Capas Se define un nmero de capas diferentes En la capa externa: los componentes atienden las operaciones de la interfaz de usuario. En la interna: los componentes realizan la interfaz con el sistema operativo. Las capas intermedias: proveen servicios de utileras y funciones de software de aplicacin.
  55. 55. 55 Patrones Arquitectnicos Tal vez est en la planta baja. Djame subir a revisar. M. C. Escher
  56. 56. 56 Patrones por todos lados.
  57. 57. 57 Patrones El patrn propone una solucin arquitectnica que sirve como base para el diseo de la arquitectura. Los patrones arquitectnicos se abocan a un problema de aplicacin especfica dentro de un contexto dado y sujeto a limitaciones y restricciones.
  58. 58. 58 Diseo Arquitectnico Un doctor puede sepultar sus errores, pero un arquitecto slo puede aconsejar a su cliente que siembre enredaderas. Frank Lloyd Wright
  59. 59. 59 Diseo Arquitectnico En diseo arquitectnico, el software que se va a desarrollar debe situarse en contexto, es decir, el diseo debe definir las entidades externas (otros sistemas, dispositivos, personas, etc.) con las que interacta el software y la naturaleza de dicha interaccin.
  60. 60. 60 Representacin del sistema en Contexto El contexto arquitectnico representa la manera en la que el software interacta con las entidades externas a sus fronteras.
  61. 61. 61 Diagrama Contexto Arquitectnico (DCA) Permite modelar la manera en la que el software interacta con entidades ms all de sus fronteras.
  62. 62. 62 Diagrama Contexto Arquitectnico (DCA) Sistemas superiores: aquellos que utilizan al sistema objetivo como parte de algn esquema de procesamiento de alto nivel. Sistemas subordinados: los que son usados por el sistema objetivo y proveen datos o procesamiento que son necesarios para completar las funciones del sistema objetivo. Sistemas entre iguales: son los que interactan sobre una base de igualdad (por ejemplo, la informacin se produce o consume por los iguales y por el sistema objetivo). Actores: entidades (personas, dispositivos, etc.) que interactan con el sistema objetivo mediante la produccin o consumo de informacin que es necesaria para el procesamiento de los requerimientos.
  63. 63. 63 Definicin de Arquetipos Los arquetipos son los bloques constructivos de un diseo arquitectnico.
  64. 64. 64 Arquetipos Un arquetipo es una clase o un patrn que representa una abstraccin fundamental de importancia crtica para el diseo de una arquitectura para el sistema objetivo. Podemos obtener arquetipos con el estudio de las clases de anlisis definidas como parte del modelo de los requerimientos. Representan elementos estables de la arquitectura, pero que son implementadas en muchos modos diferentes con base en el comportamiento del sistema.
  65. 65. 65 DCA Casa Segura
  66. 66. 66 Refinamiento de la arquitectura hacia los componentes cmo se eligen estos componentes?
  67. 67. 67 Refinamiento La estructura de un sistema de software provee la ecologa en la que el cdigo nace, crece y muere. Un hbitat bien diseado permite la evolucin exitosa de todos los componentes necesarios en un sistema de software. R. Pattis
  68. 68. 68 Refinamiento El dominio de aplicacin es una fuente para la obtencin y refinamiento de los componentes. Estas clases de anlisis representan entidades dentro del dominio de aplicacin (negocio) que deben enfrentarse dentro de la arquitectura del software. Otra fuente es el dominio de la infraestructura. La arquitectura debe albergar muchas componentes de la infraestructura que hagan posible los componentes de la aplicacin, pero que no tengan conexin con el dominio de sta. Por ejemplo: los componentes de administracin de memoria, de comunicacin, de base de datos y de administracin de tareas con frecuencia estn integrados en la arquitectura del software.
  69. 69. 69 Estructura arquitectnica de componentes de alto nivel de CasaSegura
  70. 70. 70 Descripcin de las instancias del sistema
  71. 71. 71 Instancias del sistema Para lograr un buen refinamiento y crear instancias, se debe aplicar una especificacin mas detallada a un problema especfico, con objeto de demostrar que tanto ella como sus componentes son apropiados.
  72. 72. 72 Mtodo de la negociacin para analizar la arquitectura
  73. 73. 73 Anlisis de la arquitectura Escenarios de investigacin: Se desarrolla un conjunto de casos de uso para representar al sistema desde el punto de vista del usuario. Obtencin de los requerimientos, restricciones, y descripcin del ambiente: Esta informacin se determina como parte de la ingeniera de requerimientos y se utiliza para estar seguros de que se han detectado todas las preocupaciones de los participantes.
  74. 74. 74 Anlisis de la arquitectura Descripcin de los estilos o patrones de arquitectura elegidos para abordar los escenarios y requerimientos: Debe describirse el estilo arquitectnico con el empleo de las siguientes perspectivas arquitectnicas: Perspectiva modular: para el anlisis de las asignaciones de trabajo con componentes y grado en el que se logra el ocultamiento de informacin. Perspectiva del proceso: para el anlisis del desempeo del sistema. Perspectiva del flujo de datos: para analizar el grado en el que la arquitectura satisface los requerimientos funcionales.
  75. 75. 75 Anlisis de la arquitectura Evaluacin de los atributos de calidad, considerando cada atributo por separado: El nmero de atributos de la calidad elegidos para el anlisis es una funcin del tiempo disponible para la revisin y el grado en el que los atributos de calidad son relevantes para el sistema en cuestin. Los atributos de calidad para evaluar el diseo arquitectnico como confiabilidad desempeo seguridad facilidad de mantenimiento flexibilidad facilidad de hacer pruebas portabilidad reutilizacin e interactuacin.
  76. 76. 76 Anlisis de la arquitectura Identificacin de la sensibilidad de los atributos de calidad de varios atributos arquitectnicos para un estilo de arquitectura especfico: Eso se lleva a cabo haciendo cambios pequeos en la arquitectura a fin de determinar la sensibilidad que tiene un atributo de calidad, por ejemplo, el desempeo ante el cambio: Atributos que se vean afectados en forma significativa por la variacin de la arquitectura se denominan puntos sensibles. Crtica de las arquitecturas candidatas en la descripcin de patrones con el uso del anlisis de sensibilidad.
  77. 77. 77 Complejidad Arquitectnica
  78. 78. 78 Complejidad Arquitectnica. Para evaluar la complejidad total de una arquitectura una tcnica consiste en consideran las relaciones de dependencias entre los componentes de la arquitectura. Existen tres tipos de dependencias: Dependencias de compartimiento: Representan las relaciones de dependencia entre los consumidores que utilizan los mismos recursos o los productores que producen para los mismos consumidores. Dependencias de flujo: Representan las relaciones de dependencias entre los productores y los consumidores de recursos. Dependencias restrictivas: Representan las restricciones de un relativo flujo de control entre un cuadro de actividades.
  79. 79. 79 Taller * Por qu es importante la arquitectura? * Cuales son las diferencias entre la fase del diseo arquitectnico y la implementacin de una arquitectura de software.? * Con el uso de la arquitectura de una casa o edificio como metfora, establezca comparaciones con la arquitectura del software. En qu se parecen las disciplinas de la arquitectura clsica y la del software? En qu difieren? * Cuando se escribe un programa, se disea software? En qu difieren el diseo de software y la codificacin? * Describa que son los componentes dentro de una arquitectura de software. * Describa con sus propias palabras la arquitectura de software. * Describa en breves palabras cada uno de los cuatro elementos del modelo del diseo. * Por qu cualidades puede ser evaluada una Arquitectura? * Cules son los costos y beneficios de realizar una evaluacin arquitectnica? * Investigue, liste y defina cada una de las Estructuras arquitectnicas cannicas
  80. 80. 80 Prxima clase Diseo de Interfaces