Arquitectura de Software - Servidor Profesores FI UNAB

Guillermo E. Badillo Astudillo. Semestre I, 2014. Arquitectura de Software ii. Conceptualizando la Arquitectura de Software. Magister en Ingeniería Informática ...
4MB Größe 17 Downloads 70 vistas
Magister en Ingeniería Informática

Arquitectura de Software ii. Conceptualizando la Arquitectura de Software Prof. Guillermo E. Badillo Astudillo  Semestre I, 2014

Qué es la Arquitectura de Software •





La Arquitectura de Software puede ser vista como la estructura del sistema en función de la definición de los componentes y sus interacciones. La Arquitectura de Software puede considerarse como un puente entre los requisitos del sistema y la implementación. La Arquitectura es considerada como plan de diseño del sistema, debido a que es usada como guía para el resto del las tareas de la etapa de desarrollo

prof. G. Badillo, 2014_1

2

Modelo conceptual de la descripción de la arquitectura, ref. IEEE 1471‐2000 Architecture is the fundamental organization of a system embodied in its components, their relationships to each other, and to the environment, and the principles guiding its design and evolution. [IEEE 1471]

prof. G. Badillo, 2014_1

3

Contexto de la descripción de la arquitectura,  ref: ISO/IEC/IEEE 42010 

prof. G. Badillo, 2014_1

4

Modelo conceptual de la descripción de una arquitectura, ref: ISO/IEC/IEEE 42010 

prof. G. Badillo, 2014_1

5

Por qué es importante la arquitectura de software

• Los sistemas deben ser diseñados teniendo en cuenta los usuarios, el sistemas propiamente tal (la infraestructura de TI), y los objetivos del negocio • Para cada una de estas áreas , Ud. debe esbozar los escenarios clave, e identificar los atributos de calidad importantes ( por ejemplo , la fiabilidad o la escalabilidad ) y las áreas claves de satisfacción e insatisfacción. • Siempre que sea posible , desarrollar y considerar las métricas que miden el éxito en cada una de estas áreas.

prof. G. Badillo, 2014_1

6

Para el software, no se puede definir su arquitectura, en  forma aislada del contexto más amplio del sistema

prof. G. Badillo, 2014_1

7

La arquitectura dentro del proceso de desarrollo  de software

prof. G. Badillo, 2014_1

8

El procesos de Requisitos (ref. RUP de IBM)

prof. G. Badillo, 2014_1

9

El proceso de definición de la arquitectura 

prof. G. Badillo, 2014_1

10

Comunicando y documentando la arquitectura de software •

Un modelo contiene los elementos que componen ese modelo. Por ejemplo, un modelo de datos contendrá entidades y las relaciones entre ellos, un modelo de aplicación contendrá componentes, interfaces y interacciones de los componentes, y un modelo de infraestructura contendrá ubicaciones, los nodos, las conexiones entre los nodos, y la colocación de los componentes en los nodos.



Una vista (que puede representarse mediante varios esquemas) se refiere a todos los elementos de modelado que necesita a fin de comunicar la arquitectura a un determinado conjunto de actores que comparten un conjunto común de preocupaciones. Por ejemplo, una vista de seguridad puede referirse a elementos en un modelo de datos, modelo de aplicación y modelo de infraestructura. Estos puntos de vista y luego forman una parte importante de cualquier "empaquetada" descripción de la arquitectura que a continuación, se comunica a los diferentes grupos de interés.

prof. G. Badillo, 2014_1

11



la secuencia lógica de los elementos que se van a utilizar para comunicar la  arquitectura es : 1.

Identificar los grupos de interés (Stakeholders). Como se mencionó anteriormente, cuando  la documentación de una arquitectura de software , la primera cosa a entender es el  público objetivo. Los interesados se pueden organizar en grupos que comparten una serie  de preocupaciones relacionadas. Los dos grupos de partes interesadas que se muestran en  la figura son los desarrolladores y probadores .

