GUIA 5 - Conceptos y Principios de Diseño PDF

Title GUIA 5 - Conceptos y Principios de Diseño
Author Vincenzo Santorini
Course Ingeniería de Software 2
Institution Universidad Nacional de Lanús
Pages 5
File Size 103.1 KB
File Type PDF
Total Downloads 60
Total Views 466

Summary

5 Conceptos y Principios de 1) Enuncie y defina en que consiste cada tipo de de datos: transforma el modelo de dominio de informacion que se crea durante el de las estructuras de datos necesarias para implementar el software. La base es los objetos de datos y el DER. define las relaciones entre elem...


Description

Guía 5 – Conceptos y Principios de Diseño 1) Enuncie y defina en que consiste cada tipo de diseño -Diseño de datos: transforma el modelo de dominio de informacion que se crea durante el análisis de las estructuras de datos necesarias para implementar el software. La base es los objetos de datos y el DER. -Diseño arquitectónico: define las relaciones entre elementos estructurales, los patrones de diseño, y las restricciones para aplicar estos. -Diseño de interfaz: Como el software se comunica dentro de sí mismo, y las personas que interactúan con este. -Diseño a nivel de componentes: Transforma los elementos estructurales en una descripción procedimental de los componentes de software. 2) Fundamente la importancia del diseño del software La importancia se describe con una sola palabra: “calidad” El diseño es el lugar donde se fomenta la calidad, y es la única forma de convertir los requisitos de un cliente en un producto de software finalizado. 3) Justifique la concepción iterativa del proceso de diseño de software Inicialmente, el diseño se representa en un nivel alto de abstracción, y a medida que se va iterando, se va refinando el diseño, y este pasa a tener niveles de abstracción mucho más bajos. 4) Enuncie que características sirven como guía para evaluar un buen diseño de software 1) El diseño debe implementar todos los requisitos explícitos del modelo, y ajustarse a los requisitos implícitos del cliente 2) El diseño debe ser una guía comprensible para aquellos que generan código, y para aquellos que comprueban y dan soporte al software 3) El diseño debe dar una imagen completa del software, enfrentándose a dominios de comportamiento, funcionales y datos desde una perspectiva de implementación. 5) Enuncie las directrices para evaluar la calidad de la representación de un diseño (IDEM IS1) 1) El diseño debe hacer un uso inteligente de los componentes de software 2) Debe ser modular, dividido en funciones y subfunciones especificas 3) Debe tener representaciones diferenciadas de datos y procedimientos 4) Debe tener estructuras de datos adecuadas para lo que se va a implementar 5) Debe conducir a componentes que exhiban funcionalidades independientes 6) Debe tener una interfaz que solucione el conflicto entre mundo exterior y sistema 7) Debe ser reproducible mediante algún método, y el diseño debe estar llevado a cabo por el análisis de requisitos 6) Justifique porque el diseño es un proceso Y un modelo El proceso de diseño es una secuencia de pasos donde el diseñador describe los aspectos del software que se va a construir, mientras que el modelo de diseño es el equivalente de los planos de un arquitecto para una casa. Comienza con una representación de todo a construir, y refina lentamente la guía para construir cada detalle. 7) Enuncie y describa los principios básicos de diseño de software 1) No deben utilizarse orejeras (es decir tener en cuenta enfoques alternativos) 2) El diseño se debe poder rastrear hasta el modelo de análisis (se necesita un medio para rastrear como se han satisfecho los requisitos) 3) El diseño no debe inventar nada que ya este inventado, es decir el tiempo se debe invertir en representar ideas nuevas y en integrar patrones que ya existen 4) El diseño debe minimizar la distancia intelectual entre software y problema 5) El diseño debe presentar uniformidad e integración, como si solo hubiese sido desarrollado por una persona

