Está en la página 1de 3

18/10/2017 Diseo estructurado - Wikipedia, la enciclopedia libre

Diseoestructurado
En programacin y diseo de algoritmos, el diseo estructurado persigue elaborar algoritmos que cumplan la
propiedad de modularidad. Para ello, dado un problema que se pretende resolver mediante la elaboracin de un
programa de ordenador, se busca dividir dicho programa en mdulos siguiendo los principios de diseo de
descomposicin por refinamientos sucesivos, creacin de una jerarqua modular y elaboracin de mdulos
independientes.

ndice
1 Etapas del diseo estructurado
1.1 Descomposicin
1.2 Jerarqua de mdulos
1.3 Independencia
2 Evaluando el diseo
2.1 Acoplamiento
2.2 Cohesin
2.3 Fan-In y Fan-Out
3 Vase tambin

Etapasdeldiseoestructurado

Descomposicin
Para ello se requiere un adecuado anlisis de dicho problema, siendo necesario definir primeramente el problema, para lo
cual deber contener una detallada pero concisa descripcin del mismo. Un problema bien definido es aquel que lleva
implcitas tanto una situacin inicial como final claras.

Por qu descomponer un problema en partes? Experimentalmente, est comprobado que:

Un problema complejo cuesta ms de resolver que otro ms sencillo (de Perogrullo (http://buscon.rae.es/draeI/Srvlt
ObtenerHtml?LEMA=perogrullada&SUPIND=0&CAREXT=10000&NEDIC=No#0_1)).
La complejidad de un problema global es mayor que el valor de las complejidades de cada una de sus partes por
separado.
Segn esto, merece la pena el esfuerzo de dividir un problema grande en subproblemas ms pequeos. Si el objetivo es
elaborar un programa para resolver dicho problema grande, cada subproblema (menos complejo) podr ser resuelto por
un mdulo (subalgoritmo) relativamente fcil de implementar (ms que el programa global no dividido). Ahora la
cuestin es cmo realizar la descomposicin?; realizando un estudio descendente Top-Down que nos lleve desde la
concepcin del problema (programa o algoritmo) global hasta identificar sus partes (mdulos). Esta tcnica se repite
aplicando una estrategia llamada de refinamiento sucesivo (http://portal.acm.org/citation.cfm?id=362577) propuesta
por el experto en Ciencias de la Computacin NiklausWirth, que consiste precisamente en volver a aplicar el estudio
descendente Top-Down a cada subproblema una y otra vez hasta obtener subproblemas suficientemente pequeos que
puedan ser resueltos por mdulos que cumplan, en la medida de lo posible, las caractersticas deseables en un mdulo en
el mbito de la programacin. En palabras del propio NiklausWirth:

En cada paso (del renamiento), una o varias instrucciones del programa dado se descomponen en instrucciones
ms detalladas. Esta descomposicin sucesiva o renamiento de especicaciones termina cuanto todas las
instrucciones estn expresadas en trminos de la computadora usada o del lenguaje de programacin...
https://es.wikipedia.org/wiki/Dise%C3%B1o_estructurado 1/3
18/10/2017 Diseo estructurado - Wikipedia, la enciclopedia libre

Conforme se renan las tareas, tambin los datos pueden ser renados, descompuestos o estructurados, siendo lo
natural renar las especicaciones del programa y de los datos en paralelo.

Cada paso de renamiento implica algunas decisiones de diseo. Es importante que el programador sea
consciente de los criterios subyacentes (en las decisiones de diseo adoptadas) y de la existencia de soluciones
alternativas...
Problemadelrefinamientosucesivo

Cundo parar el refinamiento? Un refinamiento excesivo podra dar lugar a un nmero tan grande de mdulos que hara
poco prctica la descomposicin. Se tendrn en cuenta estos criterios para dejar de descomponer:

Cuando no haya tareas bien denidas.

Cuando la interfaz de un mdulo sea tan complicada como el propio mdulo.

Jerarqua de mdulos
sta es una consecuencia directa de la descomposicin del problema mediante refinamientossucesivos. El resultado
ser un conjunto de mdulos estratificados en capas a modo de pirmide, donde en la cima habr un nico mdulo que
representar al programa global y en los niveles inferiores aparecern los mdulos resultantes de las sucesivas divisiones.

Al final, debe obtenerse una estructura piramidal donde los mdulos de los niveles superiores se encargan de las tareas
de coordinacin, lgica de la aplicacin y manipulacin de los mdulos inferiores; estos otros debern realizar tareas de
clculo, tratamiento y entrada/salida de informacin.

Independencia
Ver Independencia en Caractersticasdeunmdulo.

Evaluandoeldiseo
Para evaluar o determinar cmo es de bueno un diseo estructurado se utilizan los conceptos de acoplamiento y
cohesin; stos estn muy relacionados entre s, tanto que difcilmente se puede variar uno sin que eso afecte al otro.
Tambin cabe decir que estos conceptos no son medidas que se puedan cuantificar numricamente; son ms bien
magnitudes cualitativas. Tambin se tienen en consideracin los conceptos de fanin y fanout.

Acoplamiento
Se define como el grado de interdependencia que hay entre los distintos mdulos de un programa; lo
deseable es que esta interdependencia sea lo menor posible, es decir, un bajo acoplamiento. Los niveles de acoplamiento,
ordenados de menor (ms deseable) a mayor (menos deseable), son:

Acoplamiento normal.- Un mdulo llama a otro de un nivel inferior y tan solo intercambian datos (parmetros de
entrada/salida). Dentro de este tipo de acoplamiento podemos encontrarnos tres subtipos, dependiendo de los
datos que intercambien los mdulos:

Acoplamiento de datos: Los mdulos se comunican mediante parmetros.


Acoplamiento de marca o por estampado: Los mdulos se pasan datos con estructura de registro. No es muy
deseable si el mdulo receptor slo requiere parte de los datos que se le pasan.
Acoplamiento de control: Los datos que se intercambian entre los mdulos son controles. Debido a que en este
subtipo un mdulo controla la ejecucin del otro, no es un buen acoplamiento, ya que impide que sean
totalmente independientes.
Acoplamiento Comn.- Dos mdulos acceden a un mismo recurso comn, tpicamente memoria compartida, una
variable global o un chero. Una variante de este tipo de acoplamiento es el acoplamiento externo:

Acoplamiento externo.- Los mdulos estn ligados a componentes externos. Por ejemplo, dispositivos de
E/S, protocolos de comunicaciones, etc.
Acoplamiento de contenido.- Ocurre cuando un mdulo necesita acceder a una parte de otro mdulo.

https://es.wikipedia.org/wiki/Dise%C3%B1o_estructurado 2/3
18/10/2017 Diseo estructurado - Wikipedia, la enciclopedia libre

Cohesin
Se define como la medida de fuerza o relacin funcional existente entre las sentencias o grupos de
sentenciasdeunmismomdulo. Un mdulo cohesionado ejecutar una nica tarea sencilla interactuando muy
poco o nada con el resto de mdulos del programa. Se persigue que los mdulos tengan una alta cohesin.

En el diseo estructurado podemos encontrarnos con los siguientes siete tipos de cohesin (de la mejor o ms deseable a
la menos recomendable):

Cohesin funcional: Los elementos del mdulo estn relacionados en el desarrollo de una nica funcin.
Cohesin secuencial: Un mdulo realiza distintas tareas en secuencia, de forma que las entradas de cada tarea
son las salidas de la tarea anterior. No es una mala cohesin si las tareas implicadas no son muy complejas y
requieren pocas lneas de cdigo.
Cohesin comunicacional: El mdulo realiza actividades paralelas usando los mismos datos de entrada y salida.
Como en el caso anterior, tampoco se trata de un mal tipo de cohesin si las tareas son relativamente sencillas.
Cohesin procedimental: El mdulo tiene una serie de funciones relacionadas por un procedimiento efectuado
por el cdigo (a modo de biblioteca). Es similar a la secuencial, pero puede incluir el paso de controles. Ser
deseable que las funciones estn relacionadas o realicen tareas dentro del mismo mbito (p.e. la biblioteca
string.h de C contiene funciones para operar con cadenas de caracteres).
Cohesin temporal: Los elementos del mdulo estn implicados en actividades relacionadas con el tiempo.
Cohesin lgica: Las actividades que realiza el mdulo tienen la misma categora. Esto es: es como si se tuvieran
partes independientes dentro del mismo mdulo.
Cohesin casual o coincidente: Los elementos del mdulo contribuyen a las actividades relacionndose
mutuamente de una manera poco signicativa. Este tipo de cohesin viola el principio de independencia y de caja
negra de los mdulos.

Fan-In y Fan-Out
Adems de los dos conceptos anteriores, se deben tener en cuenta el gradodeabsorcin (fanin) y la diseminacin
delcontrol (fanout) de los mdulos para garantizar la calidad del diseo.

Fan-In: Tambin llamado grado de absorcin, es el nmero de superordinados inmediatos que tiene el mdulo en
cuestin. Es conveniente maximizar el fan-in durante el proceso de diseo, ya que cada instancia de fan-in mltiple
indica que se ha evitado la duplicacin de cdigo.
Fan-Out: Tambin llamado diseminacin del control, es el nmero de subordinados inmediatos que tiene el
mdulo en cuestin. Conviene no tener un fan-out ni muy alto ni muy bajo, ya que eso es un posible indicador de
un diseo pobre. Si no es posible evitarlo, es preferible un fan-out bajo antes que uno alto.

Vasetambin
Diseo orientado a objetos
Programacin estructurada
Programacin modular
Dinmica de sistemas
Sistema complejo
Sistema dinmico
Encapsulamiento (programacin orientada a objetos)
Abstraccin (programacin orientada a objetos)

Obtenido de https://es.wikipedia.org/w/index.php?title=Diseo_estructurado&oldid=93492955

Se edit esta pgina por ltima vez el 9 sep 2016 a las 06:24.

El texto est disponible bajo la Licencia Creative Commons Atribucin Compartir Igual3.0; pueden aplicarse clusulas
adicionales. Al usar este sitio, usted acepta nuestros trminos de uso y nuestra poltica de privacidad.
Wikipedia es una marca registrada de la Fundacin Wikimedia, Inc., una organizacin sin nimo de lucro.

https://es.wikipedia.org/wiki/Dise%C3%B1o_estructurado 3/3

También podría gustarte