2.4.diseÑo de la arquitectura del software

74
DISEÑO DE LA ARQUITECTURA DEL SOFTWARE UNIDAD 2 TEMA 2.4. Ing. Rosa Imelda Ing. Rosa Imelda García Chi García Chi

Upload: rosa-imelda-garcia-chi

Post on 08-Jun-2015

14.228 views

Category:

Documents


2 download

DESCRIPTION

Diseño de sistemas en cuanto a arquitectura de software

TRANSCRIPT

Page 1: 2.4.DiseÑo de La Arquitectura Del Software

DISEÑO DE LA ARQUITECTURA DEL

SOFTWAREUNIDAD 2

TEMA 2.4.

Ing. Rosa Imelda Ing. Rosa Imelda García ChiGarcía Chi

Page 2: 2.4.DiseÑo de La Arquitectura Del Software

Diseño de software:

El diseño se ha descrito como un proceso multifase en el que se sintetizan representaciones de la estructura de los datos, la estructura del programa, las características de la interfaz y los detalles procedimentales desde los requisitos de la información.

Page 3: 2.4.DiseÑo de La Arquitectura Del Software

Según Freeman, el diseño es…

...una actividad en la que se toman decisiones importantes, frecuentemente de naturaleza estructural. Comparte con la programación un interés por la abstracción de la representación de la información y de las secuencias de procesamiento, pero el nivel de detalle es muy diferente en ambos casos.

Page 4: 2.4.DiseÑo de La Arquitectura Del Software

Según Freeman …

El diseño construye representaciones coherentes y bien planificadas de los programas, concentrándose en las interrelaciones de los componentes de mayor nivel y en las operaciones lógicas implicadas en los niveles inferiores.. .

Page 5: 2.4.DiseÑo de La Arquitectura Del Software

Se considera que …

El diseño está dirigido por la información. Los métodos de diseño del software se

obtienen del estudio de cada uno de los tres dominios del modelo de análisis:

• El dominio de los datos,

• el funcional y

• el de comportamiento sirven de directriz para la creación del diseño.

Page 6: 2.4.DiseÑo de La Arquitectura Del Software

¿Qué es el diseño arquitectónico?

El diseño arquitectónico representa la estructura de los datos y los componentes del programa que se requieren para construir un sistema de computadora.

Constituye el estilo arquitectónico que tendrá el sistema, las estructuras de datos y las propiedades de los componentes y la interrelación que tiene con otros componentes arquitectónicos del sistema.

Page 7: 2.4.DiseÑo de La Arquitectura Del Software

¿Quién lo hace? Lo puede llevar a cabo el ingeniero de

software… Aunque se recomienda que… El diseño de la base de datos la lleve a cabo el

diseñador de base de datos o almacén de datos y

Que el arquitecto del sistema seleccione el estilo de arquitectura a utilizar, según los requisitos recolectados en el análisis. (esto tiene que ver con el modelo de desarrollo de software mas conveniente a utilizar)

Page 8: 2.4.DiseÑo de La Arquitectura Del Software

¿Por qué es importante?

Proporciona los detalles completos de todo el software que se va a construir.

Se aprecia cada uno de los detalles con conformarán la software.

Asegura que la construcción sea correcta y completa.

Page 9: 2.4.DiseÑo de La Arquitectura Del Software

¿Cuáles son los pasos?

El diseño arquitectónico comienza con el diseño de datos y después procede a la derivación de una o mas representaciones de la estructura arquitectónica del sistema.

Page 10: 2.4.DiseÑo de La Arquitectura Del Software

Arquitectura de Software

Para poder entender el diseño, es necesario comprender que es la arquitectura de software.

Page 11: 2.4.DiseÑo de La Arquitectura Del Software

Arquitectura de software

La arquitectura de software de un sistema de programa o computación es la estructura de las estructuras del sistema, la cual comprende los componentes del software, las propiedades de esos componentes visibles externamente, y las relaciones entre ellos.

Page 12: 2.4.DiseÑo de La Arquitectura Del Software

La arquitectura no es el software operacional.

Más bien, es la representación que capacita al ingeniero del software para:

