1 3 ingenieria software y patrones de diseño

21
LA INGENIERIA Y PATRONES DE DISEÑO ARQUITECTURA DEL SOFTWARE DISEÑO Es el lugar donde las reglas de la creatividad (requerimientos de los participantes, necesidades del negocio y consideraciones técnicas) se unen para formular un sistema. El diseño crea un modelo de software que proporciona detalles sobre la arquitectura del software, estructuras de datos, interfaces y componentes que se necesitan para implementar el sistema. El diseño es importante porque permite modelar el sistema que se va a construir. Este modelo se evalúa respecto a la calidad y su mejora antes de generar código, después se efectúan pruebas y se involucra a los usuarios finales.

Upload: landetap

Post on 28-Jun-2015

1.986 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Es el lugar donde las reglas de la creatividad (requerimientos de los participantes, necesidades del negocio y consideraciones técnicas) se unen para formular un sistema.

El diseño crea un modelo de software que proporciona detalles sobre la arquitectura del software, estructuras de datos, interfaces y componentes que se necesitan para implementar el sistema.

El diseño es importante porque permite modelar el sistema que se va a construir.

Este modelo se evalúa respecto a la calidad y su mejora antes de generar código, después se efectúan pruebas y se involucra a los usuarios finales.

Page 2: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Page 3: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

El diseño de software comienza luego de que se ha analizado y modelado los requerimientos. El modelo de requerimientos proporciona información necesaria para crear los cuatro modelos de diseño necesarios para una especificación completa.

Page 4: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

El diseño de datos o clases transforma los modelos de clases en diseño de clases y estructura de datos requeridas. Parte del diseño de clase puede realizarse junto con el diseño de la arquitectura del software.

El diseño de la arquitectura define relaciones entre la estructura del software, estilos y patrones de diseño que pueden usarse para lograr los requerimientos.

El diseño de interfaz describe como el software se comunica con los sistemas y humanos que lo usan. Implica flujo de información y comportamientos.

El diseño en nivel de componentes transforma elementos estructurales en descripción de componentes en cuanto a procedimientos.

La importancia del diseño de software es que introduce calidad a la ingeniería del software.

Page 5: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Lineamientos para lograr un buen diseño de software

Debe tener una arquitectura (empleo de estilos o patrones arquitectónicos)

Debe ser modular (dividido de manera lógica en elementos o subsistemas) Debe contener distintas representaciones de datos, arquitectura, interfaces

Debe conducir a estructuras de datos apropiadas para las clases a implementar

Page 6: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Lineamientos para lograr un buen diseño de software

Debe contener componentes que tengan características funcionales independientes

Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los componentes y el ambiente externo.

Debe obtenerse con el uso de un método motivado por la información obtenida durante el análisis de los requerimientos del software

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

Page 7: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Conceptos importantes del diseño de software

Abstracción: una abstracción de procedimientos es una secuencia de instrucciones que tienen una función específica y limitada pero se omiten los detalles específicos.

Patrones: Un patrón de diseño describe una estructura de diseño que resuelve un problema particular dentro de un contexto específico. Se debe tomar en cuenta si el patrón es aplicable al trabajo que se realiza, si puede volverse a usar y si sirve de guía para desarrollar un patrón distinto en estructura.División de problemas: Cualquier problema complejo puede manejarse con más facilidad si se subdivide en elementos que optimicen su solución de manera independiente.La modularidad es el ejemplo más común.

Page 8: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Conceptos importantes del diseño de software

Ocultamiento de la información: implica que se define un conjunto de módulos independientes que intercambien sólo la información necesaria para lograr la función del software.

Independencia funcional: trabajar con módulos independientes es más fácil porque su función se subdivide la las interfaces se simplifican. Son más fáciles de mantener porque los efectos causados por la modificación son limitados.

Refinamiento: es un proceso de elaboración, se comienza con el enunciado de la función y se continua dando más detalles conforme avanza la elaboración.

Page 9: 1 3 ingenieria software y patrones de diseño

LA INGENIERIA Y PATRONES DE DISEÑO

ARQUITECTURA DEL SOFTWARE

DISEÑO

Conceptos importantes del diseño de software

Rediseño: Se examina el código existente en busca de redundancias, elementos no utilizados, algoritmos ineficientes o innecesarios, estructuras de datos mal construidas, etc.

Page 10: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Patrones

Son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos

Ejemplo: construir una casa nieva durante todo el año, una construcción tradicional tendría el problema de que el peso de la nieve acumulada en el techo horizontal y paralelo al piso, sería tan grande que la derrumbaría.

Existen varias soluciones al problema, la más optima es construir el techo de la casa con una gran pendiente para que la nieve caída se deslice por la misma y termine en el piso de forma que nunca se acumule sobre nuestro techo

LA INGENIERIA Y PATRONES DE DISEÑO

Page 11: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Patrones

Un patrón es una solución probada que se puede aplicar con éxito a un determinado tipo de problemas que aparecen repetidamente en un campo.

El establecimiento de estos patrones comunes posibilita el aprovechamiento de experiencia acumulada en el diseño de aplicaciones.

Un buen diseño no debe ser específico de una aplicación concreta, sino que debe basarse en soluciones que han funcionado bien anteriormente.

