Your SlideShare is downloading. ×
Clase 1
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

Clase 1

2,013
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,013
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
38
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Metodologías de Diseño 17/6/2008 Christian Sifaqui
  • 2. 1 Conceptos
    • El diseño se puede ver en términos de 5 conceptos:
      • Metas
      • Restricciones
      • Alternativas
      • Representaciones
      • Soluciones
  • 3. 1 Conceptos
    • Ejemplo: auto
      • Meta: medio de transporte
      • Restricciones: tipo de motor y combustible, caminos existentes, regulaciones ambientales y de seguridad
      • Alternativas: precursores de la solución final
      • Representaciones: bosquejos de la carrocería, modelos a escala, etc.
      • Soluciones: descripciones que permitirán la construcción del auto
  • 4. 1 Conceptos
    • Contexto
    • entender el proceso de desarrollo:
    • - análisis de requerimientos
    • - codificación y testing
    • - integración y calidad
  • 5. 1 Conceptos
    • Contexto
    • las actividades anteriores pertenecen a un ciclo de vida:
    • - modelo lineal: cascada
    • - modelo incremental: espiral o iterativo
  • 6. 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
  • 7. 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”
  • 8. 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”
  • 9. 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
  • 10. 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
  • 11. 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.
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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)
  • 19. 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
  • 20. Estilos arquitecturales
    • - sistemas adaptables: por ejemplo, microkernel, reection
    • - otros estilos: por ejemplo, batch, interpretes, control de procesos, basados en reglas
  • 21. 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
  • 22. Patrones de diseño
    • Los patrones de diseño se usan para describir detalles a un nivel más bajo y local (microarquitectura)
  • 23. 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)
  • 24. 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
  • 25. 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
  • 26. Patrones de diseño
    • - patrones de comunicación ayudan a organizar comunicación entre componentes, por ejemplo, forward-receiver, dispatcher-server, publisher-subscriber
  • 27. 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
  • 28. 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
  • 29. 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?”
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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