2.

Seleccione las vistas (View). Una vez identificados los grupos de interés , entonces  necesitamos identificar los puntos de vista correspondientes que permitirán que sus  preocupaciones sean expresadas . Cada vista requiere la información en poder de  determinados productos de trabajo (como modelos) por lo que la arquitectura puede ser  comunicada a los grupos de interés identificados de forma adecuada

3.

Cree los productos de trabajo . El arquitecto (o equipo de arquitectura ) rellena los  productos de trabajo en consecuencia. Por ejemplo , podemos añadir elementos a  cualquiera de los modelos que hemos decidido crear .

4.

Empaquete la descripción de la arquitectura . En vez de comunicar la arquitectura  utilizando todos los productos de trabajo que se han creado , por lo general empaquetar  elementos en una forma que es más fácilmente consumidos por los grupos de interés ( por  ejemplo, todas las partes interesadas no pueden tener acceso a cualquier herramienta de  modelado que se utilizan para crear cierta productos de trabajo ) . El diagrama anterior  muestra el arquitecto creando una Arquitectura de Software Descripción entregable. Esta  entrega está organizada por los diferentes puntos de vista sobre la arquitectura .

prof. G. Badillo, 2014_1

12

Vistas – Diagramas – Modelos (View, Diagrams – Models)

prof. G. Badillo, 2014_1

13

Algunos Frameworks de descripción de arquitectura • Arquitectura de Software • • • •

Modelo 4 +1 (Krutchen) Rozanski and Woods [Rozanski] Siemens RM‐ODP 

• Ingeniería de Sistemas

– Desarrollo de sistema dirigido por modelos, (Model‐Driven Systems Development (MDSD) [MDSD]. Formerly RUP for Systems Engineering (RUP‐SE) )

• Arquitectura Empresarial

– The Open Group Architecture Framework (ToGAF)  – The Zachman Framework [Zachman] 

• De dominios específicos •

– Department of Defense Architecture Framework (DoDAF) – Ministry of Defence Architecture Framework (MoDAF)  prof. G. Badillo, 2014_1

14

ejemplos

prof. G. Badillo, 2014_1

15

Grado de participación del Arquitecto según el tamaño del  proyecto Proyecto pequeños

Proyectos grandes

Rol

Se le asigna a una sola persona los  diferentes roles del arquitecto:  Arquitecto de Aplicación, Arquitecto  de Infraestructura, Arquitecto de  Datos

Diferentes ingenieros son asignados  a cada una de las funciones de  arquitectura del arquitecto principal,  Arquitecto de Aplicación, Arquitecto  de Infraestructura, Arquitecto de  Datos. Además, el equipo también  incluye un arquitecto de seguridad.

Tareas

Una Introducción a la arquitectura se  Una visión global de la arquitectura  crea como un croquis en una pizarra  se crea como un producto de trabajo  formal que se mantiene. y/o  un documento básico (no se  mantiene al día).

Producto de trabajo

Una arquitectura a prueba de  concepto se crea sólo en papel (sin  software ejecutable tiene que ser  construido). 

Una arquitectura a prueba de  concepto se crea como software  ejecutable.

Los puntos de vista de los requisitos,  los puntos de vista  de los requisitos,  de las funciones, de  implementación, de validación,  de las funciones ,de   implementación y rendimiento se  rendimiento y seguridad se utilizan  utilizan para documentar la  para documentar la arquitectura.  arquitectura. . prof. G. Badillo, 2014_1

16

Fuerzas que influyen en la labor del arquitecto

prof. G. Badillo, 2014_1

17

Un caso de estudio: “Your Tour”

prof. G. Badillo, 2014_1

18

Actividad 1: definir  el contexto

prof. G. Badillo, 2014_1

19

Actividad 2:  esquematizando los  requisitos 

prof. G. Badillo, 2014_1

20

