clase 1

33
Metodologías de Diseño 17/6/2008 Christian Sifaqui

Upload: christian-sifaqui

Post on 21-May-2015

2.034 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Clase 1

Metodologías de Diseño

17/6/2008

Christian Sifaqui

Page 2: Clase 1

1 Conceptos

El diseño se puede ver en términos de 5 conceptos:Metas

Restricciones

Alternativas

Representaciones

Soluciones

Page 3: Clase 1

1 Conceptos

Ejemplo: autoMeta: medio de transporteRestricciones: tipo de motor y combustible,

caminos existentes, regulaciones ambientales y de seguridad

Alternativas: precursores de la solución finalRepresentaciones: bosquejos de la carrocería,

modelos a escala, etc.Soluciones: descripciones que permitirán la

construcción del auto

Page 4: Clase 1

1 Conceptos

Contexto

entender el proceso de desarrollo:

- análisis de requerimientos

- codificación y testing

- integración y calidad

Page 5: Clase 1

1 Conceptos

Contexto

las actividades anteriores pertenecen a un ciclo de vida:

- modelo lineal: cascada

- modelo incremental: espiral o iterativo

Page 6: Clase 1

1 Conceptos

Proceso

ISO/IEC 12207 de 1995

- diseño arquitectónico: describe cómo se descompone el sistema y se organiza en componentes

- diseño detallado: describe la conducta específica de los componentes identificados en la etapa anterior

Page 7: Clase 1

2 Estructura y Arquitectura

Arquitectura

- diseño interno de un sistema de software

- según IEEE Standard 1471 del 2000:

“la organización fundamental de un sistema representado en sus componentes, sus relaciones entre cada uno y el ambiente, y los principios que guían su diseño y evolución”

Page 8: Clase 1

2.1 Estructuras arquitectónicas y vistas

Una descripción arquitectónica sirve muchos propósitos ya que los involucrados tienen diferentes roles y necesidades.

Las vistas son las perspectivas o facetas del diseño de software.

Una vista “representa un aspecto parcial de una arquitectura de software que muestra propiedades específicas de un sistema de software”

El IEEE Standard 1016 de 1998 indica que la organización general de la Descripción de Diseño de Software (SDD) se obtiene de “vistas de diseño”

Page 9: Clase 1

2.1 Estructuras arquitectónicas y vistas

Cada vista de diseño contiene un subconjunto de varios atributos que describen entidades de diseño:

- descomposición: cómo se particiona el sistema en entidades de diseño

- dependencia: las relaciones entre entidades y recursos del sistema

Page 10: Clase 1

2.1 Estructuras arquitectónicas y vistas

- interfaces: lo que un diseñador, programador o testeador necesitan conocer para usar las entidades de diseño

- descripción detalladas: detalles internos de diseño

Page 11: Clase 1

2.1 Estructuras arquitectónicas y vistas

Una ejemplo es el “modelo de vistas 4+1”- vista lógica: describe cómo se satisfacen los requerimientos funcionales. Identifica los paquetes más importantes, subsistemas y clases- vista de implementación: describe cómo el diseño se descompone en unidades de implementación. Identifica los módulos de software más importantes como código fuente, archivos de datos, ejecutables, etc.

Page 12: Clase 1

2.1 Estructuras arquitectónicas y vistas

- vista de proceso: tiene que ver con temas como concurrencia y distribución, por ejemplo, cómo varios threads de control se organizan y distribuyen en varios programas y cómo interactúan

- la vista de despliegue (deployment): muestra cómo en tiempo de ejecución se distribuyen las unidades y componentes

Page 13: Clase 1

2.1 Estructuras arquitectónicas y vistas

- vista de caso de uso: que consiste de un pequeño número de casos de uso, aglutina las otras vistas, ilustrando cómo trabajan juntas

Page 14: Clase 1

2.1 Estructuras arquitectónicas y vistas

Existen otros modelos de vistas. Pero en forma general las vistas de pueden clasificar en tres categorías, llamadas tipos de vistas:

- tipo de vista módulo: estas vistas describen las unidades de implementación, por ejemplo, clases, colecciones de clases y capas

Page 15: Clase 1

2.1 Estructuras arquitectónicas y vistas

- tipo de vista componente-y-conector: estas vistas describen las unidades de ejecución, esto es, elementos que tienen presencia en tiempo de ejecución, por ejemplo, procesos, objetos, clientes, servidores y almacenamientos de datos

Page 16: Clase 1

2.1 Estructuras arquitectónicas y vistas

- tipo de vista de distribución: estas vistas describen las relaciones entre un sistema y sus ambientes de desarrollo y ejecución, esto es, el mapeo de unidades de software a elementos del ambiente, por ejemplo, hardware, sistema de archivos y equipo de desarrollo

Page 17: Clase 1

2.2 Patrones macro/microarquitectónicos

Patrón es “solución común a un problema común en un contexto dado”

Los patrones pueden ser clasificados en tres categorías:

- estilos arquitecturales

- patrones de diseño

- idiomas de codificación

Page 18: Clase 1

Estilos arquitecturales

