Está en la página 1de 20

UNIVERSIDAD NACIONAL DE FORMOSA

Facultad de Administración, Economía y Negocios


Av. Gutnisky 3200 - Tel. Fax - (03717) 451792
3600 - Formosa - Argentina

UNIDAD TEMATICA 2

DISEÑO GRAL. A PARTICULAR

CATEDRA
PROGRAMACION II (PARADIGMA PROCEDURAL)

CODIGO
201

CARRERA
LICENCIATURA EN TECNOLOGIAS DE LA INFORMACION Y LA COMUNICACION

REGIMEN
CUATRIMESTRAL

DOCENTE
PROF. TITULAR: A.U.S. AGUSTIN F. SANDOVAL
TEORIA GENERAL DE SISTEMAS (TGS).
La teoría general de sistemas afirma que las propiedades de los sistemas no pueden
separar sus elementos, ya que la comprensión de un sistema se da sólo cuando se
estudian globalmente, involucrando todas las interdependencias de sus partes.
La TGS se fundamenta en tres premisas básicas:
1. Los sistemas existen dentro de los sistemas.
2. Los sistemas son abiertos.
3. Las funciones de un sistema dependen de su estructura.
La teoría de sistemas penetró rápidamente en la teoría administrativa por dos razones
fundamentales:
a) Debido a la necesidad de sintetizar e integrar más las teorías que la
precedieron, llevándose con éxito cuando se aplicaron las ciencias del
comportamiento al estudio de la organización.
b) La cibernética y la tecnología informática, trajeron inmensas posibilidades
de desarrollo y operación de las ideas que convergían hacia una teoría de
sistemas aplicada a la administración.

CONCEPTO DE SISTEMA
Puede definirse al sistema como un conjunto de elementos que interactúan entre sí, y
están orientados a conseguir un fin común.
Un sistema siempre se encuentra situado en un ambiente con el cual interactúa
recibiendo entradas y produciendo salidas.
Un sistema puede formar parte de otro sistema más general, que sería su entorno y/o
estar formado por otros sistemas, que en este caso lo tendrían a este como
subsistema.
El punto clave está constituido por las relaciones entre los diversos elementos del
mismo; puede existir un conjunto de objetos, pero si estos no están relacionados no
constituyen un sistema.

CARACTERISTICAS DE LOS SISTEMAS


Sistema es un todo organizado y complejo; un conjunto o combinación de cosas o
partes que forman un todo complejo o unitario.
Es un conjunto de objetos unidos por alguna forma de interacción o interdependencia.
Los límites o fronteras entre el sistema y su ambiente admiten cierta arbitrariedad.
Según Bertalanffy, sistema es un conjunto de unidades recíprocamente
relacionadas. De ahí se deducen dos conceptos: propósito (u objetivo) y
globalismo (o totalidad).
- PROPOSITO U OBJETO: Todo sistema tiene uno o algunos propósitos. Los
elementos (u objetos), como también las relaciones, definen una distribución que trata
siempre de alcanzar un objetivo.

UNaF – FAEN - LTIC Página 2


- GLOBALISMO O TOTALIDAD: Un cambio en una de las unidades del sistema, con
probabilidad producirá cambios en las otras. El efecto total se presenta como un ajuste
a todo el sistema. Hay una relación de causa / efecto. De estos cambios y ajustes, se
derivan dos fenómenos: entropía y homeostasia.
- ENTROPIA: Es la tendencia de los sistemas a desgastarse, a desintegrarse, para el
relajamiento de los estándares y un aumento de la aleatoriedad. La entropía aumenta
con el correr del tiempo. Si aumenta la información, disminuye la entropía, pues la
información es la base de la configuración y del orden. De aquí nace la geneantropía, o
sea, la información como medio o instrumento de ordenación del sistema.
- HOMEOSTACIA: Es el equilibrio dinámico entre las partes del sistema. Los sistemas
tienen una tendencia a adaptarse con el fin de alcanzar un equilibrio interno frente a los
cambios externos del entorno. Una organización podrá ser entendida como un sistema
o subsistema o un supersistema, dependiendo del enfoque.
El sistema total es aquel representado por todos los componentes y relaciones
necesarios para la realización de un objetivo, dado un cierto número de restricciones.
Los sistemas pueden operar, tanto en serio como en paralelo.

CLASIFICACIÓN DE LOS SISTEMAS