Clasificando los requisitos funcionales y no funcionales con “FURPS+”

¿ Puede el software (por si  solo) satisfacer todos estos  requisitos ?

El Software no puede, por sí solo, satisfacer todas las necesidades de requisitos,  especialmente las siguientes categorías:



Confiabilidad (Reliability) : Es la medida de la habilidad de un sistema a mantenerse operativo a lo largo del tiempo (Barbacci et al., 1995).



Desempeño, (Performance): Es el grado en el cual un sistema o componente cumple con sus funciones designadas, dentro de ciertas restricciones dadas, como velocidad, exactitud o uso de memoria. (IEEE 610.12). Según Smith (1993), el desempeño de un sistema se refiere a aspectos temporales del comportamiento del mismo. Se refiere a capacidad de respuesta, ya sea el tiempo requerido para responder a aspectos específicos o el número de eventos procesados en un intervalo de tiempo. Según Bass et al. (1998), se refiere además a la cantidad de comunicación e interacción existente entre los componentes del sistema.



Compatibilidad (Supportability): o la capacidad de soporte se refiere a las características inherentes de diseño e  instalación que permiten el mantenimiento y el apoyo eficaz y eficiente del sistema a lo largo del ciclo de vida



Restricciones físicas (physical constraints): Es una restricción que especifica una propiedad(es) física(s) del  dominio de aplicación que no puede ser violada.

prof. G. Badillo, 2014_1

22

Tipos y niveles de requisitos,  ref: Software Requirements Engineering: What, Why, Who, When, and How By Linda Westfall

prof. G. Badillo, 2014_1

23

Actividad 3: priorizando  los requisitos

prof. G. Badillo, 2014_1

24

Los arquitectos obtienen las soluciones dirigidas por las necesidades del negocio

prof. G. Badillo, 2014_1

25

Actividad 4: defina la vista general de la arquitectura

prof. G. Badillo, 2014_1

26

Actividad 5:  Describiendo los  elementos funcionales

prof. G. Badillo, 2014_1

27

Describiendo los elementos funcionales

prof. G. Badillo, 2014_1

28

Describiendo los elementos funcionales

prof. G. Badillo, 2014_1

29

Asignando los requerimientos  no funcionales a los componentes

prof. G. Badillo, 2014_1

30

Detallando los elementos funcionales

prof. G. Badillo, 2014_1

31

Detallando los elementos funcionales

prof. G. Badillo, 2014_1

32

Describiendo los elementos de despliegue

prof. G. Badillo, 2014_1

33

Detallando los elementos de despliegue

prof. G. Badillo, 2014_1

34

Los arquitectos refinan la solución según las tendencias  tecnológicas 

prof. G. Badillo, 2014_1

35

Arquitectura de referencia J2EE 

prof. G. Badillo, 2014_1

36

Tecnologías específicas

prof. G. Badillo, 2014_1

37

Tecnologías específicas

prof. G. Badillo, 2014_1

38

Desde los requisitos a la solución Método de Diseño  dirigido por Atributos  (ADD)

• •

Desarrollado por SEI. Los atributos de calidad dirigen la Arquitectura

Método de las 4 vistas de  Siemens (S4V)

• • •

Desarrollado por Siemens Corporate Research Un análisis de los factores globales que dirigen la arquitectura Aborda de manera iterativa desafíos a través de cuatro puntos de vista  (conceptual, ejecución, módulos y la arquitectura de código)

The Rational Unified Process (RUP) 

• • •

Desarrollado por IBM Rational Los requisitos arquitectónicamente representativos dirigen la arquitectura Cada iteración considera los elementos arquitectónicos principales de la  solución, antes de darse cuenta de los requisitos a través de ellos

prof. G. Badillo, 2014_1

39

Tendencias actuales en Desarrollo de Software

prof. G. Badillo, 2014_1

40