(1) analizar la efectividad del diseño para la consecución de los requisitos fijados,

(2) considerar las alternativas arquitectónicas en una etapa en la cual hacer cambios en el diseño es relativamente fácil, y

(3) reducir los riesgos asociados a la construcción del software.

Page 13: 2.4.DiseÑo de La Arquitectura Del Software

En el contexto del diseñoarquitectónico,

un componente del software puede ser tan simple como un módulo de programa, pero también puede ser algo tan complicado como incluir bases de datos y software intermedio «middleware») que permiten la configuración de una red de clientes y servidores.

Page 14: 2.4.DiseÑo de La Arquitectura Del Software

Propiedades de los componentes

Las propiedades de los componentes son aquellas características necesarias para entender cómo los componentes interactúan con otros componentes.

A nivel arquitectónico, no se especifican las propiedades internas (por ejemplo, detalles de un algoritmo).

Page 15: 2.4.DiseÑo de La Arquitectura Del Software

Relaciones entre los componentes

Las relaciones entre los componentes pueden ser tan sencillas como una llamada de procedimiento de un módulo a otro, o tan complicadas como el protocolo de acceso a bases de datos.

Page 16: 2.4.DiseÑo de La Arquitectura Del Software

El diseño de la arquitectura de software tiene en cuenta dos niveles de la pirámide del diseño

Diseño de datos y

Diseño arquitectónico

Page 17: 2.4.DiseÑo de La Arquitectura Del Software

Diseño de datos y Diseño Arquitectónico

En este sentido, el diseño de datos nos facilita la representación de los componentes de datos de la arquitectura.

El diseño arquitectónico se centra en la representación de la estructura de los componentes del software, sus propiedades e interacciones.

Page 18: 2.4.DiseÑo de La Arquitectura Del Software
Page 19: 2.4.DiseÑo de La Arquitectura Del Software

¿Por qué es importante la arquitectura?

Las representaciones de la arquitectura de software facilitan la comunicación entre todas las partes (partícipes) interesadas en el desarrollo de un sistema basado en computadora;

Page 20: 2.4.DiseÑo de La Arquitectura Del Software

La arquitectura … la arquitectura destaca decisiones

tempranas de diseño que tendrán un profundo impacto en todo el trabajo de ingeniería del software que sigue, y es tan importante en el éxito final del sistema como una entidad operacional;

la arquitectura «constituye un modelo relativamente pequeño e intelectualmente comprensible de cómo está estructurado el sistema y de cómo trabajan juntos sus componentes».

Page 21: 2.4.DiseÑo de La Arquitectura Del Software

La arquitectura…

El modelo de diseño arquitectónico y los patrones arquitectónicos contenidos dentro son transferibles.

Esto es, los estilos y patrones de arquitectura pueden ser aplicados en el diseño de otros sistemas y representados a través de un conjunto de abstracciones que facilitan a los ingenieros del software la descripción de la arquitectura de un modo predecible.

Page 22: 2.4.DiseÑo de La Arquitectura Del Software

DISEÑO DE DATOS

El diseño de datos (a veces llamado arquitectura de datos) crea un modelo de datos y/o información que se representa con un alto nivel de Abstracción (la visión de datos del cliente/usuario).

Page 23: 2.4.DiseÑo de La Arquitectura Del Software

Modelo de datos

Este modelo de datos, es entonces refinado en progresivas representaciones especificas de la implementación, que pueden ser procesadas por un sistema basado en computadora.

En muchas aplicaciones de software, la arquitectura de datos tendrá una gran influencia sobre la arquitectura del software que debe procesarlo

Page 24: 2.4.DiseÑo de La Arquitectura Del Software

Estructura de datos

La estructura de datos ha sido siempre una parte importante del diseño de software. Al nivel de los componentes del programa, el diseño de las estructuras de datos y de los algoritmos asociados requeridos para su manipulación, son la parte esencial en la creación de aplicaciones de alta calidad

Page 25: 2.4.DiseÑo de La Arquitectura Del Software

Modelo de datos

A nivel de aplicación, la traducción de un modelo de datos (derivado como parte de la ingeniería de requisitos) en una base de datos es el punto clave para alcanzar los objetivos de negocio del sistema.