Sistemas naturales: Son los existentes en el ambiente. *
Sistemas artificiales: Son los creados por el hombre.
Sistemas sociales: Integrados por personas cuyo objetivo tiene un fin común,
EJEMPLO: Un Grupo Musical.
Sistemas hombre-máquina: Emplean equipo u otra clase de objetivos, que a veces se
quiere lograr la autosuficiencia.
Sistemas abiertos: Intercambian materia y energía con el ambiente continuamente.
Sistemas cerrados: No presentan intercambio con el ambiente que los rodea, son
herméticos a cualquier influencia ambiental.
Sistemas temporales: Duran cierto periodo de tiempo y posteriormente desaparecen.
Sistemas permanentes: Duran mucho más que las operaciones que en ellos realiza el
ser humano, es decir, el factor tiempo es más constante.
Sistemas estables: Sus propiedades y operaciones no varían o lo hacen solo en ciclos
repetitivos.
Sistemas no estables: No siempre es constante y cambia o se ajusta al tiempo y a los
recursos.
Sistemas adaptativos: Reacciona con su ambiente mejora su funcionamiento, logro y
supervivencia.
Sistemas no adaptativos: tienen problemas con su integración, de tal modo que
pueden ser eliminados o bien fracasar.
Sistemas determinístico: Interactúan en forma predecible.

UNaF – FAEN - LTIC Página 3


Sistemas probabilísticos: Presentan incertidumbre.
Subsistemas: Sistemas más pequeños incorporados al sistema original.

Supersistemas: sistemas extremadamente grandes y complejos, que pueden referirse


a una parte del sistema original.

ELEMENTOS SISTEMATICOS
El sistema se constituye por una serie de parámetros, los cuales son:

Entrada o insumo (input). Es la fuerza de arranque del sistema, suministrada por la


información necesaria para la operación de éste.
Salida o producto (output). Es la finalidad para la cual se reunirán los elementos y las
relaciones del sistema.
Procesamiento o transformador (throughput). Es el mecanismo de conversión de
entradas en salidas.
Retroalimentación (feedback). Es la función del sistema que busca comparar la salida
con un criterio previamente establecido.
Ambiente (environment). Es el medio que rodea externamente al sistema.

LA ORGANIZACIÓN COMO SISTEMA ABIERTO


Una empresa es un sistema creado por el hombre, la cual mantiene una interacción
dinámica con su ambiente sean clientes, proveedores, competidores, entidades
sindicales, o muchos otros agentes externos.

Influye sobre el ambiente y recibe influencias de esté. Además es un sistema integrado


por diversas partes relacionadas entre sí, que trabajan en armonía con el propósito de
alcanzar una serie de objetivos, tanto de la organización como de sus participantes.

UNaF – FAEN - LTIC Página 4


La organización debe verse como un todo constituido por muchos subsistemas que
están en interacción dinámica entre sí. Se debe analizar el comportamiento de tales
subsistemas, en vez de estudiar simplemente los fenómenos organizacionales en
función de los comportamientos individuales y procesos continuos.

La organización es un sistema abierto; Por lo cual, en esta, entran insumos que


favorecen el crecimiento organizacional de una empresa. Sí no existiera el sistema
abierto en una empresa, esta llegaría a la quiebra porque necesitaría de este recurso
tan importante. Es importante que se implementen este tipo de métodos en las diversas
formas de organización, ya, que de esta manera la empresa funciona como un sistema.

El sistema abierto depende de los recursos que lleguen a la empresa. El capital es una
fuente principal para que se implemente el sistema abierto

CICLO DE VIDA CLASICO DEL DESARROLLO DE LOS SISTEMAS


Todos los sistemas, desde su concepción o desde que se detecta su necesidad,
pasando por la propia construcción, puesta en marcha y las continúas revisiones hasta
su desaparición por dejar de usarlos o por ser reemplazados por otros sistemas, pasan
por una serie de etapas. A la sumatoria de estas etapas se le denomina ciclo de vida
del sistema.

Es el conjunto de actividades que los diseñadores y usuarios realizan para desarrollar e


implementar un sistema de información.

Como por su estructura, en un gran proyecto no es factible diseñarlo en una única


etapa, debe dividirse en un número fijo de etapas, que están mas o menos
diferenciadas y que por lo general estas etapas están muy relacionadas entre sí, y en la
mayoría de los casos puede considerarse que son inseparables y es muy difícil medir
donde termina una para comenzar la siguiente y también en algunos casos las distintas
partes del proyecto pueden encontrarse en distintas etapas de desarrollo en forma
simultánea.

Cada etapa del ciclo de vida puede gestionarse, con su programa de tareas, asignación
de recursos ya sean tanto monetarios como humanos como si se tratara de distintos
proyectos y no de un único proyecto.

