Ingenieria de software - Unidad 3 arquitecturas de software

28
Ingeniería en Sistemas Computacionales Fundamentos de Ingeniería de Software Unidad III: Arquitecturas de Software Este material está desarrollado para la asignatura Ingeniería de Software, de la carrera de Ingeniería en Sistemas Computacionales, plan de estudios ISIC-2010-224 INGENIERÍA DE SOFTWARE

Transcript of Ingenieria de software - Unidad 3 arquitecturas de software

Page 1: Ingenieria de software - Unidad 3 arquitecturas de software

Ingeniería en Sistemas ComputacionalesFundamentos de Ingeniería de Software

Unidad III: Arquitecturas de Software

Este material está desarrollado para la asignatura Ingeniería de Software, de la carrera de Ingeniería en SistemasComputacionales, plan de estudios ISIC-2010-224

INGENIERÍA DE SOFTWARE

Page 2: Ingenieria de software - Unidad 3 arquitecturas de software

Competencia: Identificar y establecer los lineamientos formales para el desarrollode aplicaciones robustas, tomando decisiones técnicas relacionadas con laarquitectura de la aplicación como guía para el diseño de la misma.

INGENIERÍA DE SOFTWARE

Page 3: Ingenieria de software - Unidad 3 arquitecturas de software

Diseño en el contexto de la ingeniería de software

El diseño del software siempre debe empezar con en el análisis de losdatos, pues son los fundamentos de todos los demás elementos del diseño.

INGENIERÍA DE SOFTWARE

Page 4: Ingenieria de software - Unidad 3 arquitecturas de software

Lineamientos y atributos de la calidad del software

Características que funcionan como guía para un buen diseño:

Debe implementar todos los requerimientos contenidosen el modelo de requerimientos.

Debe ser una guía legible y comprensible para quienesgeneran el código y para quienes lo prueban.

INGENIERÍA DE SOFTWARE

Page 5: Ingenieria de software - Unidad 3 arquitecturas de software

Lineamientos de Calidad

Debe tener una arquitectura que:

• Se haya creado con el empleo de estilos arquitectónicos reconocibles.

• Esté compuesta de componentes con buenas características de diseño.

• Se implementen en forma evolutiva

Debe ser modular: dividido lógicamente en elementos y subsistemas.

Debe contener distintas representaciones de datos arquitectura, interfaces y componentes.

Debe llevar componentes que tengan características funcionales independientes.

Debe representarse con una notación que comunique con eficacia su significado

INGENIERÍA DE SOFTWARE

Page 6: Ingenieria de software - Unidad 3 arquitecturas de software

Atributos de la CalidadFuncionabilidad

Características y Capacidades

Usabilidad

Factor Humano

Confiabilidad

Exactitud de los resultados

Rendimiento

Velocidad

Mantenibilidad

Capacidad de Ampliación

INGENIERÍA DE SOFTWARE

Page 7: Ingenieria de software - Unidad 3 arquitecturas de software

Conceptos de diseño

• Abstracción: Es uno de los modos fundamentales con los que loshumanos luchamos con la complejidad.

• Arquitectura: Es el producto del trabajo de desarrollo que tiene larentabilidad más alta para una inversión en cuanto a calidad, secuenciade actividad y costo.

• Patrones: Describe un problema que ocurre una y otra vez en nuestroambiente, por lo que describe el núcleo de la solución de ese problema,en forma tal que puede usarse ésta un millos de veces sin repetir lomismo ni una sola vez.

INGENIERÍA DE SOFTWARE

Page 8: Ingenieria de software - Unidad 3 arquitecturas de software

• División de problemas: Cualquier problema complejo puede manejarse conmas facilidad si se subdivide.

• Modularidad: Es la manifestación mas común de la división de problemas,cada una de las cuales debe ser tan independiente como sea posible de laaplicación en sí y de las restantes partes.

• Ocultamiento de la Información: Es esconder los detalles de las estructurasde datos y el procesamiento tras una interfaz de modulo.