Se define como un “conjunto de restricciones que definen un conjunto o familia de arquitecturas que los satisfagan”

Un estilo arquitectural puede ser visto como un meta-modelo que provee una organización de alto nivel a un sistema de software (macroarquitectura)

Page 19: Clase 1

Estilos arquitecturales

Varios autores han identificado varios estilos arquitecturales:- estructura general: por ejemplo, capas, tuberási y filtros, blackboard- sistemas distribuidos: por ejemplo, cliente-servidores, tres capas, broker- sistemas interactivos: por ejemplo, model-view-controller, presentation-abstraction-model

Page 20: Clase 1

Estilos arquitecturales

- sistemas adaptables: por ejemplo, microkernel, reection

- otros estilos: por ejemplo, batch, interpretes, control de procesos, basados en reglas

Page 21: Clase 1

Estilos arquitecturales

La elección de un estilo arquitectural particular dependen en la calidad de los atributos que deben satisfacerse.

También se pueden presentar estilos heterogéneos

Page 22: Clase 1

Patrones de diseño

Los patrones de diseño se usan para describir detalles a un nivel más bajo y local (microarquitectura)

Page 23: Clase 1

Patrones de diseño

Una categoría de patrones:- patrones creacionales: tienen que ver con la creación de objetos (builder, factory, prototype, singleton)- patrones estructurales: tienen que ver con la composición de objetos (adapter, bridge, composite, decoratos, faccade, flyweight, proxy)- patrones conductuales: describe cómo interactúan los objetos (command, interpreter, iterator, mediator, memento, observer, state, strategy, template, visitor)

Page 24: Clase 1

Patrones de diseño

Otra categoría de patrones:

- patrones de descomposición estructural: trata de la descomposición de subsistemas y componentes complejos en partes cooperadoras, por ejemplo, whole-part

- patrones de organización de trabajo definen cómo las componentes colaboran juntas para resolver un problema complejo, por ejemplo, master-slave

Page 25: Clase 1

Patrones de diseño

- patrones de acceso de control definen defensas y control de acceso a servicios y componentes, por ejemplo, proxy

- patrones de administración manejan colecciones homogéneos de objetos, servicios y componentes en su totalidad, por ejemplo, command processor, view handler

Page 26: Clase 1

Patrones de diseño

- patrones de comunicación ayudan a organizar comunicación entre componentes, por ejemplo, forward-receiver, dispatcher-server, publisher-subscriber

Page 27: Clase 1

3 Análisis y evaluación de calidad en diseño

Calidad de software es “la totalidad de rasgos y características de un producto o servicio de software que tiene que ver con su habilidad de satisfacer necesidades explícitas o implícitas” ISO/IEC Standard 9126-1 de 2001

Page 28: Clase 1

3.1 Atributos de calidad en diseño

- Calidad en tiempo de ejecución: se observan cuando el sistema está operativo, por ejemplo, funcionalidad, usabilidad, rendimiento, confiabilidad, disponibilidad y seguridad

- Calidad en tiempo de desarrollo: tienen impacto en el trabajo de los equipos de desarrollo e mantención, pero no se observan directamente en tiempo de ejecución, por ejemplo, integrabilidad, portabilidad, reusabilidad y testeabilidad

Page 29: Clase 1

3.1 Atributos de calidad en diseño

Algunas de las calidad anteriores se pueden obtener a través de seleccionar una alternativa arquitectural apropiada, por ejemplo, reusabilidad y modificabilidad, rendimiento, pero otras no, por ejemplo, funcionalidad y usabilidad.

Un test informal para determinar si un atributo de calidad se puede obtener mediante una elección de alternativa arquitectural es responder la pregunta “¿Se puede mejorar el valor de ese atributo haciendo cambios estructurales?”

Page 30: Clase 1

3.2 Medición

Se pueden definir un número de medidas para obtener estimaciones cuantitativas del tamaño del diseño, estructura y calidad:

- medidas orientadas a la función: la estructura del diseño, obtenida mediante descomposición funcional se representa mediante una carta de estructura de donde se pueden obtener medidas como fan-in/fanout, complejidad ciclomática, complejidad de integración

Page 31: Clase 1

3.2 Medición

- medidas orientadas a objeto: la estructura del diseño se representa por diagramas del clases, en el que las medidas se pueden calcular, por ejemplo, métodos ponderados por clase, profundidad del árbol de herencia, número de hijos, acoplamiento entre objetos, respuesta por una clase

Page 32: Clase 1

3.3 Análisis de calidad y herramientas de evaluación

A pesar que algunas medidas se pueden usar para estimar atributos de calidad, muchas son difíciles de cuantificar.Existen otras técnicas para evaluar la calidad de un diseño- revisiones de diseño de software son informales o semiformales, basadas en grupos, por ejemplo, revisiones arquitectura, revisiones e inspecciones de diseño, evaluación basada en escenarios de arquitectura, traza de requerimientos

Page 33: Clase 1

3.3 Análisis de calidad y herramientas de evaluación

- simulación y prototipado son técnicas dinámicas usadas para evaluar un diseño, por ejemplo, rendimientos basado en simulación o análisis de confiabilidad, prototipado de factibilidad