Para poder cumplir con todas las tareas en tiempo y forma, es necesario ejecutar una
metodología determinada, en un sentido muy amplio una metodología es una forma de
realizar algunas tareas estipuladas, cumpliendo una secuencia ordenada y sistemática,
de normas o reglas muy precisas, con un cumplimiento bastante estricto y para llegar a
algún fin preestablecido.

UNaF – FAEN - LTIC Página 5


Sea cual fuere la metodología escogida, siempre suelen darse tres fases genéricas que
pueden denominarse:

a) Definición, esta fase se enfoca sobre el “QUE”, o sea la razón del


sistema “Qué hay que hacer”, la segunda fase, es la del

b) Desarrollo, que se basa en el “COMO”, o sea “Como debe


hacerse”, y la tercera en el c) utilización, que tiene que ver con el
“USO” del sistema y en las continuas actualizaciones que sufrirá el
mismo.

Las etapas que surgen de la aplicación de una metodología son las siguientes:

ANÁLISIS:
a) investigación preliminar: La solicitud para la realización de un nuevo sistema
que remplace al sistema manual o para modificar un sistema existente
agregando nuevos módulos, puede partir de cualquier miembro de la
organización que detecte la necesidad. Esta etapa, consiste en examinar el
sistema de información existente, con el propósito de mejorarlo con los métodos
y procedimientos mas adecuados, y que estén basados en el procesamiento de
información, por medio de computadoras. Debe como primer punto definirse cual
es el problema que debe solucionarse.

b) Dentro de esta etapa debe realizarse un estudio de factibilidad, este estudio,


implica un examen relativamente amplio y rápido de distintas factibilidades, para
obtener una estimación aproximada, no solo de los costos, sino también dentro
de que contexto deberá funcionar el nuevo sistema que se desarrollará. Este
estudio deberá proporcionar unas ideas globales de la situación actual y de las
consecuencias financieras, de organización, humanas y de cualquier otro tipo
que puedan tener importancia en el futuro.

c) El estudio de factibilidad, deberá dividirse a su vez en 3(TRES) etapas, estas


son:

a) Factibilidad técnica: debe determinarse si el trabajo podrá llevarse a


cabo con el equipamiento actual
b) Factibilidad económica: ¿La relación beneficio costo es la adecuada?
c) Factibilidad operacional: Una vez desarrollado e implementado, ¿Se
utilizará?

ANÁLISIS
b) Relevamiento Si las tres etapas del estudio de factibilidad, indican que es
conveniente continuar con el desarrollo, deben utilizarse para el relevamiento, las
herramientas correspondientes para la recolección de los datos, dependiendo
fundamentalmente el ámbito donde deba desarrollarse el mismo. Estas herramientas
son:
a) Entrevista esta puede llevarse a cabo en forma individual o grupal,
b) Cuestionarios es muy útil cuando se trata de recabar información en grupos
numerosos y se complica entrevistarlos a todos,

UNaF – FAEN - LTIC Página 6


c) Observación personal, este método nos da información de cómo se realizan
las tareas, independientemente de lo que pueda responderse sobre ellas,
d) Examinar documentación, se obtiene información cuantitativa, con respecto
a volúmenes de información, tendencias y frecuencias con las que se llevan a
cabo algunas tareas,
e) Muestreos, sirven tanto para la documentación como con los cuestionarios,
cuando el volumen de información es muy grande.

DISEÑO:
La finalidad inicial de esta etapa, es la de transformar una serie de especificaciones
aportadas por los futuros usuarios, en una descripción técnica, de un sistema físico que
cumpla con las especificaciones de los requerimientos. En el diseño de un sistema de
información, debe llevarse a cabo el desarrollo de todos los elementos necesarios, para
cumplir con los requerimientos identificados y establecidos durante la etapa de
recolección de datos, pero poniendo fundamentalmente, mucha atención con los
procesos que conectan o relacionan la información surgida en distintos sectores de la
empresa y que verificando que tratamiento se hace de la misma. Como resultado de la
etapa de diseño, quedará cantidad suficiente de documentación, que permitirá a los
programadores poder llevar a cabo los programas necesarios para satisfacerlos
requerimientos realizados.

Esta etapa comienza siempre con el diseño de las salidas, ya sean estas impresas,
pantallas o en soportes magnéticos, luego se continuará con las entradas, y deben
diseñarse los formularios, las pantallas y las distintas tablas que conforman la base de
datos, indicando como se relacionan entre ellas, y por último los procesos que utilizarán
las entradas y las bases de datos para generar las salidas.
Para que en esta etapa, pueda realizarse el trabajo en forma más sistemática y
ordenada, y se pueda pasar de lo general a lo particular, la dividimos en dos etapas
que son las siguientes;

a) Diseño Global, y
b) Diseño detallado