• Rediseño: Proceso de cambiar un sistema de software en forma tal que nose altera el comportamiento externo del código (diseño), pero si mejora laestructura interna.

INGENIERÍA DE SOFTWARE

Page 9: Ingenieria de software - Unidad 3 arquitecturas de software

Definición de Arquitectura de Software

Una arquitectura software consiste en un conjunto de patrones yabstracciones coherentes que proporcionan el marco de referencianecesario para guiar la construcción del software para un sistema deinformación.

INGENIERÍA DE SOFTWARE

Page 10: Ingenieria de software - Unidad 3 arquitecturas de software

Importancia de la Arquitectura

Permiten la comunicación entre las partes interesadas en eldesarrollo de un sistema basado en un sistema de computadora.

Resalta las primeras decisiones que tendrán un efectoprofundo en todos los trabajos de IS siguiente.

Constituye un modelo relativamente pequeño y asequible por lavía intelectual sobre como esta estructurado el sistema y la formaen que sus componentes trabajan juntos

INGENIERÍA DE SOFTWARE

Page 11: Ingenieria de software - Unidad 3 arquitecturas de software

Géneros Arquitectónicos

• Inteligencia artificial

• Comerciales y no lucrativos

• Comunicaciones

• Contenido de autor

• Dispositivos

• Entretenimiento y deportes

• Financieros

• Juegos

• Gobierno

• Industrial

• Legal

• Médicos

• Militares

• Sistemas Operativos

• Plataformas

• Científicos

• Herramientas

• Transporte

• Utilidades

INGENIERÍA DE SOFTWARE

Page 12: Ingenieria de software - Unidad 3 arquitecturas de software

Estilos arquitectónicos

Son una transformación que se impone al diseño de todo el sistema. Elobjetivo es establecer una estructura para todos los componentes delsistema.

INGENIERÍA DE SOFTWARE

Page 13: Ingenieria de software - Unidad 3 arquitecturas de software

Taxonomía de estilos de arquitectura

Arquitecturas:

• Centradas en los datos

• De flujo de datos

• De llamar y regresar

• En capas

INGENIERÍA DE SOFTWARE

Page 14: Ingenieria de software - Unidad 3 arquitecturas de software

Arquitectura centrada en datos

Como parte central en esta arquitectura apareceun almacén de datos es cual es accedidofrecuentemente por otros componentes queactualizan añaden y borran dichos componentes.El software cliente accede a un repositorio vacío.

Las arquitecturas centradas en datosproporcionan integridad, es decir loscomponentes existentes pueden cambiar ypueden añadirse nuevos componentes a laarquitectura sin que afecte a otros clientes.

INGENIERÍA DE SOFTWARE

Page 15: Ingenieria de software - Unidad 3 arquitecturas de software

Ejemplo

INGENIERÍA DE SOFTWARE

Page 16: Ingenieria de software - Unidad 3 arquitecturas de software

Arquitectura de flujo de datosSe basa en un patrón tuberías y filtros. Este consta de un conjuntode componentes denominados “filtros” conectados entre si por“tuberías” que transmiten los datos desde un componente al siguiente.

Cada filtro trabaja de manera independiente de los componentes que seencuentren situados antes o después de ella

obtiene como resultado datos de salida en un formato especifico

INGENIERÍA DE SOFTWARE

Page 17: Ingenieria de software - Unidad 3 arquitecturas de software

Ejemplo

INGENIERÍA DE SOFTWARE

Page 18: Ingenieria de software - Unidad 3 arquitecturas de software

Arquitectura de llamar y regresarPermite a los diseñadores de software conseguir estructurasrelativamente fáciles de modificar y escalar.

Podemos encontrar diferentes estilos dentro de este tipo:

• Programa principal/subprograma Descompone las funciones en unajerarquía de control donde el programa principal invoca a programassubordinados los cual esa su vez invocan a otros.

• Llamada a procedimiento remoto.

Los componentes de la arquitectura son distribuidos entre diferentesordenadores de la red.

INGENIERÍA DE SOFTWARE

Page 19: Ingenieria de software - Unidad 3 arquitecturas de software