Page 26: 2.4.DiseÑo de La Arquitectura Del Software

Modelo de datos

A nivel de negocios, el conjunto de información almacenada en las diferentes bases de datos y reorganizada en el almacén de datos facilita la minería de datos o el descubrimiento de conocimiento que puede influir en el propio éxito del negocio.

De cualquier modo, el diseño de datos juega un papel muy importante.

Page 27: 2.4.DiseÑo de La Arquitectura Del Software

Modelado de datos, estructuras de datos, bases de datos y almacén de datos

Los objetos de datos definidos durante el análisis de Requisitos del software son

modelados utilizando diagramas de entidad-relación y el diccionario de datos

Page 28: 2.4.DiseÑo de La Arquitectura Del Software

Del diseño de datos a estructuras de componentes

La actividad de diseño de datos traduce esos elementos del modelo de requisitos en estructuras de datos a nivel de los componentes del software y, cuando es necesario, a arquitectura de base de datos a nivel de aplicación.

Page 29: 2.4.DiseÑo de La Arquitectura Del Software

La arquitectura de datos

Durante muchos años, la arquitectura de datos estuvo limitada, generalmente, a las estructuras de datos a nivel del programa y a las bases de datos a nivel de aplicación.

Pero hoy, las empresas grandes y pequeñas están inundadas de datos.

Page 30: 2.4.DiseÑo de La Arquitectura Del Software

Las empresas y las bases de datos

No es inusual, incluso para una mediana empresa, tener docenas de bases de datos sirviendo diferentes aplicaciones de cientos de gigabytes de datos.

El desafío de las empresas ha sido extraer información útil de su entorno de datos, particularmente cuando la información deseada está funcionalmente interrelacionada (por ejemplo, información que sólo puede obtenerse si los datos de marketing específicos se cruzan con los datos de la ingeniería del producto).

Page 31: 2.4.DiseÑo de La Arquitectura Del Software

Desafío de TI

Para resolver este desafío, la comunidad de empresas de TI ha desarrollado las técnicas de minería de datos, también llamadas

“descubrimiento de conocimiento en bases de datos” (DCBC),

que navegan a través de las bases de datos en un intento por extraer el nivel de información de negocio apropiado.

Page 32: 2.4.DiseÑo de La Arquitectura Del Software

Múltiples Bases de Datos

Sin embargo, la existencia de múltiples bases de datos, sus diferentes estructuras, el grado de detalle contenido en las bases de datos, y muchos otros factores hacen difícil la minería de datos dentro de un entorno con bases de datos existentes.

Una solución alternativa, llamada almacén de datos, añade una capa adicional a la arquitectura de datos.

Page 33: 2.4.DiseÑo de La Arquitectura Del Software

Almacén de datos

Un almacén de datos es un entorno de datos separado, que no está directamente integrado con las aplicaciones del día a día, pero que abarca todos los datos utilizados por una empresa

Page 34: 2.4.DiseÑo de La Arquitectura Del Software

Almacén de datos

En cierto sentido, un almacén de datos es una gran base de datos independiente, que contiene algunos, pero no todos los datos almacenados en las bases de datos que sirven al conjunto de aplicaciones requeridas en un negocio.

Page 35: 2.4.DiseÑo de La Arquitectura Del Software

Sin embargo, hay muchas características diferenciales entre un almacén de datos y una base de datos típica

Orientación por materia. Integración. Restricciones de tiempo. No volatilidad.

Page 36: 2.4.DiseÑo de La Arquitectura Del Software

Orientación por materia.

Un almacén de datos está organizado por las materias importantes del negocio, más que por los procesos o funciones del negocio.

Esto nos lleva a una exclusión de datos que podrían ser necesarios para una función particular del negocio, pero que generalmente no son necesarios para la minería de datos.

Page 37: 2.4.DiseÑo de La Arquitectura Del Software

Integración.

Sin tener en cuenta la fuente de datos, da consistencia nombrar convenciones, unidades y medidas, estructuras de codificación y atributos físicos incluso cuando la inconsistencia existe a través de las diferentes bases de datos orientadas a aplicaciones.