Development and Operations, participación efectiva de los administradores de sistemas en el proceso de desarrollo de aplicaciones, utilizando las mismas técnicas ágiles que usan los desarrolladores.

http://theagileadmin.com/what‐is‐devops/

prof. G. Badillo, 2014_1

41

The Architecture Business Cycle • El barco de guerra sueco “Vasa”

prof. G. Badillo, 2014_1

42

The Architecture Business Cycle. (ABC) • •







La Historia del barco de guerra Sueco “Vasa”, nos narra la experiencia vivida por el  arquitecto de ese entonces, Henrik Hybertsson, quién tenía a cargo la construcción del  Vasa.  Hybertsson tenía que equilibrar atributos de calidad propias de la construcción de  barcos, como el rendimiento, la funcionalidad, la seguridad, la confiabilidad, y el costo,  versus los “deseos” del rey en cuanto a tener un barco de guerra jamás visto en el  mundo, y de extender el armamento del Vasa hasta el límite. Por otra parte Hybertsson tenía una gran reputación como constructor de barcos, y  precedido de una tremenda experiencia, era responsable de los grupos de interés,  como el rey, la tripulación, etc. Frente a una tarea imposible, Hybertsson tuvo la  fortuna de morir cerca de un año antes de que terminara la nave. El proyecto finalizó su construcción de acuerdos a los requerimientos planteados. Y fue  botado al agua un 10 de agosto de 1628, que luego de disparar algunos de sus cañones  se hundió en su primer día en el mar.Luego de ello una serie de conjeturas fueron  hechas, desde que el Vasa había sido bien construido, pero mal proporcionado, o sea  su Arquitectura era defectuosa. Hoy en día,sabemos que Hybertsson fue débil a todos los conflictos de interés que  sobre él actuaban. En particular, hizo un mal trabajo de la gestión de riesgos y un mal  trabajo de gestión de clientes. Él simplemente asintió ante las exigencias imposibles de  los stakeholders. •



La historia del Vasa tiene mas de 385 años, y nos ilustra el ciclo de negocio de la  arquitectura : los objetivos de la organización generan requisitos, los cuales generan  una arquitectura, y  la cual genera un Sistema.

Ref: tomado del libro Software Architecture in Practice

43

La pregunta en cuestión es: ¿Cuál es la relación entre la  arquitectura de software de un sistema y el medio ambiente en el  cual el sistema será construido y luego existirá? • La arquitectura de software es  el resultado de influencias  sociales, de negocio, y técnicas  que existen durante el ciclo de  vida del proyecto. Esto es el  llamado ABC, “The Architecture Business Cycle.  (ref. SEI, www.sei.cmu.edu) • La arquitectura básicamente  está influenciada por: 1. 2. 3.

Los Stakeholders del sistema Factores organizacionales y  técnicos. La experiencia del arquitecto.

The Architecture Business Cycle

prof. G. Badillo, 2014_1

44

1.

La arquitectura está influenciada por Los  stakeholders del sistema

• Los stakeholders de un sistema, son todas aquellas personas u organizaciones que están interesados en la construcción del sistema. • Ejemplos son el cliente, los usuarios finales, los inversionistas, los mantenedores, los desarrolladores, el jefe del proyecto, incluso aquellos que comercializan el software, etc. • Cada uno de ellos tiene un interés en particular sobre el software a construir, y cada uno de ellos podría por ej. definir su propia funcionalidad, y sus propios atributos de calidad del software, según sus necesidades e intereses. prof. G. Badillo, 2014_1

45

La figura muestra al Arquitecto recibiendo algunas “sugerencias” de los  stakeholders.

Ref: tomado del libro Software Architecture in Practice prof. G. Badillo, 2014_1

46