Diagramación lógica.
Introducción:
La diagramación lógica, es su método de resolución gráfica aplicable a todo tipo de
problemas y como tal, debe ser entendida como una ayuda gráfica que sirve para una
mejor documentación de la resolución de un problema dado.

La función principal de un diagrama, consiste en describir una secuencia lógica de


pasos que indican, cómo van interactuando las operaciones aritméticas y/o lógicas con
los elementos de entrada y salida.

En forma secundaria permite visualizar las estructuras de procesos y las secuencias y


operaciones que se ven involucradas en los mismos.

UNaF – FAEN - LTIC Página 7


Los símbolos, son utilizados en la diagramación solamente para representar las
funciones u operaciones de un sistema de información, estas funciones pueden:

1-De entrada y salida


2-De proceso
3-De dirección de flujo
Cada función está asociada a un símbolo básico, el cual será utilizado en un diagrama,
cada vez que se quiera representar gráficamente dicha función.
A su vez el diagrama debe ser tal, que visualmente y sin ayuda de comentarios
agregados, pueda seguirse el encadenamiento de las operaciones y/o funciones que
intervienen en la resolución del problema
DISEÑO GLOBAL: a) Diagrama de procesos: Estos diagramas describen en una
forma esquemática la relación que existe entre los archivos de datos que ingresan a un
proceso y los informes o archivos de salida generados por el proceso
Los soportes de información utilizados, los nombres de todos los archivos usados
incluido el del proceso son datos que deben figurar en dichos diagramas, además
pueden colocarse datos tales como, longitud del registro, campo por el cual se puede
acceder a los archivos, etcétera

EJEMPLO DE DIAGRAMA DE PROCESO

NOVEDADES CLIENTES

ACTUALIZACION
DE
CLIENTES

ERRORES
CLIENTES DETECTADOS
ACTUALIZADOS

Para hacer la actualización del archivo maestro de clientes de una empresa, deberán
ingresarse las novedades y el archivo maestro de clientes, obteniéndose la
actualización del archivo de clientes y una salida impresa conteniendo los errores que
pudieran haberse producido

Estos diagramas también pueden encadenarse unos con otros, permitiendo así
visualizar los diferentes pasos seguidos en los procesos

UNaF – FAEN - LTIC Página 8


DISEÑO GLOBAL: b) Diagrama de Bloques
Estos diagramas tienen la misma estructura que los diagramas de flujo pero en vez de
brindar una secuencia detallada de todos los pasos que componen un algoritmo o
programa, sólo indican los grupos de operaciones más importantes, en que éstos
pueden ser divididos, habitualmente denominados rutinas y/o subrutinas

EJEMPLO DE DIAGRAMA DE BLOQUES

inicio

Leo novedades

Fin de archivo?
Rutina de Fin
Final

Hay Errores? Rutina de


SI
Errores
NO

Leo Maestro

Actualizo
Maestro

UNaF – FAEN - LTIC Página 9


Se utilizan para indicar:

1.- La cantidad de procesos que intervienen en el desarrollo de un proyecto /


programa

2.- La cantidad de subrutinas que dicho proyecto / programa requiere

En el primer caso, sirven de guía, cuando se encaran tareas de planificación de las


etapas constitutivas de un proyecto o la programación de las aplicaciones de un
sistema computarizado, y en el segundo caso indican el grado de detalle que desea
obtenerse en el desarrollo teórico de la programación

DISEÑO DETALLADO

a) Diseño de salidas,
b) Diseño de entradas,
c) Diseño de archivos (Bases de datos),
d) Diagrama de Flujo (Algoritmo),
e) Codificación,
f) Edición,
g) Compilación.

UNaF – FAEN - LTIC Página 10


PROGRAMACIÓN MODULAR

La programación modular es un paradigma de programación que consiste en dividir un


programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.

Se presenta históricamente como una evolución de la programación estructurada para


solucionar problemas de programación más grandes y complejos de lo que ésta puede
resolver.

Al aplicar la programación modular, un problema complejo debe ser dividido en varios


subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto
debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder
ser resueltos fácilmente con algún lenguaje de programación. Ésta técnica se llama
refinamiento sucesivo, divide y vencerás ó análisis descendente (Top-Down).

Un módulo es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos
módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar.
En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una
interfaz de comunicación que también debe estar bien definida.

Si bien un modulo puede entenderse como una parte de un programa en cualquiera de


sus formas y variados contextos, en la práctica es común representarlos con
procedimientos y funciones. Adicionalmente, también pueden considerarse módulos las
librerías que pueden incluirse en un programa o, en programación orientada a objetos,
la implementación de un tipo de dato abstracto.