Page 38: 2.4.DiseÑo de La Arquitectura Del Software

Restricciones de tiempo. Para un entorno de aplicación orientado a

transacción, los datos son precisos en el momento del acceso y por un periodo de tiempo relativamente pequeño (normalmente de 60 a 90 días) antes del acceso.

Sin embargo, en un almacén de datos, se accede a los datos en un momento específico del tiempo (por ejemplo, los clientes con los que se ha contactado el mismo día que el nuevo producto ha sido anunciado en la prensa comercial).

El horizonte típico de tiempo de un almacén de datos es de 5 a 10 años.

Page 39: 2.4.DiseÑo de La Arquitectura Del Software

No volatilidad.

A diferencia de las típicas bases de datos de aplicaciones de negocios que atraviesan una continua corriente de cambios (insertar, borrar, actualizar), en el almacén de datos los datos se cargan, pero después de la primera transferencia, los datos no cambian.

Page 40: 2.4.DiseÑo de La Arquitectura Del Software

Diseño de datos a nivel de componentes

El diseño de datos a nivel de componentes se centra en la representación de estructuras de datos a las que se accede directamente a través de uno o más componentes del software.

Page 41: 2.4.DiseÑo de La Arquitectura Del Software

Análisis de requisitos y diseño

Recordando que el análisis de requisitos y el diseño a menudo se solapan, consideramos el siguiente conjunto de principios para la especificación de datos:

Page 42: 2.4.DiseÑo de La Arquitectura Del Software

Principios para especificaciones

1. Los principios del análisis sistemático aplicados a la función y al comportamiento deberían aplicarse también a los datos.

Invertimos mucho tiempo y esfuerzo en obtener, revisar y especificar los requisitos funcionales y el diseño preliminar.

Page 43: 2.4.DiseÑo de La Arquitectura Del Software

Principios para especificacionesLas representaciones de flujo de

datos y contenido deberían desarrollarse y revisarse, las de objetos de datos deberían identificarse, se deberían estudiar las organizaciones alternativas de datos y debería evaluarse el impacto del modelado de datos sobre el diseño del software.

Page 44: 2.4.DiseÑo de La Arquitectura Del Software

Principios

2. Todas las estructuras de datos y las operaciones a llevar a cabo en cada una de ellas deberían estar claramente identificadas.

El diseño de una estructura de datos eficaz debe tener en cuenta las operaciones que se van a llevar a cabo sobre dicha estructura de datos

La especificación de los tipos de datos abstractos puede simplificar considerablemente el diseño del software.

Page 45: 2.4.DiseÑo de La Arquitectura Del Software

Principios

3. Se debería establecer un diccionario de datos y usarlo para definir el diseño de los datos y del programa.

Un diccionario de datos representa explícitamente las relaciones entre los objetos de datos y las restricciones de los elementos de una estructura de datos.

Los algoritmos que deben aprovecharse de estas relaciones específicas pueden definirse más fácilmente si existe una especificación de datos tipo diccionario.

Page 46: 2.4.DiseÑo de La Arquitectura Del Software

Principios

4. Las decisiones de diseño de datos de bajo nivel deberían dejarse para el final del proceso de diseño.

Se puede usar un proceso de refinamiento paso a paso para el diseño de datos. Es decir, la organización general de datos puede definirse durante el análisis de requisitos; refinarse durante los trabajos de diseño de datos y especificarse en detalle durante el diseño a nivel de componentes.

Page 47: 2.4.DiseÑo de La Arquitectura Del Software

Principios

4… El enfoque descendente del diseño de data

proporciona ventajas análogas al enfoque descendente del diseño de software: se diseñan y evalúan primeramente los atributos estructurales principales de manera que se pueda establecer la arquitectura de los datos.

Page 48: 2.4.DiseÑo de La Arquitectura Del Software

Principios

5. La representación de las estructuras de datos deberían conocerla sólo aquellos módulos que deban hacer uso directo de los datos contenidos dentro de la estructura.

Page 49: 2.4.DiseÑo de La Arquitectura Del Software

Principios

6. Debería desarrollarse una biblioteca de estructuras de datos útiles y de las operaciones que se les pueden aplicar. Las estructuras de datos y las operaciones deberían considerarse como recursos para el diseño del software.