…cont. Stakeholders • Tener un sistema aceptable incluye características como el rendimiento, la confiabilidad, la disponibilidad, la compatibilidad de la plataforma , el uso de memoria , uso de la red , la seguridad , la modificabilidad , facilidad de uso y la interoperabilidad con otros sistemas , así como su comportamiento. (Propiedades que determinan el diseño global de la arquitectura). • El problema subyacente , es que cada actor tiene diferentes preocupaciones y objetivos , algunos de los cuales pueden ser contradictorios . • El documento que debiera resolver estos conflictos, y ambigüedades, es la especificación de requisito de software. • Pero se trata de un documento de requisitos, que rara vez hace un buen trabajo de capturar todos los requisitos de calidad de un sistema, a nivel de detalles comprobables. • La realidad es que el arquitecto a menudo tiene que llenar los espacios en blanco y mediar los conflictos . prof. G. Badillo, 2014_1

47

Una arquitectura responde a las necesidades de las  partes interesadas

prof. G. Badillo, 2014_1

48

Ej. Clasificación de Stakeholders

prof. G. Badillo, 2014_1

49

2. La arquitectura está influenciada por el  desarrollo organizacional • Además de los objetivos de la organización expresadas a través de los requisitos, una arquitectura está influenciada por la estructura o naturaleza propia de la organización. • Por ejemplo si la organización cuenta con expertos en arquitecturas cliente‐servidor, podría ser este el enfoque apoyado por la organización. • las habilidades y preferencias del personal del área de TI, también deben ser tomadas en cuenta, como posibles influencias. prof. G. Badillo, 2014_1

50

• En general hay tres influencias que provienen de la organización: – El negocio inmediato – El negocio a largo plazo – y la estructura organizacional

• Una organización: – puede tener una inversión inmediata de negocios en determinados activos. – puede desear hacer una inversión de negocio a largo plazo para perseguir los objetivos estratégicos, y el sistema que se propone en uno de los medios de financiación y la ampliación de esa infraestructura. – y la estructura de la organización puede dar forma a la arquitectura de software.

prof. G. Badillo, 2014_1

51

3.

La arquitectura está influenciada por su  entorno

• Un caso especial de la trayectoria y la experiencia del arquitecto se refleja en el entorno técnico. • El ambiente de desarrollo y las arquitecturas actuales influirá en esa arquitectura, cuando está siendo diseñada. • El arquitecto deberá incluir prácticas de la industria, o estándares, o técnicas de la ingeniería de software, y que prevalecen en la comunidad profesional de la ingeniería de software. prof. G. Badillo, 2014_1

52

La arquitectura está influenciada por su  entorno…

prof. G. Badillo, 2014_1

53

4.

La arquitectura está influenciada por la  trayectoria y experiencia del arquitecto

• Si los arquitectos de un sistema han tenido buenos resultados usando un enfoque de arquitectura en particular, lo más probable es que van a usar ese mismo enfoque en un nuevo desarrollo. Por el contrario, si su experiencia previa con este enfoque fue desastroso, los arquitectos estarán reacios a probarlo de nuevo. • En cuanto a las habilidades que caracterizan a un buen arquitecto:

– Habilidades personales: deben tener la capacidad de negociar los intereses personales de los stakeholders y promover la cooperación entre ellos. – Habilidades técnicas: debe ser capaz de entender las corrientes tecnológicas, la relación entre sus cualidades y la estructura, y debe entender que la mayoría de los requerimientos para una arquitectura no están escritos en el documento de requisitos. – Habilidades de comunicación: deben comunicar claramente la arquitectura al equipo de desarrollo, tanto en forma escrita como verbalmente. Escuchar y entender los múltiples puntos de vista. prof. G. Badillo, 2014_1

54

Resumen de las influencias en la arquitectura

prof. G. Badillo, 2014_1

55

El proceso de desarrollo de software y el ABC • Actividades involucradas en la creación de la  arquitectura de software: 1. 2. 3. 4. 5. 6. 7.

