Clase 2

2,551 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,551
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
70
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Clase 2

  1. 1. Metodologías de Diseño 24/6/2008 Christian Sifaqui
  2. 2. 4 Notaciones en diseño de software y documentación <ul><li>Existen numerosas notaciones para representar artefactos de diseño. Algunas se usan durante el diseño arquitectónico, otras durante el detallado y otras en ambas </li></ul>
  3. 3. 4 Notaciones en diseño de software y documentación <ul><li>Se han caracterizado las notaciones en términos de caja negra versos caja blanca: </li></ul><ul><li>- notación caja negra: se preocupa con las propiedades externas de los elementos del modelo de diseño </li></ul><ul><li>- notación caja blanca: se preocupa mayormente con describir algunos aspectos de la realización detalladas de un elemento de diseño </li></ul>
  4. 4. 4.1 Notaciones en diseño de software <ul><li>Otra forma es diferenciarlas entre notaciones para describir propiedades estructurales (estáticas) y las que describen propiedades conductuales (dinámicas) </li></ul>
  5. 5. 4.1.a Algunas descripciones estructurales (vista estática) <ul><li>Diagramas de clase y objeto: se usan para representar un conjunto de clases (y objetos) y sus relaciones. Una notación antigua relacionada son los diagramas entidad-relación, usados para representar modelos conceptuales de datos almacenados en sistemas de información. UML tiene esta notación </li></ul>
  6. 6. 4.1.a Algunas descripciones estructurales (vista estática) <ul><li>Diagramas de componentes: se usan para modelas la vista de implementación estáticas de un sistema, es decir, cosas físicas (y sus relaciones) como ejecutables, librerías, tablas, archivos y documentos. A pesar que si uso principal es durante la construcción, estos diagramas pueden ser usados durante diseño, por ejemplo, para documentar la estructura de un módulo. UML tiene esta notación </li></ul>
  7. 7. 4.1.a Algunas descripciones estructurales (vista estática) <ul><li>Diagramas de deployment: se usan para modelar la vista de deployment estático de un sistema, es decir, la configuración de nodos de procesamiento en tiempo de ejecución y los componentes que viven en ellos. Típicamente estos diagramas pueden ser usados para representar aspectos de distribución, por ejemplo un modelo empotrado, cliente/servidor o sistemas distribuidos. UML tiene esta notación </li></ul>
  8. 8. 4.1.a Algunas descripciones estructurales (vista estática) <ul><li>Cartas de estructuras: se usan para describir la estructura de llamado de un programas, es decir, cuál módulo es invocado por otro módulo. Estos diagramas son inherentes de la aproximación de diseño orientado a la función. </li></ul>
  9. 9. 4.1.a Algunas descripciones estructurales (vista estática) <ul><li>Diagramas de Jackson: se usan para describir las estructuras de datos manipuladas por un programa en términos de secuencia, selección e iteración. </li></ul>
  10. 10. 4.1.b Algunas descripciones conductuales (vista dinámica) <ul><li>Diagramas de actividad: se usan para mostrar el flujo de control de actividad (ejecución continua no-atómica dentro de una máquina de estado) a otra actividad. UML tiene esta notación. </li></ul>
  11. 11. 4.1.b Algunas descripciones conductuales (vista dinámica) <ul><li>Diagramas de interacción: se usan para mostrar las interacciones entre un grupo de objetos. Estos diagramas vienen en dos tipos: diagramas de secuencia ponen el énfasis en el ordenamiento temporal de los mensajes, mientras que los diagramas de colaboración ponen el énfasis en los objetos, sus enlaces y los mensajes que intercambian en estos enlaces. UML tiene esta notación. </li></ul>
  12. 12. 4.1.b Algunas descripciones conductuales (vista dinámica) <ul><li>Diagramas de flujo de datos: se usan para mostrar el flujo de datos entre un ocnjunto de procesos. </li></ul>
  13. 13. 4.1.b Algunas descripciones conductuales (vista dinámica) <ul><li>Diagramas de transición de estados y diagramas de statecharts (utilizados en UML): se usan para mostrar el flujo de control de estado a estado en una máquina de estados. </li></ul>
  14. 14. 4.1.b Algunas descripciones conductuales (vista dinámica) <ul><li>Pseudocódigo y lenguajes de diseño de programas: son lenguajes estructurados similares a programación que se usan ara describir en la etapa de diseño detallado la conducta de un procedimiento o método. </li></ul>
  15. 15. 4.2 Documentación de diseño <ul><li>Dada la variedad de notaciones disponibles, se presenta la dificultad de cómo combinarlas para confeccionar un documento de diseño coherente. </li></ul><ul><li>No hay respuesta definitoria. Depende de muchos aspectos: tipo de software a desarrollar, las personas involucradas, etc. </li></ul>
  16. 16. 4.2 Documentación de diseño <ul><li>Una práctica a usar son las vistas (ver 2.1) </li></ul><ul><li>La selección de un conjunto apropiado de vistas depende de las personas involucradas: administradores del proyectos, desarrolladores, testeadores e integradores, clientes, usuarios finales, etc. </li></ul>
  17. 17. 4.2 Documentación de diseño <ul><li>Satisfacer las diferentes necesidades se puede describir en términos de la importancia relativa de las varias vistas desde cada tipo de vista: módulo, componente-y-conector y asignación (allocation). </li></ul><ul><li>Un administrador del proyecto podría requerir vistas de asignación detalladas mientras que un desarrollador podría requerir vistas de módulos y componente-y-conector más detalladas. </li></ul>
  18. 18. 4.2 Documentación de diseño <ul><li>Documentar una vista involucra por lo menos, el describir las interfaces de los elementos de esa vista. La definición de esa vista dependerá del tipo de elemento. Una clave característica de cada especificación de interface es que tiene que ser dual: lo que el elemento provee y lo que requiere (los recursos usados por el elemento y las suposiciones que hace del medio ambiente) </li></ul>
  19. 19. 4.2 Documentación de diseño <ul><li>Otra idea clave es que el diseño debe ser presentado y documentado en una forma racional, aunque el proceso que lo haya guiado no haya sido perfectamente racional. </li></ul>
  20. 20. 5 Estrategias de diseño y métodos <ul><li>Se han propuesto variados principios generales y estrategias para guiar y mejorar la calidad del software resultante. </li></ul><ul><li>En contraste a las estrategias, los métodos son más específicos, ya que sugieren un conjunto particular de notaciones junto con una descripción de un proceso a ser seguido, así como heurísticas para adaptar el proceso a un contexto particular. </li></ul>
  21. 21. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Abstracción: el proceso de olvidar información de tal manera que las cosas que son diferentes pueden tratarse como si fueran la misma. Los dos mecanismos son “abstracción por parametrización” abstraer de datos específicos introduciendo parámetros y “abstracción por especificación” abstraer cómo se implementa un módulo referenciando a una especificación apropiada. </li></ul>
  22. 22. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Estos mecanismos llevan a los tres grandes tipos de abstracción: abstracción procedural (para introducir nuevos parámetros), abstracciones de datos (para introducir nuevos tipos de datos) y abstracción de control/iteración (para iterar sobre colecciones de elementos) </li></ul>
  23. 23. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Cohesión y acoplamiento: acoplamiento se define como la fuerza de las relaciones entre las componentes de software, mientras que cohesión se define por cómo los elementos que conforman un componente se relacionan. Como regla general, acoplamiento ente componentes debe ser débil, mientras que la cohesión (interna) de un componentes debe ser alta </li></ul>
  24. 24. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Dividir y vencer: es una técnica para resolver un problema complejo dividiéndolo en problemas más simples, que se resuelven recursivamente y cuyas soluciones se combinan para obtener la solución general. Una estrategia relacionada es la separación de asuntos, que sugiere que responsabilidades diferentes o no relacionadas deben ser separadas entre sí </li></ul>
  25. 25. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Ocultamiento de la información y encapsulamiento: ocultamiento de la información se define donde cada módulo se caracteriza por el conocimiento de la decisión de diseño que la oculta de los otros. Un principio clave es la separación de la interfaz y la implementación donde se especifica una interfaz pública conocida por los clientes, que separa los detalles de cómo lo realiza el componente </li></ul>
  26. 26. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Encapsulamiento es el agrupamiento de ideas relacionadas en una una unidad, las que pueden ser referenciada después por un solo nombre. Encapsulamiento combina elementos para crear una nueva unidad, cuyos detalles internos son ocultados. </li></ul>
  27. 27. 5.1 Estrategias generales y técnicas posibilitadoras <ul><li>Suficiencia, completitud y primitividad: estas nociones indican que un componente debe capturar todas las características importantes de una abstracción para interactuar con ella y ninguna más </li></ul>
  28. 28. 5.2 Diseño orientado a la función (estructurado) <ul><li>Es uno de los primeros paradigmas de diseño, que se centra en identificar las funciones principales de un sistema, y luego refinarlas en una manera top-down. </li></ul><ul><li>El diseño estructurado se realiza después del análisis estructurado. Este análisis produce DFDs con descripciones de procesos y también se pueden usar diagramas E-R </li></ul>
  29. 29. 5.2 Diseño orientado a la función (estructurado) <ul><li>Se han propuesto dos estrategias para derivar una arquitectura de software a partir de un DFD: </li></ul><ul><li>- Análisis de transacción: una transacción se caracteriza por algún evento en el medio ambiente que genera un estímulo al sistema, quien a su vez gatilla alguna actividad que produce una respuesta teniendo un efecto hacia el medio ambiente. El análisis de transacciones consiste en identificar los tipos de transacciones claves de un sistema y usarlos como unidades de diseño, esto es, diseñando separadamente el procesamiento de cada tipo de transacción. </li></ul>
  30. 30. 5.2 Diseño orientado a la función (estructurado) <ul><li>- Análisis de transformación: el paso clave para derivar un diagrama de estructura de un DFD (para una transacción dada) es identificar la transacción central, esto es, la porción de un DFD que contiene las funciones esenciales del sistema y es independiente de la implementación de la entrada y salida. Una carta de estructura borrador se puede obtener “elevando” las burbujas asociadas a la transformación central. </li></ul>
  31. 31. 5.2 Diseño orientado a la función (estructurado) P1 P5 P6 P3 P4 P2 P5 P6 P1 a1 a2 a2 a3 e1 e2 a3 e1 e2 a1 a2 a2 transformación central DFD Diagrama de estructura P2 P3 P4
  32. 32. 5.2 Diseño orientado a la función (estructurado) <ul><li>Los conceptos claves del diseño estructurado son acoplamiento y cohesión. Un buen diseño debe restringir el acoplamiento a tipos normales de acoplamiento (datos, estampado, y control) siendo el de datos el preferido, donde la comunicación entre módulos es a través de parámetros, donde cada parámetro es un pedazo de datos elemental, evitando así las formas patológicas de acoplamientos, como la común y de contenido. </li></ul>
  33. 33. 5.2 Diseño orientado a la función (estructurado) <ul><li>Un buen diseño debe dar preferencia a módulos de alta cohesión, es decir, módulos que exhiban cohesión funcional, que es cuando el módulo contiene todos los elementos que contribuyen a la ejecución de una y sólo una tarea relacionada al problema. </li></ul><ul><li>Existen otras formas de cohesión más débiles se han identificado: secuencial, comunicacional, procedural, temporal, lógica y coincidental. </li></ul>
  34. 34. 5.2 Diseño orientado a la función (estructurado) <ul><li>Otras heurísticas se han sugerido para ayudar a mejorar la calidad del diseño resultante: </li></ul><ul><li>Fan-in/fan-out: un alto fan-in (número de módulos que llaman a un módulo M) es considerado bueno, ya que indica el reuso de M. Por su parte un bajo o moderado fan-out (número de módulos que M invoca) -máximo 5 a 7- es preferible. </li></ul>
  35. 35. 5.2 Diseño orientado a la función (estructurado) <ul><li>Particionamiento de decisiones: se debe evitar la división de decisiones, que ocurren cuando el reconocimiento de una condición y la ejecución de la acción asociada no se mantienen dentro del mismo módulo. </li></ul>
  36. 36. 5.2 Diseño orientado a la función (estructurado) <ul><li>Sistemas balanceados: se prefiere un sistema balanceado, es decir, cuando los módulos de alto nivel tratan con la lógica y datos abstractos (datos limpios y válidos, independientes del formato de implementación) </li></ul>
  37. 37. 5.3 Diseño orientado a objeto <ul><li>La noción de objeto está íntimamente relacionado con las nociones de abstracción de datos, encapsulamiento y tipo abstracto de datos. </li></ul><ul><li>A través de los años, se han propuesto numerosos métodos de diseño. </li></ul><ul><li>UML no es un método de diseño, es sólo un conjunto de notaciones neutral con respecto a cualquier método de diseño específico. </li></ul><ul><li> Revisar proceso unificado </li></ul>
  38. 38. 5.4 Diseño orientado a la estructura de datos <ul><li>También se conoce como programación estructurada de Jackson. El énfasis se basa en los datos que manipula el programa en vez de las funciones que realiza. El énfasis se basa en que los datos son más estables (menos sujetos a cambios) que las funciones que debe desarrollar. </li></ul>
  39. 39. 5.4 Diseño orientado a la estructura de datos <ul><li>El diseñador describe los datos de entrada y salida, usando los diagramas de estructura de Jackson, y desarrolla entonces la estructura de control del programa estableciendo una correspondencia apropiada entre los diagramas de estructura de entrada y salida. </li></ul>

×