UNaF – FAEN - LTIC Página 11


DISEÑO ESTRUCTURADO

En programación y diseño de algoritmos, el diseño estructurado persigue elaborar


algoritmos que cumplan la propiedad de modularidad, para ello, dado un problema que
se pretende resolver mediante la elaboración de un programa de ordenador, se busca
dividir dicho programa en módulos siguiendo los principios de diseño de
Descomposición por refinamientos sucesivos, creación de una Jerarquía modular
y elaboración de módulos Independientes.

Etapas del Diseño estructurado


Descomposición

¿Por qué descomponer un problema en partes? Experimentalmente está comprobado


que:

 Un problema complejo cuesta más de resolver que otro más sencillo (de
Perogrullo).
 La complejidad de un problema global es mayor que el valor de las
complejidades de cada una de sus partes por separado.

Según esto, merece la pena el esfuerzo de dividir un problema grande en


subproblemas más pequeños. Si el objetivo es elaborar un programa para resolver
dicho problema grande, cada subproblema (menos complejo) podrá ser resuelto por un
módulo (subalgoritmo) relativamente fácil de implementar (más que el programa global
No dividido). Ahora la cuestión es ¿cómo realizar la descomposición?; realizando un
estudio descendente Top-Down que nos lleve desde la concepción del problema
(programa o algoritmo) global hasta identificar sus partes (módulos). Esta técnica se
repite aplicando una estrategia llamada de refinamiento sucesivo propuesta por el
experto en Ciencias de la Computación Niklaus Wirth, que consiste precisamente en
volver a aplicar el estudio descendente Top-Down a cada subproblema una y otra vez
hasta obtener subproblemas suficientemente pequeños, que puedan ser resueltos por
módulos que cumplan, en la medida de lo posible, las características deseables en un
módulo en el ámbito de la programación. En palabras del propio Niklaus Wirth:

 En cada paso (del refinamiento), una o varias instrucciones del programa dado,
se descomponen en instrucciones más detalladas. Esta descomposición
sucesiva o refinamiento de especificaciones termina cuanto todas las
instrucciones están expresadas en términos de la computadora usada o del
lenguaje de programación...

 Conforme se refinan las tareas, también los datos pueden ser refinados, 1
descompuestos o estructurados, siendo lo natural refinar las especificaciones del
programa y de los datos en paralelo.

 Cada paso de refinamiento implica algunas decisiones de diseño. Es importante


que el programador sea consciente de los criterios subyacentes (en las
decisiones de diseño adoptadas) y de la existencia de soluciones alternativas...

UNaF – FAEN - LTIC Página 12


Problema del refinamiento sucesivo

¿Cuándo parar el refinamiento?. Un refinamiento excesivo podría dar lugar a un


número tan grande de módulos que haría poco práctica la descomposición. Se tendrán
en cuenta estos criterios para dejar de descomponer:

 Cuando no haya tareas bien definidas.

 Cuando la interfaz de un módulo sea tan complicada como el propio módulo

Jerarquía de módulos

Ésta es una consecuencia directa de la descomposición del problema mediante


refinamientos sucesivos, el resultado será un conjunto de módulos estratificados en
capas a modo de pirámide donde en la cima habrá un único módulo que representará
al programa global y en los niveles inferiores aparecerán los módulos resultantes de las
sucesivas divisiones.

Al final, debe obtenerse una estructura piramidal donde los módulos de los niveles
superiores se encargan de las tareas de coordinación, lógica de la aplicación y
manipulación de los módulos inferiores; estos otros deberán realizar tareas de cálculo,
tratamiento y entrada/salida de información.

Independencia
Evaluando el diseño

Para evaluar o determinar cómo es de bueno un diseño estructurado se utilizan los


conceptos de acoplamiento y cohesión; éstos están muy relacionados entre sí, tanto
que difícilmente se puede variar uno sin que eso afecte al otro. También cabe decir que
estos conceptos no son medidas que se puedan cuantificar numéricamente, son más
bien magnitudes cualitativas. También se tienen en consideración los conceptos de
fan-in y fan-out.

Acoplamiento

Se define como el grado de interdependencia que hay entre los distintos módulos
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 (más
deseable) a mayor (menos deseable) son:

 Acoplamiento normal.- Un módulo llama a otro de un nivel inferior y tan solo


intercambian datos (parámetros de entrada/salida). Dentro de este tipo de
acoplamiento podemos encontrarnos 3 subtipos, dependiendo de los datos que 1
intercambien los módulos:
o Acoplamiento de datos: Los módulos se comunican mediante parámetros.
o Acoplamiento de marca o por estampado: Los módulos se pasan datos
con estructura de registro. No es muy deseable si el módulo receptor sólo
requiere parte de los datos que se le pasan.