Las estructuras de datos pueden diseñarse para que se puedan reutilizar.

Una biblioteca de plantillas de estructuras de datos (tipos abstractos de datos) puede reducir el esfuerzo del diseño y de la especificación de datos.

Page 50: 2.4.DiseÑo de La Arquitectura Del Software

Principios

7. Un diseño del software y un lenguaje de programación debería soportar la especificación y realización de los tipos abstractos de datos.

La implementación de una estructura de datos sofisticada puede hacerse excesivamente difícil si no existen los medios de especificación directa de la estructura en el lenguaje de programación escogido para dicha implementación.

Page 51: 2.4.DiseÑo de La Arquitectura Del Software

Principios

Los principios descritos anteriormente forman una base para un enfoque de

diseño de datos a nivel de componentes que puede integrarse en las fases de

análisis y diseño.

Page 52: 2.4.DiseÑo de La Arquitectura Del Software

Estilos arquitectónicos

El software construido para sistemas basados en computadoras también cuenta con diversos

estilos arquitectónicos:estilos arquitectónicos:

Page 53: 2.4.DiseÑo de La Arquitectura Del Software

Estilos arquitectónicos o patrones Cada estilo describe una categoría del sistema que Cada estilo describe una categoría del sistema que

contiene: contiene: (1) un conjunto de componentes (por ejemplo, una base de

datos, módulos computacionales) que realizan una función requerida por el sistema;

(2) un conjunto de conectores que posibilitan la «comunicación, la coordinación y la cooperación» entre los componentes;

(3) restricciones que definen cómo se pueden integrar los componentes que forman el sistema; y

(4) Modelos semánticos que permiten al diseñador entender las propiedades globales de un sistema para analizar las propiedades conocidas de sus partes constituyentes.

Page 54: 2.4.DiseÑo de La Arquitectura Del Software

Una breve taxonomía de estilos y patrones

Cientos de miles de sistemas basados en computadora, la gran mayoría pueden ser clasificados dentro de uno de los estilos arquitectónicos siguientes:

Page 55: 2.4.DiseÑo de La Arquitectura Del Software

Estilos Arquitectónicos:

Arquitecturas centradas de datos. Arquitecturas de flujo de datos. Arquitecturas de llamada y retorno. Arquitecturas orientadas a objetos. Arquitecturas estratificadas.

Page 56: 2.4.DiseÑo de La Arquitectura Del Software

Arquitecturas centradas de datos

En el centro de esta arquitectura se encuentra un almacén de datos (por ejemplo, un documento o una base de datos) al que otros componentes acceden con frecuencia para actualizar, añadir, borrar o bien modificar los datos del almacén.

Page 57: 2.4.DiseÑo de La Arquitectura Del Software
Page 58: 2.4.DiseÑo de La Arquitectura Del Software

Arquitecturas de flujo de datos.

Esta arquitectura se aplica cuando los datos de entrada son transformados a través de una serie de componentes computacionales o manipulativos en los datos de salida.

Page 59: 2.4.DiseÑo de La Arquitectura Del Software
Page 60: 2.4.DiseÑo de La Arquitectura Del Software

Arquitecturas de llamada y retorno.

Este estilo arquitectónico permite al diseñador del software (arquitecto del sistema) construir una estructura de programa relativamente fácil de modificar y ajustar a escala.

Existen dos subestilos dentro de esta categoría:

Page 61: 2.4.DiseÑo de La Arquitectura Del Software

Arquitecturas de llamadas de retorno:

arquitecturas de programa principal.

arquitecturas de llamada de procedimiento remoto.

Page 62: 2.4.DiseÑo de La Arquitectura Del Software

Arquitecturas orientadas a objetos.

Los componentes de un sistema encapsulan los datos y las operaciones que se deben realizar para manipular los datos.

La comunicación y la coordinación entre componentes se consigue a través del paso de mensajes.

Page 63: 2.4.DiseÑo de La Arquitectura Del Software

Arquitecturas estratificadas.

