• No se han encontrado resultados

Arquitectura de Software ii. Conceptualizando la Arquitectura de Software

N/A
N/A
Protected

Academic year: 2021

Share "Arquitectura de Software ii. Conceptualizando la Arquitectura de Software"

Copied!
62
0
0

Texto completo

(1)

Prof. Guillermo E. Badillo Astudillo 

Semestre I, 2014

Arquitectura de Software

ii. Conceptualizando la Arquitectura de Software

(2)

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

(3)

Modelo conceptual de la descripción de la arquitectura, 

ref. IEEE 1471‐2000 3 prof. G. Badillo, 2014_1

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]

(4)

Contexto de la descripción de la arquitectura, 

(5)

Modelo conceptual de la descripción de una arquitectura,

ref: ISO/IEC/IEEE 42010 

5 prof. G. Badillo, 2014_1

(6)

• 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.

(7)

Para el software, no se puede definir su arquitectura, en 

forma aislada del contexto más amplio del sistema

7 prof. G. Badillo, 2014_1

(8)

La arquitectura dentro del proceso de desarrollo 

de software

(9)

El procesos de Requisitos (ref. RUP de IBM)

9 prof. G. Badillo, 2014_1

(10)
(11)

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.

Comunicando y documentando la arquitectura de software

11 prof. G. Badillo, 2014_1

(12)

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 .

(13)

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

13 prof. G. Badillo, 2014_1

(14)

• 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) 

(15)

ejemplos

15 prof. G. Badillo, 2014_1

(16)

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

Producto de trabajo Una arquitectura a prueba de  concepto se crea sólo en papel (sin  software ejecutable tiene que ser  construido).  los puntos de vista  de los requisitos,  de las funciones ,de   implementación y rendimiento se  utilizan para documentar la  arquitectura. Una arquitectura a prueba de  concepto se crea como software  ejecutable. Los puntos de vista de los requisitos,  de las funciones, de  implementación, de validación,  rendimiento y seguridad se utilizan  para documentar la arquitectura.  .

(17)

Fuerzas que influyen en la labor del arquitecto

17 prof. G. Badillo, 2014_1

(18)
(19)

Actividad 1: definir 

el contexto

19 prof. G. Badillo, 2014_1

(20)

Actividad 2: 

esquematizando los 

(21)

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

¿ Puede el software (por si 

solo) satisfacer todos estos 

(22)

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.

El Software no puede, por sí solo, satisfacer todas las necesidades de requisitos, 

especialmente las siguientes categorías:

(23)

Tipos y niveles de requisitos, 

ref: Software Requirements Engineering: What, Why, Who, When, and How By Linda Westfall

23 prof. G. Badillo, 2014_1

(24)

Actividad 3: priorizando 

los requisitos

(25)

Los arquitectos obtienen las soluciones dirigidas por las necesidades del negocio

25 prof. G. Badillo, 2014_1

(26)
(27)

Actividad 5: 

Describiendo los 

elementos funcionales

27 prof. G. Badillo, 2014_1

(28)
(29)

Describiendo los elementos funcionales

29 prof. G. Badillo, 2014_1

(30)
(31)

Detallando los elementos funcionales

31 prof. G. Badillo, 2014_1

(32)
(33)

Describiendo los elementos de despliegue

33 prof. G. Badillo, 2014_1

(34)
(35)

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

tecnológicas 

35 prof. G. Badillo, 2014_1

(36)
(37)

Tecnologías específicas

37 prof. G. Badillo, 2014_1

(38)
(39)

Desde los requisitos a la solución

39 prof. G. Badillo, 2014_1 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 

(40)
(41)

41 prof. G. Badillo, 2014_1

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.

(42)

The Architecture Business Cycle

(43)

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

The Architecture Business Cycle. (ABC)

(44)

• 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.

Los Stakeholders del sistema

2.

Factores organizacionales y 

técnicos.

3.

La experiencia del arquitecto.

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á?

(45)

• 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.

1.

La arquitectura está influenciada por Los 

stakeholders del sistema

45 prof. G. Badillo, 2014_1

(46)

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

stakeholders

.

(47)

• 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 .

…cont. Stakeholders

47 prof. G. Badillo, 2014_1

(48)

Una arquitectura responde a las necesidades de las 

partes interesadas

(49)

Ej. Clasificación de Stakeholders

49 prof. G. Badillo, 2014_1

(50)

• 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.

2. La arquitectura está influenciada por el 

(51)

• 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.

51 prof. G. Badillo, 2014_1

(52)

• 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.

3.

La arquitectura está influenciada por su 

entorno

(53)

La arquitectura está influenciada por su 

entorno…

53 prof. G. Badillo, 2014_1

(54)

• 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.

4.

La arquitectura está influenciada por la 

trayectoria y experiencia del arquitecto

(55)

Resumen de las influencias en la arquitectura

55 prof. G. Badillo, 2014_1

(56)

• Actividades involucradas en la creación de la 

arquitectura de software:

1. Creación del modelo de negocio para el sistema 

2. La comprensión de los requisitos 

3. La creación o la selección de la arquitectura 

4. Documentar y comunicar la arquitectura 

5. Análisis y evaluación de la arquitectura 

6. Implementar el sistema basado en la arquitectura 

7. Asegurarse de que la aplicación se ajusta a la 

arquitectura

El proceso de desarrollo de software y el ABC

(57)

• ¿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.

Considere las siguientes preocupaciones de alto nivel cuando 

se piensa acerca de la arquitectura de software

57 prof. G. Badillo, 2014_1

(58)

• 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 

Considere las siguientes tendencias clave:

(59)

• 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.

Considere los siguientes objetivos de la arquitectura

59 prof. G. Badillo, 2014_1

(60)

Todas las fuerzas que influyen en el diseño la 

arquitectura, 

(61)

Vista general del método de diseño industrializado

61 prof. G. Badillo, 2014_1

(62)

Prof. Guillermo E. Badillo Astudillo 

Semestre I, 2014

Arquitectura de Software

ii. Conceptualizando la Arquitectura de Software

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

El nuevo Decreto reforzaba el poder militar al asumir el Comandante General del Reino Tserclaes de Tilly todos los poderes –militar, político, económico y gubernativo–; ampliaba

No había pasado un día desde mi solemne entrada cuando, para que el recuerdo me sirviera de advertencia, alguien se encargó de decirme que sobre aquellas losas habían rodado

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

De hecho, este sometimiento periódico al voto, esta decisión periódica de los electores sobre la gestión ha sido uno de los componentes teóricos más interesantes de la

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Package Item (Container) Type : Vial (100000073563) Quantity Operator: equal to (100000000049) Package Item (Container) Quantity : 1 Material : Glass type I (200000003204)