6) El diseño debe admitir cambios 7) El diseño debe estructurarse para degradarse poco a poco, no explotar como una bomba, y adaptarse a circunstancias inusuales 8) Defina abstracción procedimental, abstracción de datos y abstracción de control -Abstracción procedimental: Secuencia de instrucciones que tiene una función específica. Ejemplo: la palabra para una puerta. -Abstracción de datos: colección de datos que describe un objeto de datos. Ejemplo: , que viene acompañado de un conjunto de atributos que describen esa puerta. -Abstracción de control: Se refiere a un mecanismo de control de programa sin especificar datos internos. Ejemplo: el semáforo de un sistema operativo, con el que se logra sincronización. 9) Defina rendimiento paso a paso Consiste en refinar los niveles de detalle procedimentales. En cada paso se descompone una o varias instrucciones del programa en instrucciones más detalladas. El proceso termina cuando las instrucciones se expresan en función de cualquier computadora subyacente o lenguaje de programación. 10) Defina modularidad La arquitectura expresa modularidad, es decir, el software se divide en componentes nombrados y abordados por separado, llamados módulos, los cuales se integran para satisfacer los requisitos del problema. 11) Fundamente porque subdividir el problema no minimiza el esfuerzo de desarrollo El esfuerzo (coste) para desarrollar un módulo disminuye a medida que aumenta el número total de módulos. Aun asi, a medida que va aumente el número de módulos, también aumenta el esfuerzo (coste) asociado a la integración de esos módulos. 12) Defina capacidad de descomposición modular, capacidad de empleo de componentes modulares, capacidad de comprensión modular, continuidad modular y protección modular -Capacidad de descomposición modular: Si un método de diseño descompone el problema en subproblemas, reduce el problema, consiguiendo una solución modular efectiva. -Capacidad de empleo de componentes modulares: Si un método permite ensamblar componentes existentes en un sistema nuevo, produce una solución que no inventa nada que ya haya sido inventado -Capacidad de comprensión modular: Si un módulo se comprende como una unidad, será más fácil de construir y cambiar -Continuidad modular: Si pequeños cambios en requisitos producen cambios en módulos y no el sistema en general, se minimiza el impacto de efectos secundarios -Protección modular: Si dentro de un módulo hay una situación aberrante que solo afecta a ese modulo, se minimiza el impacto de efectos secundarios. 13) Defina arquitectura del software Es la estructura jerárquica de los componentes del programa (módulos), la manera en la que los componentes interactúan y la estructura de datos que utilizan esos componentes. 14) Enuncie propiedades que deben especificarse como parte del diseño arquitectónico -Propiedades estructurales: Los componentes de un sistema, como se empaquetan y cómo interactúan entre ellos. -Propiedades extra-funcionales: Como la arquitectura consigue los requisitos para el rendimiento, seguridad, y otras características del sistema. -Familias de sistemas relacionados: El diseño debe tener la habilidad de utilizar bloques de construcción arquitectónicos.

15) Defina: a) Jerarquía de control: representa la organización de los módulos del programa. b) Arquitecturas de llamada y de retorno: Descompone la función en una jerarquía donde un programa principal invoca a un número de componentes de programa. c) Niveles de control: Profundidad y anchura, dan una indicación de la cantidad de niveles de control d) Ámbito de control: e) Grado de entrada: Cantidad de módulos que controlan a un módulo. f) Grado de salida: Medida del número de módulos que se controlan con otro modulo g) Modulo Superior: Modulo que contiene a otro modulo h) Modulo Subordinado: Modulo controlado por otro modulo 16) Defina visibilidad y conectividad Visibilidad: Indica el conjunto de componentes de programa que un componente puede invocar o utilizar como datos. Conectividad: Indica el conjunto de componentes que otro componente invoca o utiliza como datos. 17) Defina división estructural (división horizontal y división vertical o factorización) La división horizontal define ramas separadas de jerarquía modular para cada función principal del programa (entrada, transformación de datos y salida). La división vertical sugiere que dentro de la estructura del programa de control, el trabajo se distribuya de manera descendente. 18) Enuncie ventajas y desventajas de la división estructural horizontal -Proporciona software más fácil de probar -Conduce a un software más fácil de mantener -Propaga menos efectos secundarios -Proporciona software más fácil de ampliar En la parte negativa, hace que los datos pasen por interfaces de módulos que complican el control global del flujo del programa. 19) Justifique la preferencia por la división vertical La naturaleza del cambio justifica el uso de la división vertical. Un cambio en un módulo de control (parte superior) tendrá una probabilidad mayor de propagar efectos secundarios a módulos subordinados, mientras que un módulo de trabajo (bajo nivel en la estructura) es menos probable que propague efectos secundarios. Por esto, la estructura vertical es menos susceptible a efectos secundarios, y permite mantener mejor el sistema –factor importante de calidad-. 20) Defina: a) Estructura de datos: Representación de la relación entre elementos individuales de datos. Dicta las alternativas de organización, métodos de acceso y procesamiento de informacion. b) Elemento escalar: Estructura de datos más simple. Se puede lograr su acceso con solo especificar una dirección de memoria c) Vector: Son las estructuras de datos más comunes, y permiten indexación variable de la informacion. d) Espacio n-dimensional: Utilizado cuando el vector se amplía a dos, tres o un número arbitrario de dimensiones, siendo la bidimensional la más común. e) Lista: Estructura de datos que organiza elementos escalares, vectores o espacios para ser procesados como una lista. Se los llama “nodos”. 21) Defina procedimiento de Software Se centra en el procesamiento de cada módulo. Debe proporcionar una especificación de procesamiento, incluyendo secuencia de sucesos, puntos de decisión y operaciones repetitivas.

