Diseño

De Cuba-Wiki

Diseño de TADs[editar]

En la etapa de especificación de problemas, lo único que hemos hecho es detallar qué debemos hacer, pero no nos hemos preocupado por cómo hacerlo. El objetivo fue describir el comportamiento del problema a resolver, pero no interesaba determinar cómo lo resolveríamos. Al especificar estamos describiendo el problema, recién al diseñar comenzamos a resolverlo.

Al diseñar, centraremos nuestro interés tanto en el ámbito en el que será usado el tipo abstracto de datos -de ahora en más sólo tipo-, como en los aspectos que se necesitan optimizar de este tipo (espacio, tiempo de ejecución). Del estudio de estos temas podremos determinar, por ejemplo, en qué orden llegarán los datos, cómo se los consultará, o las operaciones más frecuentemente usadas. A su vez, ocasionalmente, puede haber requerimientos explícitos de eficiencia temporal o espacial. Sobre la base de esta información, a la que llamaremos contexto de uso, diseñaremos nuestro tipo aprovechando las ventajas que nos ofrezca y cuidando de responder a los requisitos que nos plantea.

Un tipo se define por sus funciones, antes que por sus valores. La forma en que los valores se representan es menos importante que las funciones que se proveen para manipularlos. Los generadores de los tipos describen la forma abstracta de construir elementos, nunca la forma de construirlos o representarlos físicamente. Con el propósito de implementar un tipo, deberemos:

  • Proveer una representación para sus valores,
  • Definir las funciones del tipo en función de las de su representación,
  • Demostrar que las funciones implementadas satisfacen las relaciones especificadas en los axiomas.

Para cumplir con estas condiciones, el diseñador es libre de elegir entre diferentes representaciones, ponderando eficiencia y simplicidad en el marco del contexto de uso.

En la etapa de diseño es en donde realmente comenzaremos a aprovechar el nivel de abstracción del modelo especificado, al buscarle representaciones menos abstractas. Cuanto más abstracto sea éste, más opciones de diseño tendremos disponibles en cada paso de diseño. Es decir, debemos tener presente la necesidad de, evitar cualquier decisión de especificación que restrinja innecesariamente nuestra libertad de acción en la etapa de diseño.

Para mas información, consultar Apunte Diseño TADs