1. Principios de Diseo de la Arquitectura del Software IDS5501
V.1.0 @josebovet
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 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 Introduccin
5. Qu es?
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 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 Quin lo hace?
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 Por qu es importante?
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 Por qu es importante?
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. Cules son los pasos?
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 Cul es el producto final?
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 Ejemplos Modelo Datos
19. 19 Cmo me aseguro de que lo hice bien?
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. 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. 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 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 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. Descripciones Arquitectnicas ...el esfuerzo debe centrarse
en representaciones de la arquitectura que guiarn todos los dems
aspectos del diseo.
26. 26 Definicin descripcin Arquitectnica Un conjunto de
productos para documentar una arquitectura. IEEE
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 Descripcin Arquitectnica de Java ES
29. 29 Decisiones Arquitectnicas
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 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 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 Algunos gneros Arquitectnicos
34. 34 Inteligencia Artificial Sistemas que simulan o
incrementan la cognicin humana, su locomocin u otros procesos
orgnicos
35. 35 Comerciales y no lucrativos Sistemas que son
fundamentales para la operacin de una empresa de negocios.
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 Contenido de Autor Sistemas que se emplean para crear o
manipular artefactos de texto o multimedios.
38. 38 Dispositivos Sistemas que interactan con el mundo fsico
a fin de brindar algn servicio puntual a un individuo.
39. 39 Entretenimiento y Deportes Sistemas que administran
eventos pblicos o que proveen una experiencia grupal de
entretenimiento.
40. 40 Financieros Sistemas que proporcionan la infraestructura
para transferir y manejar dinero y otros ttulos.
41. 41 Juegos Sistemas que dan una experiencia de
entretenimiento a individuos o grupos.
42. 42 Gobierno Sistemas que dan apoyo a la conduccin y
operaciones de una institucin
43. 43 Sistema Operativo Sistemas que estn inmediatamente
instalados en el hardware para dar servicios de software
bsico.
44. Legal 44 Politica Local Industrial Mdicos Militares
Cientficos Transporte
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 Estilos Arquitectnicos En el fondo de la mente de todo
artista hay un patrn o tipo de arquitectura. G. K. Chesterton
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 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 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 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 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 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 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 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 Patrones Arquitectnicos Tal vez est en la planta baja.
Djame subir a revisar. M. C. Escher
56. 56 Patrones por todos lados.
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 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 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 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 Diagrama Contexto Arquitectnico (DCA) Permite modelar la
manera en la que el software interacta con entidades ms all de sus
fronteras.
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 Definicin de Arquetipos Los arquetipos son los bloques
constructivos de un diseo arquitectnico.
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 DCA Casa Segura
66. 66 Refinamiento de la arquitectura hacia los componentes
cmo se eligen estos componentes?
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 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 Estructura arquitectnica de componentes de alto nivel de
CasaSegura
70. 70 Descripcin de las instancias del sistema
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 Mtodo de la negociacin para analizar la
arquitectura
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 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 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 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 Complejidad Arquitectnica
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 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