03 - arq. software dia-01-02.pptx

34
Arquitectura de Software UNIVERSIDAD TÉCNICA DEL NORTE Diego Javier Trejo España Marzo - 2015

Upload: andres-zabala-villarreal

Post on 02-Feb-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 03 - Arq. Software dia-01-02.pptx

Arquitectura de Software

UNIVERSIDAD TÉCNICA DEL NORTEDiego Javier Trejo España

Marzo - 2015

Page 2: 03 - Arq. Software dia-01-02.pptx

Diseño de Software

• “Es tanto el proceso de definición de la arquitectura, módulos, interfaces y otras características de un sistema, como el resultado de ese proceso”• Al ser un proceso conlleva una ruta a seguirse (planificación)• La planificación mitiga los riesgos inherentes a la construcción de un

software complejo• Se persigue proyectar el software antes de construirlo• El resultado de esta proyección es el DISEÑO

Page 3: 03 - Arq. Software dia-01-02.pptx

Diseño de Software

• El Diseño facilita dos actividades esenciales en el Ciclo de Vida• Evaluar si el sistema cumple los objetivos antes de construir el software• Construir el sistema

• Se evalúan modelos y prototipos que constituyen una solución• La evaluación aumenta la calidad del producto final• La evaluación no es 100% completa dado que se basa sólo en

modelos• Sirve de guía para la construcción del software

Page 4: 03 - Arq. Software dia-01-02.pptx

Características del Diseño de Software (I)• Permite la evaluación PREVIA• Garantiza el cumplimiento de requisitos• El diseño del software es más barato que construir el software

• Estimula el modelado• El diseñador se concentra en el Dominio del Problema• Se ignoran detalles poco significativos• Facilita la separación de la Complejidad Esencial de la Complejidad Accidental

del problema

Page 5: 03 - Arq. Software dia-01-02.pptx

Características del Diseño de Software (II)• Involucra planificación• Sirve de guía en la fase de construcción• El diseñador anticipa lo que será necesario para la fase de construcción• La planificación ayuda en la estimación de costos de desarrollo

• Tiempo de duración del desarrollo• Nro. de desarrolladores necesarios por módulo• Si es comprado, cuánto costará cada módulo• Costo total del desarrollo

• Facilita la comunicación• Al contener conocimientos sobre el sistema, éstos pueden ser grabados,

transmitidos y discutidos entre los stakeholders

Page 6: 03 - Arq. Software dia-01-02.pptx

Características del Diseño de Software (III)• El problema a ser resuelto puede no permanecer el mismo durante

todo el proceso de diseño• Hay diferencias entre el Diseño y el Software construido a partir de él

Page 7: 03 - Arq. Software dia-01-02.pptx

El Proceso de Diseño de Software

Proceso de DiseñoAnálisis Requisitos Construcción

Diversificación ConvergenciaAnalista

Cliente yUsuarios

Alternativa 1

Alternativa 2

Alternativa 3

Restricciones Representación

Solución

Producto de diseño

Software

CONOCIMIENTO CONCRETO

CONOCIMIENTO ABSTRACTO

Objetivos del

ClienteObjetivos

Page 8: 03 - Arq. Software dia-01-02.pptx

Elementos del Proceso de Diseño de Soft. (I)• El Proceso de Diseño involucra la elección de la representación de

una solución a partir de varias alternativas• En la elección se toma en cuenta las restricciones que un conjunto de

objetivos envuelve• El Proceso de Diseño se divide en dos fases:• Diversificación• Convergencia

Page 9: 03 - Arq. Software dia-01-02.pptx

Elementos del Proceso de Diseño de Soft. (II)• Fase de Diversificación• Se generan las alternativas• Una alternativa puede ser un documento conteniendo una posible solución• O también una idea de solución• Una alternativa constituye una solución en potencia por tanto satisface los

objetivos esperados• Se generan/obtienen a partir del conocimiento y la experiencia del diseñador

Page 10: 03 - Arq. Software dia-01-02.pptx

Elementos del Proceso de Diseño de Soft. (III)• Convergencia• El diseñador escoge la alternativa o combinación de algunas• La alternativa elegida se somete a las restricciones impuestas por el Dominio

del Problema• Se obtiene una solución que se describe por medio de alguna representación

• Objetivos, restricciones, alternativas, representaciones y soluciones. Juntos definen un esquema conceptual del Diseño del Software

Page 11: 03 - Arq. Software dia-01-02.pptx

Elementos del Proceso de Diseño de Soft. (IV) Elemento: Objetivos• En Ingeniería de Software, el cliente especifica sus necesidades• Esas necesidades al querer ser satisfechas, se constituyen en objetivos

a alcanzar• Aquello que se pretende alcanzar para resolver las necesidades del

cliente• Necesidades del cliente = Requisitos del Sistema• Requisitos funcionales• Requisitos no funcionales

Page 12: 03 - Arq. Software dia-01-02.pptx

Elementos del Proceso de Diseño de Soft. (V)Elemento: Restricciones• Las restricciones son: las reglas, requisitos, relaciones, convenciones o

principios que definen el contexto del proceso de diseño, de forma que su producto sea viable

Elemento: Alternativas• Alternativa de diseño es una posibilidad de solución representada en nivel

de conocimiento• El diseñador no necesariamente documenta todas las alternativas• La generación de alternativas es un verdadero desafío• Las alternativas se basan en principios de diseño, experiencia y creatividad

Page 13: 03 - Arq. Software dia-01-02.pptx

Elementos del Proceso de Diseño de Soft. (VI)Elemento: Representaciones• La representación de diseño es el lenguaje que expone el producto de

diseño para su construcción• Facilita la comunicación porque hace las Alternativas manipulables,

comunicables, evaluables y discutibles• Usan dimensiones: comportamiento, estructura, relaciones, entidades

lógicas y físicasElemento: Soluciones• Solución de diseño es la descripción del diseño que permite la

construcción del software que alcanza los objetivos

Page 14: 03 - Arq. Software dia-01-02.pptx

Niveles de Diseño de Software

• El Proceso de Diseño da como resultado el Producto de Diseño• El Producto de Diseño es la descripción que permite la construcción

del software• La Descripción tiene dos niveles de detalle• Alto Nivel (Diseño arquitectural): Describe la organización fundamental del

sistema, identificando los módulos y las relaciones entre sí y con el entorno. En otras palabras describe como el software se descompone y organiza en módulos y sus relaciones• Diseño detallado: Describe el detalle y comportamiento específico de cada

módulo que compone el Diseño Arquitectural

Page 15: 03 - Arq. Software dia-01-02.pptx

Principios y Técnicas de Diseño de Soft. (I)• División y conquista• Abstracción: Existen diversos grados de abstracción , entre mayor sea

el grado de la misma se considera una solución general, entre menor sea su grado se hace referencia a elementos de mayor especificidad.• Abstracción procedimental: Permiten describir procesos omitiendo

detalles específicos.(ej: encender automóvil)• Abstracción de datos: Describe las características de un objeto.

(automóvil, no siendo necesario describir en detalle su especificación para reconocerlo)

Page 16: 03 - Arq. Software dia-01-02.pptx

Principios y Técnicas de Diseño de Soft. (II)• Arquitectura: Representa la estructura general del software y la forma

como interactúan sus componentes. • Modelos Estructurales• Modelos de Marco de Trabajo• Modelos Dinámicos• Modelos del Proceso• Modelos Funcionales

Page 17: 03 - Arq. Software dia-01-02.pptx

Principios y Técnicas de Diseño de Soft. (III)• Patrones: Es una semilla de conocimiento, la cual tiene un nombre y

transporta la esencia de una solución probada a un problema concurrente dentro de cierto contexto en medio de intereses en competencia• Encapsulamiento• Modularidad: El software se divide en componentes con nombres