Creación del modelo de negocio para el sistema  La comprensión de los requisitos  La creación o la selección de la arquitectura  Documentar y comunicar la arquitectura  Análisis y evaluación de la arquitectura  Implementar el sistema basado en la arquitectura  Asegurarse de que la aplicación se ajusta a la  arquitectura

prof. G. Badillo, 2014_1

56

Considere las siguientes preocupaciones de alto nivel cuando  se piensa acerca de la arquitectura de software:  • ¿Cómo van los usuarios a utilizar la aplicación?  • ¿Cómo la aplicación se desplegará en producción?  • ¿Cuáles son los requisitos de los atributos de calidad de la aplicación, como  por ejemplo: la seguridad, el rendimiento, la concurrencia, la configuración,  entre otras?  • ¿Cómo puede ser la aplicación diseñada para ser flexible y fácil de mantener  en el tiempo?  • ¿Cuáles son las tendencias arquitectónicas que puedan afectar a su  aplicación ahora o después que se ha implementado? • Mantenga en mente que debe: – – – –

Exponer la estructura del sistema, pero ocultar los detalles de implementación.  Llevar a cabo la realización de todos los casos de uso y escenarios.  Tratar de responder a las necesidades de los diversos grupos de interés (stakeholders). Manejar tantos los requisitos de funcionales como calidad.

prof. G. Badillo, 2014_1

57

Considere las siguientes tendencias clave: • Empoderamiento del usuario . Diseño flexible , configurable, y centrado en la  experiencia del usuario. Diseñe sus aplicaciones con los niveles adecuados de  personalización de usuario. Permita al usuario definir la forma en que  interactúan con su aplicación, no sobrecargue con opciones innecesarias y  ajustes que pueden llevar a confusión .  • La madurez del mercado . Tome ventaja de la madurez del mercado mediante  el aprovechamiento de opciones de plataforma y tecnología existentes. Basarse  en los entornos de aplicaciones de más alto nivel donde tiene sentido , de modo  que usted pueda centrarse en lo que es un valor único en su aplicación en lugar  de volver a crear algo que ya existe y se puede volver a utilizar. Utilice patrones  que proporcionan una rica fuente de soluciones probadas a problemas comunes . • Diseño flexible . Cada vez más, los diseños flexibles aprovechan el acoplamiento  flexible para permitir la reutilización y para mejorar la mantenibilidad .También  puede tomar ventaja de las técnicas de orientación de servicio tales como SOA  para proporcionar interoperabilidad con otros sistemas. • Las tendencias futuras . Cuando construya su arquitectura, entienda que las  tendencias futuras pueden afectar su diseño después de la implementación .  prof. G. Badillo, 2014_1

58

Considere los siguientes objetivos de la arquitectura • La arquitectura de software busca construir un puente entre las necesidades de negocio y los requerimientos técnicos mediante la comprensión de los casos de uso, y luego encontrar la forma de aplicarlos en el software. • La buena arquitectura reduce los riesgos de negocio asociados a la construcción de una solución técnica. • Un buen diseño es suficientemente flexible, cuando es capaz de manejar la deriva natural que se producirá con el tiempo en el hardware y software, así como en escenarios y necesidades de los usuarios. • Un arquitecto debe tener en cuenta el efecto total de las decisiones de diseño, las inherentes ventajas y desventajas entre los atributos de calidad (como el rendimiento y la seguridad), y las compensaciones necesarias para hacer atender las necesidades de los usuarios, el sistema y los requerimientos del negocio.

prof. G. Badillo, 2014_1

59

Todas las fuerzas que influyen en el diseño la  arquitectura, 

60

ref: SEI, www.sei.cmu.edu/library/abstracts/news‐at‐sei/architect20052.cfm

Vista general del método de diseño industrializado

prof. G. Badillo, 2014_1

61

Magister en Ingeniería Informática

Arquitectura de Software ii. Conceptualizando la Arquitectura de Software Prof. Guillermo E. Badillo Astudillo  Semestre I, 2014