P. 1
Fundamentos del diseño

Fundamentos del diseño

|Views: 1.222|Likes:
Publicado porkaiserbeito

More info:

Published by: kaiserbeito on Aug 25, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

05/20/2013

pdf

text

original

Unidades temáticas de Ingeniería del Software

Fundamentos del diseño
3ª edición (1999)

Facultad de Informática

justificación del diseño
Las actividades de diseño afectan al éxito de la realización del software y a la facilidad del mantenimiento, ayudando a construir sistemas estables. El diseño hace posible la transformación de los requisitos en un producto acabado mediante la obtención de modelos físicos del software. El diseño es el proceso en el que se asienta la calidad del desarrollo de software.

Fundamentos del diseño

2

contenidos
El diseño del software Directrices para evaluar un diseño Criterios técnicos para un buen diseño Los métodos de diseño Conceptos de diseño Abstracción Refinamiento Modularidad Arquitectura del software Jerarquía de control Partición estructural Estructura de datos Procedimiento del software Ocultación de información Diseño modular efectivo Heurísticas de diseño Referencias bibliográficas

Fundamentos del diseño

3

el diseño del software
El diseño del software se compone de un diseño de datos, un diseño arquitectónico, un diseño de la interfaz y un diseño procedimental.
• El diseño de datos transforma el modelo de dominio de la información en las estructuras de datos necesarias para implementar el software. • El diseño arquitectónico define la relación entre los principales elementos estructurales del programa. • El diseño de la interfaz describe cómo se comunica el software consigo mismo, con los sistemas que operan con él y con los operadores que lo emplean. • El diseño procedimental transforma elementos estructurales de la arquitectura del programa en una descripción procedimental de los componentes de software.

Fundamentos del diseño

4

directrices para evaluar un diseño
El diseño debe implementar todos los requisitos explícitos contenidos en el modelo de análisis así como todos los requisitos implícitos que desea el cliente. El diseño debe ser una guía que puedan leer y entender los que construyan el código y los que prueban y mantienen el software. El diseño debería proporcionar una idea completa de lo que es el software, enfocando los dominios de datos, funcional y de comportamiento desde la perspectiva de la implementación.

Fundamentos del diseño

5

criterios técnicos para un buen diseño
Debe presentar relaciones jerárquicas del tipo cliente-servidor entre componentes. Debe ser modular, es decir, estar dividido en forma lógica en componentes que realicen funciones y subfunciones específicas. Debe contener abstracciones de datos y procedimentales. Debe producir componentes que exhiban características funcionales independientes. Debe conducir a interfaces que reduzcan la complejidad de las conexiones entre los componentes y el entorno exterior. Debe producirse usando un método que pudiera repetirse según la información obtenida durante el análisis de requisitos del software.

Fundamentos del diseño

6

los métodos de diseño
Los enfoques de diseño han evolucionado desde los criterios de desarrollo de programas modulares y métodos para refinar la arquitectura software de manera descendente en la jerarquía hasta la orientación a objetos, pasando por los métodos que proponen transformar el flujo de datos o la estructura de datos en una definición del diseño. Características comunes de los métodos de diseño
• Un mecanismo para la transformación de un modelo de análisis en una representación del diseño. • Una notación para representar componentes funcionales y sus interfaces. • Heurísticas para el refinamiento y la partición. • Consejos para valorar la calidad.

Fundamentos del diseño

7

conceptos de diseño
Los conceptos de diseño ayudan a responder a las siguientes cuestiones:
• ¿qué criterios pueden emplearse para la partición del software en componentes individuales? • ¿cómo se extraen la función o la estructura de datos de una representación conceptual del software? • ¿hay criterios uniformes que definen la calidad técnica de un diseño de software?

Abstracción Refinamiento Modularidad Arquitectura del software Jerarquía de control

Partición estructural Estructura de datos Procedimiento del software Ocultación de la información

Fundamentos del diseño

8