Ejemplo

INGENIERÍA DE SOFTWARE

Page 20: Ingenieria de software - Unidad 3 arquitecturas de software

Arquitectura Orientada a Objetos

Los componentes del sistema encapsulan datos y operaciones que deben de

utilizarse para manipular dichos datos.

INGENIERÍA DE SOFTWARE

Page 21: Ingenieria de software - Unidad 3 arquitecturas de software

Arquitectura en capas

Se definen como un conjunto de niveles o capas cada nivel interno quese atraviesa se aproxima mas al nivel del conjunto de instruccionesmaquina. Sistemas en capas puros. Cada capa solo puede comunicarsecon las vecinas. Esta solución aunque menos eficiente facilita laportabilidad en los diseños.

INGENIERÍA DE SOFTWARE

Page 22: Ingenieria de software - Unidad 3 arquitecturas de software

Ejemplo

INGENIERÍA DE SOFTWARE

Page 23: Ingenieria de software - Unidad 3 arquitecturas de software

Diseño arquitectónico

Muchas notaciones y lenguajes existen para representar el diseño de artefactos de software. Algunos describen un diseño estructural organizado, otros representan el inicio del software. Estas notaciones son generalmente usadas durante un diseño natural y se pueden usar durante ambos casos.

Una representan notaciones que son usadas en el contexto de específicos métodos en las estrategias de diseño y métodos de sub áreas, pero estas categorías son categorizadas en notaciones para describir la estructura estática y la dinámicas vistas.

INGENIERÍA DE SOFTWARE

Page 24: Ingenieria de software - Unidad 3 arquitecturas de software

Representación del sistema en el contextoEl contexto arquitectónico representa la manera en la que el softwareinteractúa con las entidades externas a sus fronteras. (fig. 9.6)

ArquetiposSon bloques constructivos de un diseño arquitectónico. Sirven de base parala clasificación y establece caridad.

INGENIERÍA DE SOFTWARE

Page 25: Ingenieria de software - Unidad 3 arquitecturas de software

Método de la negociación para analizar la arquitectura1. Escenarios de la investigación caso de uso

2. Obtención de los requerimientos y restricciones requerimientos

3. Descripción de los estilos o patrones de arquitectura elegidos para abordar los escenarios yrequerimientos.

• Perspectiva modular

• Perspectiva de proceso

• Perspectiva de flujo

4. Evaluación de los atributos de calidad por separado.

5. Identificación de la sensibilidad de los atributos de calidad de varios atributos arquitectónicos para unestilo de arquitectura especifico.

6. Crítica de las arquitecturas candidatas.

INGENIERÍA DE SOFTWARE

Page 26: Ingenieria de software - Unidad 3 arquitecturas de software

Lenguaje de descripción arquitectónica (LDA)

Provee la semántica y sintaxis para describir una arquitectura de

software.

INGENIERÍA DE SOFTWARE

Page 27: Ingenieria de software - Unidad 3 arquitecturas de software

Mapeo de la Arquitectura con el uso del flujo de datos.Mapeo de transformación

Paso1: Revisión del modelo del sistema fundamental.

Paso2. Revisar y mejorar los diagramas de flujos de datos para el software

Paso3. Determinar si el DFD tiene características de flujo de transformación o detransacción.

Paso4. Aísle el centro de transformación, especificando las fronteras de entrada ysalida del flujo.

Paso5. Realizar el rediseño de primer nivel

Paso6. Realizar el rediseño de segundo nivel

Paso7. Refinar la arquitectura de primera iteración con el empleo de heurísticos dediseño para mejorar la calidad del software.

INGENIERÍA DE SOFTWARE

Page 28: Ingenieria de software - Unidad 3 arquitecturas de software

Bibliografía

Pressman, R.S. Ingeniería del Software un Enfoque Práctico. McGraw-Hill. Madrid, España. 2008.

Kendall E. K., Análisis y Diseño de sistemas. 1ª. Edición. Prentice Hall.México. 2005.

INGENIERÍA DE SOFTWARE