La estructura básica de una arquitectura estratificada se representa en la Figura14.3. Se crean diferentes capas y cada una realiza operaciones que progresivamente se aproximan más al cuadro de instrucciones de la máquina.

En la capa externa, los componentes sirven a las operaciones de interfaz de usuario.

En la capa interna, los componentes realizan operaciones de interfaz del sistema. Las capas intermedias proporcionan servicios de utilidad y funciones del software de aplicaciones.

Page 64: 2.4.DiseÑo de La Arquitectura Del Software
Page 65: 2.4.DiseÑo de La Arquitectura Del Software

Estilos Arquitectónicos Los estilos arquitectónicos citados anteriormente son sólo una pequeña parte de los que dispone el

diseñador de software . Una vez que la ingeniería de requisitos define las

características y las restricciones del sistema que ha de ser construido, se escoge el patrón arquitectónico (estilo) o la combinación de patrones (estilos) que mejor encajan con las características y restricciones.

En muchos casos, puede ser apropiado más de un patrón y se podrían diseñar y evaluar estilos arquitectónicos alternativos.

Page 66: 2.4.DiseÑo de La Arquitectura Del Software

Un método de análisis de compromiso para la Arquitectura

El Instituto de Ingeniería de Software (SEI) ha desarrollado un Método de análisis de compromiso para la arquitectura (MACA) que establece un proceso de evaluación iterativo para las arquitecturas de software.

Las actividades de análisis de diseño mencionadas abajo se realizan iterativamente:

Page 67: 2.4.DiseÑo de La Arquitectura Del Software

MACA

1. Recopilación de escenarios. 2. Elicitación de requisitos. 3. Describir los patroneslestilos arquitectónicos escogidospara derivar los escenarios y requisitos. 4. Evaluar los atributos de calidad considerando cadaatributo de forma aislada. 5.Identificar la sensibilidad de los atributos de calidadcon los diferentes atributos arquitectónicos enun estilo arquitectónico específico. 6. Análisis de las arquitecturas candidatas (desarrolladasen el paso 3) utilizando el análisis de sensibilidaddel paso 5.

Page 68: 2.4.DiseÑo de La Arquitectura Del Software

CONCLUSIONES

La arquitectura del software nos proporciona una visión global del sistema a construir.

Page 69: 2.4.DiseÑo de La Arquitectura Del Software

CONCLUSIONES

Describe la estructura y la organización de los componentes del software, sus propiedades y las conexiones entre ellos.

Los componentes del software incluyen módulos de programas y varias representaciones de datos que son manipulados por el programa.

Page 70: 2.4.DiseÑo de La Arquitectura Del Software

CONCLUSIONES

Además, el diseño de datos es una parte integral para la derivación de la arquitectura del software.

La arquitectura marca decisiones de diseño

tempranas y proporciona el mecanismo para evaluar los beneficios de las estructuras de sistema alternativas.

Page 71: 2.4.DiseÑo de La Arquitectura Del Software

CONCLUSIONES El diseño de datos traduce los objetos de

datos definidos en el modelo de análisis, en estructuras de datos que residen dentro del software.

Los atributos que describe el objeto, las relaciones entre los objetos de datos y su uso dentro del programa influyen en la elección de la estructura de datos. A mayor nivel de abstracción, el diseño de datos conducirá a lo que se define como una arquitectura para una base de datos o un almacén de datos.

Page 72: 2.4.DiseÑo de La Arquitectura Del Software

CONCLUSIONES El ingeniero del software cuenta con diferentes

estilos y patrones arquitectónicos. Cada estilo describe una categoría de sistema

que abarca un conjunto de componentes que realizan una función requerida por el sistema, un conjunto de conectores que posibilitan la comunicación, la coordinación y cooperación entre los componentes, las restricciones que definen cómo se integran los componentes para conformar el sistema, y los modelos semánticos que facilitan al diseñador el entendimiento de todas las partes del sistema.

Page 73: 2.4.DiseÑo de La Arquitectura Del Software

CONCLUSIONES

El diseño arquitectónico agrupa un grupo inicial de actividades de diseño que conducen a un modelo completo del diseño del software.

Page 74: 2.4.DiseÑo de La Arquitectura Del Software

Gracias …

¿dudas?