abstracción
Capacidad que permite trabajar a diferentes niveles de detalle, yendo de lo más abstracto a lo más concreto. Al nivel superior de abstracción, se establece una solución en términos amplios usando el lenguaje del entorno del problema. A niveles más bajos, se toma una orientación más procedimental. Al nivel inferior de abstracción, la solución se establece de manera que pueda implementarse directamente. Existen tres tipos de abstracciones: procedimentales, de datos y de control. En los diferentes niveles del diseño, se crean abstracciones procedimentales, de datos y de control.

Fundamentos del diseño

9

abstracción (cont.)
Abstracción procedimental Se trata de una secuencia dada de instrucciones que tiene una función específica y limitada. Abstracción de datos Es una colección determinada de datos que describen un objeto de datos. Abstracción de control Implica un mecanismo de control del programa sin especificar detalles internos.

Fundamentos del diseño

10

refinamiento
Es un proceso de elaboración que permite ampliar una declaración original, dando cada vez más detalles. El refinamiento paso a paso (Wirth, 1971) es una estrategia de diseño descendente donde la arquitectura de un programa se desarrolla refinando sucesivamente niveles de detalle procedimental. Se empieza con un enunciado de función o descripción de información definida a un alto nivel de abstracción sin proporcionar ninguna información sobre los procesos internos de la función o la estructura interna de la información. El refinamiento ayuda al diseñador a revelar detalles de bajo nivel a medida que progresa el diseño.

Fundamentos del diseño

11

modularidad
Es un atributo del software que permite que sea intelectualmente manejable al estar dividido en componentes que se integran para satisfacer los requisitos. La arquitectura del software conlleva modularidad; es decir, se divide el software en componentes identificables y tratables por separado, denominados módulos, que están integrados para satisfacer los requisitos del programa.
Costes totales del software Costes o esfuerzo Costes de integración

Región de costes mínimos M

Número de módulos Fundamentos del diseño 12

