Principios de diseño de la arquitectura del software
9. Jun 2015•0 gefällt mir•19,998 views
Downloaden Sie, um offline zu lesen
Melden
Bildung
Introducción a la Arquitectura de Software.
Géneros Arquitectónicas
Estilos Arquitectónicos.
Diseño Arquitectónico.
Evaluación de los diseños alternativos para la Arquitectura.
2. 2
Clase anterior
Principios Diseño del Software.
• Introducción al diseño de Software.
• Diseño en el contexto de la ingeniería de software.
• El PROCESO,CONCEPTOS, y el MODELO del diseño.
3. 3
Objetivos de las clase
• Introducción a la Arquitectura de Software.
• Géneros Arquitectónicas
• Estilos Arquitectónicos.
• Diseño Arquitectónico.
• Evaluación de los diseños alternativos para la
Arquitectura.
• Mapeo de la arquitectura con el uso del flujo de
datos.
Principios del diseño de Arquitectura
6. 6
¿Qué es?
El diseño arquitectónico 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 cuán brillante sea.”
Scott Ambler
“Cásate con tu arquitectura de prisa, arrepiéntete en tu tiempo libre.”
Barry Boehm.
9. 9
¿Quién lo hace?
Ingenieros de Software / Especialistas.
El diseñador de una base de datos crea la
arquitectura de los datos para un
sistema.
El “arquitecto del sistema” selecciona un
estilo arquitectónico apropiado a partir
de los requerimientos obtenidos durante
el análisis de los datos.
11. 11
¿Por qué es importante?
• Usted intentaría construir su casa sin un
plano, ¿o sí?
• Tampoco comenzaría los planos con el
dibujo de la plomería del lugar.
13. 13
¿Por qué es importante?
Antes de preocuparse por los detalles,
necesitaría tener el panorama general:
La casa en sí.
Eso es lo que hace el diseño arquitectónico, da
el panorama y asegura que sea el correcto.
15. 15
¿Cuáles son los pasos?
1. El diseño de la arquitectura comienza con el diseño de los
datos.
2. Continúa con la obtención las representaciones de la
estructura arquitectónica del sistema.
3. Se analizan alternativas de estilos o patrones
arquitectónicos.
4. Seleccionada la alternativa, se elabora la arquitectura con
el empleo de un método de diseño.
17. 17
¿Cuál es el producto final?
Un modelo de arquitectura que incluye datos
y la estructura del software.
Además, se describen las propiedades y
relaciones(interacciones) que hay entre los
componentes.
20. 20
¿Cómo me aseguro de que lo hice bien?
Comprobaciones
• En cada etapa se revisan los productos del trabajo del diseño 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
cómputo 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 diseño para cumplir los
requerimientos establecidos.
2.Considerar alternativas arquitectónicas en una
etapa en la que hacer cambios al diseño todavía es
relativamente fácil.
3.Reducir los riesgos asociados con la construcción
del software.
24. 24
3 Razones de importancia de la Arquitectura
• Las representaciones de la arquitectura del software
permiten la comunicación entre todas las partes interesadas
en el desarrollo de un sistema.
• Resalta las primeras decisiones que tendrán un efecto
profundo en todo el trabajo de ingeniería de software
siguiente.
• “Constituye un modelo relativamente pequeño y asequible
sobre cómo está estructurado el sistema y la forma en la que
sus componentes trabajan juntos”
27. 27
Objetivos
1. Establecer un marco conceptual con un
vocabulario que se use durante el diseño de la
arquitectura del software.
2. Proporcionar lineamientos detallados para
representar una descripción arquitectónica.
3. Estimular las mejores prácticas del diseño
arquitectónico.
30. 30
Decisiones Arquitectónicas
• El arquitecto del sistema considera varias alternativas y decide en
última instancia las características arquitectónicas específicas
que satisfagan del mejor modo la preocupación.
• Las decisiones arquitectónicas en sí mismas se consideran una
perspectiva de la arquitectura.
• Las razones de las decisiones dan una visión de un sistema y su
concordancia con las preocupaciones de los participantes.
31. 31
Géneros
Arquitectónicos
“Programar sin una arquitectura en mente es como explorar una caverna
sólo con una linterna: no sabes dónde has estado, a dónde vas ni dónde
estás.” Danny Thorpe
32. 32
Géneros Arquitectónicos
El género Arquitectónico dicta el enfoque
específico para la estructura que deba
construirse.
Especifican una categoría dentro del
dominio general del software, dentro de
cada categoría hay varias subcategorías.
35. 35
Comerciales y no lucrativos
Sistemas que son fundamentales para la operación
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.
45. 45
Cada género representa un desafío único.
Por ejemplo:
Considere la arquitectura del software de un sistema de juego.
“Esta clase de sistemas, en ocasiones llamados aplicaciones
interactivas de inmersión, requieren el cómputo de algoritmos
intensivos, gráficas avanzadas en computadora, fuentes de
datos continuas en multimedios, interactividad en tiempo real a
través de dispositivos de entrada convencionales y no
convencionales, y otras preocupaciones especializadas.”
47. 47
Estilos Arquitectónicos
Describen las categorías del sistema que incluye:
1) Un conjunto de componentes (como una base de datos o
módulos de cómputo) que realizan una función requerida por
el sistema.
2) Conectores que permiten la “comunicación, coordinación y
cooperación” entre los componentes.
3) Restricciones que definen cómo se integran los componentes
para formar el sistema.
4) Modelos semánticos que permiten que un diseñador
entienda las propiedades generales del sistema al analizar las
propiedades conocidas de sus partes constituyentes.
48. 48
Estilos Arquitectónicos - Taxonomía
•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 través de una serie de componentes computacionales o
manipuladores.
• Se basan en un patrón 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 fácil de modificar y escalar, contiene subestilos.
• Arquitecturas de programa principal/subprograma: Esta
estructura clásica de programa descompone una función en
una jerarquía de control en la que un programa “principal”
invoca cierto número 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 están distribuidos a través de computadoras
múltiples 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
comunicación y coordinación entre los componentes se
consigue mediante la transmisión de mensajes.
54. 54
Arquitecturas en Capas
• Se define un número 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 utilerías y funciones
de software de aplicación.
57. 57
Patrones
“El patrón propone una solución arquitectónica que sirve como base para
el diseño de la arquitectura.”
Los patrones arquitectónicos se abocan a un problema de aplicación
específica dentro de un contexto dado y sujeto a limitaciones y
restricciones.
59. 59
Diseño Arquitectónico
En diseño arquitectónico, el software que se va a
desarrollar debe situarse en contexto, es decir, el
diseño debe definir las entidades externas (otros
sistemas, dispositivos, personas, etc.) con las que
interactúa el software y la naturaleza de dicha
interacción.
60. 60
Representación del sistema
en Contexto
El contexto arquitectónico representa la manera en la que el software interactúa con las
entidades externas a sus fronteras.
61. 61
Diagrama Contexto Arquitectónico (DCA)
Permite modelar la manera en la que el software interactúa con
entidades más allá de sus fronteras.
62. 62
Diagrama Contexto Arquitectónico (DCA)
• Sistemas superiores: aquellos que utilizan al sistema objetivo como parte de algún
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 interactúan sobre una base de igualdad (por
ejemplo, la información se produce o consume por los iguales y por el sistema
objetivo).
• Actores: entidades (personas, dispositivos, etc.) que interactúan con el sistema
objetivo mediante la producción o consumo de información que es necesaria para el
procesamiento de los requerimientos.
64. 64
Arquetipos
Un arquetipo es una clase o un patrón que representa una
abstracción fundamental de importancia crítica para el diseño de
una arquitectura para el sistema objetivo.
Podemos obtener arquetipos con el estudio de las clases de
análisis 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.
67. 67
Refinamiento
“La estructura de un sistema de software provee la ecología en la
que el código nace, crece y muere. Un hábitat bien diseñado
permite la evolución exitosa de todos los componentes
necesarios en un sistema de software.” R. Pattis
68. 68
Refinamiento
El dominio de aplicación es una fuente para la obtención y refinamiento de los
componentes.
Estas clases de análisis representan entidades dentro del dominio de aplicación
(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 aplicación, pero que no tengan conexión con el
dominio de ésta.
Por ejemplo:
los componentes de administración de memoria, de comunicación, de base de
datos y de administración de tareas con frecuencia están integrados en la
arquitectura del software.
71. 71
Instancias del sistema
Para lograr un buen refinamiento y crear instancias, se debe aplicar una
especificación mas detallada a un problema específico, con objeto de
demostrar que tanto ella como sus componentes son apropiados.
73. 73
Análisis de la arquitectura
•Escenarios de investigación: Se desarrolla un conjunto de
casos de uso para representar al sistema desde el punto de
vista del usuario.
•Obtención de los requerimientos, restricciones, y
descripción del ambiente: Esta información se determina
como parte de la ingeniería de requerimientos y se utiliza
para estar seguros de que se han detectado todas las
preocupaciones de los participantes.
74. 74
Análisis de la arquitectura
• Descripción de los estilos o patrones de arquitectura elegidos para abordar los
escenarios y requerimientos: Debe describirse el estilo arquitectónico con el
empleo de las siguientes perspectivas arquitectónicas:
• Perspectiva modular: para el análisis de las asignaciones de trabajo con
componentes y grado en el que se logra el ocultamiento de información.
• Perspectiva del proceso: para el análisis del desempeño del sistema.
• Perspectiva del flujo de datos: para analizar el grado en el que la arquitectura
satisface los requerimientos funcionales.
75. 75
Análisis de la arquitectura
• Evaluación de los atributos de calidad, considerando cada atributo por
separado: El número de atributos de la calidad elegidos para el análisis es una
función del tiempo disponible para la revisión y el grado en el que los atributos
de calidad son relevantes para el sistema en cuestión. Los atributos de calidad
para evaluar el diseño arquitectónico como
• confiabilidad
• desempeño
• seguridad
• facilidad de mantenimiento
• flexibilidad
• facilidad de hacer pruebas
• portabilidad
• reutilización e interactuación.
76. 76
Análisis de la arquitectura
• Identificación de la sensibilidad de los atributos de calidad de varios atributos
arquitectónicos para un estilo de arquitectura específico: Eso se lleva a cabo
haciendo cambios pequeños en la arquitectura a fin de determinar la
sensibilidad que tiene un atributo de calidad,
por ejemplo, el desempeño ante el cambio:
Atributos que se vean afectados en forma significativa por la variación de la
arquitectura se denominan puntos sensibles.
• Crítica de las arquitecturas candidatas en la descripción de patrones con el uso
del análisis de sensibilidad.
78. 78
Complejidad Arquitectónica.
Para evaluar la complejidad total de una arquitectura una técnica 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 diseño arquitectónico y la
implementación de una arquitectura de software.?
* Con el uso de la arquitectura de una casa o edificio como metáfora, establezca
comparaciones con la arquitectura del software. ¿En qué se parecen las
disciplinas de la arquitectura clásica y la del software? ¿En qué difieren?
* Cuando se “escribe” un programa, ¿se diseña software? ¿En qué difieren el
diseño de software y la codificación?
* 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
diseño.
* ¿Por qué cualidades puede ser evaluada una Arquitectura?
* ¿Cuáles son los costos y beneficios de realizar una evaluación arquitectónica?
* Investigue, liste y defina cada una de las Estructuras arquitectónicas
canónicas