UNaF – FAEN - LTIC Página 13


o Acoplamiento de control: Los datos que se intercambian entre los
módulos son controles. Debido a que en este subtipo un módulo controla
la ejecución del otro, no es un buen acoplamiento, ya que impide que
sean totalmente independientes.
 Acoplamiento Común.- Dos módulos acceden a un mismo recurso común,
típicamente memoria compartida, una variable global o un fichero. Una variante
de este tipo de acoplamiento es el acoplamiento externo:
o Acoplamiento externo.- Los módulos están ligados a componentes
externos. Por ejemplo, dispositivos de E/S, protocolos de
comunicaciones... etc.
 Acoplamiento de contenido.- Ocurre cuando un módulo necesita acceder a
una parte de otro módulo.

Cohesión

Se define como la medida de fuerza o relación funcional existente entre las


sentencias o grupos de sentencias de un mismo módulo. Un módulo cohesionado
ejecutará una única tarea sencilla interactuando muy poco o nada con el resto de
módulos del programa. Se persigue que los módulos tengan una alta cohesión.

En el diseño estructurado podemos encontrarnos con los siguientes 7 tipos de cohesión


(de la mejor o más deseable a la menos recomendable):

 Cohesión funcional: Los elementos del módulo están relacionados en el


desarrollo de una única función.
 Cohesión secuencial: Un módulo realiza distintas tareas en secuencia, de
forma que las entradas de cada tarea son las salidas de la tarea anterior. No es
una mala cohesión si las tareas implicadas no son muy complejas y requieren
pocas líneas de código.
 Cohesión comunicacional: El módulo realiza actividades paralelas usando los
mismos datos de entrada y salida. Como en el caso anterior, tampoco se trata
de un mal tipo de cohesión si las tareas son relativamente sencillas.
 Cohesión procedimental: El módulo tiene una serie de funciones relacionadas
por un procedimiento efectuado por el código (a modo de librería). Es similar a la
secuencial, pero puede incluir el paso de controles. Será deseable que las
funciones estén relacionadas o realicen tareas dentro del mismo ámbito (p.e. la
librería string.h de C contienen funciones para operar con cadenas de
caracteres).
 Cohesión temporal: Los elementos del módulo están implicados en actividades
relacionadas con el tiempo.
 Cohesión lógica: Las actividades que realiza el módulo tienen la misma
categoría. Esto es, es como si se tuvieran partes independientes dentro del
mismo módulo.
 Cohesión casual o coincidente: Los elementos del módulo contribuyen a las 1
actividades relacionándose mutuamente de una manera poco significativa. Este
tipo de cohesión viola el principio de independencia y de caja negra de los
módulos.

UNaF – FAEN - LTIC Página 14


Fan-In y Fan-Out

Además de los dos conceptos anteriores, se deben tener en cuenta el grado de


absorción (fan-in) y la diseminación del control (fan-out) de los módulos para
garantizar la calidad del diseño.

 Fan-In: También llamado grado de absorción. Es el número de superordinados


inmediatos que tiene el módulo en cuestión. Es conveniente maximizar el fan-in
durante el proceso de diseño, ya que cada instancia de fan-in múltiple indica que
se ha evitado la duplicación de código.
 Fan-Out: También llamado diseminación del control. Es el número de
subordinados inmediatos que tiene el módulo en cuestión. Conviene no tener un
fan-out ni muy alto ni muy bajo, ya que eso es un posible indicador de un diseño
pobre. Si no es posible evitarlo, es preferible un fan-out bajo antes que uno alto.

PROGRAMACIÓN ESTRUCTURADA

La programación estructurada es una forma de escribir programas de ordenador


(programación de computadora) de manera clara. Para ello utiliza únicamente tres
estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción
o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o
múltiples RETURN).

Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las
necesidades de programación existentes en los años 1960, principalmente debido a las
aplicaciones gráficas, por lo que las técnicas de programación estructurada no son
suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la
programación orientada a objetos y el desarrollo de entornos de programación que
facilitan la programación de grandes aplicaciones.

Orígenes de la programación estructurada

A finales de los años 1960 surgió una nueva forma de programar que no solamente
daba lugar a programas fiables y eficientes, sino que además estaban escritos de
manera que facilitaba su comprensión posterior.

El teorema del programa estructurado, demostrado por Böhm-Jacopini, demuestra que


todo programa puede escribirse utilizando únicamente las tres instrucciones de control
siguientes:
1
 Secuencia
 Instrucción condicional.
 Iteración (bucle de instrucciones) con condición al principio.