{
Costes/módulo

modularidad (cont.)
Las cuestiones a considerar son:
• ¿cuánto deberíamos modularizar el software? • ¿cómo definimos un módulo apropiado de un tamaño? ... la respuesta está en los métodos de diseño empleados.

Criterios para evaluar un método de diseño con respecto a su capacidad de definir un sistema modular eficaz (Meyer, 1988)
• • • • • capacidad de descomposición modular capacidad de empleo de componentes modulares capacidad de comprensión modular continuidad modular protección modular

Fundamentos del diseño

13

arquitectura del software
Estructura global del software y las maneras en que esa estructura proporciona integridad conceptual a un sistema. La arquitectura es la estructura jerárquica de los componentes del programa, la manera de interactuar de estos componentes, y la estructura de los datos usados por estos componentes. Propiedades que deberían formar parte del diseño arquitectónico
• Propiedades estructurales • Propiedades extra-funcionales • Familias de sistemas relacionados

Fundamentos del diseño

14

jerarquía de control
La estructura del programa representa la organización de los componentes e implica una jerarquía de control. La jerarquía de control representa dos características de la arquitectura del programa:
• La visibilidad indica el conjunto de componentes que pueden ser invocados o sus datos ser utilizados por un componente dado (incluso indirectamente). • La conectividad indica el conjunto de componentes a los que directamente se invoca o sus datos son utilizados en un determinado módulo.

Fundamentos del diseño

15

jerarquía de control (cont.)
Medidas de la estructura del programa
• • • • La profundidad es el número de niveles de control. La anchura es la amplitud global del control. El grado de salida es el número de módulos controlados por otros módulos. El grado de entrada es el número de módulos que controlan directamente a un módulo dado.
M a d f g i e h j b k n
Grado de entrada Grado de salida

Profundidad

c l o r m p q

Anchura Fundamentos del diseño 16

partición estructural
La estructura del programa debería partirse tanto horizontalmente como verticalmente. Partición horizontal
• Define ramas separadas de la jerarquía modular para cada función principal del programa. • Las arquitecturas de partición horizontal facilitan la prueba, el mantenimiento y propaga menos efectos secundarios.

Partición vertical
• sugiere que el control y el trabajo se distribuyan descendentemente en la arquitectura del programa. • Las arquitecturas de partición vertical tienen menos probabilidad de ser susceptibles a efectos secundarios cuando se hacen cambios y tendrán por tanto mejor capacidad de mantenimiento.

Fundamentos del diseño

17

estructura de datos
Es una representación de la relación lógica entre los elementos individuales de datos. La organización y complejidad de la estructura de datos están limitadas sólo por el ingenio del diseñador. Las estructuras de datos clásicas son: elemento escalar, vector secuencial, array (matriz), lista enlazada, estructura de datos jerárquica. Las estructuras jerárquicas se encuentran en aplicaciones que requieran categorización y capacidad de asociación de la información. Las estructuras de datos pueden representarse a diferentes niveles de abstracción.

Fundamentos del diseño

18

procedimiento del software
Se centra en los detalles de procesamiento de cada módulo individualmente. Debe proporcionar una especificación exacta del procesamiento, incluyendo la secuencia de acontecimientos, puntos exactos de decisión, operaciones repetitivas e incluso la organización o estructura de los datos. Existe una relación entre la estructura de programa y el procedimiento del software; el procesamiento indicado para cada módulo debe incluir una referencia a todos los módulos subordinados al módulo que se describe.

Fundamentos del diseño

19

ocultación de información
Capacidad de un componente para que la información (procedimiento y datos) contenida dentro del mismo sea inaccesible a otros componentes que no la necesitan. Implica que se puede conseguir una modularidad eficaz definiendo un conjunto de módulos independientes que se comunican entre ellos sólo la información necesaria para conseguir la función del software. Define y refuerza las restricciones de acceso tanto al detalle procedimental dentro del módulo como a cualquier estructura de datos local empleada por el módulo. Proporciona ventajas en el mantenimiento del software, ya que los errores son más difíciles de propagar al estar ocultos la mayoría de los datos y los procedimientos a otras partes del software.

Fundamentos del diseño

20

diseño modular efectivo
Las ventajas de un diseño modular son:
• Reduce la complejidad. • Facilita los cambios. • Facilita la implementación al fomentar el desarrollo en paralelo de diferentes partes de un sistema.

Independencia funcional.
• Deriva directamente de los conceptos de modularidad, abstracción y ocultación de la información. • Se adquiere desarrollando módulos con una clara función y una aversión a la excesiva interacción con otros módulos. • Se mide con dos criterios cualitativos: la cohesión y el acoplamiento. • Es la clave de un buen diseño.

Fundamentos del diseño

21

diseño modular efectivo (cont.)
La cohesión es la medida de la fuerza funcional relativa de un módulo. En el diseño se intenta conseguir una alta cohesión. El acoplamiento es la medida de la interdependencia relativa entre módulos. En el diseño intentamos conseguir el menor nivel posible de acoplamiento.

Fundamentos del diseño

22

diseño modular efectivo (cont.)

Bajo

Niveles de cohesión
Coincidental Lógica Temporal Procedimental Comunicativa Secuencial Funcional

Niveles de acoplamiento
Sin acoplamiento directo De datos Por estampado De control Externo Común Del contenido

Alto

Fundamentos del diseño

23

heurísticas de diseño
Las heurísticas de diseño para una modularidad efectiva son:
• Evaluar la primera iteración del diseño para reducir el acoplamiento y mejorar la cohesión. • Intentar minimizar las estructuras con mucho grado de salida. • Mantener el alcance del efecto de un módulo dentro del alcance del control de ese módulo. • Evaluar las interfaces de los módulos para reducir la complejidad, la redundancia y mejorar la consistencia. • Definir módulos cuya función sea predecible, pero evitar módulos que sean demasiado restrictivos. • Intentar conseguir módulos de entrada controlada evitando las conexiones patológicas. • Empaquetar el software basándose en las restricciones del diseño y los requisitos de portabilidad.

Fundamentos del diseño

24

referencias bibliográficas
Pressman, R. Ingeniería del software: un enfoque práctico. McGrawHill, 1998.

Fundamentos del diseño

25

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->