Principios del diseño estructurado

Los principios de diseño estructurado son:

– Descomposición por refinamientos sucesivos. Creación de una jerarquía modular.
– Elaboración de módulos Independientes.

Conceptos del diseño estructurado

El diseño de sistemas se caracteriza por hacer uso de un conjunto de conceptos que deben ser comprendidos a fin de poder especificar una propuesta de solución exitosa.

Abstracción

Es el proceso por el cual se resaltan ciertas características y se descartan o minimizan ciertas características de la realidad. Para el diseño, este proceso está enfocado en construir la solución, a diferencia del análisis en donde se busca especificar la situación actual.

Abstraccion

El concepto de abstracción tiene relevancia en el sentido en que los intereses, gustos, conocimientos, etc. afectan la forma en que percibimos la realidad.

Refinamiento

Es el proceso por el que se refinan los procesos por automatizar en su mínima expresión, que son las actividades. Como en el diseño la materia prima son los algoritmos, las actividades deben ser transformadas en algoritmos.

Estos algoritmos deben ser especificados de acuerdo con el lenguaje de programación que se haya seleccionado debido a las singularidades que tiene cada lenguaje.

No solamente se debe refinar los algoritmos, también se tiene que refinar los datos. Aunque esta tarea se hace en el análisis cuando se crea el Diccionario de Datos se presenta la misma situación que con los algoritmos, es necesario refinarlos en función del Sistema Manejador de Datos seleccionado.

Modularidad

Es el proceso por el que se agrupan y/o se dividen los componentes de un sistema. Los componentes están constituidos por un conjunto de programas.

La forma de hacer la agrupación está en función de la arquitectura que se haya seleccionado así como de los estándares que maneje el equipo de desarrollo y la organización a la que se está construyendo el sistema.

La ventaja de la modularización es que permite mantener y reutilizar los componentes del sistema siempre y cuando se haya tenido una alta cohesión y un bajo acoplamiento.

Abstracción (Booch, 2007, p. 45)

En el libro Análisis y Diseño Orientado a Objetos con Aplicaciones de Booch (2007) se ilustra el concepto de modularidad. Observa
que cada componente que conforma el gato electrónico puede ser sustituido por otro en caso de que se descomponga.

Independencia funcional

La independencia funcional es el resultado de aplicar la modularidad en el diseño de sistema. Sin embargo, esta afirmación puede resultar un tanto falsa ya que cada elemento del sistema se encuentra interrelacionado con por lo menos otro elemento.

Dado un cambio en el comportamiento de un elemento, este afectará en cierto grado directa o indirectamente a otro elemento por lo que la independencia tiende a ser virtual.

Cohesión

La cohesión es la especificidad de la función que realiza un elemento.

Pressman lo define como:

– Una extensión natural del concepto de ocultación de información. Un módulo cohesivo lleva a cabo una sola tarea dentro de un procedimiento de software, lo cual requiere poca interacción con los procedimientos que se llevan a cabo en otras partes de un programa.

Dicho de otra manera sencilla, un módulo cohesivo deberá (idealmente) hacer una sola cosa.

Acoplamiento

El acoplamiento es nivel de interdependencia que existe entre los elementos.

Pressman lo define como:

– Una medida de interconexión entre módulos dentro de una estructura de software. El acoplamiento depende de la complejidad de interconexión entre los módulos, el punto donde se realiza una entrada o referencia a un módulo, y los datos que pasan a través de una interfaz.

Arquitectura del software

“La arquitectura es la estructura jerárquica de los componentes del programa (módulos), la manera en que los componentes interactúan y la estructura de datos que van a utilizar los componentes.”

La arquitectura la establece el diseñador, obedeciendo a las características que debe tener el sistema y a la tecnología que se va a emplear, por lo que no es de extrañarse que exista una diversidad de formas de crear la arquitectura de un sistema.

Otra forma de plantear la arquitectura de software es creando un conjunto de modelos que representen la parte estática y la parte dinámica del sistema. Los modelos se representan por medio de diagramas y sus especificaciones correspondientes.

Jerarquía de control

La jerarquía representa la organización de los componentes del sistema instaurando una jerarquía en donde se establece qué componente controla a qué componente.

Para este concepto es necesario establecer una regla: un componente solo puede ser controlado por otro componente.

La jerarquía no es otra cosa que la forma en que se agrupan los componentes. La agrupación obedece a las características que comparten cada uno de los componentes buscando con ello una administración eficiente.

No hay un límite para establecer cuántos componentes puede controlar un componente pero se recomienda que no sea mayor de 7.

División estructural

La división estructural es un concepto inherente al concepto de jerarquía de control. Como se mencionó, es en la jerarquía de control como se organizan los componentes agrupándose entre sí. Estas agrupaciones se dan en forma horizontal (ancho) y en forma vertical (profundidad).

Estructura de datos

La estructura de datos es una relación entre datos. Conforme a los requerimientos del usuario, éste establecerá ciertos conceptos que tienden a convertirse en estructuras de datos. Por ejemplo, el usuario menciona que “renta películas”, la renta es una estructura de datos que está compuesta por una fecha de renta, fecha de devolución, películas rentadas, cliente que renta, entre otros.

Procedimiento

El procedimiento es la organización mínima de un conjunto de actividades. Se especifica por uno o más algoritmos dependiendo de la complejidad que tenga el procedimiento. Cada procedimiento debe definir una secuencia lógica de las actividades así como los diversos caminos que pueden tomar las actividades.

Ocultamiento de información

Cuando se crea un componente es necesario que tenga una cohesión alta, esto quiere decir que sólo debe llevar a cabo una sola tarea en la medida de lo posible.

La tarea requiere de manipular datos para llevar a cabo su cometido por lo que el componente tiene la responsabilidad de que estos datos sólo sean visibles para su comportamiento. Esta característica es lo que se conoce como ocultamiento de la información El ocultamiento de información es una característica muy apreciada por los usuarios y desarrolladores.

A los usuarios no les interesa los detalles técnicos de los sistemas pero sí les importa que dé la respuesta esperada. A los desarrolladores les interesa ocultar los detalles técnicos de los componentes con el fin de que se facilite su reutilización.

Concurrencia

Esta propiedad del software se da cuando tiene que responder a las peticiones de los usuarios al mismo tiempo. En entornos multiusuario tiene un peso mayor por lo que será necesario establecer pruebas de rendimiento que permitan validar esta característica.

Verificación

Es un proceso en que se revisa que el software se construya de la manera correcta. Al iniciar el desarrollo de un sistema es necesario establecer un conjunto de estándares para los documentos, algoritmos, base de datos y cualquier otro tipo de artefacto.

La verificación se encarga de asegurar que conforme a los estándares definidos los productos los cumplan, este proceso busca asegurar la calidad interna del software.

Fuente: Apuntes de Informática IV de la FCA de la UNAM