Si nos centramos en el ámbito de diseño de bajo nivel, estamos hablando de los patrones de diseño.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 12: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

PatronesCaracterísticas de un buen patrón: - Resuelve un problema: los patrones capturan soluciones, no principios o

estrategias abstractas

- Es un concepto probado: Capturan soluciones, no teorías o especulaciones. Puede cosiderarse un patrón si se ha comprobado por lo menos 3 veces.

- La solución no es obvia: Los mejores patrones generan una solución a un problema indirectamente (enfique necesario para problemas de diseño más dificiles)

- Describe una relación: Los patrones no describen módulos sino estructuras y mecanismos.

- Tiene un componente humano significante: El software sirve a las personas. Los mejores patrones aplican a la estética y a las utilidades.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 13: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Clases de Patrones

Patrones generativos: Describe un contexto y un problema, pero no una solución clara.

Patrones de datos: describen problemas recurrentes orientados a datos y las soluciones de modelado de datos que se pueden usar para resolverlos.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 14: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Clases de Patrones Patrones arquitectónicos: describen problemas de diseño a nivel

general que se resuelven cambiando con un enfoque estructural.

Patrones de componentes(o de diseño): enfocan problemas del desarrollo de subsistemas y componentes

Idiomas: describen la forma de implementar todo un algoritmo específico para un componente de software en un lenguaje específico.

POSA: Pattern Oriented Software Architecture

LA INGENIERIA Y PATRONES DE DISEÑO

Page 15: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Patrones de diseño

Clasificación de los patrones de diseño según GoF: Creación, Estructurales y Comportamiento.

• De Creación: Abstraen el proceso de creación de instancias de objetos. Ayudan a hacer a un sistema independiente de cómo se crean, se componen y se representan sus objetos.

• Estructurales: Tratan con la composición de clases u objetos. Se ocupan de cómo las clases y objetos son utilizados para componer estructuras de mayor tamaño.

• De Comportamiento: Caracterizan el modo en que las clases y objetos interactúan y se reparten la responsabilidad. Atañen a los algoritmos y a la asignación de responsabilidades entre objetos.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 16: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Patrones de diseño

De acuerdo al GoF (Erich Gamma, Richard Helm, Ralph Johnson y John Vlisides) se clasifica a 23 patrones de diseño comunes.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 17: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Describir un patrón

Un patrón de diseño provee un esquema para refinar los subsistemas o componentes de un sistema de software o de las relaciones entre ellos.

Describe la estructura recurrente de los componentes de comunicación, que resuelve un problema general de diseño en un contexto particular.

El diseño basado en patrones comienza con la localización del patrón para la aplicación que se desea construir, se busca experiencias anteriores y por último se aplica el patrón apropiado.

Se utiliza un plantilla con la siguiente información

• Nombre del patrón: describe la esencia del patrón.

• Problema: describe el problema al que se dirige el patrón

• Motivación: proporciona un ejemplo del problema

LA INGENIERIA Y PATRONES DE DISEÑO

Page 18: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Describir un patrón

• Contexto: ambiente en el que reside el problema

• Fuerzas: análisis de limitaciones y restricciones

• Solución: descripción detallada de la solución propuesta para el problema

• Objetivo: describe el patrón y lo que hace

• Colaboraciones: Describe como otros patrones contribuyen a la solución

• Consecuencias: intercambios potenciales a considerarse cuando se implemente

• Implementación: identifica aspectos escenciales para la implementación

• Usos conocidos: da ejemplos de usos reales del patrón de diseño

• Patrones relacionados: referencias de patrones relacionados.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 19: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Diseño basado en patrones

Un diseñador de software comienza con un modelo de requerimientos que muestra una representación abstracta del problema, sin embargo hace poco para representar al diseño explícitamente.

Se deben considera los atributos de calidad y se debe extraer el problema.

LA INGENIERIA Y PATRONES DE DISEÑO

Page 20: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Diseño basado en patrones (Tareas de diseño)

1. Examinar el modelo de requerimientos y desarrollar una jerarquía del problema

2. Determinar si se ha desarrollado un patrón confiable para el problema

3. A partir de un problema amplio determinar si para el mismo se dispone de uno más patrones arquitectónicos

4. Estudiar los problemas a nivel de subsistema o componente. Buscar los patrones más adecuados

5. Estudiar el contexto para garantizar que el patrón da una solución al problema

6. Refinar el diseño a medida que se obtienen los patrones, usando criterios de calidad

LA INGENIERIA Y PATRONES DE DISEÑO

Page 21: 1 3 ingenieria software y patrones de diseño

ARQUITECTURA DEL SOFTWARE

Diseño basado en patrones (Tareas de diseño)

Bases de Datos

Aplicación Implementación

Infraestructura

Datos / contenido

• Problema Nombre patrón Nombre patrón Nombre patrón

• Problema Nombre patrón Nombre patrón

Arquitectura

• Problema Nombre patrón

• Problema Nombre patrón Nombre patrón

Componentes

• Problema Nombre patrón Nombre patrón

• Problema Nombre patrón

Interfaz

• Problema Nombre patrón Nombre patrón

LA INGENIERIA Y PATRONES DE DISEÑO