UNaF – FAEN - LTIC Página 15


Solamente con estas tres estructuras se pueden escribir todos los programas y
aplicaciones posibles. Si bien los lenguajes de programación tienen un mayor repertorio
de estructuras de control, éstas pueden ser construidas mediante las tres básicas.

Estructura secuencial

Una estructura de programa es secuencial si se ejecutan una tras otra a modo de


secuencia, es decir que una instrucción no se ejecuta hasta que finaliza la anterior.

Ejemplo:

INPUT x
INPUT y
auxiliar= x
x= y
y= auxiliar
PRINT x
PRINT y

Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una


variable auxiliar, intermedia.

 1º Se guarda una copia del valor de x en auxiliar.


 2º Se guarda el valor de y en x, perdiendo su valor anterior, pero se mantiene
una copia del contenido en auxiliar.
 3º Se copia a y el valor de auxiliar, que es el valor inicial de x.

 El resultado es el intercambio de los valores entre x e y, en tres operaciones


secuenciales.

Estructura selectiva o de selección

La estructura selectiva permite que la ejecución del programa se bifurque a una


instrucción u otra según un criterio o condición lógica, solo una de estas instrucciones
se ejecutará.

Ejemplo:

IF a > b THEN
PRINT a ; " es mayor que " ; b
ELSE
PRINT a ; " no es mayor que " ; b
END IF
1
La instrucción selectiva anterior puede presentar uno de dos mensajes: a es mayor
que b o a no es mayor que b, según el resultado de la comparación entre a y b; si el
resultado de a > b es verdadero, se presenta el primer mensaje, si es falso se
exterioriza el segundo.

UNaF – FAEN - LTIC Página 16


Las palabras clave IF, THEN, ELSE, y END IF; constituyen la propia estructura de la
instrucción condicional (palabra reservadas), proporcionada por el lenguaje, el usuario
no debe utilizar sus nombres salvo para este fin. El caso ejemplo se ha codificado en
BASIC.

 IF señala el comienzo de la instrucción condicional, y se espera que después


siga la condición de control de la instrucción.
 THEN señala el fin de la condición, y después estará la instrucción a ejecutar si
la condición es verdadera.
 ELSE es opcional, le sigue la instrucción que se ejecutará si la condición es
falsa.
 END IF indica el final de la estructura, seguidamente el programa seguirá su
curso.

Ampliemos un poco el ejemplo anterior con estructuras anidadas:

IF a > b THEN
PRINT a ; " es mayor que " ; b
ELSEIF a < b THEN
PRINT a ; " es menor que " ; b
ELSE
PRINT a ; " es igual que " ; b
END IF

Este ejemplo permite considerar situaciones en las que se tiene más de dos
alternativas. En este caso se ha considerado tres, pero hay situaciones en las que
deben considerarse más casos y para ellos se puede repetir las veces que sea
necesario la opcional ELSEIF.

Estructura iterativa

Un bucle iterativo o iteración de una secuencia de instrucciones, hace que se repitan


mientras se cumpla una condición, en un principio el número de iteraciones no tiene
porque estar determinado.

Ejemplo:

a= 0
b= 7

WHILE b > a DO
PRINT a 1
a= a + 1
WEND

Esta instrucción tiene tres palabras reservadas WHILE, DO y WEND.

UNaF – FAEN - LTIC Página 17


 WHILE: señala el comienzo del bucle y después de esta palabra se espera la
condición de repetición, si la condición es cierta se pasa al cuerpo del bucle, si
no al final de la instrucción mientras.
 DO: señala el final de la condición, lo que esté después será el cuerpo del bucle.
 WEND: señala el final del cuerpo del bucle y de la instrucción WHILE.

El bucle mientras, se repite mientras la condición sea cierta, esta condición se


comprueba al principio por lo que el cuerpo del bucle puede que no se ejecute nunca,
cuando la condición es falsa en un principio, o que se repita tantas veces como sea
necesario, mientras la condición sea cierta.

En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores
a=0 y b=7.

La condición del bucle es b > a.

Cuando a=0 y b=7. la condición es cierta, en el cuerpo del bucle se escribe el


valor de a en pantalla y se incrementa a en una unidad. Entonces a=1 y b=7.
...
...
Cuando a=6 y b=7. la condición es cierta, se escribe el valor de a en pantalla y
se incrementa en una unidad.
Resultando que a=7 y b=7. Entonces la condición es falsa y la instrucción
WHILE finaliza.
La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6

Anidamiento

El cuerpo de cualquier estructura puede ser una instrucción simple u otra estructura,
que a su vez puede anidar a otra.

