clase 1
TRANSCRIPT
Metodologías de Diseño
17/6/2008
Christian Sifaqui
1 Conceptos
El diseño se puede ver en términos de 5 conceptos:Metas
Restricciones
Alternativas
Representaciones
Soluciones
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
1 Conceptos
Contexto
entender el proceso de desarrollo:
- análisis de requerimientos
- codificación y testing
- integración y calidad
1 Conceptos
Contexto
las actividades anteriores pertenecen a un ciclo de vida:
- modelo lineal: cascada
- modelo incremental: espiral o iterativo
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
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”
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”
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
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
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.
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
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
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
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
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
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
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)
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
Estilos arquitecturales
- sistemas adaptables: por ejemplo, microkernel, reection
- otros estilos: por ejemplo, batch, interpretes, control de procesos, basados en reglas
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
Patrones de diseño
Los patrones de diseño se usan para describir detalles a un nivel más bajo y local (microarquitectura)
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)
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
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
Patrones de diseño
- patrones de comunicación ayudan a organizar comunicación entre componentes, por ejemplo, forward-receiver, dispatcher-server, publisher-subscriber
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
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
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?”
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
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
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
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