independientes y que es posible abordar en forma individual• Separación de preocupaciones

Page 18: 03 - Arq. Software dia-01-02.pptx

Principios y Técnicas de Diseño de Soft. (IV)• Ocultación de información: Los módulos se caracterizan por ocultar

las soluciones de diseño a otros• Independencia Funcional = Modularidad + abstracción + ocultamiento• Módulos independientes permiten probarlos, modificarlos y

optimizarlos de manera mas rápida y efectiva• Cohesión : Medida de la fuerza funcional relativa de un modulo• Acoplamiento: Medida de interdependencia entre módulos.

Page 19: 03 - Arq. Software dia-01-02.pptx

Principios y Técnicas de Diseño de Soft. (V)• Refinamiento: Estrategia de diseño descendente, complemento de la

abstracción• Refabricación: Proceso de cambiar un sistema de software de tal

forma que no altere el comportamiento externo de su código y aún así se mejore su estructura interna• Problemas de diseño: Redundancias, elementos inútiles, algoritmos

innecesarios, estructuras de datos inapropiados o mal construidas.

Page 20: 03 - Arq. Software dia-01-02.pptx

Atributos de Calidad del Software (I)

• Funcionalidad: “Se estima al evaluar el conjunto de características y capacidades del programa, la generalidad de las funciones que se entregan y la seguridad del sistema en su totalidad.”• Facilidad de uso “Se valora al considerar los factores humanos, la

estética, consistencia y documentación general.”• Confiabilidad “Se evalúa al medir la frecuencia y severidad de las fallas, la

precisión de los resultados de salida, la media del momento de fallas, la habilidad para recuperarse de las fallas y la previsibilidad del programa.”• Testeo• Escalabilidad

Page 21: 03 - Arq. Software dia-01-02.pptx

Atributos de Calidad del Software (II)

• Desempeño “Se mide con la velocidad de procesamiento, tiempo de respuesta, consumo de recursos, rendimiento y eficacia.”• Soportabilidad• Facilidad de mantenimiento• Extensibilidad• Disponibilidad• Configurabilidad, Facilidad de instalación• Facilidad localización de problemas.• Legibilidad• Reusabilidad

Page 22: 03 - Arq. Software dia-01-02.pptx

Fundamentos de la Arq. de Software

• Complejidad del Proceso del Software Metodologías de Desarrollo: Incrementales, Evolutivas, Ágiles

• El Proceso de Desarrollo no es tarea fácil Muchos proyectos de software fracasan durante su desarrollo o fracasan al obtener sus resultados

• Entre los tipos de fracaso tenemos:• Proyectos que costaron mucho más de lo presupuestado• Proyectos incompletos• Los que no solucionan adecuadamente los problemas

Page 23: 03 - Arq. Software dia-01-02.pptx

No es fácil alcanzar un buen producto• Hay que lidiar con los siguientes aspectos:

La complejidad inherente al problema a resolverLa manera de resolver el problema

• El software debe, además de resolver el problema, resolverlo de la mejor forma• Técnicamente hablando, el software debe cumplir con:• La funcionalidad• Atributos de calidad

Page 24: 03 - Arq. Software dia-01-02.pptx

Definición de Arq. de Software (I)

• Un primer acercamiento a la definición:Arquitectura = { elementos, organización, decisiones }

• AS: Conjunto de elementos arquitecturales que poseen alguna organización. Estos elementos y su organización son definidos por decisiones tomadas para satisfacer objetivos y restricciones• Pero también existen relaciones entre elementos arquitecturales.

Poseen propiedades Restringen los elementos arquitecturales para que satisfagan los objetivos del

sistemaSon ponderadas para indicar su importancia en la selección de alternativas

Page 25: 03 - Arq. Software dia-01-02.pptx

Definición de Arq. de Software (III)