Ejemplo:

IF a > b THEN
Auxiliar = a
a=b
b = auxiliar
ELSE
REM nada
END IF
PRINT a ; b

Ventajas de la programación estructurada


1
1. Los programas son más fáciles de entender, ya que pueden ser leídos de forma
secuencial, sin necesidad de hacer seguimiento a saltos de línea (GOTO) dentro de los
bloques de código para entender la lógica.

2. La estructura del programa es clara, puesto que las instrucciones están más ligadas
o relacionadas entre sí.

UNaF – FAEN - LTIC Página 18


3. Reducción del esfuerzo en las pruebas. El seguimiento de los fallos o errores del
programa ("debugging") se facilita debido a la estructura más visible, por lo que los
errores se pueden detectar y corregir más fácilmente.

4. Reducción de los costos de mantenimiento de los programas.

5. Programas más sencillos y más rápidos (ya que es más fácil su optimización).

6. Los bloques de código son auto explicativos, lo que facilita la documentación.

7. Los GOTO se reservan para construir las instrucciones básicas. Aunque no se usan
de forma directa, por estar prohibida su utilización, están incluidas implícitamente en las
instrucciones de selección e iteración.

8. Un programa escrito de acuerdo a estos principios no solamente tendrá una mejor


estructura sino también una excelente presentación.

La programación estructurada ofrece estos beneficios, pero no se la debe considerar


como una panacea ya que el desarrollo de programas es, principalmente, una tarea de
dedicación, esfuerzo y creatividad.

Inconvenientes de la programación estructurada

El principal inconveniente de este método de programación es que se obtiene un único


bloque de programa, que cuando se hace demasiado grande puede resultar
problemático su manejo; esto se resuelve empleando la programación modular,
definiendo módulos interdependientes programados y compilados por separado (en
realidad esto no es necesario, pero es recomendable para su mantenimiento y
funcionalidad).

En realidad, cuando se programa hoy en día (inicios del siglo XXI) se suelen utilizar,
tanto las técnicas de programación estructurada como las de programación modular, de
forma conjunta y por lo tanto es posible que cuando uno haga referencia a la
programación estructurada esté considerando también las técnicas de modularización.

Un método un poco más sofisticado es la programación por capas, en la que los


módulos tienen una estructura jerárquica en la que se pueden definir funciones dentro
de funciones o de procedimientos.

PROGRAMACIÓN POR PROCEDIMIENTOS

La programación por procedimientos es un paradigma de la programación. Muchas 1


veces es aplicable tanto en lenguajes de programación de bajo nivel como en lenguajes
de alto nivel, en el caso de que esta técnica se aplique en lenguajes de alto nivel,
recibirá el nombre de Programación funcional, esta técnica consiste en basarse de un
número muy bajo de expresiones repetidas, englobarlas todas en un procedimiento o
función y llamarlo cada vez que tenga que ejecutarse.

UNaF – FAEN - LTIC Página 19


Esta técnica de programación ofrece muy buena respuesta en relación al tamaño de los
programas, y en bruto casi no se nota en la velocidad de ejecución del mismo (mientras
que las variables, constantes o índices de vector estén en memoria, como suele ser
normal, estos se relacionarán entre sí, sin una carga de memoria considerablemente
alta para los procesadores modernos); aunque es muy complicado conseguir una
Programación por procedimientos pura.

Ejemplo

A modo de ejemplo, si queremos mostrar el anterior, el posterior y un propio número de


una lista (vector), un pseudocódigo por procedimientos o funciones (a alto nivel)
sería:

funcion a_p( numero ) {


out(numero-1);
out(numero);
out(numero+1);
}

for( i = 0; i < tamaño(lista); i++){


a_p( lista[i] );
}

O si queremos dividir al número por 2,3,4,5,6,7,8,9 y 10 en otro pseudocódigo:

funcion div(numero) {
out(numero/2);
out(numero/3);
out(numero/4);
out(numero/5);
out(numero/6);
out(numero/7);
out(numero/8);
out(numero/9);
out(numero/10);
}

for( i = 0; i < tamaño(lista); i++){


div( lista[i] );
}

Utilizar este tipo de Programación puede resultar muy útil a la hora de programar
grandes proyectos, ya que se crea una inmensa biblioteca de funciones especiales
para procedimientos utilizados con frecuencia dentro del programa. 2

Por contrapartida, es muy difícil determinar cuál es el número mínimo de instrucciones


consecutivas, y el mínimo número que esta secuencia se debe de repetir para
considerar declarar un procedimiento, o función.

UNaF – FAEN - LTIC Página 20

También podría gustarte