22) Defina ocultación de informacion Los módulos se caracterizan por las decisiones de diseño que cada uno oculta al otro. Ósea, los módulos deben especificarse y diseñarse de forma que la informacion que está dentro de un módulo sea inaccesible a otros que no necesiten esa informacion. Ocultación significa que se puede conseguir modularidad definiendo un conjunto de módulos que solo intercambian entre si informacion necesaria para que el software funcione 23) Defina independencia funcional Es la suma de modularidad, los conceptos de abstracción y la ocultación de informacion. Se logra desarrollando módulos con una función determinante y una aversión a interactuar excesivamente con muchos módulos. Dicho de otra forma, cada módulo debe tratar una subfuncion de requisitos y tener una interfaz sencilla cuando se observa desde otras partes de la estructura del programa. Se mide mediante cohesión y acoplamiento. 24) Defina cohesión Un módulo lleva a cabo una sola tarea dentro de un procedimiento, lo cual requiere poca interacción con otros procedimientos en otras partes del programa. Dicho de otra forma, un modelo cohesivo hace (idealmente) una sola cosa. Siempre buscamos que la cohesion sea alta, aunque la media es aceptable. 25) Defina modulo incidentalmente cohesivo, lógicamente cohesivo y modulo temporalmente cohesivo -Incidentalmente cohesivo: Módulos que llevan a cabo un conjunto de tareas que se relacionan con otras débilmente. Están en lo más bajo (y no deseable) del espectro. -Lógicamente cohesivo: Modulo que realiza tareas relacionadas lógicamente (por ejemplo, todas las salidas, independientemente del tipo). -Temporalmente cohesivo: Modulo que tiene tareas que solo se relacionan entre sí porque se ejecutan en el mismo intervalo del tiempo. 26) Defina acoplamiento y ejemplifique tipos de acoplamiento Es una medida de interconexión entre módulos. Depende de 3 cosas: la complejidad de la conexión, el punto donde se realiza la entrada o referencia a un módulo, y los datos que se pasan a través de la interfaz. Se busca que sea lo más baja posible, para que la conectividad entre módulos sea sencilla. -Acoplamiento de control: Definido por una variable denominada “indicador de control”, que controla las decisiones en un módulo superior o subordinado, que se pasa entre un módulo y otro. Figura 13.6 FOTOC. -Acoplamiento externo: Debe limitarse a pocos módulos -Acoplamiento común: Por ejemplo, 3 módulos acceden a un archivo o dirección de memoria, el modulo A lo inicializa, el B lo actualiza incorrectamente. Después, cuando C lo quiera leer no va a poder hacerlo por el error en B. -Acoplamiento de contenido: grado más alto de acoplamiento, cuando un módulo hace uso de datos mantenidos dentro de los límites de otro modulo, o cuando se realizan bifurcaciones dentro del límite de otro modulo. DEBE EVITARSE 27) Enuncie y describa heurísticas de diseño I) Evaluar la primera iteración para reducir acoplamiento y mejorar la cohesion: Los módulos pueden explosionar o implosionar. El primero significa que un módulo se convierte en dos o más en la estructura final del programa. El segundo significa combinar el proceso implicado en dos o más módulos. II) Minimizar estructuras de salida y esforzarse por la entrada a medida que aumenta la profundidad: Distribuir los módulos indicando capas de control, y módulos de alta utilidad en niveles inferiores. III) Mantener el ámbito de efecto (todos los otros módulos afectados por una decisión de este módulo) dentro del ámbito de control: Si un módulo A toma una decisión que afecta a un módulo B que no está en su ámbito de control, hay una violación de heurística.

IV) Evaluar interfaces para reducir complejidad y mejorar consistencia: Las interfaces suelen ser el problema principal, por lo que deben pasar poca informacion, y que esta esté relacionada con el modulo. Cuando hay inconsistencia, hay poca cohesion. V) Definir módulos que se puedan predecir, y evitar módulos restrictivos: Un módulo predecible actúa como una caja negra (la salida se produce independientemente de la entrada), y un módulo restrictivo posee una sola subfuncion, y exhibe gran cohesion, pero si limite una estructura de datos, o a una interfaz, se deben eliminar esas restricciones. VI) Conseguir módulos de entrada controlada, y evitar conexiones patológicas: Evitar acoplamiento de contenido. El software se entiende mejor cuando los módulos se restringen y están controlados. Las conexiones patológicas son referencias en medio de un módulo. 28) Defina especificación de diseño y enuncie que elementos contiene Aborda diferentes aspectos del modelo de diseño, y se completa a medida que se va refinando el software. En primer lugar se especifica el diseño de datos, las estructuras base, estructuras de archivos, estructuras de datos, y referencias que conectan objetos con archivos. Luego, las interfaces internas y externas, y se describe un diseño detallado de la interfaz hombre-máquina. Se referencian los requisitos, para establecer que se satisfacen e indicar cuales son los componentes críticos para la implementación de requisitos específicos. Después, se incluyen las restricciones de diseño (limitaciones físicas de memoria o necesidad de una interfaz externa). La última parte consta de datos complementarios, como descripciones de algoritmos o procedimientos alternativos....


Similar Free PDFs