Definición ISO / IEEE 1471-2000• AS: Es la organización fundamental de un sistema incorporado sus

componentes, sus relaciones, el entorno y los principios que conducen su diseño y evolución.• Constituye: • Estructura• Componentes / Elementos • Relaciones• Diseño • Evolución

Page 26: 03 - Arq. Software dia-01-02.pptx

• Tipos de elementos arquitecturales:• Los que usan o transforman información • Los que poseen información para ser usada o transformada• Los que conectan elementos entre si

• También se clasifican en:• Estáticos • Dinámicos

Elementos Arquitecturales

Page 27: 03 - Arq. Software dia-01-02.pptx

Elementos Arquitecturales Estáticos

• Partes de un sistema y su organización, es decir las relaciones que existen entre ellos• Se definen durante el diseño y son:• De software:

• Modelos, clases, paquetes, procedimientos, servicios, etc.• De datos:

• Estructuras, tablas, BDD, objetos, entidades, etc.• De hardware:

• CPU, comunicaciones, infraestructura

Page 28: 03 - Arq. Software dia-01-02.pptx

Elementos Arquitecturales Dinámicos• Definen el comportamiento del sistema• Se definen durante la ejecución del sistema y son:• Procesos• Módulos• Protocolos

Page 29: 03 - Arq. Software dia-01-02.pptx

Decisiones Arquitecturales (I)

• Decidir incorporar un Elemento Arquitectural significa tomar una Decisión Arquitectural• Al tomar todas las Decisiones Arquitecturales se debe documentar su

resultado, a esto se denomina Documento Arquitectural o Documento de la Arquitectura de Software• Cada Decisión Arquitectural debe alcanzar al menos un Atributo de

Calidad, aplicado a uno o varios Objetivos o Requerimientos del Cliente• Por lo general una Decisión Arquitectural es el resultado de elegir uno

de entre varios Elementos Arquitecturales propuestos en las Alternativas de Diseño

Page 30: 03 - Arq. Software dia-01-02.pptx

Decisiones Arquitecturales (II)

• Características• Descripción• Objetivos• Fundamentación

• Rastreabilidad• Evolución. Aplicación de reglas para:• Adición de funcionalidad• Eliminación• Modificación• Atributos de calidad

Page 31: 03 - Arq. Software dia-01-02.pptx

Decisiones Arquitecturales (III)

Características:• Descripción:• Describir los elementos, módulos, clases, servicios, la comunicación entre

ellos, principios que conducen a la evolución

• Objetivos• Explicar el objeto de cada decisión, normalmente se expresa como la acción

de alcanzar o restringir un atributo de calidad

• Fundamentación• Explicar porque fue tomada la decisión. Sea por estándares, conocimiento

propio, porque presenta mejores resultados, por experiencias previas.

Page 32: 03 - Arq. Software dia-01-02.pptx

Decisiones Arquitecturales (IV)

Ejemplos• Descripción: • La descripción lógica de las capas de una aplicación que expone servicios web

y la aplicación que los consume

• Objetivos:• La división en capas disminuye el acoplamiento entre elementos internos

facilitando el desarrollo y mantenimiento

• Fundamentación:• Dividir en capas ayuda a la cohesión y acoplamiento

Page 33: 03 - Arq. Software dia-01-02.pptx

Decisiones Arquitecturales (VI)

• Rastreabilidad:• Facilita la comprensión de la evolución la decisión tomada, pues debe existir

un registro histórico (versiones). Como resultado, promueve la compresión y el mantenimiento del sistema representado por la arquitectura

• Evolución:• Una decisión arquitectural no necesariamente describe módulos, clases o

servicios. Puede describir reglas a seguirse, tales como:• Reglas para adición de funcionalidad• Reglas para la modificación o mantenimiento• Reglas para eliminación o desactivación de funcionalidad• Reglas para alcanzar atributos de calidad

Page 34: 03 - Arq. Software dia-01-02.pptx