martes, 18 de noviembre de 2008

DISEÑO

EL CONCEPTO DE DISEÑO

La mejor definición de lo que significa DESEÑO la encontramos en la TEORÍA GENERAL DE SISTEMAS [KLIR80 p111-116]. Klir lo denomina SÍNTESIS y es uno de los tres problemas que maneja la TGS. La siguiente es una definición basada en Klir, pero “azucarada” y acomodada a la ingeniería:

El diseño consiste en que dados el conjunto de variables que describen el sistema, la actividad o cambio con respecto al tiempo de cada una de las variables, el comportamiento o función de transformación del sistema que permite explicar las salidas en función de las entradas, la descripción de los estados y las posibles transiciones entre estados, es decir, lo que denominamos REQUERIMIENTOS del sistema, y dado un conjunto de tipos de elementos con los cuales se puede contruir el sistema, los cuales denominaremos los RECURSOS, hallar la ESTRUCTURA de un sistema que esté construido solamente con los RECURSOS dados y que cumpla con todos los REQUERIMIENTOS.

La naturaleza del diseño es tal que si se entrega el mismo problema de diseño a diferentes personas, es muy posible que surjan varias soluciones, todas válidas, porque esta labor involucra la creatividad humana. También es posible que el problema de diseño no tenga solución con los recursos disponibles. Cuando existen varias alternativas de solución, es necesario tener algunos criterios para elegir la mejor solución, estos criterios son los denominados REQUERIMIENTOS NO FUNCIONALES.

PRINCIPIOS FUNDAMENTALES DE DISEÑO

Abstracción

[PRES98 p232] Es la capacidad de ver el sistema con diferentes niveles de detalle. Un alto nivel de abstracción nos permite una visión panorámica del sistema, en la cual vemos sus relaciones con elementos del ambiente. Un bajo nivel de abstracción nos permite ver los detalles finos del sistema. Otros autores se refieren al concepto de granularidad (grano grueso, grano fino). Una buena metáfora acerca de la abstracción es cómo se ve nuestra ciudad desde un avión. Si el avión está muy alto, la ciudad se ve como una pequeña mancha, pero vemos el relieve circundante, los ríos y vías que la unen a otras ciudades. Si el avión pasa más bajo alcanzamos a ver barrios o grandes partes de la ciudad. Pasadas a menos altura permitirán ver sucesivamente las manzanas y las casas individuales. Así que la altura del avión es el nivel de abstracción.

Aplicando este concepto de abstracción, el diseño de un sistema se ha dividido en dos partes: El diseño arquitectónico y el diseño detallado.

El diseño arquitectónico modela el sistema desde el más alto nivel de abstracción hasta encontrar el concepto de módulo. El diseño detallado modela cómo está construido internamente cada módulo.

Refinamiento sucesivo

Estrategia de diseño ideada por Niklaus Wirth en la cual se parte de un enunciado de alto nivel de abstracción de la solución y en sucesivas pasadas esta solución se va descomponiendo y refinando sus detalles hasta que se convierte en la solución totalemente operativa. A esta estrategia suele denominarse DISEÑO TOP-DOWN. Se usa mucho este enfoque, el cual se relaciona de manera cercana con el concepto de abstracción y el de modularidad, aplicable por ejemplo en el ciclo de vida en espiral.

Modularidad

Este concepto fue enunciado por primera vez por René Descartes en su famoso Discurso del Método. Consiste en descomponer un problema muy complejo en varias partes más manejables para nuestro intelecto. Si las partes siguen siendo complejas, se vuelven a dividir hasta obtener elementos simples y fáciles. No se debe olvidar que al dividir algo hay que establecer también las relaciones que unen a esas partes para formar un sistema completo. Cada vez que dividimos el problema en más partes, las partes son más sencillas, pero las relaciones entre ellas se vuelven más complejas. Así que no se puede aplicar infinitamente esta estrategia.

Para nuestro tema, que es la ingeniería del software, un sistema se divide en subsistemas, los subsistemas se dividen en módulos y los módulos se dividen en componentes. Cada componente a su vez es un objeto que tiene atributos y responde a eventos de usuario con sus operaciones o métodos.

Uno de los temas importantes del diseño es el concepto de módulo. Desde el punto de vista histórico, los primeros investigadores sobre diseño definieron que un módulo era un procedimiento o función, porque en la década de los 1970s un programa se dividía en este tipo de elementos. Luego surgieron otras propuestas, por ejemplo, que el módulo fuese una clase, la cual podía agrupar varias funciones. Más adelante se definió el módulo en función de la intefaz de usuario y éste es el concepto que manejamos actualmente. Así, para efectos de este curso, el módulo se considera una ventana, frame, página, documento o elemento similar.

REFERENCIAS:

KLIR80 Klir, George. Teoría General de Sistemas. España, Ediciones ICE, Edición Española 1980, Edición en Inglés 1969. ISBN 84-7085-104-7.

PRES98 Pressman, Roger S. Ingeniería del Software: Un enfoque práctico. 4ª Edición, Mc Graw Hill, España, 1998. ISBN 84-481-1186-9.

No hay comentarios: