Está en la página 1de 355

Temario Oposición Profesor Secundaria

Informática
(BOE 13 FEB 1.996)

Considerando los Reyes, de gloriosa memoria, cuánto era provechoso e honroso


que a estos sus Reinos se truxiesen libros de otras partes, para que con ellos se
ficiesen los hombres letrados, quisieron e ordenaron: que de los libros non se
pagase alcabala, y porque de pocos días a esta parte, algunos mercaderes
nuestros, naturales y extranjeros, han trahido y cada día trahen libros mucho
buenos, lo cual, por este que redunda en provecho universal de todos, e
ennoblecimiento de nuestros Reinos; por ende, ordenamos e mandamos que,
allende de la dicha franquiza, de aquí en adelante, de todos los libros que se
truxeren a estos nuestros Reinos, así por mar como por tierra, non se pida, nin se
pague, nin lleve almoxarifazgo, nin diezmo, nin portazgo, nin otros derechos algunos
por los nuestros Almoxarifes, nin los Desmeros, nin Portazgueros, nin otras
personas algunas, así como las cibdades e villas e lugares de nuestra Corona Real,
como de Señoríos e órdenes e behenias; más que de todos los dichos derechos o
almoxarifazgos sean libres e francos los dichos libros.

Orden de los Reyes Católicos

1
INDICE
BLOQUE 1. HARDWARE, ARQUITECTURA E INFORMACIÓN....................................................................5
Tema 01. Representación y Comunicación de la Información.
Tema 02. Elementos funcionales de un ordenador digital.
Tema 03. Componentes, estructura y funcionamiento de la Unidad Central de Proceso.
Tema 04. Memoria interna. Tipos. Direccionamiento. Características y funciones.
Tema 05. Microprocesadores. Estructura. Tipos. Comunicación con el exterior.
Tema 06. Sistemas de almacenamiento externo. Tipos. Características y funcionamiento.
Tema 07. Dispositivos periféricos de entrada-salida. Características y funcionamiento.
Tema 08. Hardware comercial de un ordenador. Placa base. Tarjetas controladoras de dispositivo y de E/S.
Tema 09. Lógica de circuitos. Circuitos combinacionales y secuenciales.
Tema 10. Representación interna de los datos.
Tema 11. Organización lógica de los datos. Estructuras estáticas.
Tema 12. Organización lógica de los datos. Estructuras dinámicas.
Tema 13. Ficheros. Tipos. Características. Organizaciones.
Tema 14. Utilización de ficheros según su organización.
BLOQUE 2. SISTEMAS OPERATIVOS Y SISTEMAS...................................................................................67
Tema 15. Sistemas operativos. Componentes. Estructura. Funciones. Tipos.
Tema 16. Sistemas operativos: Gestión de procesos.
Tema 17. Sistemas operativos: Gestión de memoria.
Tema 18. Sistemas operativos: Gestión de E/S.
Tema 19. Sistemas operativos: Gestión de archivos y dispositivos.
Tema 20. Explotación y administración de un SO monousuario y multiusuario.
Tema 21. Sistemas informáticos. Estructura física y funcional.
Tema 22. Planificación y explotación de sistemas informáticos. Configuración. Condiciones de instalación.
Medidas de seguridad. Procedimientos de uso.
BLOQUE 3. PROGRAMACIÓN Y BBDD.....................................................................................................108
Tema 23. Diseño de algoritmos. Técnicas descriptivas.
Tema 24. Lenguajes de programación. Tipos. Características.
Tema 25. Programación estructurada. Estructuras básicas. Funciones y procedimientos.
Tema 26. Programación modular. Diseño de funciones. Recursividad. Librerías.
Tema 27. Programación orientada a objetos. Objetos. Clases. Herencia. Polimorfismos. Lenguajes
Tema 28. Programación en tiempo real. Interrupciones. Sincronización entre tareas. Lenguajes
Tema 29. Utilidades para el desarrollo y pruebas de programas. Compiladores. Intérpretes. Depuradores.
Tema 30. Prueba y documentación de programas. Técnicas
Tema 31. Lenguaje C: Características generales. Elementos. Estructura de un programa. Funciones de
librería y usuario. Entorno de compilación. Herramientas.
Tema 32. Lenguaje C: Manipulación de estructuras. E/S. Gestión de punteros. Punteros a funciones
Tema 33. Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos.
Tema 34. SGBD. Funciones. Componentes. Arquitectura de referencia y operacionales. Tipos de sistemas
Tema 35. La definición de datos. Niveles de descripción. Lenguajes. Diccionario de datos.
Tema 36. La manipulación de datos. Operaciones. Lenguajes. Optimización de consultas.

2
Tema 37. Modelo de datos jerárquico y en red. Estructuras. Operaciones.
Tema 38. Modelo de datos relacional. Estructuras. Operaciones. Álgebra relacional.
Tema 39. Lenguajes de gestión de datos en BBDD relacionales. Tipos. Características. SQL
Tema 40. Diseño de BBDD relacionales.
Tema 41. Utilidades de los SGBD para el desarrollo de aplicaciones. Tipos. Características.
Tema 42. Sistemas de BBDD distribuidos.
Tema 43. Administración de sistemas de BBDD.
Tema 44. Técnicas y procedimientos para la seguridad de los datos.
BLOQUE 4. SISTEMAS DE INFORMACIÓN, APLICACIONES E INGENIERÍA DEL SW..........................199
Tema 45. Sistemas de información. Tipos. Características. Sistemas de información en la empresa.
Tema 46. Aplicaciones de propósito general y gestión empresarial. Tipos. Funciones. Características
Tema 47. Instalación y explotación de aplicaciones informáticas. Compartición de datos.
Tema 48. Ingeniería sw. Ciclo de desarrollo sw. Tipos de ciclos de desarrollo. Metodologías. Características
Tema 49. Análisis de sistemas: Modelización de tratamientos. Modelo de flujo de datos y control. Técnicas
descriptivas. Documentación.
Tema 50. Análisis de sistemas: Modelización conceptual de datos. Técnicas descriptivas. Documentación.
Tema 51. Análisis de sistemas: Especificación funcional del sistema. Requisitos funcionales. Especificación
de soluciones técnicas. Análisis de viabilidad técnica y económica
Tema 52. Diseño lógico de funciones. Definición. Descomposición. Técnicas descriptivas. Documentación
Tema 53. Diseño lógico de datos. Paso del modelo conceptual a lógicos. Análisis relacional. Documentación
Tema 54. Diseño de interfaces de usuario. Criterios de diseño. Descripción de interfaces. Documentación.
Herramientas para la construcción de interfaces
Tema 55. Diseño físico de datos y funciones. Criterios de diseño. Documentación.
Tema 56. Análisis y diseño orientado a objetos.
Tema 57. Calidad del software. Factores y métricas. Estrategias de prueba.
Tema 58. Ayudas automatizadas para desarrollo software (CASE). Tipos. Estructura. Prestaciones
Tema 59. Gestión de proyectos informáticos. Estimación de recursos. Planificación. Seguimiento.
Tema 60. Sistemas basados en conocimiento. Representación. Componentes y arquitectura
BLOQUE 5. REDES......................................................................................................................................270
Tema 61. Redes y servicios de comunicaciones
Tema 62. Arquitecturas de sistemas de comunicaciones. Arquitecturas basadas en niveles. Estándares
Tema 63. Nivel físico. Tipos y medios de transmisión. Adaptación al medio. Limitaciones. Estándares
Tema 64. Funciones y servicios del nivel de enlace. Técnicas. Protocolos
Tema 65. Funciones y servicios del nivel de red y del nivel de transporte. Técnicas. Protocolos
Tema 66. Funciones y servicios en niveles de sesión, presentación y aplicación. Protocolos. Estándares
Tema 67. Redes de área local. Componentes. Topologías. Estándares. Protocolos
Tema 68. Software de sistemas en red. Componentes. Funciones. Estructura
Tema 69. Integración de sistemas. Medios de interconexión. Estándares. Protocolos de acceso a WAN
Tema 70. Diseño de sistemas LAN. Parámetros de diseño. Instalación y configuración de sistemas en LAN
Tema 71. Explotación y administración de sistemas en LAN. Facilidades de gestión
Tema 72. Seguridad en red. Servicios de seguridad. Técnicas y sistemas de protección estandar
Tema 73. Evaluación y mejora de prestaciones en sistemas en red. Técnicas y procedimientos de medida
Tema 74. Sistemas multimedia

3
BLOQUE 1. HARDWARE, ARQUITECTURA E INFORMACIÓN.
TEMA 01. Representación y Comunicación de la Información
TEMA 02. Elementos funcionales de un ordenador digital. Arquitectura.
TEMA 03. Componentes, estructura y funcionamiento de la Unidad Central de Proceso.
TEMA 04. Memoria interna. Tipos. Direccionamiento. Características y funciones.
TEMA 05. Microprocesadores. Estructura. Tipos. Comunicación con el exterior.
TEMA 06. Sistemas de almacenamiento externo. Tipos. Características y funcionamiento.
TEMA 07. Dispositivos periféricos de entrada-salida. Características y funcionamiento.
TEMA 08. Componentes hardware comerciales de un ordenador. Placa base. Tarjetas controladoras
de dispositivo y de entrada salida.
TEMA 09. Lógica de circuitos. Circuitos combinacionales y secuenciales.
TEMA 10. Representación interna de los datos.
TEMA 11. Organización lógica de los datos. Estructuras estáticas.
TEMA 12. Organización lógica de los datos. Estructuras dinámicas.
TEMA 13. Ficheros. Tipos. Características. Organizaciones.
TEMA 14. Utilización de ficheros según su organización.

BIBLIOGRAFIA
Programación estructurada y fundamentos de programación. Sánchez Chamorro y otros. McGraw Hill.
Metodología de la programación. Alcalde E y García. McGraw Hill.
Apuntes para Algoritmos y estructuras de datos I y II. Varios profesores UPV

Recursos web:
http://www.etsit.upm.es/
http://informatica.uv.es/iiguia/TSTD/
http://es.wikipedia.org/wiki/Portada
http://www.mitecnologico.com
http://ditec.um.es

4
TEMA 1. REPRESENTACIÓN Y COMUNICACIÓN DE LA INFORMACIÓN

1. INTRODUCCIÓN
2. REPRESENTACIÓN Y COMUNICACIÓN DE LA INFORMACIÓN
2.1. Fundamentos Matemáticos
2.2. Representación de la información
2.2.1. Información numérica
2.2.2. Información alfanumérica
2.3. Comunicación de la información
2.3.1. Encriptación
2.3.2. Compresión
2.3.3. Redundancia
2.3.4. Codificación de Canal

5
1. INTRODUCCIÓN
La RAE define información como la comunicación o adquisición de conocimientos que permiten ampliar o
precisar los que se poseen sobre cierta materia. Del mismo modo se define informática como el conjunto de
conocimientos que hacen posible el tratamiento automático de la información por medio de ordenadores.
2. REPRESENTACIÓN Y COMUNICACIÓN DE LA INFORMACIÓN
Para representar los símbolos se precisan elementos físicos que los identifiquen. Los símbolos, significan
por oposición, por distinción. Por ejemplo, si el color rojo representa una “A” y el color verde una “B”, al ver
el color rojo, se identificará con el símbolo “A” por oponerse, ser diferente al color verde y todos los demás.
Para representar la información es necesario disponer de algún conjunto básico de símbolos o alfabeto. La
combinación de símbolos generará entidades de orden superior como por ejemplo palabras, que de nuevo,
combinadas permitirán una representación y comunicación de la información de forma fluida.
En el mundo de las tecnologías de información y comunicaciones (TIC), lo habitual es representar la
información con una base binaria, la que maneja dos símbolos, el 0 y el 1. Éstos suelen representarse con
señales electromagnéticas, tales como la tensión eléctrica o la luz. Una señal es una magnitud (algo que
puede medirse) física que varía con el tiempo.
Esta representación es muy adecuada porque permite una implementación e integración correcta con la
tecnología del silicio y un tratamiento matemático potente al digitalizar la información. La digitalización
facilita la comunicación al poder disponerse de equipos electrónicos que realizan las tareas propias de la
comunicación de forma sencilla y eficiente.
2.1. Fundamentos Matemáticos
Un sistema de numeración es un conjunto de normas para representar y operar números. El habitual es el
sistema de numeración decimal. En computación, es habitual trabajar en sistemas de numeración binario o
hexadecimal. Por ejemplo, para expresar una dirección MAC o una dirección IPv6 se usa el sistema
hexadecimal. Para representar un valor numérico, se pueden usar diferentes bases de numeración. Una
base o raíz de numeración es el conjunto de dígitos disponibles en un sistema numérico:
- Base 10 o Sistema Decimal: {0,1,…,9} - Base 2 o Sistema Binario: {0,1}
- Base 8 o Sistema Octal: {0,1…,7} - Base 16 o Sistema Hexadecimal: {0,…, 9, A, B, C, D, E, F}
Estos sistemas son posicionales, es decir el valor de un símbolo depende de la base y de la posición en la
que está, de forma que cualquier número tiene su expresión en la base B en forma de polinomio. Es el
método polinómico. Se evalúa el polinomio según la base destino. Los números decimales se tratan como
los enteros, con la salvedad de los exponentes de la parte decimal, que son negativos. Ejemplo:
2 1 0.
El valor de 423 en base 10 = 423, porque son 4 centenas, dos decenas y tres unidades: 4·10 +2·10 +3·10 .
2 1
El valor numérico de 423 en base 8 sería 4·8 +2·8 +3·80=275.
De las bases de numeración tiene una especial relevancia la base binaria, porque es la más pequeña que
se puede manejar (una base unitaria sería intratable a efectos prácticos). Sus dígitos se denominan BIT,
que deriva de la abreviación de BInary digiT, o dígito binario.
Un BIT representa la menor cantidad de información que se puede tratar y equivale a la cantidad de
información que se recibe cuando se obtiene la respuesta a una pregunta absoluta. Por ejemplo si no se
sabe si está lloviendo, sólo caben dos posibilidades, que llueva o no. Si se preguntase ¿Está lloviendo? Y
alguien contestase, la información que aportaría sería un bit.
Para convertir números de una base a otra se separa parte entera y decimal. La parte entera se divide por
la base a la que convertir. El resto es el símbolo menos significativo. Con el cociente se va repitiendo el
proceso hasta que sea menor o igual que la base. El último cociente será el símbolo más significativo y los
restos se toman en orden inverso de aparición formando el número expresado en la nueva base. Para la
parte decimal se va multiplicando por la base, de forma que la parte entera es el dígito más significativo. El
proceso se repite con la parte decimal que va quedando. Ejemplo: Convertir 25,625 de base 10 a base 2:
Para la conversión entre base binaria, octal y
hexadecimal, el método es mucho más sencillo. Si
se tiene un número expresado en base binaria y se
desea expresar en octal, se agrupan los bits en
grupos de tres comenzando desde la derecha. Cada
grupo de tres se traduce a un dígito octal de 0 a 7,
correspondiendo el 000 binario al 0 octal y el 111
binario al 7 octal.

6
Para convertir de binario a hexadecimal, el proceso es semejante, agrupando en cuatro bits. El 0000 binario
es el 0 hexadecimal y el 1111 es la F hexadecimal. Si se desea convertir de octal o hexadecimal a binario,
el proceso es el inverso. Cada dígito octal dará tres bits y cada dígito hexadecimal cuatro.
Ejemplo: El número 1011 en binario da dos grupos octales: 001 y 011. El primero es 1 y el segundo 3. Así
1011 en binario es 13 en octal. En hexadecimal tendremos un único grupo de cuatro bits, 1011 que es
equivalente al dígito hexadecimal B.
Sea el número hexadecimal A04. Para pasarlo a binario sería: A=1010; 0=0000 y 4=0100, luego A04 en
hexadecimal equivale a 101000000100 en binario.
A los grupos de 8 bits se les denomina Byte u octeto. A los grupos de 32 bits, palabras, por tanto 16 bits
sería media palabra y 32 bits una palabra doble. Menos usado es el término nibble para los 4 bits. Los
múltiplos de los bits se denominan como habitualmente en el sistema decimal, kilo, mega, tera, peta, hexa,
con la salvedad que las unidades ahora son potencias de base dos. Así un Kilobit no serían 1000 bits, sino
10 20
2 bits, es decir 1.024 bits, un Megabit 2 1.048.576 bits, etc.
Aunque esta salvedad, es utilizada para la medida de unidades de información, en un contexto puro, como
por ejemplo la capacidad de memoria RAM. Sin embargo, en comunicaciones, cuando se habla de un
MBps, un Megabit por segundo, si se hace referencia a 1.000.000 de bits por segundo, ya que se refiere a
una cantidad decimal.
Las operaciones en los sistemas de numeración binario, octal y hexadecimal se operan como en el sistema
decimal, con especial atención a los acarreos. Ejemplo: En decimal 7+2=9. En octal 7+2=11, ocho y “me
llevo una”.
2.2. Representación de la información
La información se compone de datos, antecedentes del conocimiento. Para procesar los datos, se necesita
correspondencia entre los símbolos y las señales que los representan. Ejecutar esta relación se denomina
codificación. La codificación es una relación biunívoca entre el alfabeto fuente y el destino. La función
inversa, a partir de las señales, obtener la información es decodificar.
La información en general, se representa según su naturaleza. Esto da lugar a distintos tipos de codificación
o formato. Según su naturaleza se puede identificar distintos tipos de información. Por ejemplo:
Texto: Es un conjunto de símbolos que definen la expresión escrita humana. Se representa con símbolos o
caracteres alfanuméricos. La agrupación en bloque de estos caracteres se trata como un fichero de texto.
Un código típico de representación alfanumérica es el código ASCII, estándar estadounidense.
Imagen: Es información que representa el objeto de la visión humana. Se representan como datos, que
variarán en función de sus propiedades de calidad, resolución, etc. Ejemplos de codificación serían los
formatos jpg o gif.
Audio: Es información que sirve para representar sonidos. Formatos son cda, wma, mp3, etc.
Video: Información que representa imágenes en movimiento. La impresión de movimiento para el ojo
humano equivale a procesar un mínimo de 25 imágenes en un segundo. Formatos son avi o dvd.
Hecha esta exposición, en general se puede decir que la información se trata como un conjunto de datos.
Los datos pueden clasificarse en numéricos, alfabéticos y alfanuméricos. En las TIC se usan distintos
códigos para codificarlos, según su tipo.
2.2.1. Información numérica
Para que la representación de números sea adecuada al sistema informático, se usan diferentes métodos
según el tipo de número. Así, puede distinguirse entre la codificación de números enteros, decimales o
reales. Como idea general es más eficiente representar los números enteros codificados en binario natural
más la codificación del signo. Los decimales codificarlos distinguiendo parte entera y decimal y su posición y
para los reales, la codificación en coma flotante, con base decimal y un exponente entero.
Uno de los códigos más utilizados es BCD, Binary Code Decimal, usado para codificar números decimales
en binario. Cada símbolo decimal utiliza cuatro bits binarios, del 0000 que sería el 0 decimal al 1001 que
sería el nueve. El resto de posibilidades hasta el 15, 1111, no se usan. Así, la codificación del número
decimal 235 sería 0010 0011 0101.Variantes de BCD son BCD Natural, (cada cifra corresponde a su código
binario), Aiken (cada cifra es el complemento a 9, CA9, de su simétrica) y exceso A3, (que suma 3 a la cifra
en binario y también es CA) del simétrico). Para representar el signo de un número entero puede usarse un
bit, por ejemplo el más significativo.

7
Dos representaciones muy útiles para operar son los complemento A1 y A2. El CA1 se obtiene cambiando
n
los unos por ceros y viceversa en la representación binaria del número. Puede calcularse como 2 – x-1. El
n
CA2 es 2 -x (igual al CA1+1). La utilidad del CA2 es la representación de enteros negativos.
Para representar números reales con decimales, ya sean muy grandes o pequeños, se suele usar la
representación de coma flotante, que representa un real como un coeficiente M, la mantisa, multiplicada por
E
una base, B, en general 2 o 10, elevada a un exponente E. La expresión sería: R=M·B . Es un sistema
similar a la notación científica. En el ordenador el orden de los campos suele ser signo, exponente y mantisa
En los ordenadores de 32 bits se usa un bit para el signo, 8 para el exponente y 23 de mantisa. Con 64 bits
se usa 1 para el signo, 11 para exponente y 52 para mantisa. Como el primer bit de la mantisa siempre será
1 se puede obviar usando bit implícito. El exponente se expresa en exceso 127 en 32 bits y 1023 en 64 bits.
Si el número a representar, en valor absoluto, es muy grande, puede darse desbordamiento (overflow).
2.2.2. Información alfanumérica
Los datos alfabéticos representan los caracteres del alfabeto. Se engloban en la representación
alfanumérica que representa además números y caracteres como signos de puntuación, en general para ser
tratados como texto. En general, los códigos usan 8 bits para realizar esta representación. Dos de los
códigos más utilizados son ASCII, American Estándar Code for Information Interchange, y EBCDIC.
Existen tablas distintas de caracteres según el idioma utilizado. Si se precisa usar varios idiomas pueden
usarse códigos de dos bytes como UNICODE que permite representar 65536 símbolos distintos. El código
ASCII extendido usa 8 bits, lo que permite representar 256 caracteres. Usa 7 bits repartidos en 3 de zona y
4 de posición para representar la información y el octavo como bit de paridad. Posee variaciones según los
alfabetos que se codifiquen. Un ejemplo de representación seria V como 0101 0110.
El código EBCDIC usa 8 bits, los 4 primeros se llaman de zona y los 4 segundos de posición. Los dos
primeros bits pueden tener los valores 11 para mayúsculas y números, 10 para minúsculas, 01 para
caracteres especiales y 00 para información de control. Los dos siguientes: 00 de A a I, 01 de J a R, 10 S a
Z y 11 para números.
2.3. Comunicación de la información
La comunicación es el intercambio de
información entre dos o más entes. Se
distinguen tres partes como mínimo, emisor,
receptor y canal de transmisión.
El emisor es el ente que genera la
información a transmitir. La información se
codifica en binario, de forma adecuada
como se acaba de exponer. Si fuera
necesario, los datos pueden encriptarse,
comprimirse y añadir redundancia para
protegerlos frente a errores de transmisión.
Cuando se transmiten los datos, deben adaptarse al medio de transmisión, ya que no será lo mismo
transmitir por radio, cable metálico o fibra óptica. La forma en que se codifica la información para adaptarla
al canal se denomina codificación de canal.
En recepción se darán los pasos inversos para recuperar la información. Se ha de decodificar la señal del
canal e interpretarla, analizar la redundancia e identificar posibles errores, descomprimirla y desencriptarla si
es necesario y por fin decodificarla. Si se producen errores deben corregirse o retransmitir la información.
Según la naturaleza de la señal en analógico (valores continuos en el tiempo) o digital (valores discretos,
como el código binario). Para la comunicación digital son necesarios estos elementos:
2.3.1. Encriptación
Para garantizar la confidencialidad de la información, esto es, que sólo esté accesible a los receptores
legítimos, se usa encriptación o cifrado. Estas técnicas consisten en reescribir la información de forma que
no sea fácilmente legible por alguien que no conoce la clave del cifrado.
2.3.2. Compresión
Con el objeto de agilizar la transmisión, y por tanto la comunicación, se utiliza compresión, que es la técnica
que permite reducir el tamaño de los datos. Se distinguen dos tipos de compresión, lossless (sin pérdida de
información) y lossly (con pérdidas, no significativas).

8
La comprensión lossless comprende los compresores estadísticos, basados en la probabilidad de aparición
de un mensaje y por tanto precisan memoria para conocer su historia y los compresores basados en
diccionarios, que se basan en la construcción de un diccionario con los mensajes enviados hasta la fecha.
Entre los compresores estadísticos están los de tipo Huffman o Shannon-Fano, los aritméticos y los
predictivos. Entre los compresores basados en diccionario o sustitucionales están los compresores RLE y
los Lempel-Ziv (LZ). Actualmente se utilizan compresores híbridos o de dos fases, que combinan ambos
métodos para optimizar su labor.
La compresión lossly se usa en multimedia. Elimina información no significativa o imperceptible al ser
humano, por ejemplo, sonidos de frecuencias inaudibles. Tipos de comprensión lossly son la codificación
diferencial (se codifica la diferencia con respecto a una referencia), la basada en transformadas (se codifica
el espectro), la cuantización vectorial (basada en la división en marcos y codificación estadística con
respecto a una referencia), la compresión fractal (similar a la vectorial) o la compresión de imágenes en
movimiento (interframe), basada en eliminación de información con diferencias mínimas.
2.3.3. Redundancia
Aunque la compresión elimina redundancia en la información, se introduce otro tipo de redundancia, para la
transmisión. Esta redundancia se orienta a la detección y corrección de errores de transmisión. Lógicamente
se merma algo el ancho de banda, la capacidad del canal, pero se gana en efectividad, al reducir el número
de retransmisiones.
La técnica más simple de redundancia es la del bit de paridad, que añade un bit a la transmisión, un 1 si la
cantidad de unos en la trama es impar y cero si es par (paridad par). El bit de paridad indica si ha habido
error, pero no donde se localiza. Para detectar y corregir errores se pueden usar códigos como los de tipo
Hamming, capaces de detectar errores múltiples y corregirlos usando pocos bits de paridad. Estos códigos
son cada vez más usados en las memorias.
Para detectar errores de transmisión también se usan códigos de redundancia cíclica (CRC) o polinomiales,
que añaden un resto o módulo de cierto polinomio. Los códigos Huffman emplean códigos de longitud
variable. La codificación de cada carácter dependerá de su frecuencia de utilización.
2.3.4. Codificación de Canal
La codificación de canal o de línea es la generación de las señales adaptadas al medio de transmisión. Para
la transmisión de señales digitales, además la información debe cuantificarse
Las señales que representan la información en general poseen una naturaleza continua, analógica. Por
tanto, no se pueden representar todos los valores que se pueden dar, con un conjunto finito de símbolos.
Para evitar este inconveniente se cuantifican las señales, es decir, se asigna un único valor a todos los que
pueda tomar la señal en cierto intervalo. En el caso típico ese valor es el valor central del intervalo
considerado. Pueden establecerse otros criterios como usar longitudes distintas de intervalo.
El error que se asume con la diferencia entre el valor real y el valor cuantificado como máximo será la mitad
de la anchura del intervalo. Por tanto es controlable. Estos errores se pueden reducir adecuadamente para
que no afecten al umbral de percepción humano.
La cuantificación será el primer paso en el procesamiento de las señales. Una vez cuantificadas, se podrán
digitalizar, expresar en binario y realizar todo el proceso de comunicación expuesto. El tratamiento digital de
la señal y su codificación de canal incrementan sobremanera el rendimiento de la comunicación.

9
TEMA 2. ELEMENTOS FUNCIONALES DE UN ORDENADOR DIGITAL. ARQUITECTURA.

1. INTRODUCCIÓN
2. ELEMENTOS FUNCIONALES DE UN ORDENADOR DIGITAL
2.1. Unidad Central de Proceso
2.2. Memoria Principal
2.3. Unidades de E/S
3. ARQUITECTURA
3.1. Unidad Central de Proceso
3.2. Memoria Principal
3.3. Unidades de E/S

10
1. INTRODUCCIÓN
El ordenador digital es un sistema que a partir de datos y órdenes, realiza un proceso obteniendo un
resultado. Todos los ordenadores tienen características comunes de funcionamiento que describe su
modelo funcional.
La arquitectura del sistema describe su organización en cuanto a componentes, sus relaciones y el entorno
y principios que guían su diseño y evolución. La arquitectura fundamental de los computadores es la
publicada por Von Neumann a principios de la década de los años 40.
2. ELEMENTOS FUNCIONALES DE UN ORDENADOR DIGITAL
Un ordenador digital tiene 3 partes fundamentales: La memoria, la unidad central de proceso y unidades de
entrada y salida, que se comunican mediante buses. Un bus es un conjunto de líneas eléctricas paraleleas.
Un ciclo de bus es el tiempo en que se realiza una operación básica en un bus, como la transferencia de
datos entre dos unidades. La temporización puede ser de ciclo completo (el bus se usa todo el ciclo) o de
ciclo partido (se divide el uso del bus en periodos más pequeños), más complejo y eficiente.
En el ordenador se distinguen tres buses: el de direcciones, datos y control. El bus de direcciones contiene
la dirección de memoria en la que operar. El de datos, el dato con el que operar y el bus de control las
microinstrucciones que controlan los circuitos.
Se pueden distinguir ordenadores de programa fijo (Fixed Program Computer), de máquinas como por
ejemplo las calculadoras y ordenadores de programa almacenado (Stored Program Computer), en que una
memoria almacena un programa, por lo que la máquina es reprogramable por lo que al cambiar el programa
se evita tener que rediseñarla. Esta es la arquitectura Von Newmann.
La arquitectura Von Neumann define una máquina de
propósito general, provista de memoria que almacena
datos e instrucciones. Además se propone un componente,
la UCP o Unidad Central de Proceso, compuesta a su vez
de dos elementos bien diferenciados, la UC, unidad de
control para la gestión de las instrucciones y una Unidad
Aritmético Lógica para realizar las operaciones
matemáticas o lógicas sobre los datos.
Por fin, se dota a la máquina de un interfaz hardware para la comunicación con el ente humano, que servirá
también para programarla. Son las unidades de entrada y salida.
2.1. Unidad Central de Proceso
La UCP es el elemento que coordina el funcionamiento del resto del ordenador. Ejecuta las instrucciones
almacenadas en memoria en lenguaje máquina. Para ello dispone de un conjunto de instrucciones, ISC
(Instruction Set Computer) que se almacenan en memoria y permiten gobernar la máquina.
Cada instrucción realiza una única función elemental, con un número fijo de operandos que se representan
unívocamente. Además poseen una codificación de fácil interpretación y son independientes entre sí.
En lenguaje máquina, las instrucciones son muy básicas. Por ejemplo, para enviar un archivo a un
dispositivo de salida, habría que leerlo, depositarlo en la dirección de memoria destinada a ese dispositivo,
escribirlo, etc. Es decir, una operación que a nivel macroscópico puede ser sencilla, a nivel máquina puede
implicar varias instrucciones. Por eso, no se suele programar en lenguaje máquina, sino que se usan
lenguajes de alto nivel (Java, C, Pascal) y compiladores que lo traducen a lenguaje máquina.
Existen dos arquitecturas diferentes para el diseño del ISC: CISC y RISC. El primero, Complete ISC, se
basa en conjuntos más o menos amplios con instrucciones algo más complejas. Obtiene más rendimiento
cuando la operación a ejecutar se adapta muy bien a la definición de la instrucción, pero lo pierden si no es
así. Un alto porcentaje de las operaciones son las mismas (leer, escribir, etc), por tanto, puede interesar
tener conjuntos de instrucciones reducidos, Reduced ISC, RISC, que agilizan el proceso. En general, se
tiende a tecnologías RISC, que suelen ser más efectivas.
Hay varios tipos de instrucciones: aritméticas, lógicas, de entrada y salida, de transferencia de memoria
(leen o escriben en memoria) o de ruptura de secuencia (cambian el órden de las instrucciones). Las
instrucciones se ejecutan secuencialmente, en el orden en que marca el programa, de forma rutinaria.
Primero, se busca la siguiente instrucción a ejecutar, se decodifica, se leen los operandos, si los hay, se
opera y almacena el resultado. Existe un registro contador de programa, tal que, cuando la CPU ejecuta una
instrucción, leerá en él la dirección de la siguiente instrucción a ejecutar, entrando de nuevo a repetir el
ciclo. Al volver a leerse la nueva instrucción a ejecutar, se actualiza el contador de programa.

11
La CPU se compone de dos subsistemas, la Unidad Aritmético Lógica (UAL) y la unidad de control (UC). La
UAL realiza las operaciones sobre los datos que gestiona la UC. Está formada por operadores, circuitos
electrónicos capaces de hacer operaciones aritméticas y lógicas. Las operaciones pueden requerir uno o
más operandos y realizar la operación en paralelo sobre todos los bits o en serie.
Además, la ALU incluye varios registros y biestables. Los registros almacenan datos temporales y destaca
el registro acumulador, para resultados parciales. Los biestables guardan una variable de estado. Algunos
ejemplos son el Z (con valor 1 si el resultado es 0), N (1 si el resultado es negativo), C (acarreo), etc.
La UC gestiona el funcionamiento del ordenador. Distribuye datos y órdenes a cada unidad. Puede
resumirse su funcionamiento en leer e interpretar las instrucciones, si la instrucción es una operación, leerá
los datos involucrados y los pasará a la ALU. El resultado final se guarda en memoria.
La UC también controla el flujo de datos entre la memoria y las unidades de E/S, organiza los tiempos de
acceso y ejecución y envía o recibe señales de control de los periféricos. Cuenta además con registros
encargados de almacenar datos durante la ejecución de un programa, como son el registro contador de
programa, que almacena la dirección de la siguiente instrucción a ejecutar, el registro de instrucciones, que
guarda la instrucción en curso, el registro de estado que mantiene información sobre la actuación de la ALU
y el registro de direcciones que guarda la dirección del dato a tratar en memoria.
2.2. Memoria Principal
Es la encargada de almacenar datos e instrucciones. Puede identificarse con la memoria RAM. Almacena la
información mientras existe alimentación. Si la máquina se apaga pierde los datos. El bus de dirección
n
determina la capacidad de la memoria. Si el bus posee n bits, se podrán direccionar 2 palabras.
En el equipo pueden identificarse otras memorias, que no deben confundirse. Estas son la memoria ROM,
de sólo lectura, que almacena el firmware (BIOS). La memoria caché es una memoria auxiliar, muy rápida
que funciona como índice y agiliza las operaciones. Los discos duros y la memoria externa son memorias
conocidas como secundarias. Son permanentes.
La memoria principal es la que usan los programas en ejecución. En general, será de acceso aleatorio
permitiendo el acceso a cualquier dirección de forma directa. Los bits contenidos en una dirección de
memoria se denominan palabra. Para comunicarse con el procesador, la MP hace uso del bus de
direcciones, que contendrá la dirección de la palabra a acceder. En el bus de datos, se situará el dato
accedido y en el bus de control se dispondrá de los bits de arbitraje que indicarán las operaciones a realizar.
La secuencia de lectura o escritura en memoria es leer la dirección sobre la que se trabajará, activar la línea
de control de lectura o escritura, según corresponda y si es una lectura, transferir los datos al bus de datos y
si es una escritura transferir los datos del bus de datos a la memoria.
2.3. Unidades de E/S
Las unidades de E/S permiten la comunicación con el exterior. Representan el interfaz de usuario. Debido a
lo variado de los dispositivos a manejar, cada uno lleva asociado un controlador, un firmware que
implementa el modo de comunicación entre la UCP y el dispositivo. El sistema de E/S resuelve el problema
de la selección del periférico, la sincronización con el procesador y la transferencia de datos.
La forma de seleccionar periféricos en los ordenadores que los conectan todos al mismo bus es mapearlos
en memoria. Esta organización dispone para el procesador un espacio único de direccionamiento, la
memoria principal y la reservada a periféricos. La ventaja es no necesitar instrucciones específicas, a
cambio de perder direcciones de memoria y ser más difícil mantener la protección de acceso.
Para realizar la transferencia de datos hay que sincronizar la UCP con el sistema de E/S. Hay dispositivos
siempre sincronizados. Para los que es necesario sincronizar, puede hacerse por sondeo, de forma que la
CPU consultando periódicamente la situación de cada dispositivo hasta que esté preparado para transmitir.
O sincronizar mediante interrupciones, situación en la que el dispositivo envía una señal para indicar que
está dispuesto. La UCP interrumpe su proceso y atiende la interrupción, ejecutando una rutina de servicio.
El sondeo es menos eficiente puesto que requiere tiempo de UCP y no tiene en cuenta prioridades. Por
contra, el sistema de interrupciones ahorra ciclos de CPU y tiene en cuenta prioridades.
3. ARQUITECTURA
La arquitectura de un sistema describe su organización en cuanto a componentes, sus relaciones y el
entorno y principios que guían su diseño y evolución.
Para definir la arquitectura de un sistema conceptual, se usan dos tipos de modelos: funcionales y
estructurales. Los funcionales o de caja negra describen la función del sistema con relación al entorno. Para
un sistema estático, un modelo funcional puede ser una maqueta o un plano.

12
Para un sistema dinámico sería un diagrama que explicase la relación entre entrada y salida. Los modelos
estructurales o de caja transparente describen el sistema detallando sus partes y sus relaciones.
Un modelo es una abstracción del sistema. Para sistemas complejos, es habitual encontrar una jerarquía de
niveles de abstracción. Los sistemas del nivel n-1 son componentes del nivel n. “Subir” del nivel n-1 al nivel
n es abstraer. “Bajar” del nivel n al n-1 es concretar (o implementar). Se pueden distinguir los siguientes
niveles de abstracción en un PC:
En el nivel más bajo, se situarían los dispositivos electrónicos
básicos, resistencias, condensadores, transistores, puertas
lógicas, etc. Su combinación daría lugar a otro nivel mayor de
complejidad, el de circuito lógico, es decir, circuitos
secuenciales y combinacionales.
Del mismo modo, su combinación genera otro nivel más
abstracto, el de micromáquina, formado por máquinas
microprogramables, capaces de interpretar microinstrucciones.
El nivel de máquina convencional utilizaría microprogramas, e
incluiría máquinas programables binarias, capaces de
interpretar instrucciones. A estos dos niveles se encuentran los
microprocesadores y su programación.
Podría decirse que ambos niveles forman el nivel firmware, que daría paso al de máquina operativa, donde
englobar las máquinas programables binarias extendidas, que además de interpretar instrucciones, realizan
“llamadas al sistema”. Sería el nivel del Sistema Operativo.Por fin, en el nivel superior se encontraría el de
máquina simbólica, que serían capaces de interpretar sentencias y órdenes en lenguajes simbólicos
(programación en C, Pascal, Java...).
Si se quiere abreviar, algo groseramente, puede dividirse la estructura englobando los dos niveles bajos en
hardware, los dos medios en firmware y los dos superiores en software.
La arquitectura de von Neumann expuesta, es una familia de arquitecturas de ordenadores, que utilizan el
mismo bus de datos para almacenar instrucciones y datos. Entonces, dada una palabra de la memoria,
cómo puede saberse si es un dato o una instrucción. Eso dependerá de un código de instrucción y de la
operación que esté realizando la UC. La mayoría de ordenadores se basan en la arquitectura von Neumann,
pero existen otras como por ejemplo la arquitectura Harvard, que utiliza un bus para las instrucciones y otro
para los datos, es decir, las instrucciones se almacenaban en lugar distinto a los datos.
El objetivo es tener una idea clara del modelo funcional y estructural de un ordenador a nivel de máquina
convencional. El modelo funcional describe la forma de representación de la información (datos e
instrucciones) en binario, así como el conjunto de instrucciones y su modelo procesal.
Para simplificar el modelo
estructural de la máquina de
von Neumann, y facilitar su
comprensión, se usará una
máquina simplificada, como se
expone en el libro Arquitectura
de Ordenadores de la
bibliografía. El esquema sería el
mostrado en la figura.
Se observa la disposición de los tres buses ya comentados, el bus D, de datos, que contiene la información
de o hacia la MP y la UC o UAL y entre UAL y periféricos. El bus A (direcciones) de la UC a la MP o
periféricos y el bus C (control) que agrupa señales de control, las microórdenes generadas por la UC. Los
periféricos se conectan por medio de controladores de E/S. Los números sobre los buses indican el número
de líneas que agrupan. Por ejemplo el bus D posee 12 líneas.
El modelo funcional de la arquitectura von Neumann representa los
datos en binario con una palabra de 40 bits. El código de operación
es de 8 bits, por lo que el ISC, o conjunto de instrucciones de la
máquina es de 256 instrucciones.
12
El espacio de direccionamiento de la MP es 4096 palabras, es decir 2 , ya que 12 son los bits del campo de
dirección y por tanto del bus de direcciones. Para facilitar la presentación, se utilizará un formato reducido
de instrucción de sólo 12 bits, de los que los 3 más significativos se reservan al código de operación, CO, y
los 9 restantes al campo de dirección, CD. Por tanto, ahora la máxima memoria direccionable es 512
9
posiciones (2 ) de 12 bits cada una. Se propone un conjunto de instrucciones compuesto por las siguientes:

13
La representación de los caracteres podría
seguir el código ISO Latin9 en los 8 bits
menos significativos de la palabra, de forma
que por ejemplo, “a” se representaría como
0110 0001.
La programación a nivel de máquina
convencional o simbólica haría uso de este
modelo, para construir programas que
definen una máquina de nivel superior. A este
nivel se programa en lenguaje máquina.
Un ejemplo simple sería la suma de dos enteros. Para ello, se sumarán dos operandos, que se encontrarán
en las direcciones de memoria 300 y 301, respectivamente. Podrían estar en otras direcciones, pero se han
elegido estas. El resultado debe almacenarse en la dirección 302 de la MP. El mapa de memoria sería el
representado en la figura y el programa podría ser:
[0] LD / 300 Carga en el AC lo que hay en la DIR. 300
[1] ADD / 301 Suma al AC lo que hay en la DIR. MP 301
[2] ST / 302 Guarda en la DIR 302 el valor del AC ([300]+[301])
[3] HALT Parar
En Binario y Octal sería:
[0] LD / 300 B´ 001 100101100 Q´ 1454
[1] ADD / 301 B´ 010 100101101 Q´ 2455
[2] ST / 302 B´ 000 100101110 Q´ 0456
HALT B´ 111 xxxxxxxxx Q´ 7xxx
Este ejemplo simple muestra cómo se trabaja a este nivel. Falta por tanto, explicar cómo se interpretan los
datos en la MP según esta arquitectura. Supóngase en MP el contenido de la columna izquierda. La
interpretación de la memoria depende del tratamiento que se realice de los datos. Así, si la UC ejecuta lo
contenido en la dirección [5], como los 3 bits más significativos son 010, sumará al contenido del
acumulador el dato que exista en la dirección de memoria 1 y dejará el resultado en el acumulador.

Ahora bien, si el programa ejecutase la instrucción LD/5, que por ejemplo estuviese almacenada en la
dirección [4], se cargaría en el acumulador el valor 1025, que es lo que contiene la dirección [5]. Por tanto,
se aprecia como la misma dirección de memoria puede interpretarse como instrucción o como dato, en
función de la operación que esté realizando la UC en cada momento. Es la esencia de la arquitectura von
Neumann en contraste con otras como la Harvard, ya mencionado.
3.1. Unidad Central de Proceso
Está compuesta de la UAL y la UC. La UAL trabaja como un autómata repitiendo indefinidamente el proceso
de extraer una instrucción de la MP, interpretarla, lo que significa decodificarla (y por tanto extraer un
operando, dado el caso) y ejecutarla. Por fin, se genera la dirección de la siguiente instrucción, lo que puede
realizarse en el paso 1. También es habitual la utilización de un registro acumulador. La operación a realizar
en la UAL estará marcada por las microinstrucciones generadas por la UC.
3.2. Memoria Principal
En cuanto a la MP, la figura muestra la organización
ya expuesta. Se poseen 512 posiciones numeradas
del 0 al 511, debido a que el bus A posee 9 bits. Cada
dirección posee una palabra de 12 bits, que son las
líneas del bus D. Y el bus de control lleva dos bits,
una línea de indicación de lectura y otra de escritura.

14
Para esta función podría hacerse sólo con una línea, pero en el ejemplo se usan dos para ampliar su
estudio a la hora de incrementar la complejidad. Lo importante es tener en cuenta cómo funciona.
3.3. Unidades de E/S
El ejemplo propuesto es muy limitado, para ilustrar un funcionamiento
elemental. Sea entonces, un teclado y pantalla trivializados. La
comunicación se realiza a través del acumulador. Cada periférico
tiene un puerto de datos y un puerto de estado, los mostrados en la
tabla. Se utilizan las direcciones 508 a 511, “robadas a la MP”.
Los tiempos para las transferencias con los periféricos son mayores que los de intercambio con la UAL y la
MP, por tanto, hay que comprobar el estado del dispositivo, lo que sería la función de lo que se conoce
como controlador del dispositivo, o en primera aproximación, driver.
Así, la dirección 508, almacena el estado de la pantalla, y será 1 si está preparada y 0 si no lo está. De
forma análoga para el teclado se usa la dirección de memoria 510. Las rutinas de servicio de teclado y
pantalla serían las siguientes:
Para escribir en la pantalla: Para leer del teclado:
1774 LD / 508; (En [20], p.ej.) 1776 LD / 510; (En [40], p.ej.)
4024 BZ / 20; Si no preparada, sigue probando 4050 BZ / 40; Si no preparado, sigue probando
1005 LD / 5; Carga el carácter (en [5], p.ej.) 1777 LD / 511; Carga el carácter
0775 ST / 509; Lo envía a pantalla 0003 ST / 3; Lo almacena en [3] (p. ej.)
Analizando los tiempos, se entenderán bien los conceptos de espera activa, interrupciones y acceso directo
a memoria. Sean estos datos: Tiempo de ejecución para las instrucciones BR, BZ, CLR, DEC y HALT: 1
ciclo de MP=200 ns, tiempo de ejecución para las instrucciones ST, LD y ADD, 2 ciclos de MP=400 ns y
6
tiempo de escritura de un carácter en pantalla 1/30 s=33·10 ns=33 ms.
Si inmediatamente después de ST 509 se inicia otro bucle de espera para escritura, cuántas veces se
6
ejecutarán las dos instrucciones del bucle. Serán 33·10 /600=55.000 veces, lo que resulta bastante
ineficiente. Por tanto se recurre a otros mecanismos para el control de periféricos.
Las interrupciones, son un mecanismo por el que la iniciativa es del periférico, que interrumpe a la UCP
para cada carácter. La UCP ejecuta la rutina de servicio y vuelve a su labor. Por su parte, en el acceso
directo a memoria, el periférico se comunica directamente con la MP. Sólo interrumpe al final de la
transferencia de un bloque. Va “robando” ciclos a la UCP.

15
TEMA 3. COMPONENTES, ESTRUCTURA Y FUNCIONAMIENTO DE LA UCP.

1. INTRODUCCIÓN
2. COMPONENTES, ESTRUCTURA Y FUNCIONAMIENTO DE LA UCP
2.1. Componentes
2.1.1. UAL
2.1.2. UC
2.2. Estructura
2.3. Funcionamiento

16
1. INTRODUCCIÓN
La UCP o Unidad Central de Proceso es el componente principal del ordenador. Se divide en dos grandes
componentes, la UAL, unidad aritmético-lógica, encargada de realizar operaciones y la UC, Unidad de
Control, encargada de gestionar el resto de elementos del ordenador. Además, se dispone de una serie de
registros, elementos de memoria con información del programa en ejecución.
2. COMPONENTES, ESTRUCTURA Y FUNCIONAMIENTO DE LA UCP
La UCP ejecuta los programas almacenados en la MP. Cada programa está almacenado en lenguaje
máquina como se ha visto en el tema anterior, con un ejemplo conceptual de un conjunto de instrucciones o
ISC (Instruction Set Computer).
2.1. Componentes
2.1.1. UAL
La UAL es un circuito combinacional capaz de realizar operaciones aritméticas, lógicas y de desplazamiento
que ordene la UC. Las operaciones son básicas y probablemente requieran varias instrucciones, como en el
ejemplo de suma visto en el tema anterior. Una ALU podría responder al siguiente esquema:
En general se representa en forma de V invertida,
donde los extremos de la v representan la entrada
de operandos y el vértice el resultado. La
comunicación entre el sistema y la ALU se realiza
mediante registros. En la figura sólo se ha
representado uno, AC, o registro acumulador, que
guardaría resultados parciales. También se han
indicado las microinstrucciones de la UC
simplificadas del ejemplo del tema anterior.
Otros registros que se pueden encontrar son registros de entrada, que contendrán los operandos, el registro
que contendrá el resultado, en general denominado acumulador, el registro de operación, que indica que
tipo de operación se realiza y el registro de estado, que indica estados especiales como bits de acarreo,
divisiones entre cero o desbordamientos.
Las operaciones que realiza una ALU son operaciones aritméticas con números enteros (suma, resta y en
función de su potencia multiplicaciones y divisiones), operaciones lógicas binarías y operaciones de
desplazamiento de bits (equivalente a multiplicar o dividir por 2). Las operaciones están programadas con
circuitos electrónicos, combinacionales o secuenciales. Esta es la esencia de la idea de firmware.
Las operaciones pueden clasificarse en unarias, sobre un único operando (por ejemplo un NOT lógico) o
binarias, sobre dos operandos como la suma, resta, etc. Además pueden realizarse en paralelo, si se realiza
sobre todos los bits del operador a la vez, o en serie, si la operación se realiza dígito a dígito.
2.1.2. UC
La UC es el elemento encargado de sincronizar el resto de los componentes del ordenador. Su tarea puede
resumirse en la interpretación y secuenciación de las instrucciones.
La interpretación de una instrucción consiste en decodificarla, es decir, realizar lo indicado en el campo de
código de operación de la instrucción, lo que incluye, si hay operandos involucrados, conocer dónde leerlos,
en función del direccionamiento que se use para la MP y dejarlos disponibles para la UAL. La secuenciación
de las operaciones consiste en la temporización y orden de las operaciones necesarias para la ejecución de
las instrucciónes. Para esto, se apoya en el registro contador de programa.
Las señales de control son señales eléctricas binarias generadas en la UC, para controlar la sincronización
de las operaciones y el funcionamiento del resto de elementos. En general, el diseño e implementación de
una UC se realiza de forma cableada, es decir, mediante circuitos o elementos hardware o de forma
microprogramada, más lenta, pero que permite implementar instrucciones mas potentes y flexibles.
2.2. Estructura
La arquitectura de la UCP incluye los componentes del procesador y cómo se relacionan par implementar el
conjunto de instrucciones, el ISC. En general se presenta mediante diagramas funcionales y estructurales,
que vayan desde la descripción de las puertas lógicas a circuitos más complejos, detallando la trayectoria
de datos (datapath) y la de control (control path).
Máquinas con diferentes arquitecturas pueden tener el mismo ISC, y por tanto podrían ejecutar los mismos
programas. La evolución en la microarquitectura, circuitos y su integración son los factores que permiten
que generaciones más modernas de procesadores alcancen mayor rendimiento con los mismos ISCs.

17
En principio la misma estructura de UCP podría ejecutar variantes del ISC con pequeñas diferencias. La
microarquitectura de la UCP y el ISC definen la arquitectura del ordenador. La UCP puede ser de propósito
general o diseñarse para un proposito concreto y por tanto tener un conjunto de instrucciones diferente.
La arquitectura mas extendida en ordenadores es la del conjunto de instrucciones x86, propuesta por Intel y
compatibles, que ha ido evolucionando con el tiempo. Algunas extensiones conocidas al ISC x86, son MMX,
también de Intel y 3DNow! de AMD, para ampliar las funcionalidades multimedia.
Las instrucciones del ISC suelen tener las propiedades de independencia y autocontenciáon, es decir, que
contienen todos los datos necesarios para ejecutarse sin depender de otras instrucciones, además son
sistemáticas para obtener un decodificador simple, realizando una única operación para lo que usan un
número fijo de operandos con una representación establecida.
Las instrucciones pueden clasificarse en instrucciones aritméticas y lógicas (que realizan operaciones de
ese tipo en la UAL), de desplazamiento, de control (para gestionar el flujo de ejecución del programa), de
transferencia de datos (lectura y escritura en la MP) e instrucciones de gestión de entrada y salida.
A la hora de ejecutar una instrucción, la lectura de los datos suele ser el elemento crítico de retardo. Por
tanto el esfuerzo de desarrollo se centra en el diseño de circuitos que incrementen el rendimiento y además
puedan integrarse en un único chip. Algunas técnicas comunes en la estructura de la UCP son la selección
del ISC, pipeline, uso de memoria caché, renombrado de registros y otras.
Las técnicas de pipelining se refieren a la sincronización de los datos en etapas con tiempos de ejecución
(retardos) similares para evitar que procesos lentos mermen el rendimiento. Si a la entrada de un circuito se
poseen dos datos, y la ruta de proceso del primero es mayor que la del segundo, al aplicar pipeline,
mientras se procesa el primero, el segundo podrá liberar recursos para procesar nuevos datos sin esperar al
lento. En general cuantas más etapas de pipeline se implemente la estructura, más rendimiento ofrecerá.
Otros elementos de la UCP son las unidades de coma flotante, FPU, unidades de lectura/escritura, la
predicción de bifurcación y SIMD. La selección del número de unidades de ejecución, su latencia y
rendimiento es una tarea central del diseño microarquitectónico, centrado en aspectos tales como la
relación área coste del chip, consumo de energía, complejidad lógica, etc.
2.3. Funcionamiento
El funcionamiento de la UCP consiste en ejecutar instrucciones, siguiendo, en general, los siguientes pasos:
1. Lectura y decodificación de la instrucción
2. Obtención de los datos, si son necesarios, para procesarla
3. Ejecución de la instrucción
4. Proceso del resultado (almacenamiento)
Más en detalle, la ejecución de una instrucción se realizaría leyendo el
registro contador de programa (PC) para ser cargado en el registro MAR o
de dirección de memoria, que contiene la dirección a leer.
Entonces se genera la microinstrucción, que indica a la MP que será leida, se incrementa el PC en 1 y la
instrucción se carga en el registro de instrucción, IR, para ser decodificada. Una vez decodificada, comienza
el paso 2, en que puede ser no haya datos, estén en la instrucción o ésta proporcione un índice que
implique otras operaciones para obtener el dato deseado.
Luego, la fase dos supone un paréntesis en que el decodificador también generará las señales de control
para leer los operandos, si son necesarios y se cambiará el contenido de los registros según corresponda,
puesto que para leer un dato de la MP, antes ese valor debe actualizarse en el MAR. Una vez obtenidos los
operandos, en la fase 3 se ejecuta propiamente la instrucción. Si la instrucción ha generado un resultado, se
debe tratar, de forma que en general, habrá de almacenarse en MP, para lo que se usa un registro de datos
de memoria, el MDR, que contiene los datos que se escribirán o leerán de la MP. Por fin se vuelve al paso
1, actualizando el MAR, PC, etc.
Especial atención merecen las bifurcaciónes de un programa. Básicamente, se consiguen sustituyendo el
contenido del PC por la dirección de bifurcación, que lógicamente es la siguiente a ejecutar, aunque rompa
la ejecución secuencial. Habitualmente, esa nueva dirección se calcula sumando al valor del PC un valor
diferencia entre la dirección actual y la nueva. Por lo demás, el mecanismo es idéntico.

18
TEMA 4. MEMORIA INTERNA. TIPOS. DIRECCIONAMIENTO. CARACTERÍSTICAS Y FUNCIONES.

1. INTRODUCCIÓN
2. MEMORIA INTERNA
3. TIPOS
3.1. RAM
3.2. Caché
3.3. ROM
4. DIRECCIONAMIENTO
5. CARACTERÍSTICAS Y FUNCIONES

19
1. INTRODUCCIÓN
La memoria interna incluye los componentes de memoria que se encuentran en el interior del ordenador y
forman parte fundamental del proceso. No se incluyen por tanto memorias secundarias como los discos
duros, que aunque pudieran considerarse memoria interna, se engloban en la parte de componentes. Como
memoria interna se distingue la memoria RAM, la caché y la ROM.
2. MEMORIA INTERNA
La memoria interna hace referencia a la memoria fundamental para el funcionamiento del ordenador y que
se dispone en la PB. El nombre de memoria interna, a parte de deberse a que la memoria está en el interior
del ordenador, se refiere a que su acceso lo realiza la UCP directamente a través de los buses del sistema.
Las tres memorias internas distinguidas, RAM, ROM y caché se disponen de forma diferente. Mientras para
la RAM existen zócalos donde se inserta en forma de módulos, lo que facilita su ampliación, la ROM suele ir
integrada, aunque también puede disponerse en zócalos en la PB. La memoria caché interna, está
integrada en el micro, y la externa en general va soldada en la PB, aunque podría disponer de zócalo,
situación típica en equipos más antiguos.
3. TIPOS
3.1. RAM
La Memoria Principal es el componente del sistema que almacena la información que procesa la UCP. Su
contenido pueden ser programas o datos. Es la memoria de trabajo. Cualquier dato que procese el
ordenador pasa por la memoria principal (RAM).
Es una memoria pequeña, en comparación con memorias secundarias, pero muy rápida. Es volátil, al dejar
de alimentarla eléctricamente, su contenido se pierde y de acceso aleatorio, permitiendo acceder a
cualquier posición sin leer las posiciones anteriores, en contraste con el acceso secuencial, en que se debe
pasar por posiciones anteriores para llegar al dato deseado. Ejemplo de acceso secuencial sería una cinta
de audio, mientras un CD posee acceso aleatorio.
Internamente, la memoria RAM tiene una matriz de celdas de memoria, un decodificador de la dirección y
unos transductores encargados de leer y escribir en las celdas. Dependiendo de cómo se comporten las
celdas de memoria se distingue RAM estática o dinámica.
La RAM estática no necesita ser refrescada, puede ser leída sin que se pierda su contenido, lo que hace
que su acceso sea más rápido, pero son más caras. La RAM dinámica debe ser refrescada, ya que sus
celdas pierden la información al operarla. Es un proceso interno, electrónico, transparente al usuario. El
tiempo de refresco reduce la velocidad de acceso, aunque siguen siendo rápidas y más baratas. La RAM
dinámica es usada comúnmente como MP y la estática para implementar memoria caché.
Físicamente la memoria es un conjunto de chips fabricados con material semiconductor y soldados a una
placa alargada de circuito impreso llamada módulo. Los módulos de memoria RAM, que se insertan en
zócalos alargados de 10 a 15 cm. acondicionados al efecto, en la PB, habitualmente cerca del micro.
La evolución tecnológica de los módulos de memoria ha dado lugar a distintas denominaciones. Los
módulos a conocer son los SIMM, módulos de memoria sencillos en línea, de 30 y 72 contactos. Son los
más antiguos, usados en los 386 y 486 (30 contactos) y en Pentium (72 contactos). Los módulos DIMM, o
módulos de memoria dual en línea de 168 y 184 contactos se empezaron a usar a partir de los Pentium II.
Existe otro tipo de módulo, obsoleto, el módulo RIMM, desarrollo propietario, es decir no estándar, que
obliga a pagar a la empresa Rambus para usar esa tecnología. Lógicamente, al ser más caro no se impuso.
Según el tipo de memoria RAM y su tecnología de funcionamiento se distinguen memoria RAM estática o
SRAM, que no necesita ser refrescada y es más rápida que la dinámica, pero más cara. Este tipo de
memoria se suele usar para memoria caché. La memoria RAM que se monta en los típicos módulos de
memoria es memoria dinámica o DRAM, que necesita refresco.
La memoria DRAM es más antigua y lenta. Funciona de manera asíncrona, es decir, no sigue la
temporización del bus del sistema. Se montaba en módulos SIMM. Tipos de memoria DRAM son Fast Page
(FPM), un poco más rápida usada hasta los primeros Pentium; EDO ó EDO-RAM, extensión de datos de
salida-RAM, permite empezar a introducir nuevos datos mientras los anteriores están saliendo, lo que la
hace más rápida; BEDO-DRAM es un tipo de EDO-RAM con ráfaga (burst) e incluye una etapa de pipeline.
Es el doble de rápida que la FPM y un 30% más que la EDO.
Cuando la frecuencia de bus del sistema fue haciendose mayor, se precisó que la memoria RAM se
sincronizase con el bus. Esto obligó a crear memoria DRAM síncrona o SDRAM. Ésta memoria se monta en
módulos DIMM y es bastante más rápida. Se suele denominar según su frecuencia de funcionamiento en

20
Mhz: PC100, PC133, etc. Memorias que funcionan de esta manera: CDRAM (Caché DRAM), RDRAM
(Rambus DRAM) o ESDRAM (Enchanced SDRAM), por ejemplo.
El tipo SDRAM DDR, o SDRAM de doble tasa de datos. Este nombre especifica su funcionamiento: En cada
ciclo de reloj, se intercambian dos bits, en vez de uno, alcanzando velocidades mayores, gracias a esta
nueva forma de trabajo y al incremento de frecuencia del bus de sistema. La memoria DDR no es
compatible con SDRAM no DDR.
Emplean 184 contactos en vez de 168 y el módulo posee una muesca en vez de dos. Denominaciones de
estos módulos: DDR200, DDR333, etc. Aunque por abuso del lenguaje se puede encontrar escrito como
PC1600, PC3200, etc. Que indican la máxima transferencia en Mbps que alcanzan.
Si la MP resulta insuficiente para ejecutar un programa, se puede ampliar con una parte de la memoria
secundaria, los discos duros, reservada para funcionar como RAM. Lógicamente, el intercambio de
información es más lento, pero permite funcionar con la apariencia de una memoria RAM mayor. Esta
técnica se denomina memoria virtual y la zona del disco duro reservada al efecto zona de swap o swap file,
zona de intercambio. Actualmente se utiliza menos debido a las mayores capacidades de RAM. Resumen:
Módulo SIMM – Memoria DRAM. Módulo DIMM – Memoria SDRAM y SDRAM DDR.
Módulo RIMM – Memoria RDRAM. Propietario de RAMBus y descartado comercialmente.
3.2. Caché
La memoria caché es una memoria intermedia más rápida que la RAM. Esto implica un encarecimiento y
por eso suele montarse menos capacidad que la RAM. Valores típicos son 512 KB. La caché actúa como
índice de los datos de la RAM. Si el índice es excesivo puede ser contraproducente.
Almacenar los datos que con mayor probabilidad utilizará el micro en la próxima operación que realice,
ahorra tiempo de acceso a memoria. Esto es un acierto de caché. Los aciertos aceleran el procesamiento,
pero si la caché es muy grande, el micro tardará un tiempo apreciable en encontrar el dato que necesita.
Esto no influye demasiado si el dato buscado está en la caché. Si no estuviera, habría que sumar ese
tiempo perdido al que tarde en leerlo de la RAM. Para usos normales, a partir de 1 MB (1024 KB) la caché
resulta ineficaz, e incluso pudiera llegar a ralentizar el ordenador. El tamaño idóneo depende del de la RAM.
Existen dos tipos de caché: La interna y la externa. La externa puede verse soldada en la PB y se denomina
"caché externa" o de segundo nivel (L2). La caché interna se integra en el micro y también se denomina de
primer nivel (L1). Su tamaño suele ser de decenas de KB.
En general no se elige la memoria caché a adquirir con el ordenador, porque está integrada en la PB. Sin
embargo el tipo de memoria empleado para fabricar la caché es un factor importante. Suele ser memoria
muy rápida (p. ej. SRAM o SDRAM), con unos 10 ns de velocidad de refresco; es decir, cada 10 ns pueden
admitir una nueva serie de datos (a menor tiempo de refresco, mayor velocidad).
Otro parámetro que influye en las caché es la forma de escritura. Esto, a veces, puede elegirse en la BIOS.
Las dos formas principales son write-througth, que es el modo clásico de trabajo de la caché y consiste en
escribir en memoria y en caché a la vez. Consigue coherencia a menor velocidad. Write-Back no escribe en
RAM hasta que tenga que ser sobreescrita. Es más rápido que el anterior.
La memoria caché forma parte, junto con la RAM de la memoria principal del ordenador. Por su fabricación
es más rápida y cara que la RAM. Por eso, para que los ordenadores funcionen más rápido, se fabrican con
una cierta cantidad de memoria caché que almacena datos muy recurrentes en la ejecución de un
programa. Existen estrategias para predecir qué datos deben estar en la caché para optimizar el proceso.
Los procesadores actuales tienen memoria caché integrada, en general en dos o más niveles de jerarquía.
Algunos procesadores recurren a tener más caché en vez de más velocidad para tener mejor rendimiento.
3.3. ROM
Es memoria de sólo lectura, cuyo contenido no puede ser modificado. Se usa para almacenar el firmware
del ordenador y para su arranque. En la ROM reside el programa que inicia los elementos del ordenador y
llama al sistema operativo. Este programa se conoce como BIOS.
A parte de la memoria ROM existen variantes como la PROM, que es una memoria que no se borra pero
que puede ser programada, la EPROM, una memoria que puede ser borrada o la EEPROM que puede ser
borrada por medios eléctricos.
4. DIRECCIONAMIENTO
El direccionamiento de la memoria comprende la organización necesaria para su gestión, en particular para
acceder a una dirección concreta. Las direcciones de memoria se numeran en hexadecimal. Esto es debido

21
a que resulta más fácil al estar organizadas en octetos o bytes. Así, una dirección de 32 bits, sería capaz de
numerar 4.000 millones de direcciones y se usaría el rango 0000 0000 a FFFF FFFF. La dirección a la que
se accede es codificada en el bus de direcciones por parte de la UCP.
El funcionamiento es asignar una dirección a cada dato. Para almacenarlo en memoria, la UCP dispone la
dirección en el bus de direcciones y el controlador de la memoria habilita esa dirección, de forma que con
una señal de control, los datos que existan en ese momento en el bus de datos, se transfieren a la MP. La
lectura sigue un proceso similar, cambiando la señal de control de forma que los datos de la memoria se
vuelcan al bus de datos.
Existen varias técnicas de direccionamiento de memoria. Como se ha visto, una instrucción contiene un
código de operación y un campo de dirección (CD). El CD puede referirse a la dirección de memoria que
contiene un dato (direccionamiento directo), o a una dirección, que contendrá la dirección del dato buscado
(direccionamiento indirecto). Se distinguen entre otros, los direccionamientos:
- Inmediato. La instrucción contiene el dato. No hay direccionamiento.
- Directo. El campo de dirección contiene la dirección del dato.
- Indirecto. El campo de dirección contiene la dirección de la dirección que contiene el dato.
- Relativo. La dirección del dato se obtiene sumando el contenido del CD al contador del programa.
La asignación de memoria posee un aspecto físico y uno
lógico. El aspecto físico se referiría al tratamiento de las
señales de control, organización de los registros,
elementos electrónicos implicados, etc. La lógica se refiere
a la reserva de memoria y se distingue entre asignación
dinámica y estática. La asignación estática se realiza en
tiempo de compilación antes de la ejecución del programa.
La asignación dinámica asigna memoria cuando se
requiere, en tiempo de ejecución.
5. CARACTERÍSTICAS Y FUNCIONES
De las características de la memoria interna cabe destacar
su método de acceso, tiempo de acceso, tiempo de ciclo
de memoria, velocidad de transferencia o capacidad.
El método de acceso de la memoria es la forma en que el hardware localiza una dirección de memoria.
Puede ser secuencial, en que el acceso oblida a recorrer toda la memoria hasta la dirección requerida, o
acceso aleatorio en que se indica una dirección y directamente se habilita para operar.
El estudio de los tiempos comienza con el tiempo de acceso a memoria, que es el empleado en una
operación de lectura/escritura. El tiempo de ciclo de memoria es el debe esperarse hasta poder realizar una
nueva operación. Consta del tiempo de acceso más un tiempo adicional. La velocidad de transferencia de la
memoria es el número de bits, bytes o palabras, accedidos y transferidos por unidad de tiempo.
Otras características que se pueden citar son la capacidad de la memoria, es decir su tamaño, que vendrá
definido por el número de líneas del bus de direcciones, el tamaño de palatra o número de bits del bus de
datos y tamaño de bloque o múltiplos de palabra que se transfieren entre dos bloques funcionales.
En cuanto al funcionamiento de la memoria interna, ya se ha explicado. Es controlado por la UCP y en
función de sus microórdenes, se accede a una dirección que será escrita o leida.
Mención a parte merece el tratamiento de los errores de lectura/escritura. Algunas técnicas de corrección y
detección de errores son la del bit de paridad, en que se guarda un bit adicional por cada byte, que será 1 si
el total de unos es un número par y un 0 si es impar y la técnica de ECC, que permite detectar y corregir
errores. Estas técnicas deben implementarse en el chipset y ser soportadas por las memorias. En general
las memorias presentan una alta fiabilidad, y estas técnicas generan un coste mayor de la memoria y
penalizaciones en la velocidad.

22
TEMA 5. MICROPROCESADORES. ESTRUCTURA. TIPOS. COMUNICACIÓN CON EL EXTERIOR.

1. INTRODUCCIÓN
2. MICROPROCESADORES
3. ESTRUCTURA
4. TIPOS
5. COMUNICACIÓN CON EL EXTERIOR

23
1. INTRODUCCIÓN
El microprocesador es la Unidad Central de Proceso o UCP. Los términos UCP, microprocesador o micro,
se usan indistintamente. El micro es un componente electrónico que integra millones de transistores. Se le
identifica como el cerebro del sistema por ser el responsable del procesamiento de las instrucciones.
Los transistores implementan funciones lógicas y aritméticas binarias. Poseen una alta capacidad de
integración, fiabilidad, poco consumo de energía y son baratos. Las tecnologías de integración han ido
evolucionando y se habla de LSI (Large Scale Integration) que integra diversos chips y cientos de
transistores y VLSI (Very LSI) que permite integrar varios millones de transistores.
Su evolución está ligada a la ley empírica de Moore, que afirma que la capacidad de los micros se duplica
cada año. Hasta la fecha, esta ley se ha ido verificando.
2. MICROPROCESADORES
El micro define las prestaciones del sistema. Su funcionamiento consiste en leer las instrucciones de la
memoria, decodificarlas, es decir, interpretar lo que hay que hacer, ejecutar la instrucción y almacenar el
resultado, si lo hay. Este ciclo se repite indefinidamente.
El micro suele ser rectangular o cuadrado y se monta sobre un zócalo o bien va soldado directamente a la
PB, si es un equipo sencillo (router doméstico). La parte externa consta de un encapsulado, que rodea al
silicio para ofrecer consistencia e impedir el deterioro. Está acoplado a los conectores externos o “patillas”.
El zócalo del micro recibe el nombre de socket. Existe otro tipo de zócalo, en desuso, llamado slot. Ambos
tipos se muestran en la figura. Las variantes de zócalos tipo slot más conocidos son SEC (Single Edge
Contact) es un diseño de empaquetamiento de procesadores Intel en el que el procesador y los chips
opcionales de caché L2 se montan en una tarjeta de circuito impreso, sellado en un cartucho de metal y
plástico. El cartucho es insertado en la PB con un conector de ranura.
Existen muchas variaciones del factor de forma cartucho SEC: el SECC (SEC Cartridge) tiene una cubierta
y una placa térmica; el SECC2 con cubierta y sin placa térmica; y el SEPP (Single Edge Processor
Package), usado sólo en procesadores Celeron, no tiene cubierta o placa térmica. En implementaciones sin
placa térmica, el disipador de calor está unido directamente al paquete o interior del procesador.
Los procesadores modernos, tanto Intel como AMD, usan zócalos ZIF (Zero
Insertion Force) más manejables. La denominación PGA (Pin Grid Array)
referencia un empaquetamiento de chip con numerosos pines para su inserción
en el zócalo. El diseño PPGA (Plastic Pin Grid Array) es una alternativa al
empaquetamiento cerámico tradicional.
La tendencia en el diseño de circuitos es a disminuir la tensión de trabajo, para reducir el consumo, la
disipación de calor y por tanto aumentar la frecuencia de trabajo del micro. Los valores históricos de las
tensiones de trabajo rondaban los 5V, actualmente los 3.3V externos y algo menos para alimentación del
núcleo. Un regulador de tensión integrado (VRM), convierte la tensión de la fuente de alimentación al nivel
requerido por el núcleo. En general, el micro lo ajusta automáticamente con el control de la PB.
Cuando se dice que un procesador trabaja a una frecuencia de X GHz, se hace referencia al reloj con el que
trabaja el micro, es decir, su referencia temporal. El micro se alimenta con una señal de reloj de X GHz.
Procesar una instrucción puede llevar varios ciclos de reloj. Por tanto, en general no se puede decir que si
un procesador trabaja a X GHz, ejecute X miles de millones de instrucciones por segundo. El número de
instrucciones por segundo que es capaz de procesar se expresa en MIPS (millones de instrucciones
procesadas por segundo).
Existen otras unidades como los MFLOPS, o millones de instrucciones de coma flotante que se realizan por
segundo pero el concepto es el mismo. Para comparar el rendimiento de dos procesadores diferentes, bajo
condiciones semejantes, deben usarse las mismas magnitudes de medida. Es normal también hablar de las
instrucciones por ciclo, no por segundo, o IPC. Si se multiplica el IPC por la frecuencia se obtiene el número
de instrucciones por segundo. Los fabricantes suelen usar diferentes formas de medida. Muchas veces por
razones comerciales.
La señal de reloj se obtiene de multiplicar por un determinado factor la frecuencia base de la PB. Si el
fabricante lo permite, el factor de multiplicación se podrá configurar, bien en la BIOS, o antiguamente, en la
PB, mediante jumpers. Si se superan las especificaciones del fabricante para obtener una frecuencia de
trabajo del micro mayor, se habla de overclocking. Sin embargo, el aumento de la frecuencia de trabajo,
genera un aumento de la temperatura lo que podría generar inestabilidades.
Para disipar el calor que produce el micro se usan disipadores, que son buenos conductores del calor, que
en contacto con el micro, extraen el exceso de temperatura mediante ventiladores. El aspecto típico de los

24
disipadores es el de un radiador, con numerosas láminas, para incrementar la superficie de contacto con el
aire y realizar un enfriamiento más efectivo. Para facilitar la conducción de calor es habitual usar un
interface térmico, como grasa blanca de zinc o similar. Por fin, sobre el disipador se suele montar el
ventilador para extraer el aire caliente.
Otro factor que se especifica en los microprocesadores son las etapas de
pipeline. Básicamente la técnica de pipeline es conseguir que la lógica interna
aproveche al máximo el tiempo, haciendo que las tareas rápidas, en vez esperar
a las lentas, vayan haciendo otras tareas. En principio cuantas más etapas de
pipeline existan, más eficiente será.
3. ESTRUCTURA
Internamente la UCP consta de Unidad Aritmético Lógica (UAL) y Unidad de Control (UC). La UC gestiona
el orden de ejecución de instrucciones, arbitraje de buses, etc. La UAL es la encargada de las operaciones.
Existe un coprocesador matemático o unidad de coma flotante (FPU), que por su importancia tiene entidad
propia y suele hacerse referencia a su potencia. La UC integra circuitos de control y sincronización.
Otro elemento que forma parte del micro es la memoria caché. Es una memoria índice, muy rápida que
almacena datos de uso habitual. Esta memoria acelera el procesamiento, porque internamente el micro
trabaja más rápido que si tiene que consultar datos en la MP (RAM).
Dejando de lado la evolución histórica y distintos niveles de caché, debe distinguirse la memoria caché
interna integrada en el procesador, a la que en general se denomina caché de nivel 1 o caché L1 y la
memoria caché, externa, también muy rápida (más que la RAM) que cumple las mismas funciones. Se la
denomina caché externa (por no estar integrada en el micro), de nivel 2 o caché L2.
Los niveles de caché a veces son confusos, porque la arquitectura del microprocesador cada vez integra
más niveles. Por tanto puede haber textos que hablen de caché de nivel 2 o 3 integrada en el procesador.
Lo importante es diferenciar, si se refiere a memoria caché interna o externa.
La función de la memoria caché es indexar datos. Sirve como índice. Por tanto, existe un tamaño óptimo,
que suele facilitar el fabricante. Una memoria caché demasiado grande puede tener efectos adversos. Un
índice tan extenso como un libro no tendría sentido. Se supone, entonces, que cada fabricante optimiza el
tamaño de caché interna para sus procesadores. En cualquier caso ese parámetro no se puede variar. Sin
embargo la caché externa, si viene en un zócalo, puede ser ampliada. Si está soldada no se puede ampliar.
El bus de direcciones transporta la dirección de memoria que se leerá o escribirá. Ese dato estará presente
en el bus de datos. Si un micro tiene una tecnología que usa un bus de direcciones de 32 bits, podrá
32
direccionar como máximo 2 posiciones, es decir 4 GB de memoria RAM. A partir de la serie x386, los
procesadores usan tecnología de 32 bits, y se evoluciona hacia los 64. Los más conocidos pueden ser los
64
Itanium de Intel o los Athlon 64 de AMD. Con 64 bits en el bus de datos se pueden direccionar 2 bits, unos
18
16.000 PB, es decir, 16·10 bytes.
Otro aspecto de la estructura del micro es su conjunto de instrucciones. Un micro siempre ejecuta las
mismas instrucciones. Es una característica de la arquitectura. Un tamaño óptimo del conjunto de
instrucciones ofrece mayor rendimiento. Las arquitecturas que se emplean son CISC y RISC.
CISC es Complete Instruction Set Code, basado en la implementación de un conjunto amplio de
instrucciones. RISC es Reduced ISC, basado en utilizar un conjunto reducido, lo que facilita el diseño del
micro y la ejecución de las instrucciones más deprisa, a costa de usar programas más largos. Se tiende a
usar tecnologías RISC, un tanto amplias.
El conjunto de instrucciones empleado habitualmente se conoce como el conjunto x86, que ha sufrido
ampliaciones a lo largo de su evolución, algunas de las más conocidas pueden ser MMX (MultiMedia
eXtensions/Matriz Math eXtensions) de Intel o 3DNow! de AMD. Básicamente lo que añaden son mejoras
en el tratamiento de video e imágenes y mejora de los procesos de entrada/salida. Otras ampliaciones del
ISC fueron SEE y SEE2 (Streaming SIMD Extensions) para mejorar el proceso de gráficos y sonido.
La arquitectura de los micros evolucionó a partir del Pentium II mejorando el rendimiento del bus,
diferenciando datos de entrada y de salida. Es la arquitectura de bus dual independiente.
La tecnología Hyper-Threading consiste en el manejo, por parte del micro, de dos ISC distintos
simultáneamente. De esta forma un procesador aparece como dos procesadores virtuales. Internamente se
disponen dos conjuntos de registros y otros componentes de la arquitectura, compartiendo caché, buses y
unidades de ejecución. Cada procesador virtual trata una única secuencia de ejecución o hilo (thread).
Por fin, el coprocesador matemáticos (o FPU, Unidad de Punto Flotante) es otro elemento fundamental de la
estructura del micro. Es el elemento encargado de liberar a la UAL de las operaciones punto flotante. Esta

25
organización acelera el proceso y por ello los procesadores a partir del 486 lo integran. Las FPU realizan
operaciones matemáticas de alto nivel 100 veces más rápido que el procesador principal.
4. TIPOS
Un breve resumen de la evolución de los micros los debe presentar agrupados por generaciones. Así la
primera dataría de 1.980 y se refiere a los procesadores tipo 8086 y 8088. La segunda generación en 1.982
con los micros tipo 286. La tercera aparece hacia 1.985 y son los 386. Estos micros comienzan la
arquitectura de 32 bits. La cuarta generación se situaría en torno a 1.989 y estaría formada por los
procesadores tipo 486. La quinta generación se sitúa hacia 1.993 y son procesadores tipo 586. Por razones
comerciales, se produjo una diferenciación y así Intel los llamó Pentium, AMD K5 y Ciryx 6x86 o M1.
La sexta generación suge en 1.995. Citar los nombres comerciales como Pentium II y III, los AMD K6 o
Ciryx 6x86 MX. De la séptima generación, a partir del año 2.000 citar los Pentium 4, AMD Duron y Athlon, y
los micros de 64 bits, como los Intel Itanium y los AMD Opteron o Athlon64. La última generación, ya casi
penúltima serían los procesadores duales (Intel Core Duo, Core 2 Duo, los futuros AMD Barcelona, etc.) y
los últimos núcleos cuádruples (Quad Core).
La evolución ha seguido un camino de mejoras constantes: mayor integración, más pipeline, mejor conjunto
de instrucciones, más rapidez, menor consumo, etc. Existe una ley empírica, basada en la experiencia, la
ley de Moore que predice que aproximadamente cada año y medio o dos años se duplica el número de
transistores que se pueden integrar en un microprocesador. No es una ley científica, ni matemática, pero el
caso es que hasta hoy se ha cumplido. Gordon Moore fue uno de los fundadores de Intel.
Cada tipo de microprocesador, define un modo de trabajo, denominado modo de procesador, que se
relacionan con los entornos operativos, afectando a su capacidad e instrucciones. El modo controla la
manera en que el micro percibe y gestiona la memoria del sistema y las tareas que la utilizan. Los micros
con palabras de 32 bits pueden funcionar en tres modos de operación: real, protegido y real virtual.
En el modo real se habilita compatibilidad con el procesador 8086 original. El direccionamiento de memoria
se limita a 1MB. El modo protegido amplía el direccionamiento de memoria y pueden establecerse los
niveles de modo real y de protección restringidas para evitar conflictos en el software y control del sistema.
En el modo real virtual el direccionamiento de memoria se limita a 4 GB, pueden establecerse niveles de
protección restringida (para evitar conflictos software) y además mantener sesiones compatibles individuales
de modo real separadas.
5. COMUNICACIÓN CON EL EXTERIOR
Para realizar las funciones de comunicación con el exterior de la UCP, el micro se apoya en el uso de
buses, como lo son el:
Bus de datos. Es el número de bits (líneas) que puede transferir simultáneamente el procesador en un ciclo.
El bus típico es de 32 bits y se evoluciona al de 64. Debe distinguirse de otro bus de datos, que se define a
nivel interno, y que por tanto se crea en el proceso de fabricación, el bus de datos interno, que es el número
de bits que contiene las palabras manejadas internamente por el procesador. Por tanto coincide con el
tamaño de los registros internos. El bus interno determina cómo transferir los datos dentro del chip.
Bus de direcciones. Es el número de líneas que transportan la información de direccionamiento de la MP.
Determina el tamaño de memoria direccionable.
Bus de control. Posee un número de líneas que varía según el micro. Cada fabricante lo implementará como
considere más adecuado y sirve para transportar microinstrucciones al resto de componentes.

26
TEMA 6. SISTEMAS DE ALMACENAMIENTO EXTERNO. TIPOS. CARACTERÍSTICAS Y
FUNCIONAMIENTO.

1. INTRODUCCIÓN
2. SISTEMAS DE ALMACENAMIENTO EXTERNO
3. TIPOS
3.1. Elementos Magnéticos
3.1.1. Cinta magnética
3.1.2. Disco Flexible
3.1.3. Disco Duro Externo
3.2. Elementos Ópticos
3.2.1. CD-ROM
3.2.2. DVD
3.2.3. Blu-Ray
3.3. Elementos de Estado Sólido
4. CARACTERÍSTICAS Y FUNCIONAMIENTO
4.1. Tecnología Magnética
4.2. Tecnología Óptica
4.3. Tecnología de Estado Sólido

27
1. INTRODUCCIÓN
Los sistemas de almacenamiento externo son elementos de memoria transportables independientes del PC.
En general podría decirse, no conectados a la placa base. Los más utilizados en la actualidad son discos
magnéticos, ópticos y memorias flash.
2. SISTEMAS DE ALMACENAMIENTO EXTERNO
Los sistemas de almacenamiento externo han sufrido una evolución rápida en poco tiempo. Los primeros
sistemas fueron tarjetas y cintas de papel perforado, cartones con agujeros con los que representaban la
información de forma binaria (agujero=1, no agujero=0), pero no eran reutilizables.
El desarrollo de las tecnologías magnética, óptica y de estado sólido ha ido ofreciendo mejores
prestaciones, resumidas en mayor capacidad, velocidad y coste relativamente menor.
3. TIPOS
3.1. Elementos Magnéticos
Los elementos de almacenamiento magnético se basan en la polarización, aún en ausencia de alimentación
de partículas ferromagnéticas. Un sentido de polarización representa un uno lógico; el otro sentido un cero.
3.1.1. Cinta magnética
Fue el primer dispositivo magnético usado. Es una cinta plástica cubierta de material ferromagnético. Los
datos se registran como combinación de puntos sobre pistas paralelas al su eje longitudinal. El acceso
secuencial es su principal característica: para llegar a la información almacenada en un punto, debe pasarse
por los anteriores. Aunque cada vez menos, todavía se usan para copias de seguridad.
3.1.2. Disco Flexible
El disco flexible, o disquete, se basa en los mismos principios que la cinta magnética y a día de hoy está
obsoleto. Internamente contaba con dos caras de almacenamiento organizadas en pistas (círculos
concéntricos del disco) y sectores (porción angular del disco) de capacidad típica 512 Bytes.
3.1.3. Disco Duro Externo
Un disco duro es un conjunto de discos magnéticos montados sobre un mismo eje. Para las operaciones de
lectura y escritura se cuenta con un cabezal para cada cara de los discos y un motor para hacerlos girar y
posicionarlo. No hay diferencias con respecto a la tecnología ni al funcionamiento de un disco duro interno.
La estructura física de un disco duro está organizada en caras, que son las superficies de los discos que se
montan en su eje, pistas, que son los anillos concéntricos de grabación que existen en cada cara, los
cilindros, que son el conjunto de pistas con la misma posición en todos los discos, los sectores o divisiones
n
angulares del disco con capacidad de 512 B y los cluster o conjunto de 2 sectores consecutivos.
A nivel lógico un disco duro se puede dividir en particiones o divisiones lógicas. Como mínimo han de tener
una partición primaria y como máximo cuatro. Para poder realizar más particiones, se pueden definir
particiones extendidas, que son particiones lógicas que permiten realizar a su vez más subparticiones.
Por tanto un disco duro tendrá como mínimo una partición primaria, donde se instalará el SO. Si se desean
tener más de cuatro particiones habrá que crear una partición extendida, de las que sólo podrá haber una,
dentro de la cual se podrán realizar las particiones que se deseen. Las particiones deben tener un formato
lógico para organizar los datos. Especificar el formato lógico de datos en el disco duro recibe el nombre de
formateo. Tipos de formateo son FAT, NTFS (en sistemas WS) o ext3, ext4, NFS, más extendidos en el
mundo Linux. En general, por compatibilidad, los discos duros externos suelen formatearse en formato FAT.
La conexión del disco duro externo al PC se puede realizar mediante un interfaz USB, una bahía hueca que
desemboque en un conector IDE o SCSI, o cualquier otro método que sea factible.
3.2. Elementos Ópticos
Los elementos de almacenamiento óptico se componen de un disco de material plástico o similar con una
capa de aluminio reflectante y protegido con una laca protectora transparente. El disco dispone de zonas
denominadas lands (zonas lisas) y pits (zonas con agujeros), para representar la información.
3.2.1. CD-ROM
El CD (Compact Disk) comenzó utilizándose para almacenar música, pero debido a su naturaleza digital, su
campo de aplicación se amplió a los datos. El CD-ROM es un dispositivo de sólo lectura, aunque existen
discos regrabables como los CD-R y CD-RW.

28
El CD es muy popular por ofrecer alta capacidad en poco espacio a un coste bajo. La principal característica
es su fiabilidad. No les afectan los campos magnéticos, apenas la humedad ni el calor y pueden aguantar
golpes importantes. Por el contrario, precisan un cierto cuidado frente al polvo e imperfecciones en su
superficie. La capacidad típica es de 650MB.
Los CD grabables son de dos tipos: CD-R (Recordable), grabable una única vez, y CD-RW (ReWritable por
motivos comerciales, en un principio se denominaron Erasable, borrables), regrabable varias veces. Son
idóneos para datos que poco actualizados, copias de seguridad, etc.
Los programas de grabación llevan implementados drivers para la mayoría de grabadoras. En la grabación
el flujo de datos que llega a la grabadora debe ser constante por tanto, es necesario insertar una memoria
intermedia denominada buffer memory. La velocidad de grabación y lectura se mide en relación al estándar,
que es el del audio (1x=150 Kb/s).
3.2.2. DVD
Podría decirse groseramente que el DVD es un CD con mayor capacidad, conseguida incrementando la
densidad de pistas y el tamaño del pit, por lo que se hace necesario reducir la longitud de onda del láser.
Un lector de DVD puede leer cualquier CD, pero no al contrario. La capacidad típica de un DVD es 4,7 GB.
Existen DVDs de doble capa, en que el laser se enfoca para una u otra. Esta característica hace que doblen
la capacidad de los normales llegando a los 8,5 Gb y usando las dos caras se llega a 17 Gb.
3.2.3. Blu-Ray
Blu-Ray es un formato de disco óptico de nueva generación. Su capacidad de almacenamiento es de 25 GB
en una capa y llega a 50GB en doble capa. Utiliza luz azul de menor longitud de onda que el DVD. Es más
resistente a ralladuras, evitando errores de lectura.
3.3. Elementos de Estado Sólido
Los dispositivos de almacenamiento externo basados en tecnología de estado sólido (SSD, Solid State
Drive) utilizan memorias tipo flash, realizadas con tecnología de silicio. Al no tener partes móviles son más
rápidas que los discos tradicionales, más resistentes a impactos, duran más y no generan ruido.
Se componen de memorias EEPROM (ROMs borrables eléctricamente) organizadas en matrices de
transistores. Se distinguen las realizadas con celdas tipo NOR, y las de celdas tipo NAND. Éstas no
permiten acceso aleatorio, son más baratas y el mecanismo de borrado es más sencillo, por lo que son las
que implementan la mayoría de memorias USB y tarjetas flash.
Sus aplicaciones típicas son dispositivos USB, tarjetas flash, reproductores MP3,
teléfonos móviles, etc. En el futuro, si se alcanzan capacidades de almacenamiento
similares y precios competitivos podrían sustituir a los discos duros.
4. CARACTERÍSTICAS Y FUNCIONAMIENTO
4.1. Tecnología Magnética
Para la lectura y escritura, los dispositivos magnéticos precisan una cabeza lectora, que con un electroimán
capta o induce un campo magnético. La velocidad de rotación típica es de 7200 rpm. Los datos, a nivel
macroscópico poseen tres coordenadas, pista, sector y cilindro, lo que ofrece acceso aleatorio y mayor
velocidad que los dispositivos secuenciales. Los cortes súbitos de alimentación y golpes pueden dañar los
dispositivos, al colisionar la cabeza lectora con la superficie de los discos.
Una característica de los discos duros y por tanto también de los externos es su tiempo de E/S o tiempo que
se tarda en leer o escribir un dato. Básicamente se compone de dos tiempos: el de posicionamiento, o
tiempo de un cabezal en desplazarse hasta la pista a acceder y el tiempo de latencia, empleado en girar y
dejar el sector al que se accede debajo de la cabeza lectora. Si los datos a leer no están almacenados en
una zona continua del disco, se habla de fragmentación. Una fragmentación excesiva puede mermar el
rendimiento, al requerir numerosos movimientos de la cabeza.
Para almacenar en el disco la información ha de organizarse según cierto criterio. Esta organización es el
formateo del disco duro. El formateo puede ser físico (de bajo nivel) y lógico. El físico es el que trae el disco
de fábrica y establece sectores y pistas. Puede formatearse a bajo nivel con algunos programas. Cada
sector contiene su dirección en cilindro, cabeza y sector (CHS) y un campo de 512 B para datos.
El formateo lógico o de alto nivel establece la estructura de disco para el SO. Se apoya en una tabla de
particiones que almacena los sectores que pertenecen a cada partición del disco. Una partición se comporta
de forma lógica como un disco independiente. Además existe un sector de arranque en el primer sector de
cada disco y sectores de uso del SO dedicados a describir la organización de ficheros.

29
4.2. Tecnología Óptica
La tecnología óptica de almacenamiento se basa en un haz láser que lee o escribe marcas en la superficie
de un disco plástico recubierto de material reflectante y una capa de protección. Al recibir un rayo laser, la
capa reflectante refleja la luz de forma diferente, en función de si posee pit o no, lo que es interpretado por
el lector.
La velocidad de lectura mínima en un CD es 150KBps, velocidad de lectura de los reproductores de audio.
Los datos pueden ser leídos a velocidad múltiplo de ésta, denominándose 2x, 4x, etc. En función de ésta
velocidad de giro, puede implementarse tecnología CLV (velocidad variable) o CAV (velocidad constante).
Los pits y lands se distribuyen en una pista continua en espiral a lo largo de todo el disco y que presenta la
misma densidad lineal. La secuencia de lectura para un disco óptico es posicionar el cabezal en la zona en
la que estén los datos, dirigir el láser a la superficie del disco y en función del reflejo obtenido en el
fotodetector, interpretar la información leída.
Los bytes se codifican mediante una modulación 8 a 14, en la que cada 1 debe estar seguido al menos de
dos 0. La secuencia obtenida se agrupa en tramas de 588 bits, de los cuales 24 se usan para sincronismo,
14 de control, 536 de datos y 14 de redundancia.
La grabación de los datos puede realizarse mediante estampado o con multisesión. La grabación por
estampado se usa para copias masivas. El patrón se graba con láser sobre un disco de cristal pulido
cubierto de material fotosensible, se revela y cubre con níquel. El positivo generado se usa para la estampar
por inyectado de resina de policarbonato. Por último se aplica la capa de aluminio y la laca protectora.
La grabación multisesión se efectúa con grabadores. En lugar de accidentes físicos, los discos se simulan
con métodos ópticos. Estos discos tienen una capa recubierta de colorante. Cuando el colorante es
quemado en un punto, la reflectividad de ese punto se reduce simulando un pico.
4.3. Tecnología de Estado Sólido
La mayoría de dispositivos de estado sólido se basa en tecnología de puertas NAND, que ofrecen más
compacidad y robustez. Al no tener, prácticamente tiempo de acceso (no poseen partes móviles), su
velocidad de trabajo es mucho mayor que la de los dispositivos magnéticos y ópticos. Existen dispositivos
SSD que alcanzan velocidades de 300 MBps de lectura y escritura simétricos.
Como componentes de un dispositivo de estado sólido se distinguen la controladora, caché y condensador.
La controladora gestiona las células y los conectores de E/S. Es el firmware del dispositivo. La memoria
caché es una pequeña memoria intermedia que agiliza las operaciones. El condensador mantiene la
integridad de los datos de la caché, si existen incidencias como cortes bruscos de alimentación.
En general, se combinan puertas NAND en paralelo (técnicas de pipeline) dentro de un SSD, lo que
incrementa el ancho de banda y reduce la latencia.

30
TEMA 7. DISPOSITIVOS PERIFÉRICOS DE E/S. CARACTERÍSTICAS Y FUNCIONAMIENTO.

1. INTRODUCCIÓN
2. DISPOSITIVOS PERIFÉRICOS DE E/S
2.1. Monitor
2.2. Teclado y Ratón
2.3. Impresora y escáner
2.4. Micrófono, auriculares y cámaras
3. CARACTERÍSTICAS Y FUNCIONAMIENTO
3.1. Monitor
3.2. Teclado y Ratón
3.3. Impresora y escáner
3.4. Micrófono, altavoces y cámaras

31
1. INTRODUCCIÓN
Un periférico es un elemento hardware dispuesto en el exterior de un equipo, de un ordenador, que permite
realizar operaciones de entrada y salida (E/S).
2. DISPOSITIVOS PERIFÉRICOS DE E/S
Distinguiendo en un ordenador a nivel macroscópico una parte física, hardware y una lógica, el software, en
el hardware se incluirían componentes y periféricos. Los componentes o dispositivos se referirían a partes
internas del chasis del equipo y los periféricos a partes externas.
Dentro de los periféricos de E/S, podrían diferenciarse los que sirven sólo como interfaz de entrada o de
salida, o los que realizan ambas funciones. Esta distinción no se hace aquí, y se tratan en el mismo
conjunto independientemente de la naturaleza en sentido estricto que posea el periférico. También podrían
distinguirse entre periféricos de almacenamiento o de comunicaciones.
Se actúa igual. De hecho y para no repetir la exposición, los dispositivos de almacenamiento se acaban de
exponer en el tema anterior y los de comunicaciones se expondrán en el último bloque. Por tanto, de los
dispositivos periféricos de E/S, destacan los que se presentan a continuación.
2.1. Monitor
El monitor es un periférico puro de salida que sirve para presentar información de forma visual en una
pantalla. Los monitores actuales son LCD o TFT. Los CRT (de tubo de rayos catódicos) prácticamente están
obsoletos, sin embargo, ofrecían niveles de contraste superiores. Los monitores planos ofrecen ventajas
como menor coste y consumo (un tercio), menos vibración de imagen, cero radiaciones y ergonomía.
2.2. Teclado y Ratón
El teclado es el interfaz encargado de enviar los caracteres pulsados al PC para su tratamiento. Es un
periférico de entrada puro. Existen 3 tipos fundamentales de teclados: De membrana, silenciosos y con
tacto blando, mecánicos, más precisos y ruidosos y teclados ergonómicos, de formas romas orientadas a
ofrecer más comodidad a muñecas y codos.
El ratón es un interfaz orientado a entornos gráficos que mueve un puntero en pantalla. Es un periférico de
entrada puro. Existen varios tipos: alámbricos, inalámbricos, ópticos, etc. Podría quedar obsoleto si se
populariza el uso de las pantallas táctiles.
2.3. Impresora y escáner
La impresora es el periférico utilizado para imprimir información en papel. Existen tres tipos de impresora
clásicos: matriciales, de tinta y láser. Es un periférico puro de salida. Por su parte, el escáner es un
periférico de entrada, utilizado para digitalizar imágenes. Es habitual encontrar periféricos en el mercado
que integren las funciones de impresora, escáner y fax.
2.4. Micrófono, auriculares y cámaras
El micrófono es el periférico de entrada que permite registrar sonido para su tratamiento. Los ordenadores
comerciales suelen integrar un micrófono de bajo coste y calidad. Los altavoces y auriculares son periféricos
de salida que reproducen sonidos. Por tanto, realizan la función inversa al micrófono.
Las cámaras son periféricos de entrada que permiten capturar imágenes en movimiento. Una calidad de
imagen aceptable ronda los 30 cuadros por segundo, dado que la mínima frecuencia que capta el ojo
humano sin discontinuidad son 25 imágenes por segundo. Los problemas de imágenes discontinuas en
videoconferencia suelen deberse a la velocidad de conexión.
3. CARACTERÍSTICAS Y FUNCIONAMIENTO
2.1. Monitor
De entre las características de los monitores, hay que empezar por distinguir si la señal de video utilizada es
analógica o digital. Actualmente, prácticamente todos utilizan señales digitales por sus prestaciones.
Estándares analógicos a conocer son VGA, SVGA, con resolución de 800x600 píxeles y 24 bits de color
siguiendo la codificación RGB (rojo, verde, azul), y la especificación VESA.
Las características de monitores digitales y de tecnologías tipo LCD se resumen en un nivel de brillo de
unas 400 cd/m2, candelas por metro cuadrado, lo que define su luminancia, no poseen parpadeo de
imagen, ofreciendo una fuente de luz constante sobre la pantalla. Los monitores LCD muestran imágenes
geométricamente perfectas y su vida útil típica es de 50.000 horas hasta llegar a la mitad de brillo que el
producido cuando es nuevo, medida estándar de la industria para la vida del producto, más del doble que
uno CRT. Entre las características de una pantalla hay que conocer:

32
Pixel: Es la unidad mínima representable.
Tamaño de punto (dot pitch). Es el tamaño medio del espacio entre dos pixeles. Da idea de la nitidez de
imagen. Tamaños de punto más pequeños producen imágenes más uniformes. Valor habitual es 0,28mm.
Luminancia. Medida de luminosidad, en candelas.
Contraste: Proporción de brillo entre un píxel negro y un píxel blanco. El coeficiente de contraste de imagen
se refiere a la percepción de la intensidad del color según la proporción de brillo. A mayor coeficiente, mayor
es la intensidad de los colores. Se suele expresar en cifras del estilo 50000:1.
Área útil. Tamaño de la pantalla, que no coincide con el área real utilizado para representar los datos.
Ángulo de visión. Máximo ángulo con el que ver el monitor sin degradación de imagen.
El funcionamiento de un monitor LCD se resume en un mapeado de pantalla que envía la información de
cómo ha de iluminarse cada transistor que lo compone. El pixel se mantiene encendido hasta que se le
indica su apagado o el cambio de color.
2.2. Teclado y Ratón
Como características de los teclados habituales debe decirse que cuentan con
entre 99 y 108 teclas que suelen organizarse en cuatro bloques, de función,
alfanuméricas, numéricas y especiales.
Las teclas de función son de F1 a F12, cuya función depende del programa que las use. Las teclas
alfanuméricas contienen los números y letras al estilo de las máquinas de escribir y forman la parte central
del teclado. Las teclas numéricas o teclado numérico se dispone a la derecha y contiene números y
operaciones. Se activa con la tecla Bloq Num. En los portátiles se integra con el teclado alfanumérico. Las
teclas especiales son el grupo de Imp Pant, Bloq Despl, Insert, teclas de cursor, etc.
El funcionamiento del teclado se gestiona con un circuito controlador microprogramado (firmware), que
realiza una exploración matricial cuando se presiona una tecla. La posición de cada tecla es identificada con
un número. Cuando se pulsa una tecla, el controlador envía un código identificativo (Scan Code), diferente
si la tecla no está pulsada, de forma que también se identifique el caso en que varias teclas se pulsen a la
vez. El nuevo código de una tecla libre se denomina Break Code.
El código generado es procesado por el controlador, que en general origina una interrupción hardware que
hará que el procesador ejecute su rutina de servicio.
En cuanto a las características de los ratones citar que disponen de dos botones. El izquierdo se usa para
seleccionar, con una o dos pulsaciones y el derecho, que suele ofrecer acceso al menú contextual del SO.
En cuanto a su funcionamiento depende de la tecnología que utilice para capturar el movimiento. Los
ratones mecánicos poseen una esfera que mueve dos rodillos que a su vez codifican el desplazamiento
realizado y esa información es procesada por el controlador del dispositivo. Los ratones ópticos identifican
un área con un sensor de movimiento que lo detecta mediante las variaciones en ese área. Del mismo
modo se codifica el movimiento y el controlador lo interpreta y ofrece la información al SO.
2.3. Impresora y escáner
La velocidad de una impresora se suele medir con dos parámetros: ppm o páginas por minuto y cps o
caracteres por segundo que es capaz de imprimir. La resolución es la calidad de imagen que se puede
obtener de la impresora, medida en número de puntos individuales capaz de dibujar.
Se habla de ppp, puntos por pulgada cuadrada. Una impresora con resolución de "600x300 ppp" quiere
decir que en cada línea horizontal de una pulgada se imprimen 600 puntos y en vertical 300. Si sólo aparece
una cifra suele significar que la resolución horizontal es igual a la vertical.
Una impresora puede funcionar de varias formas. Las impresoras matriciales o "de impacto" imprimen
mediante el impacto de moldes sobre una cinta de tinta. Fueron las primeras y están obsoletas. Las de tinta
son aquéllas en las que la tinta se encuentra en forma más o menos líquida, no impregnando una cinta.
Destacan por la sencilla utilización del color.
Las impresoras láser presentan mayor resolución. La impresión se consigue mediante un láser que dibuja la
imagen en un tambor que gira hasta impregnarse de un polvo llamado tóner que se adhiere por la carga
eléctrica. El tambor gira y se encuentra con la hoja, en la que imprime el tóner que forma la imagen.
Características de un escáner son la resolución, medida en ppp, que se define como el número de puntos
individuales de una imagen que es capaz de captar. Una resolución de 300x600 ppp capta 300 puntos
individuales en cada línea horizontal de una pulgada y 600 puntos en vertical. La resolución óptica viene
dada por el CCD.

33
El funcionamiento consiste en un proceso de captación de una imagen resumirdo en iluminar la imagen con
un foco, conducir la luz reflejada mediante espejos hacia un dispositivo CCD que transforma la luz en
señales eléctricas que se transforman en digitales en un DAC (conversor analógico-digital) y se transmite el
caudal de bits resultante al ordenador.
El CCD (Charge Coupled Device, dispositivo acoplado por carga eléctrica) es el elemento fundamental del
escáner. Consiste en un elemento electrónico que reacciona ante la luz, transmitiendo más o menos
electricidad en función de la intensidad y color de la luz que recibe.
2.4. Micrófono, altavoces y cámaras
Las características de los micrófonos pueden resumirse en su rango dinámico, que sería el rango de
frecuencias en los que el micrófono responde adecuadamente y la respuesta en frecuencia, que es la
intensidad de señal eléctrica producida para una determinada presión sonora, a distintas frecuencias.
El funcionamiento del micrófono es el de un transductor electroacústico. Un caso típico es el de una
membrana que recoge la presión acústica golpeando una resistencia basada en partículas carbónicas. La
resistencia cambiará su valor en función de la presión que ejerza la membrana, modulando por tanto la
corriente a su través, lo que podrá ser convenientemente registrado.
Las características de los altavoces pueden resumirse citando su respuesta en frecuencia, potencia,
direccionalidad y sensibilidad.
La respuesta en frecuencia en frecuencia es el comportamiento que presenta el altavoz en un rango de
frecuencias determinado, lo ideal es que sea el mismo en todo el rango. La potencia, se refiere a la potencia
eléctrica, no acústica máxima que es capaz de aceptar el altavoz sin saturar. La direccionalidad refleja las
direcciones del espacio que se ven favorecidas en la emisión del sonido y la sensibilidad representa una
medida de la eficiencia entre la señal eléctrica aceptada y la presión sonora generada (expresada en dB/W).
Por su parte, el funcionamiento de un altavoz, podría resumirse como el inverso al del micrófono: A partir de
un código sonoro, se efectúa una presión sobre transductores que generan el sonido.
La característica más notable de una cámara es su resolución. Es una medida de la calidad de imagen. Se
mide en píxeles. Una resolución de 5 Megapíxeles registra 5 millones de puntos de información. Cuanto
mayor sea, mayor será la capacidad de ampliación sin pérdida de calidad de la imagen. El funcionamiento
es similar al del escáner: un transductor codifica la información luminosa y la registra para su tratamiento.

34
TEMA 8. COMPONENTES HW COMERCIALES DE UN ORDENADOR. PLACA BASE. TARJETAS
CONTROLADORAS DE DISPOSITIVO Y DE ENTRADA SALIDA.

1. INTRODUCCIÓN
2. COMPONENTES HW COMERCIALES DE UN ORDENADOR
3. PLACA BASE
3.1. Chipset
3.2. BIOS
4. TARJETAS CONTROLADORAS DE DISPOSITIVO Y DE ENTRADA SALIDA
4.1. Controladoras de dispositivo
4.2 Controladoras de E/S
4.2.1. Tarjeta de video
4.2.2. Tarjeta de sonido
4.4.1. Tarjeta de red

35
1. INTRODUCCIÓN
El hardware de un ordenador es el conjunto de componentes físicos que lo forman. Su estudio puede
dividirse en el hardware externo, también conocido como periféricos (teclado, ratón, monitor, etc.) y el
hardware interno o componentes, relacionados entre sí mediante la placa base.
2. COMPONENTES HW COMERCIALES DE UN ORDENADOR
Se puede definir el hardware de un ordenador como el conjunto de componentes que integran la parte
material del ordenador, que es como lo define la RAE. Esto incluiría los componentes electrónicos,
conectores, puertos, dispositivos, cableado, etc. Se opone al término software, que se refiere a la parte
lógica y al firmware, la parte intermedia, referida a la programación dura, o de bajo nivel de componentes.
El hardware comercial puede dividirse en componentes (a veces se usa la palabra dispositivo con este
significado) y periféricos. Los componentes, que pueden ser referidos muchas veces como dispositivos, se
refieren a las partes internas: memoria RAM, CPU, discos duros, etc. Los periféricos serían los elementos
que se disponen en el exterior del equipo, tales como el monitor, ratón, impresora, etc.
También podría establecerse una distinción entre hardware básico y complementario. El básico sería el
mínimo imprescindible para que el ordenador funcione y el complementario aquel que realiza alguna función
no estrictamente necesaria para el funcionamiento.
Así, el hardware básico sería la memoria, UCP y un dispositivo de entrada y otro de salida. Entrar en
mayores discusiones no tiene demasiado sentido, ya que podría considerarse que los dispositivos de E/S no
siempre son necesarios, como en el caso un ordenador que haga de router. En realidad, necesitará de esa
comunicación, aunque sea mediante administración remota. Como hardware complementario podrían
citarse altavoces, impresoras, escáner, etc.
El hardware básico se ha expuesto en los temas 4, 5 y 7, dedicados a la memoria, UCP y dispositivos de
E/S, respectivamente. En el tema 7 además se ha presentado también parte del hardware complementario y
en el tema 6 lo referente al almacenamiento. Por tanto, en este tema, se presentará sólo la placa base y los
componentes que restan por exponer.
3. PLACA BASE
Un circuito impreso es una oblea, una placa de material semiconductor sobre la que se imprimen líneas
eléctricas, generalmente de cobre y que sirve de soporte para los circuitos integrados del sistema. La placa
base (PB) es una oblea de circuito impreso que sirve de soporte y nexo de unión entre los componentes del
sistema. Otros nombres que recibe son placa madre o principal.
Determina qué elementos forman el sistema. Así, condiciona qué procesador va a llevar el equipo, cuántos
módulos de memoria, cuantas tarjetas de expansión, etc. No todas las PB sirven para todos los
procesadores, ni todos los procesadores se pueden montar en todas las PB. Depende de los fabricantes y
la tecnología del procesador. La elección de una PB depende del microque se vaya a montar. Sus
prestaciones dependen de parámetros que como el chipset que monte, el micro que soporte, la FSB, etc.
En la PB están impresos los circuitos
llamados buses del sistema (bus de
datos, direcciones y control), por los
que circula la información que
intercambia el procesador con la
memoria y con el resto de elementos.
La velocidad a que los datos se
mueven se denomina Frecuencia de
Bus del Sistema, o FSB y es un
parámetro que se especifica en
Megahercios (MHz). En principio, una
cantidad de X MHz, significa que se
pueden transmitir X millones de bits
en un segundo por cada línea del bus.
Otro elemento de la PB es el zócalo del microprocesador. Es un conector donde se inserta el micro. Existen
dos tipos fundamentales de zócalo, el tipo socket y el tipo slot. El tipo socket tiene forma rectangular con un
número alto de conectores hembras, donde se acopla el micro.Hay muchas variantes. Su denominación
más común es socket-XXX, siendo XXX un número que indica cuántos conectores tiene el socket, y por
tanto, también el número de patillas del micro.

36
El tipo slot, es un zócalo alargado al estilo ranura de expansión. En equipos domésticos se utilizó en la serie
Pentium II y actualmente está obsoleto. El tercer tipo de zócalo es la no existencia de zócalo, caso, en que
el micro va soldado directamente a la PB. Esta configuración es menos versátil, pero más barata.
Existen en la PB otros zócalos para la conexión de los otros elementos. Destacan los de la memoria
principal (RAM), los de expansión (PCI, PCI-X, IDE), el zócalo de la BIOS o el de la memoria caché. A los
zócalos de expansión, se les denomina ranuras de expansión. A los zócalos de discos duros, unidades
ópticas y demás, se les llama conectores y la norma que usan, por ejemplo, conectores IDE o SATA.
El conector de alimentación permite la entrega de energía eléctrica a la placa. A éste se conecta la salida de
la fuente de alimentación. En los PC domésticos es un zócalo de doce pines llamado conector ATX.
Además se disponen conectores auxiliares más pequeños para alimentar ventiladores y similares.
ATX es un conjunto de especificaciones para PB. Para abaratar costes y terminar con los distintos formatos,
los fabricantes definieron estándares que especifican recomendaciones sobre tamaño y posición de los
elementos en la placa. Un determinado formato de placa en principio no afecta a su rendimiento. De la
especificación ATX recibe su nombre el conector de alimentación.
El formato ATX es una especificación de Intel. Básicamente recomienda unas medidas para la placa de
unos 30 x 25 cm, disponiendo conectores y zócalos más accesibles y cercanos a su posición final, por tanto
reduce la longitud de los cables evitando interferencias y emisión de radiación, consiguiendo placas más
fiables, económicas y funcionales. Otras especificaciones son Micro-ATX, Flex-ATX, Mini-ITX o BTX, cada
una con sus particularidades.
Es habitual encontrar integrados en la PB distintos puertos y controladores. Un puerto físico, es un interfaz
hardware, que debe distinguirse de la idea de puerto lógico. Un puerto lógico es un número identificativo de
una conexión. En un puerto físico pueden existir varios puertos lógicos. Por ejemplo una conexión a Internet
puede usar simultáneamente un programa P2P, correo electrónico, un navegador web, etc. Cada programa
utiliza para identificarse un número, un puerto lógico. Sin embargo todos utilizan el mismo puerto físico.
Un conector es un componente hardware que permite la conexión a un puerto físico, el interfaz. Los puertos
y conectores habituales se enumeran en la siguiente tabla:
Puerto Características Aspecto
Puerto serie Norma RS-232. Conocido como COM1, COM2... El conector del sistema
suele ser un DB-9 macho como el de la figura.
Puerto Norma IEEE 1284. Conocido como LPT1, LPT2... El conector típico es el DB-
Paralelo 25 hembra en el sistema y el macho en el cable. En desuso.
Puerto PS/2 Tanto el puerto como el conector reciben el mismo nombre PS/2. Se usan los
conectores hembra en el sistema para teclado y ratón.
Puerto Para la conexión de red de área local. Los conectores típicamente son RJ-45
Ethernet hembra en el equipo y macho en el cable. También se usa en puertos RDSI.

Puerto USB Es un estándar desarrollado por distintos fabricantes. Prácticamente se está


imponiendo y sustituyendo a los anteriores.
Conector Norma IEEE 1394. En dispositivos Apple se denomina firewire. Sony lo
Firewire denomina i.link.
Conectores Conectores de audio típicos de 3.5 mm o minijack. En la PB o tarjeta de
Jack sonido suelen integrarse los conectores hembra. Los dispositivos de audio
suelen llevar cable terminado en el conector macho.
Conector IDE Paralell ATA. Interfaz de datos entre PB y dispositivos de almacenamiento,
o PATA como el disco duro o DVD. En desuso por la implantación de SATA.
Conector Serial ATA. Interfaz de datos entre PB y dispositivos de almacenamiento.
SATA Más rápido y con mejor rendimiento que IDE.

SCSI Small Computer System Interface. Estándar para transferencia de datos


utilizado en sistemas de alto rendimiento, servidores, etc.

PCI Peripheral Component Interconnect, estándard de conexión de periféricos.

PCI-Express Evolución de PCI más rápido y con mejores prestaciones

37
Otro elemento de la PB que llama la atención es la pila. Es la que se usa para mantener la hora del equipo
cuando no está alimentado, así como evitar que se borre la información almacenada en el firmware (BIOS).
En la PB también se disponen los chipset, de un tamaño considerable y fácilmente identificables.
3.1. Chipset
Chipset se traduce por conjunto de chips, conjunto de circuitos integrados. Integran casi todas las funciones
de control. La frecuencia, velocidad, si se desea, a la que se intercambian los datos en la placa depende de
los chipset y el resto de la electrónica. Las funciones que desempeñan los chipset son, básicamente:
Control de la Frecuencia de Bus del Sistema (FSB), estándares de memoria soportados y protocolo de
transferencia de datos, soporte de estándar gráfico, gestión de los puertos de E/S (USB, Firewire, puertos
serie y paralelo, etc.), y funciones integradas (audio, video, red, infrarrojos...), control de interrupciones y
acceso directo a memoria, reloj, gestión de energía, gestión de la memoria. Pero, su principal función es el
soporte al microprocesador.
La detección correcta del micro y el soporte de sus funciones son tarea del chipset. Esto marca qué
microprocesadores podrán utilizarse en la placa, generalmente de una misma familia. De la calidad y
características del chipset dependerá la obtención del máximo rendimiento del microprocesador, la
capacidad de actualización y uso de nuevas tecnologías que vayan apareciendo.
En general, en equipos domésticos, los chipsets se agrupan según sus funciones en NorthBridge y
SouthBridge. El NorthBridge se encarga de las tareas más importantes como gestionar la memoria, el micro
y puertos. Suele ser el chip más grande. El SouthBridge gestiona tareas secundarias y otros componentes
como los canales IDE, disqueteras o puertos USB. Algunos fabricantes de chipsets conocidos: Intel, AMD,
Nvidia, VIA, SiS, Ali.
En relación al control de la Frecuencia de bus del sistema hay que decir que ésta se fija con un reloj, en
general de cuarzo, que se alimenta de la energía que suministra la pila cuando el equipo está apagado. La
frecuencia de trabajo del microprocesador es un múltiplo de ésta. El microprocesador trabaja a una tasa
mayor que la de intercambio de datos en la placa. Un ejemplo para entenderlo: Un camarero atiende a la
vez a muchas personas pero no en el mismo momento. Sin embargo, parece que todos están recibiendo su
servicio simultáneamente. La velocidad de trabajo del camarero, el microprocesador, es más rápida que la
de los clientes, el resto de elementos.
3.3. BIOS
La BIOS es un componente intermedio entre el hardware y el software, que se da en
llamar firmware. Esto se expone con detenimiento en el siguiente módulo. Por tanto,
desde el punto de vista del hardware lo que interesa es saber identificar el chip y los
jumpers que borran la BIOS.
La BIOS (Basic Input-Output System) es el sistema básico de entrada/salida, compuesto por un programa
incorporado en un chip de la placa base que se encarga de realizar las funciones básicas de manejo y
configuración del ordenador. Físicamente es un chip de forma rectangular.
Además, la BIOS conserva ciertos parámetros como el tipo de disco duro, la fecha y la hora del sistema, etc,
los cuales guarda en una memoria del tipo CMOS, de muy bajo consumo y que es mantenida por un pila
cuando el ordenador está desconectado. Las BIOS pueden actualizarse mediante la extracción y sustitución
del chip (método muy delicado) o mediante software, si son del tipo flash-BIOS.
4. TARJETAS CONTROLADORAS DE DISPOSITIVO Y DE ENTRADA SALIDA
Las tarjetas controladoras de dispositivo y las de entrada salida, que proporcionan el interfaz con periféricos
o de comunicaciones. Representan el hardware y el firmware necesarios para realizar las funciones para las
que se han diseñado. El hardware se refiere al conjunto, con especial atención a los conectores. Al hablar
de hardware se engloba, si se desea, de forma un poco grosera, el firmware, que se refiere a los circuitos
que implementan las funciones de control y que se programan a bajo nivel. Las tarjetas controladoras
pueden presentarse en forma de tarjeta, que habrá que conectar a la PB, o bien integrarse.
4.1. Controladoras de dispositivo
Un controlador de dispositivo o controlador, es un programa de bajo nivel, embebido en la lógica de un
circuito, un chip, que permite al SO controlar un dispositivo o elemento del sistema. Es el firmware del
dispositivo. El firmware de la PB es la BIOS. Todo dispositivo posee un firmware, un controlador. Esto es así
en prácticamente todo elemento electrónico, una lavadora, un televisor, etc.
El controlador, hablando propiamente es la programación del chip que controla el dispositivo en cuestión.
Generalmente, se utiliza como sinónimo de driver. Hay una diferencia, los drivers son programas que
instalan el firmware, ofreciendo un interfaz gráfico, más amigable.

38
4.2 Controladoras de E/S
Como resulta lógico, lo dicho para las controladoras de dispositivos es válido para los elementos de E/S. Así
podría definirse una controladora de E/S, como el firmware que realiza las funciones de control para un
dispositivo de E/S (ratón, teclado, monitor...) o de comunicaciones.
Las controladoras de E/S, montadas en dispositivos como las tarjetas de video, tienen características de las
que se suelen hablar habitualmente, como pueda ser la resolución de video. Por ello, sólo quedaría incluir
para ser presentados, algunos componentes, que además están muy relacionados con la PB.
4.2.1. Tarjeta de video
Es el dispositivo que transmite al monitor la información a presentar en pantalla. Interpreta los datos que
llegan del procesador, preparándolos para presentarlos en pantalla en forma de matriz de puntos o píxeles.
Si el monitor es analógico, los datos digitales se transforman a una señal analógica.
Este proceso lo realiza el microprocesador gráfico y el conversor analógico-digital o RAMDAC, pudiendo
existir chips para otras funciones o bien se integran en un único chip. La potencia del micro puede ser un
diferenciador comercial, por eso algunos tienen nombre propio tipo Virge, Voodoo, TNT2. La evolución de
las tarjetas de video puede resumirse citando los principales hitos de su desarrollo.
Las primeras tarjetas de vídeo presentaban sólo texto monocromo. De ahí la denominación MDA,
Monochrome Display Adapter. Los primeros PC, necesitaban una tarjeta de vídeo capaz de presentar
gráficos. Así surgió la CGA (Computer Graphics Array). Las CGA ofrecían una resolución (horizontal x
vertical)‫ ‏‬para color de 320x200 y de 4640x2002 monocromo. Hércules era una tarjeta gráfica profesional.
Daba una resolución de gráficos de 720x348 pero no ofrecía color.
Las tarjetas EGA, fueron definidas por IBM y conseguían resoluciones de 320x200 con 6 colores y 640x200
y 640x350 para 16 colores. Esto hizo posible que se extendieran los entornos gráficos de los SO.
El estándar más conocido es VGA. Posee varios modos de vídeo posibles, siendo el más básico 640x480
puntos con 256 colores, conocido como "VGA estándar" o "resolución VGA". El éxito de VGA llevó a
numerosas mejoras, entre ellas SVGA (800X600 y 256 colores), XGA (1024x768 y 65.356 colores) e IBM
8514/A (1024x768 y 256 colores, no admite 800x600). La mayoría de tarjetas son compatibles con varios
estándares, o alguno de sus modos. Algunas ofrecen modos adicionales al añadir más memoria de vídeo.
La resolución es el número de puntos que es capaz de presentar por pantalla una tarjeta de vídeo. Así, una
resolución de "800x600" significa que la imagen está formada por 600 filas de 800 puntos cada una. El
número de colores, son los que puede presentar a la vez por pantalla la tarjeta. La combinación de estos
dos parámetros se denomina modo de vídeo y están estrechamente relacionados: a mayor resolución,
menor número de colores representables y a la inversa.
En tarjetas SVGA y superiores lo que las liga es la cantidad de memoria de vídeo (la que está presente en
la tarjeta, no la memoria RAM). Algunas combinaciones posibles son:
El cálculo de la memoria Memoria de Vídeo Máx. resolución (2D) Máx. nº de colores
necesaria es: (Res.
Vert.)x(Res. Horiz.)x(Bits 512 KB 1024x768 a 16 colores 256 a 680x480
de color)/8 1 MB 1280x1024 a 16 colores 16,7 millones a 640x480
Los monitores CRT 2 MB 1600x1200 a 256 colores 16,7 millones a 800x600
debían soportar el modo
de vídeo, ya que si no 4 MB 1600x1200 a 65.356 16,7 millones a 1024x768
podían dañarse. colores

Esto dependía de la Frecuencia Horizontal de refresco, número de veces que se dibuja la pantalla por
segundo; cuanto mayor sea menos se cansa la vista. Los modos de resolución para gráficos en 3D
necesitan más memoria, en general unas 3 veces más.
4.2.2. Tarjeta de sonido
Las tarjetas de sonido convierten sonido analógico a digital y viceversa. Esta función la realiza el DAC
(Conversor Digital-Analógico). Si se necesita reproducir sonido, tratarlo al mismo tiempo con una fuente
externa y volver a grabarlo, o reproducir y grabar al mismo tiempo, se está pidiendo una característica que
se conoce como "fullduplex". Para ello, los dos conversores ADC-DAC deben trabajar de forma separada.
Las tarjetas de sonido, salvo excepciones profesionales, toman muestras de sonido a 16 bits. Es el número
de voces. Esos bits definen la cuantificación de las muestras. Para emitir sonidos, los altavoces se mueven
dando golpes. Estos golpes hacen que el aire vibre, y el oído capte la vibración, que transforma en impulsos
nerviosos que van al cerebro. El oído humano es capaz de reconocer unos 44.000 sonidos/segundo.

39
Los 16 bits de cuantificación de las tarjetas de sonido ofrecen la posibilidad de representar 65.536 sonidos
diferentes, lo que es suficiente para una correcta calidad. Si se usasen 15 bits, se obtendrían 32.762; se
estaría por debajo del umbral de calidad de percepción.
Las tarjetas de sonido suelen trabajar con una resolución de 44’1KHz, las semi-profesionales sobre los
50KHz. Las profesionales pueden llegar a 100KHz. El uso de ese muestreo ampliado se debe a que si los
datos de partida no son fieles o se pierde calidad, se dispondrá de más muestras para compensarlo.
El sonido digital se representa en diversos formatos. El formato digital tiene el inconveniente de requerir
mucha capacidad para almacenar relativamente poca información. Se pueden hacer los cálculos fácilmente:
audio a 44,1KHz, con 16 bits y en estéreo, da 172 Kb/segundo (10,3 MB por minuto). Este método es el
utilizado en los ficheros WAV o en el Cd-audio que no es útil profesionalmente, debido a la cantidad de
memoria necesaria. Una solución es el formato MIDI (Musical Instrument Data Interface)‫‏‬.
El formato MIDI básicamente consiste en representar las notas musicales del sonido y por tanto ocupa
menos. Así las mismas notas suenan "igual" en distintos instrumentos. Para reproducir el sonido de un
instrumento, se estandariza su comportamiento y con el archivo MIDI se reproduce. La tarjeta de sonido
reproduce las composiciones MIDI, recomponiendo los sonidos. Se usan dos métodos, la síntesis FM, en
que un procesador reproduce el sonido mediante el empleo de fórmulas trigonométricas, y la síntesis por
Tabla de Ondas, en que los sonidos de los instrumentos están grabados en una memoria de la tarjeta.
Un canal es una pista de sonido en la que se graban los datos a reproducir para cada altavoz. Cada altavoz
reproducirá el sonido que le corresponde, logrando mayor realismo. El sonido estéreo utiliza 2 canales.
Los conectores de sonido suelen ser tipo mini-jack. Otro tipo de conector son los RCA,
que ofrecen mayor calidad y llevan un canal independiente por conector, mientras que en
el tipo jack suelen ir dos.
Otro tipo de conectores son los S/PDIF o salidas ópticas digitales. Es un estándar
desarrollado por Sony y Philips como interface de conexión digital de altas prestaciones.
Las conexiones MIDI serán necesarias en caso de trabajar esos dispositivos. Si se dispone de una salida
MIDI, cualquier partitura en ese formato podrá ser reproducida por cualquier instrumento MIDI conectado.
4.2.2. Tarjeta de red
La tarjeta de red es el interface entre el equipo y la red. Se conoce como NIC o Network Interface Card. Es
un circuito impreso con los componentes necesarios para ofrecer el acceso al medio de transmisión.
La NIC incluye el interfaz de la red a la que se conecte el equipo. Si es un conector físico, puede ser el
típico RJ-45 para redes Ethernet, o un RJ-11, típico de conexión a la línea telefónica por módem. Si se trata
de una red Wifi, se hablará de una antena. La instalación de una tarjeta de red en un equipo se hace a
través de otro interfaz entre ambos, los clásicos son USB, PCMCIA, PCI, etc., aunque en general, estas
tarjetas vienen integradas en la placa base.

40
TEMA 9. LÓGICA DE CIRCUITOS. CIRCUITOS COMBINACIONALES Y SECUENCIALES.

1. INTRODUCCIÓN
2. LÓGICA DE CIRCUITOS.
2.1. Álgebra de Conmutación
2.2. Tecnología Digital. Puertas Lógicas
3. CIRCUITOS COMBINACIONALES Y SECUENCIALES.
3.1. Circuitos Combinacionales
3.1.1. Sumadores
3.1.2. Multiplexores
3.1.3. Codificadores
3.1.4. Circuitos Lógicos Programables
3.2. Circuitos Secuenciales
3.2.1. Célula de memoria. Báscula RS
3.2.2. Registros
3.2.3. Contadores
3.2.4. Registros de desplazamiento
3.2.5. Memoria RAM

41
1. INTRODUCCIÓN
Los ordenadores procesan información en código binario, lo que ofrece un soporte matemático adecuado
para ser implementado físicamente con circuitos digitales.
Los circuitos digitales tienen su base en las puertas lógicas, circuitos electrónicos que realizan las
operaciones lógicas elementales. Su combinación genera circuitos cada vez más complejos, en los que se
hace necesario conocer su lógica para poder diseñarlos.
2. LÓGICA DE CIRCUITOS.
La lógica de circuitos se apoya en el álgebra binaria, discreta o álgebra de Boole. Es la base de la
electrónica digital y la gran cantidad de aplicaciones con que cuenta debido a que presenta un aumento de
fiabilidad en el procesamiento y transmisión de información, posee tecnologías de fabricación adecuadas,
una amplia distribución comercial y un soporte matemático adecuado para su desarrollo.
2.1. Álgebra de Conmutación
El álgebra de conmutación es la parte de la matemática centrada en el sistema binario. También se conoce
como álgebra de Boole. Su importancia se hereda por ser el sistema binario de los más adecuados para la
representación de información y variables, como se ha visto.
El álgebra de Boole opera con las propiedades habituales
del álgebra, como la propiedad asociativa, conmutativa o
distributiva. La definición de operadores se realiza
mediante tablas de verdad. Ejemplos:
- NOT X: X - AND: X • Y - OR: X + Y
La tabla de verdad indica el resultado de la operación. Su utilidad es la siguiente: para tratar la información,
se usan enunciados lógicos. Un enunciado lógico es una proposición que puede tomar dos valores,
verdadero o falso, en lógica binaria se usa por convenio 1 para verdadero y 0 para falso.
Sea la siguiente afirmación: Si hace frío y hay nubes, lloverá. ¿Lloverá? Sólo si se verifican las dos
condiciones a la vez, es decir si el enunciado “hace frío” toma el valor 1 y a la vez el enunciado “hay nubes”
toma también el valor 1. En cualquier otro caso no lloverá. Este enunciado puede tratarse con una
operación AND en la que la variable X sea el enunciado “hace frío” y la variable Y “hay nubes”. Si se
enuncia la proposición: Si hace frío o hay nubes, lloverá. La lógica cambia. Bastaría con que se verificase
sólo una de las condiciones, que haga frío o nubes para que llueva en caso contrario no lloverá. Se
representaría con una operación tipo OR.
En lógica de circuitos existen dos convenciones, la lógica positiva y la negativa, poco usada. En lógica
positiva un 1 se representa con un nivel de señal alto (5V, por ejemplo) y un 0 con un nivel bajo. En lógica
negativa sería al revés. Las señales se nombran con variables (X, Y, CLK...).
Sea la situación de tres variables, pulsar las teclas Ctrl+Alt+Supr, en un ordenador. Si se denota la variable
X como “pulsar Ctrl”, Y “pulsar Alt” y Z “pulsar Supr”, cuando se de la variable RST=X·Y·Z, es decir, cuando
se verifiquen las tres simultáneamente, el ordenador se reiniciará. Este ejemplo tan peregrino debe servir
para dar una idea del tipo de entorno en el que se mueve la lógica de circuitos.
El número de combinaciones posibles entre n variables binarias es 2ⁿ. Sean por tanto
las tres variables, X, Y y Z, con sus 8 posibles combinaciones. La figura presenta qué
resultado da su combinación. El producto de variables, referido a una tabla de verdad,
se denomina minterm. Su suma maxterm.
Como se observa, F sólo es verdad (1), cuando el minterm XYZ es o bien 010, 101, o
111. En caso contrario F es cero. Luego, F se puede escribir como suma de minterms:
F=XYZ+XYZ+XYZ. O bien como producto de maxterm: F= (X+Y+Z)·(X+Y+Z)·(X+Y+Z).
Implementar esta función en un circuito electrónico es sencillo, como se explica en el siguiente apartado. Lo
complicado es la simplificación del diseño. Un problema complejo en general dará un diseño complejo.
Por eso se usan métodos de simplificación. El clásico es la
utilización de mapas de Karnaugh que realizan una
simplificación sistemática de la función. El procedimiento es
colocar los valores de la tabla de verdad en el mapa. Se
agrupan rectángulos adyacentes con la mayor cantidad de 1
(minterms) o 0 (maxterms). De los grupos sólo se tiene en
cuenta las variables que no cambian, sumando minterms o
multiplicando maxterms, según el criterio elegido. Un ejemplo
se muestra en la figura.

42
2.2. Tecnología Digital. Puertas Lógicas
Una conjunción lógica, una multiplicación binaria, en electrónica se implementa con un circuito llamado
puerta lógica tipo AND. La suma binaria se implementa una puerta lógica tipo OR. Etcétera.
En la siguiente figura se presentan los tipos de
puertas lógicas más comunes. Hay muchas otras,
pero éstas son las fundamentales, que sirven para
ilustrar los fundamentos de la electrónica digital.
Las puertas lógicas representan la base sobre la
que se asientan los circuitos digitales, que van
incrementando su complejidad hasta llegar a los
microprocesadores.
De las puertas arriba representadas, la puerta AND y la OR ya han sido explicadas. El inversor simplemente
niega la entrada, es decir, si a la entrada se tiene un 1, a la salida dará un 0 y viceversa. Su nombre es
puerta NOT. La puerta NOR es una OR, a la que a la salida se integra un inversor. Lo mismo para la puerta
NAND: Una puerta AND cuya salida se niega.
La puerta XOR es un comparador: Si las dos entradas, A y B, son iguales, la salida se anula y si son
distintas a la salida da un 1. Por fin, la correspondencia entre la electrónica analógica y la digital se puede
ver en los dos próximos ejemplos de implementación de puertas lógicas con transistores.
A la izquierda se presenta un transistor que llevado al corte o saturación, es utilizado como una puerta
inversora. Si la tensión de entrada Vi es 0, la corriente en la base será nula y por tanto la corriente de
colector será nula. El transistor es un circuito abierto y la salida Vo prácticamente se cortocircuita a la
alimentación Vcc, es decir un 1.
Luego un 0 a la entrada produce un 1 a
la salida. Si a la entrada hay presente
un 1, por ejemplo 5 V, o un valor
cercano a Vcc, la tensión colector
emisor será casi 0, el transistor satura y
se comporta casi como un cortocircuito,
llevando Vo a masa, es decir, un 0. Un
1 a la entrada produce un 0 a la salida.
Se ha implementado un inversor.
A la derecha se presenta un ejemplo de implementación de una puerta NAND con transistores. El transistor
T1 representa dos transistores en paralelo. De esta manera si A o B, son 0, T1 saturará. Esto produce el
corte de T2 y T4. T3 satura y lleva la salida a la alimentación, es decir un 1. Si A y B son 1, T1 se corta y T2
satura, T3 se corta y T4 satura llevando la salida a 0.
3. CIRCUITOS COMBINACIONALES Y SECUENCIALES.
Los circuitos digitales se clasifican en circuitos combinacionales, en que las salidas son función del valor de
las entradas y circuitos secuenciales, en que las salidas son función del valor de entrada y su secuencia.
3.1. Circuitos Combinacionales
La característica de un circuito combinacional es la función lógica que realiza. Los circuitos combinacionales
más sencillos son las puertas lógicas. A continuación se presentan los circuitos combinacionales típicos.
3.1.1. Sumadores
Los sumadores son circuitos que
implementan la suma binaria. El
bloque elemental es el sumador
completo o “full-adder” con
tratamientos de acarreos de
entrada Cin y de salida Cout. Su
tabla de verdad y su circuito
interno se representan en la figura.
Para sumar palabras de más bits, se pueden emplear sumadores en serie, como la estructura típica del
sumador “Ripple Carry”. Su velocidad viene limitada por la cadena de acarreo. Para el desarrollo de
sumadores rápidos se trabaja sobre la cadena de acarreo para eliminarla o limitarla (sumadores tipo look-
ahead carry).

43
3.1.2. Multiplexores
Los multiplexores seleccionan una entrada de entre 2ⁿ posibles en función de n bits de control
(selección).Los demultiplexores realizan la función inversa. A partir de n entradas de control, se transfiere la
entrada a una de entre 2ⁿ salidas posibles. Transfieren datos de una fuente común a varios posibles
destinos. A veces también se denominan distribuidores.
En las siguientes figuras, a la derecha, se muestra el esquema general de un multiplexor de dos entradas y
a la izquierda, un ejemplo de una de sus numerosas aplicaciones, la implementación de funciones lógicas:

3.1.3. Codificadores
Los codificadores (encoders) convierten un código de 2ⁿ bits a uno de n bits. Se usan para compactar
información y asignar prioridades (codificadores de prioridad).
Los decodificadores (decoders) binarios
convierten un código de n bits a una salida de
un solo bit de entre 2ⁿ (1-out-of-2ⁿ). Pueden
usarse para implementar funciones lógicas y
en el direccionamiento de circuitos de
memoria y dispositivos E/S.

Los circuitos integrados, en general presentan una E, de enable o habilitación de forma que cuando E está a
nivel bajo, la salida se anula o lo que es lo mismo, el circuito sólo funciona cuando E está a nivel alto.
Se presenta un ejemplo real,
el decodificador BCD a 7
segmentos.
El código BCD, ya explicado,
es muy usado para excitar
los leds de los displays de 7
segmentos.
Un ejemplo es el circuito
integrado 74LS247, del que
se puede ver a continuación
su tabla de funcionamiento.
Como ejemplo de codificador se presenta el codificador binario 2 a 4. En el esquema se representa cómo en
función de dos entradas se elige un bit de salida en forma de minterm. Esto es muy útil para implementar
funciones lógicas.
3.1.4. Circuitos Lógicos Programables
Los dispositivos lógicos programables (PLD) al poder ser programados, no tienen una función establecida.
Ejemplos de PLD son memorias ROM y variantes PROM, EPROM y EEPROM y los PLA o Arrays lógicos
programables. Los PLA son una matriz de puertas que pueden programar su función realizando conexiones
entre ellas. Las memorias ROM constan de n entradas (Bus de Direcciones) y b salidas (Bus de Datos). Por
cada combinación de las entradas (2ⁿ) existe un dato de longitud de b bits. En la memoria caben (2ⁿ)
palabras de b bits, o sea, un total de 2ⁿ x b bits.
Una ROM (Read Only Memory) puede verse
como un circuito combinacional que responde a
una tabla de verdad. Puede implementar
cualquier función lógica combinacional en donde
las entradas de la función se conectan al bus de
direcciones y las salidas se conectan al bus de
datos. También son útiles para tabular valores de
multiplicación, funciones trigonométricas, etc., lo
que acelera el proceso de datos.

44
3.2. Circuitos Secuenciales
Los circuitos secuenciales ofrecen valores de señales de salida que dependen de los valores de las señales
de entrada actual y anterior (historia del circuito). Las variables llamadas estados guardan la información de
la historia del circuito. Sus usos principales son como elementos de memoria y como circuitos de control.
Las variables de estado se guardan en uno o más bits de información. Considerando como entradas las
entradas del circuito y las variables de estado, el diseño de un circuito secuencial es igual al de uno
combinacional. Para el diseño se utilizan tablas de estados, en las que para cada estado actual Q(t)
especifica las salidas actuales y los estados siguientes Q(t+1) en función de las entradas actuales.
Muy importante en los circuitos secuenciales es la señal de reloj, que constituye la referencia temporal. Las
variables de estado deben cambiar con los flancos del reloj
3.2.1. Célula de memoria. Báscula RS
Los circuitos secuenciales necesitan algún tipo de memoria. La célula de memoria básica almacena un bit y
puede obtenerse combinando dos inversores en que la entrada de uno sea la salida del otro y viceversa, o
con puertas NAND, como en la figura. Este circuito se conoce como biestable, flip-flop o báscula R-S.

Es el circuito secuencial más simple y presenta dos


estados estables, codificados con una variable (en
general Q). Los estados estables de Q son 0 y 1. Los
terminales permiten escribir en la báscula, que guardará
la información mientras esté alimentada.
Tiene dos entradas, R y S, a nivel bajo. Cuando R=0 y S=0, la salida Q y Q es 1, que es un estado
inestable, incoherente, por lo que esa combinación ha de evitarse. Cuando R=1 y S=0, Q=0, se almacena
un 0 en memoria. Si R=0 y S=1, Q=1, almacenándose un 1. Si R=S=1, la información se mantiene.
En general, el circuito incluye una entrada, la señal de reloj, para sincronizarse y habilitar las transiciones.
Variantes de la báscula RS son los circuitos Latch D, que la salida Q sigue a la entrada D, validada con otra
señal C, los Flip-flop D, activados por flanco, o los Flip-flop JK, que eliminan la indeterminación de los RS al
cambiar de estado cuando las entradas J=K=1. Si se cortocircuitan las entradas JK de un flip-flop de ese
tipo, se obtiene uno tipo T, muy importante para implementar contadores.
3.2.2. Registros
Los registros almacenan palabras. Un registro de p
posiciones almacena p bits en p biestables. Un banco
n·m
de registros está formado por un conjunto de 2
n
biestables agrupados en 2 palabras de m bits cada
una. Por lo tanto hay m entradas de datos y m salidas.
N entradas de dirección para seleccionar la palabra a
leer y n para escribir además de las entradas de control.
Para escribir una palabra, se dispone a la entrada del
registro (bus de datos). En la entrada de dirección (bus
de direcciones) se dispone la dirección de la palabra a
escribir. El bus de control, dispondrá las señales de
control de la escritura o lectura. La escritura es
destructiva, mientras que la lectura ofrece en el bus de
datos la palabra indicada en el bus de dirección. Un
registro de desplazamiento de p bits es un sistema
secuencial síncrono
3.2.3. Contadores
Un contador es cualquier circuito secuencial cuyo diagrama de estados es un único ciclo. Posee una
entrada de reloj y unas salidas, tales que presentan una configuración preestablecida en un determinado
orden. Pasando de una configuración a la siguiente cada vez que llega un pulso de reloj.
Los contadores más simples son los binarios. Su funcionamiento consiste en aumentar el valor binario de la
salida cuando se recibe un pulso de reloj.
3.2.4. Registros de desplazamiento

45
Son registros que realizan el movimiento de posición de los bits en un bus. Son muy utilizados en
conversiones serie-paralelo y viceversa. Se usan para el manejo de datos serie como en la norma RS-232,
transmisión y recepción de módem, Ethernet, SONET, etc.
3.2.5. Memoria RAM
n
La memoria RAM es una matriz de celdas de almacenamiento de 2 palabras de m bits, por lo que el bus de
datos tiene m líneas a la entrada y a la salida y el bus de dirección n líneas, con sus correspondientes
señales de control. Posee un comportamiento similar a un registro, con acceso aleatorio.
Por lo que respecta a la estructura, la RAM consta de celdas de almacenamiento, un decodificador de
direcciones y adaptadores para controlar la E/S.
Hay dos tipos de RAM: SRAM o estática en la que cada celda almacena un bit mientras exista alimentación
y DRAM o dinámica, que deben ser refrescada cada cierto tiempo debido a efectos capacitivos. Al usar
menos transistores ofrecen mejor integración, son más baratas, pero más lentas al tener tiempo de refresco.
Una memoria RAM y un contador pueden implementar memorias de acceso secuencial, útiles para los SO y
programas. En las memorias secuenciales la lectura de un dato se realiza una única vez y al leerlo es
borrado de memoria. Se distinguen memorias secuenciales tipo FIFO y LIFO.
En las memorias LIFO (Last-In First-Out), el último elemento introducido en la memoria (también conocidas
como memoria pila) es el primero en leerse. La memoria tipo FIFO (First-Int Fisrt-Out) ofrece a la salida el
elemento más antiguo no leído. Por este comportamiento también se las conoce como memorias tipo cola.

46
TEMA 10. REPRESENTACIÓN INTERNA DE LOS DATOS.

1. INTRODUCCIÓN
2. REPRESENTACIÓN INTERNA DE LOS DATOS
2.1. Instrucciones
2.2. Caracteres
2.3. Números
2.3.1. Enteros
2.3.2. Reales
2.4. Otros

47
1. INTRODUCCIÓN
Un dato es la representación simbólica de una entidad. Aporta información pero puede no tener significado.
Según la RAE es un antecedente necesario para llegar al conocimiento de algo.
Los datos se representan con magnitudes físicas que codifican un alfabeto numérico. Un alfabeto es un
conjunto de símbolos con los que se presenta información. Para poder procesar la información, un
ordenador debe representar los datos internamente de alguna forma, como las que aquí se presentan.
2. REPRESENTACIÓN INTERNA DE LOS DATOS
La representación interna de los datos que maneja un ordenador no debe coincidir necesariamenta con la
representación de un dato a nivel humano, sino que debe ser adecuada a la tecnología empleada. La
traducción entre alfabetos se realizará cuando sea preciso para establecer la comunicación entre humano y
máquina. Esta operación de traducción entre alfabeto fuente a código, es la codificación.
Como se ha visto, internamente, el ordenador utiliza el sistema binario para representar la información. En
función del tipo de información a representar, la codificación binaria será diferente, estará más adaptada al
proceso que se dará a los datos. Por ello la representación interna de una instrucción, carácter o número
siguen convenios diferentes.
Estos tipos diferentes de codificación buscan optimizar el almacenamiento, representación, proceso y
comunicación de la información. Condicionantes a tener en cuenta serán la memoria disponible, que
siempre será finita, y por tanto también las representaciones, en particular numéricas, además los buses y
registros del sistema tendrán un cierto tamaño a considerar en la representación.
2.1. Instrucciones
Una instrucción es un conjunto de símbolos que el ordenador interpreta para realizar las operaciones de las
que consta un programa. Las instrucciones de un programa en lenguaje de alto nivel o en ensamblador se
dan en forma de texto y el traductor, ya sea un compilador o intérprete, las transformará en instrucciones
máquina, interpretables por el ordenador.
Las instrucciones utilizadas por los ordenadores pueden tener diferentes formatos, pero como se ha
presentado ya, el formato típico incluye una parte que las diferencia, el código de operación, y el campo de
dirección.
El campo CO diferencia las instrucciones entre si. Suele ocupar los bits más significativos de la instrucción.
Si una instrucción ocupa más de una palabra, el CO estará en la primera palabra. El campo de dirección no
está presente en todas las instrucciones ya que algunas instrucciones no emplean datos y en otras se utiliza
no para direccionar la memoria, sino que directamente contiene el dato necesario para operar.
2.2. Caracteres
En la comunicación máquina hombre, sulen usarse caracteres alfabéticos para tratar información. A nivel
interno, el ordenador representa el conjunto de caracteres codificando cada uno con un byte, típicamente.
Las codificaciones más habituales son:
- Código ASCII. (American Standard Code for Information Interchange). Publicado en 1963 por ASA (actual
ANSI), utiliza 8 bits para codificar información alfanumérica, de los que utiliza los 7 primeros.
- EBCDIC. (Extended Binary Coded Decimal Interchange Code): Usa 8 bits para cada carácter por lo que se
pueden representar 256 caracteres, de los cuales, los 32 primeros son de control. Cada octeto se divide en
2 partes, bits de zona y bits de dígito. Los 128 primeros caracteres son alfanuméricos y los 128 restantes
representan caracteres gráficos.
- UNICODE. Es un estándar internacional del consorcio Unicode. Representa cualquier carácter. SO como
Windows NT y posteriores, Linux, Mac OS X y lenguajes de programación como Java, Perl y C# lo usan.
2.3. Números
Representar números tiene el problema de ser un conjunto infinito y por tanto, con una memoria limitada, no
n
se puede representar cualquier número, hay que acotar. Utilizando n bits se pueden representar 2 números
distintos. El rango de representación es el intervalo entre el mayor y el menor número representable. La
resolución de representación se refiere a la diferencia que existe entre un número representable y el
inmediato siguiente.
Para representar números debe tenerse en cuenta el tipo de número a representar (enteros, real…), el
rango de representación, la cantidad de números del rango o la memoria necesaria, entre otros.

48
2.3.1. Enteros
Para representar un número entero, se distingue si es positivo o negativo. Si sólo se representan enteros
n
positivos, con n bits se pueden representar de 0 a 2 -1. Para codificar enteros negativos, hay que tener en
cuenta que el intervalo de representación de enteros positivos debe ser igual al de los negativos y que el
signo y el 0 sean fácilmente detectables y el código resultante permita realizar las operaciones habituales
con una implementación hardware sencilla.
Para ello, se utilizan tres técnicas: signo y magnitud, complemento A1 (CA1) y complemento A2 (CA2). La
representación de signo y magnitud consiste en reservar un bit para el signo y el resto para la magnitud.
Típicamente se usa el 1 para indicar que el número es negativo. Presenta el problema de representar el 0
de dos formas y la suma no es tan sencilla. Esta representación no suele implementarse.
La representación con CA1 para un número positivo usa su CA1 y el complementario del CA1 si el número
es negativo. También representa dualmente el 0. La representación con CA2 con n bits para un número
positivo utiliza el CA1 del número y para un número negativo se usa el CA2, que es el CA1+1. Es más
costoso de implementar, pero elimina la representación dual del 0. Es la representación más extendida para
los enteros negativos.
Existen también otras técnicas de representación de enteros, no posicionales, es decir, se crea un nuevo
código para representar cada cifra. Los más representativos son:
BCD Natural. La codificación del valor del
dígito se expresa con 4 bits. Por tanto
desaprovecha 6 símbolos.
Exceso a 3: Código BCD natural que suma 3 a
cada dígito.
Aiken. Código BCD en que los pesos dentro de
cada grupo de 4 bits son 2, 4, 2, 1 en vez de 8,
4, 2, 1. Es autocomplementario.
Gray. Consiste en diferenciar símbolos consecutivos en un único bit de diferencia.
JOHNSON 5 bits. Consiste en incrementar el número de unos desde la derecha y disminuirlos
paulatinamente por la izquierda según avanza la representación. No es ponderado.
2.3.2. Reales
La representación de reales puede seguir diversas conveciones. Las más comunes son punto fijo, donde se
usan una parte de los bits como parte entera y otra parte como decimal; punto flotante, que representa el
número en forma exponencial, con mantisa, base y exponente. El exponente usa n bits y la mantisa m; IEEE
754, que es un estándar para representación en punto flotante de con 32 y 64 bits.
La representación de 32 bits (simple precisión) usa el primer bit para signo (S), los 8 siguientes representan
el exponente (E) en exceso 127 (C=E+127) y los 23 restantes para la mantisa (M), normalizada como 0,xxx.
La representación de 64 bits (doble precisión) es similar: usa el primer bit de signo (S), 11 para el exponente
(E) y 52 de mantisa (M):
2.4. Otros
La representación de otro tipo de datos, como imágenes o sonidos, dependerá del formato que utilice el
programa que trate la información. Formatos ampliamente conocidos de sonido son wav o mp3 y de video,
avi o dvd. En cualquier caso, para el ordenador son bits, que se almacenan en memoria sin más. La
presentación de esos datos al usuario requiere un programa que interprete la información y la presente en la
forma adecuada.
Destacar, que los bits de información que trata el ordenador han debido ser procesados anteriormente, si se
presenta en forma analógica, como es el caso expuesto del sonido y la imagen. Este tratamiento incluye el
muestreo y la cuantificación. El muestreo consiste en tomar un conjunto amplio de valores finitos de la señal
a digitalizar para poder reconstruirla posteriormente. La cuantificación es el proceso que asigna valores a
cada muestra. Estos valores se representarán de la manera que imponga la tecnología de la máquina para
poder ser tratados adecuadamente.

49
TEMA 11. ORGANIZACIÓN LÓGICA DE LOS DATOS. ESTRUCTURAS ESTÁTICAS.

1. INTRODUCCIÓN
2. ORGANIZACIÓN LÓGICA DE LOS DATOS
3. ESTRUCTURAS ESTÁTICAS
3.1. Arrays y matrices
3.2. Registros y uniones
3.3. Algoritmos con estructuras estáticas

50
1. INTRODUCCIÓN
En el campo de la informática un dato puede definirse como la expresión relativa a un objeto susceptible de
ser procesado por un ordenador. Las estructuras de datos son formas de organización de éstos.
Las estructuras de datos estáticas reservan memoria en el momento en que se define el dato. Las
estructuras dinámicas no reservan memoria a priori, sino que se hace uso de la memoria en función de la
necesidad de la estructura y la capacidad del equipo.
2. ORGANIZACIÓN LÓGICA DE LOS DATOS
La organización lógica de los datos se refiere a su estructura y representación en un ordenador. Esta
organización debe seguir unos criterios bien definidos para evitar errores de interpretación. Los datos se
organizan en colecciones llamadas estructuras.
Las estructuras de datos pueden ser homogéneas (si tienen el mismo tipo de datos) o heterogéneas (cada
elemento puede ser de un tipos distintos).
Para acceder a los datos se utiliza un identificador del dato, que puede ser el nombre del dato, su posición
en la estructura o una clave que lo identifica unívocamente. Estructuras del primer tipo serían las estructuras
y uniones, del segundo los vectores, matrices, pilas y colas y las terceras los árboles.
3. ESTRUCTURAS ESTÁTICAS
En una estructura estática se conoce cuántos datos la componen y lo que ocupa cada uno. Por tanto el
tamaño de la estructura debe estimarse cuando se diseña. Al ejecutarse el programa, se reservará un
espacio en memoria para la estructura, que será invariable.
Las estructuras estáticas poseen la ventaja de ser sencillas de usar y son más eficientes para el acceso a
datos, ya que es aleatorio en general. Como inconveniente está la rigidez de su definición, lo que puede
llevar a una gran reserva de memoria poco utilizada, lo que ofrece un bajo rendimiento.
Las estructuras estáticas básicas son los arrays, las matrices, los registros y las uniones.
3.1. Arrays y matrices
Un array o vector es una estructura estática en la que los datos son todos iguales y se organizan de forma
lineal. Para referenciar un dato se utiliza un índice que indica su posición en el array. La cantidad de datos
que contendrá el array, su tamaño se define al crearlo. Ejemplo en Pascal: vector1: array [1..10] of integer;
definiría un array de 10 posiciones, en la que cada posición contendrá un entero.
El esquema visual de un array es el de la figura. Para acceder a una posición y
leer o escribir un dato en el array, se utiliza un índice entero. Siguiendo con el
ejemplo, si se tuviera la instrucción en Pascal vector1[5]:=333; se escribiría la
cifra 333 en la quinta posición del array.
Ampliando el concepto de array a más dimensiones, se llega a la idea de matriz. En realidad, es la misma
idea, por tanto, para acceder a un dato de una matriz, se necesitarán tantos índices como dimensiones
posea la matriz. Una matriz puede definirse como nativa o como array de array, en función de las
necesidades del programa que se trate.
Ejemplo de definición de una matriz nativa en Pascal: matriz1: array [1..10][1..15] of integer; Lo que define
una matriz de dimensión 2 con 10 filas y 15 columnas en la que cada posición contiene un entero.
La definición de una matriz como array de array sería: matriz2: array [1..10] of vector1; Definiría una matriz
de 10 filas en las que cada fila sería un vector de 10 posiciones (vector1). En realidad, habría que definir
vector1 como un tipo de datos, pero como idea puede servir para el ejemplo.
Para definir una matriz de dimensión mayor a dos, no hay más que ampliar la definición de índices.El
acceso a un dato sería tan simple como por ejemplo valor:=matriz2 [2,15], que asignaría a valor, el entero
almacenado en la fila 2, columna 15.
Debe tenerse en cuenta, que según el lenguaje de programación, las posiciones de los arrays pueden
empezar a numerarse desde el cero. Por tanto para acceder a la posición 5 del array habría que escribir
array[4]. Del mismo modo, si en un array de 10 posiciones se escribe array[222], dará un error, porque no
existe el elemento 222.
En general, al tratar con arrays, se recorren operando con los datos que almacenan. Para ello se suelen
introducir las operaciones de lectura y escritura del array en bucles de las diferentes categorías que existen,
típicamente los tipos for, do…while, repeat…until, etc. Si se trabaja con matrices se utilizarán bucles
anidados, de manera similar.

51
Un tipo específico de array son las cadenas de caracteres o strings. Son estructuras que se comportan
como los arrays, pero que se establecen porque el tratamiento de caracteres es muy habitual y necesario en
programación. De esta forma, la mayoría de lenguajes de programación cuentan con instrucciones de
manejo de cadenas agrupadas en bibliotecas (librerías) para facilitar su tratamiento. Operaciones típicas
con strings son la obtención de su longitud, concatenación, comparación, etc.
El lenguaje C agrupa este tipo de operaciones en la librería <stdlib.h>. Un ejemplo de manejo de string en C
sería: char cadena[7]=“hola”; que define un string de 7 posiciones de las cuales las 4 primeras tendrían el
carácter ´h´, ´o´, ´l´ y ´a´, respectivamente. Las 3 restantes contendrían el carácter nulo.
3.2. Registros y uniones
Un registro es una estructura estática type TFicha = record
heterogénea, es decir, puede contener
Nombre: array[1..10] of char;
datos de distinto tipo.
DNI: integer;
Cada componente de un registro se
denomina campo. Ejemplo de definición de end;
un registro en Pascal es:
El registro TFicha está compuesto por campo array de caracteres de 10 posiciones y un campo tipo entero
llamado DNI. y una cadena de caracteres de tamaño 10. Para asignar valores al registro, hay que hacerlo
por campos. Por ejemplo: paco.Nombre:=Francisco; paco.DNI:=222.222. En este caso, faltaría instanciar la
variable paco como de tipo TFicha.
Se pueden combinar las estructuras de datos y por ejemplo generar arrays o matrices de registros. Otra
estructura similar a los registros son las uniones. La diferencia estriba en que en una unión todos los datos
internos ocupan el mismo espacio y es tan grande como el mayor elemento. Si se modifica uno de esos
elementos, todos los demás se modifican. En C se declaran con la palabra union.
3.3. Algoritmos con estructuras estáticas
Conviene conocer algunos algoritmos utilizados en operaciones habituales con arrays y matrices. Entre las
operaciones habituales se encuentran la ordenación y búsqueda de algún elemento de la estructura.
Algoritmos de ordenación son el de la burbuja, el de inserción directa, el de Mergesort y quicksort.
El algoritmo de la burbuja es un algoritmo de ordenación que trabaja de Burbuja (int v[], int lonv)
manera semejante a como ebullen las burbujas. Consiste en recorrer la
Integer: temp, i, j;
estructura de que se trate, por ejemplo un array, comparando cada
elemento con el siguiente e intercambiándolos si su orden no es correcto. for (i = 0; i < lonv -1 ; i++)
De esta forma los elementos muy grandes en posiciones bajas y for (j = i + 1; j < lonv ; j++)
viceversa se desplazan por el array en cada recorrido como si fueran
if (v[i] > v[j])
burbujas. Este algoritmo tiene el mejor comportamiento cuando ya está
ordenado y una complejidad computacional cuadrática. temp = v[i];
Un ejemplo de implementación en pseudocódigo se presenta en el v[i] = v[j];
cuadro. También se le conoce como método de intercambio directo.
v[j] = temp;
El algoritmo de inserción directa coge uno por uno los elementos de un array y lo va desplazando hacia
atrás hasta que el anterior es menor. Sigue siendo ineficiente aunque algo mejor que el de la burbuja.
El algoritmo de Mergesort divide de forma recursiva un problema en problemas menores. Su funcionamiento
analiza el caso trivial (2 elementos). Si no es el caso, divide el array en dos que analiza por separado. El
algoritmo se va repitiendo hasta llegar al caso trivial, en que ordena los elementos y va combinando las
ordenaciones parciales obteniendo al final el array completo ordenado. La complejidad de este algoritmo es
O(n)=n·log(n), mucho menor que la complejidad del algoritmo de la burbuja y el de inserción directa.
Otro algoritmo de ordenación es quicksort. Es un algoritmo recursivo, pero puede implementarse como
iterativo mejorando su rendimiento. Se considera el algoritmo de ordenación más rápido. Trabaja eligiendo
un elemento del array, que hará las veces de pivote. El resto de elementos del array se van colocando a un
lado u otro del pivote según sean mayores o menores que él. Una vez hecho esto, se divide el array en dos
partes, el lado izquierdo y el lado derecho del pivote.
El algoritmo se llama recursivamente pasando como argumentos las dos partes en que se ha dividido el
array hasta llegar a un caso trivial, similar al algoritmo Mergesort. La complejidad del algoritmo en este caso
es O(n)=n· log(n). Eligiendo adecuadamente el pivote se optimiza el algoritmo, ya que su eficiencia depende
de la elección del pivote; pivotes con valores medios mejoran la eficiencia.

52
Como ejemplo podrían elegirse tres elementos al azar y seleccionar el que de valor medio como pivote.
También podría elegirse realizando un recorrido inicial que calcule el valor medio de los elementos.
Entre los algoritmos clásicos de búsqueda se encuentran el de búsqueda secuencial y búsqueda binaria.
El algoritmo de búsqueda secuencial recorre la estructura desde una posición dada hasta que encuentra el
elemento. Es la única solución cuando los elementos están distribuidos de manera aleatoria, ya que no se
puede asegurar la existencia de un elemento hasta recorrer toda la estructura. Su complejidad es O(n)=n..
La búsqueda binaria se utiliza para el caso en que la estructura esté ordenada. En este caso, un número
elevado de búsquedas, es más eficiente si la estructura está ordenada.
El algoritmo de búsqueda bienaria selecciona un elemento al azar (en general, el elemento central). Si ese
elemento es el valor buscado, se ha terminado de buscar. En caso contrario se evalúa si es mayor o menor
y reduce la búsqueda a la parte del array o la estructura que contenga los elementos mayores o menores
según corresponda y se vuelve a repetir el proceso de forma recursiva.
Cuando no se pueda dividir la búsqueda y el nuevo elemento central no sea el valor buscado, significará
que el elemento buscado no existe en la estructura. Teniendo en cuenta que el algoritmo precisa orden en
el vector, su complejidad es O(n)=log(n).

53
TEMA 12. ORGANIZACIÓN LÓGICA DE LOS DATOS. ESTRUCTURAS DINÁMICAS.

1. INTRODUCCIÓN
2. ORGANIZACIÓN LÓGICA DE LOS DATOS
3. ESTRUCTURAS DINÁMICAS
3.1. Contenedores lineales
3.2. Árboles
3.3. Grafos

54
1. INTRODUCCIÓN
Las estructuras de datos son formas de organización de éstos. Las estructuras de datos dinámicas no
reservan memoria a priori, en el momento de su definición, sino que se hace uso de la memoria en función
de la necesidad de la estructura y la capacidad del equipo.
2. ORGANIZACIÓN LÓGICA DE LOS DATOS
La organización lógica de los datos se estudia con las estructuras de datos, que pueden ser homogéneas o
heterogéneas. Para acceder a los datos se utilizan índices, identificadores que posicionan el dato en la
estructura. Estructuras dinámicas son los contenedores secuenciales, árboles y grafos.
3. ESTRUCTURAS DINÁMICAS
Las estructuras de datos dinámicas no tienen un tamaño fijo, puede variar en tiempo de ejecución. Son
ideales cuando no se conoce a priori, ni se puede estimar, el tamaño que datos que se manejarán.
Un tipo de dato abstracto o TDA es un conjunto de datos y procedimientos de ese dato, como por ejemplo,
un objeto, dentro de la metodología de programación orientada a objetos, que posee atributos (datos) y
métodos (procedimientos). Un TDA debe disponer un interfaz para conseguir encapsulamiento y ocultación,
de forma que los detalles de implementacióndel TDA sean transparentes para quien lo use.
Las estructuras de datos dinámicas que se implementan como un TDA ofrecen un interfaz completa para
operar la estructura, no permitiendo el acceso directo a la implementación de esa estructura. Las
estructuras dinámicas podrían simularse con estructuras estáticas, pero lógicamente se pierde agilidad y
rendimiento. Por ejemplo, una pila podría realizarse con un array de registros, pero se complicarían las
operaciones de ordenación, inserción y otras.
3.1. Contenedores lineales
Los contenedores secuenciales son aquellos que almacenan sus elementos en orden lineal. Suelen
implementarse como un TDA o una clase. Entre los contenedores secuenciales se distinguen los conjuntos,
listas, colas y pilas.
Un conjunto (set) es una estructura de datos cuyo orden o cantidad de repeticiones no es relevante. Poseen
dos operaciones habituales, una para indicar si un elemento está contenido en el conjunto y otra que
compruebe si está vacío. Otras operaciones son la de instanciación o creación, inserción y eliminación de
elementos. Operaciones entre conjuntos serían la unión, intersección o diferencia.
Una lista enlazada es una secuencia de nodos compuestos por sus datos y uno o varios punteros o enlaces
a otros nodos. Son tipos de datos autoreferenciados porque contienen punteros a datos del mismo tipo.
Permiten inserciones y eliminación de nodos en cualquier punto de la lista, pero no de forma aleatoria.
Las variantes de lista enlazada son las listas doblemente enlazadas, circulares y circulares doblemente
enlazadas. La diferencia estriba en su implementación, en que cada nodo contendrá uno o varios punteros a
los nodos anterior y posterior según corresponda. Así si la lista enlazada posee un único puntero al
siguiente nodo, las listas doblemente enlazadas tendrán un puntero al nodo anterior y otro al posterior. Las
listas circulares no tienen nodo inicial ni final, ya que el último apunta al primero, y las listas circulares
doblemente enlazadas serían como las circulares, con los dos sentidos de enlace.
La lista doblemente enlazada permite conocer el primer elemento y el último y podrá recorrerse en dos
sentidos. Una lista puede dotarse de un nodo centinela que apunte al principio o final de la lista y para
simplificar operaciones. El elemento final de una lista se llama NULL.
Con respecto a los arrays, las listas presentan la ventaja de ordenar sus elementos de forma diferente al
almacenamiento en memoria permitiendo recorridos diferentes al secuencial. La inserción y eliminación de
nodos posee un coste fijo al no ser necesario reordenar el array. Como desventaja, son menos eficientes en
el acceso aleatorio. Para pocos datos, el coste en memoria y complejidad puede aconsejar el uso de arrays.
Para insertar un nodo en la lista es necesario cambiar el puntero al siguiente del anterior apuntando al
nuevo nodo y el puntero al siguiente del nuevo nodo apuntando al nodo siguiente. Si hay un doble enlace,
se realizarán las mismas operaciones en sentido inverso. La eliminación de un nodo es tan sencilla como
hacer que los punteros de los nodos adyacentes a este se apunten entre sí.
Una cola puede entenderse como una lista con un comportamiento tipo FIFO (First-In, First-Out), el primero
en entrar, primero en salir. Puede implementarse como una lista con opciones restringidas. En una cola, son
típicas las operaciones de push y pop, o bien adición o eliminación de elementos, respectivamente, con la
salvedad que la operación push añade el elemento al final y pop elimina siempre el primero de la cola.
Puede ser común encontrar la operación front, frente, que devuelve el valor del primer elemento.

55
Una pila, por su parte, es una lista con organización LIFO (Last-In, First-Out). Pueden implementarse como
listas enlazadas. También suelen definirse las operaciones push y pop y una operación tipo cima, que
devuelva el valor del elemento superior de la pila. Una lista enlazada simple implementaría esta estructura.
3.2. Árboles
Un árbol es una estructura jerarquica de datos constituida por unidades llamadas nodos. Cada nodo podrá
ser un registro o similar y puede tener uno no más nodos que cuelguen de él, sus nodos hijo. Del mismo
modo, el nodo del que cuelga un nodo hijo, será el nodo padre. El grado de un nodo es su número de hijos.
El nodo origen, que no posee padre, es el nodo raíz y es único. Un
nodo sin hijos se denomina hoja. Un nodo genérico, con padre e
hijos, se denomina nodo rama.
Árboles típicos son los binarios, en los que cada nodo padre tiene
dos nodos hijos. Su implementación consiste en dotar a cada nodo
de dos punteros, uno a un hijo en la izquierda y otro al hijo de la
derecha, como se muestra en el esquema.
Un árbol genérico posee cualquier número de nodos hijo. En este caso, cada nodo contendrá sus datos y
tantos punteros como hijos tenga. Otros términos utilizados son camino, altura, profundidad y nivel.
Un camino es el conjunto de nodos que se pueden seguir de un nodo padre a una hoja. La altura es la
longitud del camino más largo. La profundidad, la longitud del camino a un determinado nodo y el nivel, el
de los nodos que poseen la misma profundidad.
Un árbol que posee sus elementos ordenados, se dice que está equilibrado si tiene una profundidad
homogenea en todas las hojas, es decir que no varíe más de una unidad. Por ejemplo, los árboles AVL
(Adelson-Velskii, Landis), son árboles binarios ordenados, de forma que el hijo izquierdo contiene un valor
siempre menor que el padre y el hijo derecho mayor, de forma que consiguen equilibrio de forma automática
al insertar o eliminar nodos. El equilibrio es útil para reducir la complejidad de las búsquedas.
Los árboles, implementados como TDA suelen ofrecer métodos para su manejo. Los habituales son del tipo
inserción, borrado o búsqueda. El recorrido de un árbol se puede hacer siguiendo criterios como el
preorden, postorden o inorden. El preorden consiste en recorrer el árbol, comenzando por el nodo padre,
hijo izquierdo e hijo derecho hasta llegar a una hoja. El postorden recorre el árbol comenzando por el hijo
izquierdo, hijo derecho y padre. El inorden recorre el primer hijo, el padre y el hijo derecho.
Para buscar un elemento en un árbol se puede buscar por profundidad o por niveles. Por profundidad, se
recorren los caminos hasta las hojas. Por niveles, se recorren los nodos de cada nivel. Si se posee un árbol
binario ordenado, se puede ir dividiendo la búsqueda a izquierda o derecha. La complejidad sería O(log(n)).
Los algoritmos de recorrido o búsqueda suelen implementarse con recursividad.
3.3. Grafos
Puede definirse grafo como un árbol no jerárquico. De hecho un árbol no permite referencias cíclicas. La
forma general de representar un grafo es usar círculos para los nodos y líneas para las aristas.
Términos utilizados habitualmente son orden, medida, adyacencia
y grado. El orden es el número de nodos del grafo. La medida el
número de aristas. Dos nodos son adyacentes si tienen una arista
que los une y su grado es el número de aristas que tiene un nodo.
Se distinguen grafos dirigidos o no dirigidos. Los primeros indican
las relaciones entre nodos mediante flechas, los no dirigidos no. Se
dice que un grafo tiene pesos si a cada arista se le asigna un valor
y es regular cuando todos los nodos poseen el mismo grado.
Grafo completo es en el que cada nodo es adyacente al resto. Para implementarlo se puede usar un grafo
genérico y una lista de adyacencia, si el grafo es más o menos pequeño. Para grafos complejos, manejar la
lista de adyacencia puede ser complicado y ser más eficiente usar una matriz de adyacencia. La matriz de
adyacencia ordena los nodos y sus aristas entre ellos en filas y columnas.
Las operaciones típicas en grafos son las de recorrido, inserción o borrado. En este caso el recorrido
ordenado es más complejo que en un árbol.
Una búsqueda en profundidad (DFS) es un algoritmo que permite recorrer los nodos de un grafo o árbol de
manera ordenada, no uniforme. Su funcionamiento consiste en seguir un camino e ir expandiendo todos los
nodos de forma recurrente. Cuando no quedan más nodos por visitar en el camino, se repite el proceso con
los demás nodos.

56
La búsqueda en anchura (BFS) recorre el grafo o árbol, comenzando en la raíz y explorando los vecinos del
nodo recursivamente hasta recorrer todo el grafo o árbol. Dos algoritmos típicos muy utilizados para el
cálculo de caminos mínimos son el de Dijkstra y el de Floyd.
El algoritmo Dijkstra explora todos los caminos más cortos que parten del nodo origen y llevan a todos los
demás nodos. Con los datos de todos los caminos mínimos, el algoritmo se detiene.
El algoritmo de Floyd elige un nodo intermedio de un camino y calcula si la distancia entre origen y destino
es mayor que la distancia entre origen y nodo intermedio más la distancia entre nodo intermedio y destino.
Si es mayor se asume que la distancia es la suma. Itera n veces siendo n el número de nodos y calcula la
distancia mínima, no el camino a seguir.

57
TEMA 13. FICHEROS. TIPOS. CARACTERÍSTICAS. ORGANIZACIONES.

1. INTRODUCCIÓN
2. FICHEROS
3. TIPOS
4. CARACTERÍSTICAS
5. ORGANIZACIONES
5.1. Secuencial
5.2. Indexada
5.3. Directa o aleatoria

58
1. INTRODUCCIÓN
Un fichero puede definirse como un conjunto de datos organizados en registros sobre un soporte físico. Su
nombre deriva del de conjunto de fichas. Cada ficha, es un registro y cada dato que compone el registro se
denomina campo.
2. FICHEROS
Los ficheros son fundamentales en el proceso informático, puesto que son las estructuras típicas que se
utilizan para contener la información. El ejemplo clásico de fichero es el que contiene la información de las
personas de una organización. Esta información contendrá datos como el nombre, apellidos, domicilio, etc.
Toda esa información referente a una única persona constituye un registro. Cada dato particular, por
ejemplo el domicilio, sería un campo.
Los ficheros se suelen clasificar tomando como referencia algún campo de sus registros. Esto es así para
facilitar las operaciones sobre el fichero, tales como la búsqueda, inserción o borrado. El campo elegido
como referencia se denomina campo clave, aunque la clave de acceso al fichero puede estar formada por
más de un campo. De hecho, se puede utilizar más de un campo clave, de forma que una de ellas será la
clave principal o primaria y el resto claves secundarias o alternativas. En general, la clave primaria es
diferente para cada registro y las claves secundarias pueden tener el mismo valor en registros diferentes.
En general el tamaño de un fichero será demasiado grande para ser cargado por completo en la MP, por
tanto, la carga se realizará por partes. Cada parte de un fichero que se carga en la MP se denomina registro
físico o bloque. El factor de blocaje es el número de registros lógicos que contiene un bloque. A la operación
de agrupar varios registros en un bloque se le llama bloqueo de registros. Se denomina volumen al soporte
físico de almacenamiento del fichero.
En el diseño de un fichero es muy importante el diseño de los registros, el soporte de datos para su almacén
y la forma en que se organizan los datos en el soporte. El diseño de un registro consiste en seleccionar,
ordenar y definir las características de los campos que lo forman.
Suelen utilizarse hojas de diseño para los registros, en las que para cada campo se define su nombre,
posición, tamaño y descripción y tipo de datos a contener. La definición del tamaño de cada campo es algo
complejo, dado que si es demasiado grande pueden desaprovecharse recursos, y si es pequeño, puede no
ser suficiente para la información a contener. Por tanto, debiera utilizarse un tamaño intermedio, o según el
caso, campos de longitud variable, aunque a costa de una mayor complejidad.
Los ficheros, debido a su tamaño se almacenan en soportes externos bien sean magnéticos u ópticos, como
los ya presentados. Normalmente los soportes elegidos serán discos y se usarán discos duros o cintas para
copias de seguridad. Probablemente el aspecto más importante de los ficheros es su manejo. Las
operaciones típicas a realizar con ficheros son:
Creación. Es la grabación, por primera vez, sobre un soporte de los registros de un fichero.
Apertura y cierre. Para realizar una operación sobre el fichero, éste debe abrirse y del mismo modo, si no se
utiliza debe cerrarse para evitar que la información se corrompa.
Borrado. Es la eliminación del fichero. Puede realizarse denegando el acceso al fichero (caso en que podrá
recuperarse) o destruyendo la información referente al fichero.
Ordenación. Es la operación de colocar los registros del fichero según cierto criterio.
Copia. Es la creación de un fichero idéntico a otro existente. Es la operación básica de seguridad ante
pérdida o corrupción del fichero original.
Fusión. Es la combinación de los datos de dos o más ficheros.
Partición. Dividisión de un fichero siguiendo algún criterio o condición de los registros.
Estas operaciones se refieren a los ficheros como unidades. Pueden distinguirse operaciones más
elemantales que afecten sólo a ciertos registros. El proceso será entonces localizar el registro sobre el que
operar y realizar la operación. Las operaciones típicas son:
Actualización. Consistente en renovar los datos del registro o del fichero. Se habla entonces de modificación
si se cambia el contenido de un registro, alta si se añade alguno nuevo y baja si se elimina.
Modificación. Cambia el contenido de uno o más registros.
Recuperación. Consulta de la información almacenada en los registros del fichero. Las operaciones de
recuperación típicas son las consultas, en que se accede a uno o varios registros para ver su contenido y
los listados, consultas de numerosos registros en forma de lista ordenada.

59
3. TIPOS
Una clasificación de los ficheros según el uso que se les da y el tiempo de vida que van a tener sería:
- Ficheros permanentes: Ficheros de larga duración usados en más de un proceso por contener información
que permanece con el tiempo, actualizada cuando es necesario. Dependiendo de la frecuencia con que se
actualizan los datos que contiene este tipo de ficheros se pueden clasificar, a su vez, en:
- Ficheros de constantes: Con información consultada con frecuencia, y raramente actualizados.
Ejemplo sería un fichero de clientes.
- Ficheros maestros: Con información que varía con frecuencia y es necesario mantener
actualizada. Ejemplo: Fichero de las cuentas de los clientes de un banco.
- Ficheros históricos: Contienen información pasada, reflejando su evolución en el tiempo. Ejemplo:
Fichero que guarda los movimientos que se produjeron en las cuentas de un banco en 1.991.
- Ficheros de movimientos: O ficheros de transacciones. Se usan para actualizar los ficheros permanentes,
almacenando en cada registro una operación que supone el cambio de alguno de los datos del fichero
permanente. Sus registros tienen que tener al menos un campo en común con el fichero que van a
actualizar que es el que va permitir conocer cual es el registro a modificar. La vida de estos ficheros suele
ser corta ya que al actualizar el fichero permanente, se destruyen, o se guardan como históricos.
- Ficheros temporales: Usados para almacenar resultados provisionales que serán usados posteriormente
en el mismo proceso, o en un proceso diferente. La vida de estos ficheros termina en el momento en que
finaliza, el proceso para el que fueron creados. Ejemplo: Fichero para preparar el listado de los alumnos
repetidores.
- Ficheros de control: Contienen información para controlar la ejecución de programas. Tipos:
- Ficheros de parametrización: Contienen información para el funcionamiento de los programas. Se
usan para poder adaptar programas o aplicaciones estándar a las necesidades de cada usuario.
Ejemplo: Fichero que almacena el nombre de la empresa, formato de los informes, etc.
- Ficheros de registro o log: Se usan para almacenar información referente a la explotación de un
programa. Ejemplo: Fichero que contiene informaciones como el número de veces que se ejecuta el
programa, el tiempo que es utilizado por un usuario, errores que se producen, etc.
Las operaciones de actualización de ficheros se efectúan, bien en un proceso "por lotes" (modalidad batch),
o bien en "tiempo real". En la modalidad por lotes se espera a tener un determinado número de variaciones,
que se van guardando en un fichero que recoge esos movimientos, para actualizar de una vez los datos del
fichero maestro o de situación. La modalidad en tiempo real permite actualizar los datos el fichero en el
instante en que se produce la variación.
4. CARACTERÍSTICAS
Las características fundamentales de un fichero son sus datos, su soporte físico y su organización.
El tipo de datos que guardará el fichero debe definirse en su etapa de diseño. Los datos se seleccionarán y
definirán adecuadamente. Esta parte es la más importante debido a las complicaciones que generará en
etapas sucesivas si no se realiza bien. Una vez realizado el diseño, se seleccionará el soporte físico de
almacenamiento y su organización y dependerá del tamaño del fichero y de las operaciones más frecuentes
a que se vea sometido.
Algunos parámetros a tener en cuenta a la hora de decidir el soporte y la organización más adecuada para
un fichero, son su tamaño, actividad y volatilidad.
Tamaño. Es la cantidad de memoria necesaria para almacenar el fichero, medida en unidades de
información, típicamente Megabytes o similar. Se puede estimar multiplicando el número de registros que
tendrá por el tamaño medio de cada registro.
Es importante tener una idea del tipo de evolución que tendrá el fichero. Si se puede estimar, podría
medirse el aumento del tamaño como el número medio de registros añadidos en cada tratamiento. Se suele
expresar como una tasa de crecimiento en % sobre el número de registros totales.
Estos datos sirven para estimar la capacidad que debiera tener el soporte físico utilizado para almacenar el
fichero.
Actividad. Es el número de registros consultados o modificados. Se expresa en % sobre el número de
registros totales. Si se refiere a cada tratamiento del fichero, se denomina tasa de consulta o modificación.
Si se calcula en un período de tiempo, se denomina frecuencia de consulta o modificación. Es un dato que
puede orientar en la decisión de la organización del fichero.

60
Para comparar los tiempos de acceso a registro empleados deben conocerse datos del soporte físico, tales
como el tiempo medio de acceso a un registro (TMA) y la tasa de transferencia (VLS). De esta forma, el
tiempo de acceso a registros de forma directa sería el número de registros consultados por el TMA y el
tiempo de acceso a registros de forma secuencial sería el tamaño dividido entre VLS.
En general, se elegirá el modo de acceso que emplee menos tiempo en leer los registros. Por tanto, el
menor de los dos tiempos anteriores calculados será el que oriente la decisión.
Volatilidad. Es el número de registros dados de alta o de baja respecto al número total de registros del
fichero, en %. El porcentaje calculado por cada tratamiento del fichero, se denomina tasa de renovación. Si
se calcula en un período de tiempo, frecuencia de renovación. Si la tasa de renovación es alta se dice que
el fichero es volátil, en caso contrario se dice que es estable.
5. ORGANIZACIONES
La organización de un fichero es la forma en que se distribuyen los datos de los registros sobre el soporte
físico. Existen dos formas básicas de organización: secuencial y aleatoria o relativa. En la primera los
registros se graban sucesivamente en el orden en que se dan de alta. En la aleatoria, se graban según el
valor de la clave.
El modo de acceso se refiere al procedimiento de acceso a un registro. Puede ser secuencial o directo. El
modo secuencial obliga a leer los registros anteriores a uno dado, mientras el modo directo puede
referenciar un registro directamente en función de la clave. El acceso directo puede hacerse de varias
formas; directamente, con el valor clave, calculando la posición mediante alguna operación con la clave
(acceso aleatorio o hashing), o mediante tablas de índices, en que la localización del registro se hace
buscando en la tabla el valor del campo clave (acceso indexado o Keyed).
La forma de organización de un fichero dependerá del uso que se de al fichero. Factores determinantes son
la memoria necesaria y la velocidad de acceso a los datos.Se distinguen las siguientes.
5.1. Secuencial
Esta organización distribuye los registros uno a continuación de otro en el soporte físico. Es recomendable
en ficheros estables y con un índice de utilización elevado. Sus ventajas son un aprovechamiento alto del
soporte, al no generar fragmentación, utilización de registros de distinto tamaño o la grabación en cualquier
tipo de soporte. Entre sus inconvenientes destacan la necesidad de leer los registros anteriores a uno dado
y la no posibilidad de inserción de nuevos registros entre dos ya grabados.
Al utilizar ficheros secuenciales debe tenerse en cuenta el soporte de grabación, ya que operaciones como
la modificación y borrado de registros que se pueden hacer en soportes direccionables no se pueden hacer
en soportes secuenciales.
Las instrucciones de tratamiento de ficheros dependen del lenguaje de programación con que se trabaje.
Sin embargo, como operaciones habituales destacan las de abrir (open), que en algunos lenguajes se
diferencia si es una apertura de lectura, escritura, lectura y escritura o ampliación, cierre (close), lectura
(read) y escritura (write).
Para tratar un fichero, el SO usa un puntero que señala al primer registro cuando se abre el fichero y se va
desplazando en la misma dirección cada vez que se lee o graba un registro. La estructura del fichero se
completa con un registro de cabecera con información sobre el fichero y un registro de marca de fin, EOF
(End Of File), que identifica el último registro.
El registro EOF se graba al crear el fichero y se desplaza al
añadir nuevos registros.Para mejorar las prestaciones de la
organización secuencial surgen variantes que pueden ser
utilizadas con soportes direccionables. Las mas empleadas son:
Organización secuencial indexada. Los registros se graban secuencialmente, pero pueden recuperarse con
acceso directo usando un fichero adicional de índices con información de la posición de cada registro.
Organización secuencial encadenada. Permite ordenar los registros lógicamente, de forma diferente al
orden físico de grabado, utilizando campos adicionales con punteros.
5.2. Indexada
Los ficheros indexados se basan en el uso de índices para acceder a un registro de forma directa, sin leer
los anteriores. Permiten acceso secuencial y directo. Los registros deben contar con al menos un campo
que lo identifique de forma única, el campo clave, que sirve de índice. Una clave es primaria si el campo
clave no contiene valores duplicados. Un campo clave con valores duplicados es una clave alternativa.

61
El acceso directo se realiza con el contenido del campo clave del registro a acceder. En el acceso
secuencial los registros son leídos en el orden marcado por el contenido del campo clave, de forma
independiente al orden de grabación. Para ello deben grabarse en soportes direccionables, si no, no podría
utilizarse el acceso directo. Un fichero con organización indexada está formado por:
- Área de datos. Área en que se escriben los registros cuando se crea el fichero. Los registros de un fichero
con organización indexada se graban en un soporte de almacenamiento directo, en secuencia ascendente,
de acuerdo con los valores de la clave y en páginas o bloques de longitud fija.
- Área de índices. La crea el sistema al almacenar datos. Contiene una tabla que asocia claves con
direcciones de los registros del área de datos. Cada entrada del área de índices está formada por el valor
más alto de la clave de cada grupo de registros y un puntero con la dirección del primer registro del grupo.
- Área de desbordamiento (overflow). Zona de grabación de registros sin cabida en el área de datos. Los
nuevos registros se insertan y enlazan mediante punteros conservando el orden lógico que marca la clave.
El tratamiento de índices y punteros lo realiza el SO, de forma transparente al usuario.
Existen diferentes formas de tratar índices, según el SO o lenguaje de programación. Las organizaciones de
índices mas usadas en la práctica son ISAM (Indexed Sequential Access Method) y VSAM (Virtual Storage
Access Method). Cuando el fichero de datos tiene muchos registros puede que el fichero de índices se haga
demasiado grande y las búsquedas se ralenticen. Para evitarlo se puede recurrir a una jerarquía de índices.
La organización indexada permite el acceso directo a los registros, evitando fragmentación y el trato
secuencial como en la organización directa y secuencial, respectivamente. Es muy usada y sus principales
ventajas pueden resumirse en permitir el acceso secuencial y directo a los registros, además de poder
actualizarlos sin crear nuevos ficheros (como en el caso secuencial) y como inconvenientes se encuentran
el ocupar más espacio en disco que los ficheros secuenciales y presentar un tiempo de acceso creciente al
crecer el número de registros.
5.3. Directa o aleatoria
Se independiza el orden de alta de un registro y su posición de grabación, que residirá en el campo clave. El
espacio total se divide en celdas destinadas a contener un único registro y se numeran correlativamente
permitiendo el acceso de forma directa, conociendo la dirección de la celda. Esta organización sólo se da en
soportes direccionables. Requiere menor tiempo de acceso a un registro y es usada cuando el acceso se
hace empleando siempre la misma clave y la velocidad de acceso a un registro es un factor determinante.
Para localizar un registro es necesario conocer la clave. Las técnicas de direccionamiento se usan para
relacionar el valor de la clave C y la dirección relativa D de la celda a acceder. La elección de una técnica de
direccionamiento determinada debe cumplir al menos, que sea fácil de aplicar, que genere poca
fragmentación y que las claves de registros diferentes generen direcciones diferentes.
Cuando dos o más claves diferentes proporcionan la misma dirección se dice que genera sinónimos o que
produce colisiones. Si se produce colisión, sólo un registro podrá ser guardado en la celda y habrá que
solucionar la ambigüedad. Para ello se emplean algunos métodos como una zona de desbordamiento o
búsqueda lineal (o direccionamiento abierto).
La búsqueda lineal consiste en almacenar el registro que colisiona en el primer hueco libre a partir de la
dirección que le corresponde, ya ocupada. La zona de desbordamiento consiste en crear un área especial
del fichero en la que se graban los registros que colisionan y es el sistema más empleado.
El uso de ficheros relativos requiere identificar los registros lógicos con un número relativo de registro, que
el usuario identificará con el valor de un campo del registro. Para transformar la clave en la dirección relativa
del registro en el fichero hay técnicas de direccionamiento que se pueden clasificar en direccionamiento
directo, asociación y hashing (aleatoria).
Direccionamiento directo. El caso óptimo son claves del fichero numéricas y toman valores de 1 a n sin
huecos. La clave k conducirá a la celda k-ésima del fichero facilitando el acceso. El campo clave de cada
registro contiene su dirección en el fichero.
Asociación. Los valores de la clave se almacenan en una tabla en que cada elemento asocia un valor de la
clave con la dirección relativa en la que se almacena el registro. La tabla debe prever la inclusión de todas
las direcciones posibles del fichero, por tanto, el problema es determinar su tamaño y mantenerla ordenada
por los valores de la clave.
Direccionamiento aleatorio (hashing). Utiliza una función, a ser posible biunívoca, que relaciona los valores
de la clave con el conjunto de números de celda. Esta función transformará el valor de la clave hasta en un
número entre 1 y el número de celdas del fichero. Su problema es la generación de sinónimos, caso que no
se da en los casos anteriores.

62
TEMA 14. UTILIZACIÓN DE FICHEROS SEGÚN SU ORGANIZACIÓN.

1. INTRODUCCIÓN
2. UTILIZACIÓN DE FICHEROS SEGÚN SU ORGANIZACIÓN
2.1. Creación, apertura, cierre y borrado
2.2. Lectura, escritura y extensión
2.3. Gestión

63
1. INTRODUCCIÓN
La organización de un fichero es la forma en que éste almacena la información. La forma de organización va
a marcar su naturaleza y la forma en que ese fichero será utilizado. Las operaciones de escritura, consulta,
lectura u ordenación seguirán distintas estrategias para ser realizadas de forma eficiente.
2. UTILIZACIÓN DE FICHEROS SEGÚN SU ORGANIZACIÓN
La organización de ficheros es la forma de estructurar y almacenar los datos en un soporte. Éste podrá ser
de acceso secuencial o directo, como ya se ha estudiado. La organización de un fichero dependerá por
tanto del soporte que se utilice y responderá a uno de los tres tipos, secuencial (almacenamiento
consecutivo), aleatorio (usando un algoritmo) o indexado (usando índices).
En la organización secuencial los registros se disponen uno a continuación de otro. Los ficheros
secuenciales se delimitan con una marca EOF de fin de fichero. Sólo se pueden leer de forma sucesiva sin
acceder directamente a un registro, ya que un campo del registro se usa para identificarlo, lo diferencia del
resto de registros y determina el orden de acceso.
Todos los registros tienen el mismo tamaño. La utilización habitual de los ficheros secuenciales es el
procesamiento por lotes: respaldo de datos, generación de reportes, transmisión física de datos, etc.
Representan el mejor aprovechamiento de espacio y son rápidos cuando hay que tratar registros que están
seguidos y no se pierden registros por desaparición de direcciones.
Ficheros susceptibles de ser organizados secuencialmente son los que tengan poca volatilidad, gran
actividad y tamaño variable. Por contra, el acceso a los registros está limitado al no poder localizarse
directamente, y en general, lentamente. Para mantenerlo ordenado, debe reescribirse periódicamente.
Los ficheros secuenciales pueden gestionarse de forma simple o encadenada. La gestión simple coloca los
registros seguidos. La encadenada usa punteros, con lo que permiten la ordenación, su procesamiento
lógico es secuencial, pero físicamente pueden estar desordenados, pues se referencian con punteros.
El modo de organización simple presenta las ventajas de realizar consultas rápidas cuando son
secuenciales y ahorro de espacio en cualquier soporte, pero por contra, para acceder a un cierto registro,
hay que pasar por todos los anteriores, lo que ralentiza la consulta puntual y del mismo modo, para
actualizar un registro, debe copiarse el fichero y para añadirlo debe hacerse al final, lo que implica que los
registros no están ordenados.
El modo encadenado dispone para los registros un campo para el puntero al registro anterior o siguiente, lo
que permite usar algoritmos propios de estructuras como las listas. Sus ventajas e inconvenientes son las
mismas que en la forma simple, con la diferencia que ahora los registros si están ordenados.
En la organización indexada los registros se localizan mediante una tabla índice con la dirección de cada
registro del fichero. Por tanto, el acceso a un registro se realiza directamente, buscando su índice. La tabla
índice puede organizarse de forma secuencial, en árbol u otras, lo que permitirá procesar el fichero de forma
secuencial o directa, independientemente de su organización.
Este método divide el espacio del soporte en 3 zonas: primaria o de datos, de índices y de desbordamiento.
El área primaria contiene los registros ordenados ascendentemente por clave. El área se divide en
segmentos con n registros. El área de índices contiene registros con dos campos, la clave del último registro
de cada segmento y la dirección de comienzo de cada segmento. El área de desbordamiento u overflow es
una zona de memoria intermedia para registros no incluidos en el área primaria. El área primaria y el índice
no se alteran después de ser creado el fichero, el overflow si, va aumentando con los registros insertados.
La utilización de ficheros indexados se da en aplicaciones donde es crítica la disponibilidad y donde los
datos no se procesan habitualmente de forma exhaustiva.
En la organización directa o aleatoria el acceso a los registros se realiza directamente, gracias a que su
posición puede calcularse a partir de uno de sus campos, denominado clave. La posición de los registros no
tienen por qué ser físicamente consecutivas, son posiciones lógicas, de ahí la razón que esta organización
sólo pueda darse en soportes direccionables.
Para direccionar un registro se usa una relación, que será una función matemática o similar, entre la clave y
la dirección a acceder. Esta relación debe ser fácil de aplicar, generar poca fragmentación y evitar
colisiones. Para relacionar clave y dirección relativa del registro se usan las técnicas de direccionamiento
directo, asociación y hashing (aleatoria), ya presentadas.
Para la utilización de ficheros se definen las operaciones típicas de creación, apertura, cierre, etc. y variarán
en función de la organización que se de al fichero. Debe tenerse en cuenta que en este caso se trata el
fichero como una unidad, sin tener en cuenta sus registros, pero si su organización.

64
2.1. Creación, apertura, cierre y borrado
La creación de un fichero consiste en definirlo. En esta operación habrá que indicar sus propiedades y
características para poder procesarlo, como por ejemplo su nombre, el método de acceso, formato de los
registros lógicos y físicos, fecha de creación, etc. En función del SO o del lenguaje de programación de que
se trate, se realizará de formas. En algunos casos, si el fichero no existe, al abrirlo, directamente se crea.
La apertura de un fichero consiste en identificarlo para empezar a operar con él. Al abrir un fichero, se
pueden producir errores si no se encuentra (por un error en el nombre, por ejemplo), por fallo de dispositivo
o porque el usuario no tenga permisos.
Para abrir y en su caso crear un archivo, se usará una instrucción OPEN o similar. Un ejemplo de formato
podría ser: OPEN [NombreDeFichero] FOR [Append| Binary| Input| Output| Random] AS #filenumber.
Donde [NombreDeFichero] es el nombre, que puede incluir también su ruta, del archivo que se abrirá. Si no
se especifica ruta, se entiende el archivo localizado en la unidad desde la que se trabaja. Las opciones
[Append| Binary| Input| Output| Random], especifican la utilización que se hará del fichero. Append, Input y
Output se usan para ficheros secuenciales. Append, añade datos al fichero a partir del último registro, Input
especifica la operación de escritura y Output lectura. Binary y Random se usan para ficheros binarios y
aleatorios. Un fichero secuencial no puede abrirse para ser leido y escrito simultaneamente.
La sintaxis #filenumber se utilizaría para asignar un número al archivo, en el rango que marque el SO o
lenguaje de programación y serviría para identificar el archivo.
El cierre de un fichero es la operación indicativa de que el fichero se dejará de usar, para liberar los
recursos de memoria y SO que esté utilizando y garantizando a la vez la integridad del mismo, si existen
datos en memorias intermedias por escribir. Al cerrar el fichero deja de ser accesible. El cierre basta, en
general, indicarlo con el identificador del fichero utilizado al crearlo o abrirlo. Errores típicos que pueden
darse en el cierre son los debidos a dispositivos o la falta de espacio.
Las instrucciones de cierre suelen tener la sintaxis CLOSE o similares. Sintaxis típica: CLOSE #filenumber.
La operación de borrado de un fichero lo elimina de su localización y generará las operaciones necesarias
en el SO para realizarlo de forma efectiva. Sintaxis habituales son DELETE o ERASE. Ejemplo: DELETE
#filenumber.
2.2. Lectura, escritura y extensión
La lectura de un fichero es la que permite consultar o recuperar Read los datos del fichero. En un fichero
secuencial, los primeros datos que se leen son los de la última posición operada. La sintaxis para la lectura
suele utilizar palabras del tipo READ. Ejemplo: READ #filenumber [condiciones], donde la opción
condiciones puede especificar un rango de posiciones, una cantidad de registros, etc.
La escritura escribe datos en el fichero. Si el acceso del fichero es secuencial, el tamaño del fichero
aumenta en proporción a los datos introducidos. La sintaxis usa palabras del tipo WRITE. Ejemplo sería
WRITE #filenumber [datos]: WRITE #1, UserName, UserCompany, SerialNumber
Extender un fichero es aumentar su tamaño asignando más memoria de almacenamiento. Para ello, se
necesita identificar el fichero y el tamaño adicional a asignar. La organización del fichero marca si el espacio
adicional a asignar debe ser contiguo o no. El atributo que indica el tamaño del fichero será modificado y se
devolverá un código de estado. El caso de error es que no haya suficiente espacio para la ampliación. La
sintaxis habitual usa palabras tipo APPEND. Ejemplo: APPEND #filenumber [tamaño].
2.3. Gestión
En caso de tratar con ficheros de acceso aleatorio, en general se tendrá que especificar de dónde leer o
escribir datos, para lo que pueden ofrecerse instrucciones de llamada al sistema, que ajusten el apuntador a
una posición concreta. Instrucciones de este tipo suelen tener la sintaxis SEEK.
En general, también serán necesarias algunas operaciones de gestión que pueden estar presentes en el SO
o el lenguaje de programación. Algunas de las habituales que pueden estar presentes son la consulta de las
propiedades o atributos de un fichero. La sintaxis será del estilo GET ATTRIBUTES #filenumber [opciones].
Si se ha de modificar algún parámetro de las características del fichero, como sus flags, se podrán
encontrar sentencias del estilo SET ATTRIBUTES #filenumber [opciones].
Por fin, una operación también muy habitual es la del renombrado del fichero. Las instrucciones para
realizarlo pueden ser muy diversas, pero, responderán a una sintaxis tipo RENAME #filenumber [opciones],
como estructura general.

65
BLOQUE 2. SISTEMAS OPERATIVOS Y SISTEMAS
Tema 15. Sistemas operativos. Componentes. Estructura. Funciones. Tipos.
Tema 16. Sistemas operativos: Gestión de procesos.
Tema 17. Sistemas operativos: Gestión de memoria.
Tema 18. Sistemas operativos: Gestión de E/S.
Tema 19. Sistemas operativos: Gestión de archivos y dispositivos.
Tema 20. Explotación y administración de un sistema operativo monousuario y multiusuario.
Tema 21. Sistemas informáticos. Estructura física y funcional.
Tema 22. Planificación y explotación de sistemas informáticos. Configuración. Condiciones de
instalación. Medidas de seguridad. Procedimientos de uso.

BIBLIOGRAFÍA
Sistemas Operativos, Stallings, W., Prentice Hall
Sistemas Operativos: Diseño e implementación, Andrew S Tanenbaum, Prentice Hall
La biblia de Linux, Prentice Hall
Seguridad en UNIX y Redes, Antonio Villalón

Recursos web:
http://www.etsit.upm.es/
http://informatica.uv.es/iiguia/TSTD/
http://es.wikipedia.org/wiki/Portada
http://www.mitecnologico.com
http://ditec.um.es

66
TEMA 15. SISTEMAS OPERATIVOS. COMPONENTES. ESTRUCTURA. FUNCIONES. TIPOS.

1. INTRODUCCIÓN
2. SISTEMAS OPERATIVOS
3. COMPONENTES
4. ESTRUCTURA
5. FUNCIONES
6. TIPOS
6.1. Estructura
6.2. Servicios
6.3. Entorno

67
1. INTRODUCCIÓN
El sistema operativo es el interface entre usuario y hardware del sistema informático. Entre otros, gestiona
los servicios que usan los programas para ejecutarse, organiza la memoria, asigna recursos y permisos, etc.
Su concepto fundamental es abstraer los detalles hardware de la máquina al usuario.
2. SISTEMAS OPERATIVOS
En los primeros estadios de desarrollo de los ordenadores, no existía un SO, con la concepción que tiene
actualmente, de hecho, los programas se cargaban directamente. El incremento de prestaciones de las
máquinas, posibilitó el desarrollo de programas ocultaban los detalles de la interacción de bajo nivel entre
máquina y humano, surgiendo así el SO. Su evolución ha estado muy ligada al desarrollo hardware, ya que
no todos los SO pueden ser ejecutados eficientemente en cualquier máquina.
Los primeros SO sólo ejecutaban un programa a la vez (monoprogramación). Si el sistema es capaz de
repartir el tiempo de UCP entre varios programas es un SO multiprogramación, dando la impresión al
usuario de simultaneidad. A esta forma de trabajo se denomina concurrencia de procesos.
Cuando un programa necesita un recurso, el SO se lo asigna hasta que el recurso es devuelto. Esto implica
que el SO debe crear o eliminar procesos de usuario y sistema, suspender y continuar procesos, controlar la
comunicación entre ellos, sincronizarlos y solucionar los bloqueos.
El SO implementa llamadas para que los programas soliciten los recursos al sistema. Los programas no se
ejecutan directamente en el procesador; hacen peticiones al SO que las interpreta y ejecuta. El procesador
tiene instrucciones de usuario que pueden ejecutar programas e instrucciones de superusuario que sólo
ejecuta el SO. Las llamadas al SO están en bibliotecas de interfaz que ofrecen los lenguajes de
programación.
El PC hizo que algunos SO se basaran en una arquitectura determinada y pudieran ser portados entre
equipos de tecnologías compatibles. Los SO han evolucionado al multiproceso y multiusuario, y actualmente
controla todos los procesos y proporciona recursos a los desarrolladores software para liberarlos de los
aspectos de interfaz, comunicaciones, gestión de archivos o periféricos.
3. COMPONENTES
Para realizar sus funciones el SO se estructura en varios componentes. Los principales son el kernel, el
administrador de memoria, el administrador de archivos, el de procesos o el de E/S.
El kernel o núcleo del SO. Es el software responsable de abstraer el hardware al resto del SO. Ofrece a los
programas un interfaz de acceso seguro al hw, a través de servicios de llamada al sistema que permiten
gestionar recursos. Tipos de kernel son los monolíticos, micronúcleos, híbridos y exonúcleos.
Los monolíticos agrupan todas las funciones del sistema y no contemplan instrucciones ejecutadas
directamente por entes distintos al kernel. Ejemplos son los de Linux y Unix. Los micronúcleos ofrecen un
conjunto reducido de operaciones. Usan programas llamados servidores para ofrecer sus servicios. Ejemplo
es el núcleo de Minix. Los kernel híbridos presentan más instrucciones para acelerar el proceso, como el
caso de WS. Los exonúcleos usan bibliotecas para acceder al núcleo, sin abstracción hw. Es un tipo de
núcleo experimental.
El administrador de memoria. Es el componente del SO que gestiona la MP, incluyendo la memoria virtual,
si se implementa. Las tareas de administración de memoria deben llevar un registro de las partes usadas y
libres, decidir qué procesos se cargarán y dónde y asignar y liberar la memoria según se necesite.
Para ejecutar un programa debe cargarse en memoria. Si se ejecutan varios programas a la vez, cada uno
tendrá su asignación de memoria y por tanto el SO se encargará de velar porque ningún programa acceda a
la parte de memoria utilizada por otro. Al terminar su ejecución, la memoria de un programa se libera.
El administrador de archivos. Toda la información que procesa el ordenador se trata en forma de archivo,
que representa una abstracción del sistema de almacenamiento. Los archivos tienen atributos como
permisos de acceso, el dueño, el tamaño, etc.
Un tipo especial de archivo es el directorio, que se entiende como un archivos que puede contener otros
archivos. En general se organizan en el SO en forma de árbol jerárquico cuyo origen se denomina directorio
raíz. El acceso a un archivo se especifica con su ruta absoluta tomando como referencia el directorio raíz o
con su ruta relativa, referida al directorio de trabajo.
Los archivos se organizan en bloques. La forma de asignar y enlazar los bloques forma parte del sistema de
archivos del SO. Los comunes son FAT y NTFS en WS, Ext2, XFS en entornos Linux y HFS en MacOs.
La asignación de archivos puede ser adyacente si se almacenan los archivos en bloques adyacentes, en
forma de lista ligada, si se referencian con listas que apuntan a bloques o mediante listas ligadas e índices,

68
que son usados para el acceso aleatorio.Toda la gestión de estos aspectos es responsabilidad del
administrador de archivos del SO.
El administrador de procesos. Es el componente del SO que gestiona los procesos de un programa en
ejecución. Esto implica que cada proceso debe llevar un control diferenciado para evitar incoherencias entre
distintos programas como el acceso a los mismos recursos a la vez, el control de la creación y muerte del
proceso, la secuencia de llamada entre procesos y aspectos del estilo, que son gestionados por el
administrador de procesos.
El administrador de E/S. Es el componente del SO encargado de la gestión de los dispositivos de E/S. Entre
otros, proporciona el acceso a los controladores, corrige errores o planifica peticiones.
4. ESTRUCTURA
Pueden identificarse rasgos comunes de la estructura de todo SO, como la administración de procesos, de
la MP, archivos, E/S, almacenamiento secundario, comunicaciones, o el interfaz de usuario. Aunque cada
SO es diferente, sus funciones son similares y por tanto los componentes son comunes. Algunos SO
incluyen lo fundamental en el núcleo y dividen otras funciones en programas del sistema.
La estructura de un SO posee rasgos comunes, aunque el resultado final dependerá de la organización que
lo desarrolle. Sin embargo, puede decirse que la práctica totalidad de ellos, están marcados por el
desarrollo de UNIX, por lo que será el modelo estructural en que se apoye la presentación.
La estructura de Unix es un modelo de capas, en el que cada
capa sólo se comunica con las de nivel inmediatamente
inferior y superior.
La primera capa estaría formada por el hardware, la tecnología
física implementada en la máquina, fundamentalmente el
microprocesador, placa base, buses, etc. El hardware
interactúa directamente con el núcleo (kernel) del SO, que
proporciona una servicios comunes a los programas de capas
superiores. Las peculiaridades del hw permanecen ocultas a
los usuarios.
Al independizar los programas del hw, es fácil mover programas entre sistemas Unix ejecutados en distintas
plataformas. Por su parte, el kernel es el núcleo del sistema y realiza funciones relacionadas con el hw sin
relacionarse con el usuario. Permanece oculto. Se divide en dos partes: la administración de procesos, que
asigna y administra recursos de la máquina, controla la ejecución y tiempo de los procesos y determina los
privilegios de cada uno. Y la administración de dispositivos, que supervisa la transferencia de datos entre la
MP y periféricos.
La ejecución de un proceso en Unix se divide en dos niveles, el de ususario y el de kernel. Cuando se
produce una llamada al sistema se pasa de modo usuario a modo kernel. Éste analiza la llamada, la ejecuta
y devuelve el control al modo usuario. Esta diferenciación se produce porque los procesos en modo usuario
pueden acceder a sus datos, pero no a instrucciones ni datos del kernel o de otros usuarios. El modo kernel
puede acceder a todos los datos e instrucciones del sistema. Hay instrucciones privilegiadas a las que sólo
se puede acceder en modo kernel, que reside permanentemente en memoria.
La siguiente capa es la de shell (intérprete de comandos), que interpreta los comandos del usuario y llama a
las rutinas correspondientes. Es una utilidad del sistema, no forma parte del kernel. Existen distintas
versiones de shell, como sh (standard shell), csh (c-shell), vsh (visual shell), rsh (restricted shell) o ksh (korn
shell). Cada usuario puede elegir su shell.
La shell muestra un prompt para indicar al usuario que puede aceptar un comando. Para introducir un
comando, se escribe el comando con sus parámetros y se pulsa intro. La línea tecleada se denomina línea
de comandos. Cuando la shell lee una línea de comandos, extrae la primera palabra, asume que es el
nombre de un programa ejecutable, lo busca y lo ejecuta. La shell suspende su ejecución hasta que el
programa termina y vuelve a leer la siguiente línea de comandos.
La shell de Unix es programable porque de hecho, los comandos de la shell el usuario son pequeños
programas de una línea. La shell trabaja programándola constantemente. La aplicación de estos recursos
es uniforme en todos los programas.
Por fin, en la última capa se situarían las aplicaciones del usuario, de entre las que cabe destacar el
compilador de C, procesador de textos y editores o utilidades de comunicación y redes. El compilador de C
(CC), es el programa que compila los programas de usuario. Make es un programa de compilación. Se
puede definir un fichero makefile que compile un programa a partir de sus fuentes, donde habrá que

69
especificar el compilador a usar, librerías y ubicaciones para el proceso y el enlace de las librerías. Es decir,
se explica qué se compila y cómo.
5. FUNCIONES
Entre las funciones de los SO destacan la administración de archivos, el interfaz de usuario, el sistema de
E/S, o la gestión de las comunicaciones.
Administración de archivos. La gestión de la información por parte del SO debe ser lógica y uniforme. Para
ello utiliza sus propios ficheros de configuración y directorios, que en realidad también pueden entenderse
como ficheros contenedores de otros ficheros. La estructura del SO, en cuanto a ficheros se refiere, se
denomina sistema de ficheros del SO.
Entre las funciones que debe proporcionar se encuentran la de almacenar y estructurar archivos y
directorios, dar soporte a la manipulación de archivos, hacer un mapa de los archivos o realizar su respaldo
frente a errores de almacenamiento.
Interfaz de usuario. El interfaz de usuario es el intérprete de comandos, que podrá incluirse en el nucleo,
según el SO de que se trate. Todo lo relativo a la gestión del interfaz es responsabilidad del SO. El interfaz
además, puede presentarse de forma gráfica, como por ejemplo los típicos de ventanas, donde las
operaciones que permiten realizar poseen su correspondencia en línea de comandos y también son
gestionadas por el sistema.
Integridad de información. Se refiere a las funciones que garantizan que los datos y recursos de distintos
usuarios no se vean afectadas por la interacción con otros usuarios. Es decir, el SO debe controlar el
acceso de programas de forma que accedan únicamente a los recursos asignados o a los que tengan
autorización.
Administración de E/S. Engloba las funciones de administración de memoria, manejo de buffers, caché y
spooling, gestión del interfaz general de controladores de dispositivos, entre otras. El objetivo es ocultar al
usuario las peculiaridades físicas de los dispositivos hw.
Gestión de almacenamiento secundario. Entre sus funciones, el SO debe contar con la planificación de los
discos duros para dar cabida al sistema de archivos, gestionar el espacio libre y asignar el almacenamiento.
Gestión de Comunicaciones. Son funciones relacionadas con el control de envío y recepción de datos a
través de la red.
6. TIPOS
Los SO pueden clasificarse siguiendo varios criterios como lo son su estructura, servicios o entorno.
6.1. Estructura
El diseño de un SO atiende dos requisitos fundamentales, los del usuario, relativos a su facilidad de uso y
aprendizaje, seguridad o rendimiento y los requisitos software, aquellos relacionados con aspectos como el
mantenimiento, operación o eficiencia. Un SO puede estructurarse de varias formas.
Estructura monolítica. Es la estructura de los SO primitivos, constituídos por un programa compuesto de
rutinas enlazadas de forma que cada una puede llamar a cualquier otra. Las características de esta
estructura son la construcción del programa a base de módulos compilados por separado que se enlazan,
una definición robusta de los parámetros de enlace entre rutinas (que puede generar mucho acoplamiento)
y escasez de protecciones y privilegios en el control de recursos.
En general, se diseñan a medida, por lo que son eficientes y rápidos, pero sin flexibilidad para ser portados
o adaptarse a distintas aplicaciones.
Estructura jerárquica. La complejidad del SO y el incremento de sus funciones desembocó en una
organización jerárquica de su estructura. Para ello, el SO se organiza en partes muy definidas con
interfaces muy claras con el resto de componentes.
La primera estructura jerárquica o de niveles definida fue THE (Technische Hogeschool, Eindhoven), de
Dijkstra, utilizada con fines didácticos. Se puede asociar estos sistemas con sistemas multicapa, como
puedan ser Multics o Unix. Esta estructura es la predominante en la mayoría de SO actuales. El diseño
jerárquico permite que los niveles internos del SO esen más protegidos frente a accesos indeseados desde
las capas externas. Por tanto, las capas internas deberán requerir más privilegios para su acceso.
Máquina virtual. Es una estructura de SO en que se ofrece un interface a cada proceso, simulando una
máquina similar a la máquina real o nativa. En este caso, el SO distingue entre multiprogramación y
máquina extendida. El objetivo de los SO basados en máquina virtual es integrar distintos SO aparentando
funcionar como máquinas diferentes.

70
El núcleo de estos SO se denomina monitor virtual y su misión es gestionar la multiprogramación,
ofreciendo a los niveles superiores tantas máquinas virtuales como sean necesarias. Estas máquinas
virtuales no son máquinas extendidas, sino réplicas de la máquina nativa.
Cliente-servidor (microkernel). Este tipo de SO puede ser ejecutado en la mayoría de ordenadores, es de
propósito general y cumple con las misma funcionalidad que un SO convencional. Su funcionamiento
consiste en que el núcleo establece comunicación entre procesos clientes y servidores.
Los procesos pueden ser clientes del servidor correspondiente para una operación sobre un recurso. A su
vez, un proceso cliente puede actuar como servidor para otro. Esta organización ofrece gran flexibilidad en
cuanto a los servicios del sistema final, ya que el núcleo provee funciones básicas y procesos, delegando en
los servidores la mayoría de funciones que el usuario final requiera. Los servidores implementarán los
mecanismos de protección que, a su vez, serán gestionados por el núcleo.
6.2. Servicios
En función de los servicios ofrecidos al usuario, se pueden identificar SO de tipo:
Monousuario. Son SO que dan servicio a un usuario a la vez, independientemente del número de micros de
la máquina, número de procesos que el usuario pueda ejecutar en un mismo instante u otras variables.
Multiusuario. Son SO capaces de dar servicio a más de un usuario simultaneamente. Para que esto ocurra,
los usuarios se conectarán desde varios terminales, reales o virtuales (red). El servicio se presta con
independencia del hardware de la máquina y del número de procesos que cada usuario ejecuta.
Monotarea. Un SO monotarea sólo permite realizar una tarea por usuario simultáneamente. Puede darse el
caso de un sistema multiusuario y monotarea, si se atiende a varios usuarios a la vez, pero en un instante
concreto de tiempo sólo se realizará una tarea perteneciente a uno en particular.
Multitarea. Son los que permiten al usuario realizar varios trabajos simultáneamente. Suelen organizarse
son interfaces gráficas con menús, para facilitar el cambio rápido entre tareas.
Monoproceso. Los que son capaces de gestionar sólo un procesador del ordenador. Si la máquina tuviera
más de un procesador se perdería la capacidad excedente al no poder explotarse.
Multiproceso. Los SO capaces de gestionar más de un procesador del sistema. Pueden trabajar de forma
simétrica o asimétrica. En simetría, los procesos o sus partes (threads o hilos) se asignan indistintamente a
cualquier procesador. La asimetría consiste en establecer un procesador como maestro para distribuir la
carga al restp de procesadores esclavos.
Un thread o hilo es la parte activa en memoria de un proceso que se ejecuta. El multiproceso requiere que
la programación se adapte a sus características para obtener su máximo rendimiento. Así, programas
desarrollados para sistemas monoproceso pueden no obtener mayor rendimiento en sistemas multiproceso,
si el código no es paralelizable, es decir ejecutable simultáneamente en distintos procesadores.
6.3. Entorno
En función del entorno en que operen y su organización, los SO pueden clasificarse red y distribuidos.
SO de red (NOS). Son los que presentan la capacidad de interactuar con los SO de otros equipos a través
de una red. Se orientan a la gestión de recursos, el intercambio de información, operaciones remotas,
sincronización de trabajos y tareas distribuidas, en general.
SO distribuidos. Son los que ofrecen sus servicios a través de una red integrando los recursos de forma
centralizada, de forma que el usuario trabaja en con el SO remoto como si estuviera en local, de forma
transparente. El ejemplo paradigmático es el de un terminal ligero, como por ejemplo un cajero automático,
que trabaje directamente con el SO de un servidor más o menos remoto, dando la impresión al cliente que
está trabajando en el cajero, cuando lo cierto es que accede a otra máquina que centraliza el proceso.
La realidad no cuenta con SO distribuidos puros por la complejidad que presentan a la hora de distribuír
procesos en varias unidades de proceso, resolver concurrencia y paralelismo, recuperación de errores y
otros. Además el incremento de potencia de las estaciones remotas a bajos precios relativos aconseja
soluciones mixtas, en que el SO distribuido coordine las capacidades de la red en su conjunto.
Las razones para crear o adoptar SO distribuídos básicamente son dos, que los problemas a resolver
tengan un marcado caracter distributivo o por fiabilidad y disponibilidad de recursos. El primer caso sería
típico el ejemplo anterior de un parque de cajeros automáticos. El segundo caso vendría ejemplificado por
un sistema de alta disponibilidad en que si un servidor falla, al estar replicado, el servicio no se interrumpa.

71
TEMA 16. SISTEMAS OPERATIVOS. GESTIÓN DE PROCESOS.

1. INTRODUCCIÓN
2. SISTEMAS OPERATIVOS
3. GESTIÓN DE PROCESOS
3.1. Planificación
3.2. Comunicación entre procesos
3.3. Interbloqueo
3.4. Exclusión mútua

72
1. INTRODUCCIÓN
La gestión de procesos es el conjunto de actividades responsables del control y administración de las partes
en ejecución de cada programa. Abarca aspectos como tiempos de ejecución asignados, control del tiempo
de respuesta, políticas de asignación de recursos y prioridades o la comunicación e interbloqueo entre
procesos. De esta gestión depende en gran medida el rendimiento del ordenador.
2. SISTEMAS OPERATIVOS
Sigue siendo válido lo expuesto en el punto 2 del tema anterior.
3. GESTIÓN DE PROCESOS
Un proceso es un programa en ejecución. Esto implica que ha debido ser cargado en memoria, le han sido
asignado recursos y posee un estado reflejado en el contador de programa. Además, la gestión de un
proceso incluye una pila que almacena parámetros temporales y datos variables globales.
Un proceso puede crearse como respuesta a un intento de conexión de usuario, para ofrecer un servicio del
SO o generarse por petición de otro proceso, que desde ese momento recibirá el nombre de proceso padre
y el proceso generado se llamará hijo. Del mismo modo, un proceso que termina, debe ser gestionado por el
SO para liberar los recursos que tuviera asignados. La muerte un proceso puede ser natural o forzada,
cuando por ejemplo hay un error, o lo “mata” el superusuario.
Por su parte, un hilo es una tarea que puede ejecutarse en paralelo con otra. Permite a una aplicación
realizar varias tareas a la vez, de forma concurrente, compartiendo recursos, y por tanto, simplificando el
diseño de las aplicaciones. El conjunto de hilos de ejecución que comparten recursos y esos mismos
recursos, se denomina proceso.
Los hilos se diferencian de los procesos porque los procesos, en general, son independientes y no
comparten recursos directamente. Al cambiar de un proceso a otro mediante el dispatcher, el SO genera un
overhead, o tiempo desperdiciado por el procesador para realizar un cambio de contexto, en este caso
pasar del estado de ejecución al de espera y colocar el nuevo proceso en ejecución. En el caso de un hilo,
al pertenecer al mismo proceso, al realizar un cambio de hilo, prácticamente no hay overhead.
Los procesos son controlados por el SO con una cola que enlista los procesos que solicitan el uso de UCP.
La posición de un proceso en las colas de gestión determina su estado, de los que los fundamentales son
ejecución, listo o bloqueado. Un proceso en ejecución, es el que ocupa actualmente la UCP, si está listo,
significa que está preparado para ejecutarse y el estado bloqueado indica la imposibilidad de ejecutarse
hasta que se de un evento como por ejemplo, una operación de E/S.
Otros estados son el de nuevo, suspendido y terminado. En el estado nuevo, el proceso es creado, pero no
ha entrado en el grupo de ejecutables. Para crear un proceso nuevo el SO le asigna un identificador y las
tablas necesarias para su gestión. El estado terminado significa que ha sido excluido del grupo de
ejecutables y el sistema debe liberar los recursos que tuviera asignados. Un proceso suspendido es el que
pasa a memoria secundaria y dejando de estar disponible inmediatamente para ejecución. Los estados
bloqueado y suspendido son independientes.
El cambio de estado de un proceso requiere guardar el estado anterior y cargar el nuevo. El tiempo de
cambio de contexto es variable. Puede consistir sólo en cambiar punteros de registros o usar memoria. Las
transiciones entre estados son fáciles de recordar. Un proceso nuevo podrá pasar a listo o ejecución. Del
mismo modo, un proceso puede terminar desde cualquier estado. Y al estado de suspenso se puede llegar
desde cualquier otro estado.
Por tanto, para recordar las transiciones fundamentales puede
usarse el esquema de la figura.Las transición de ejecución a
bloqueado envía una señal block al darse un cierto evento, de
ejecución a listo se da, por ejemplo al repartir la UCP su tiempo
entre procesos, de listo a ejecución cuando la UCP asigna su
tiempo al proceso o de bloqueado a listo, cuando la condición de
bloqueo cesa.
La información de control de un proceso se agrupa en un bloque llamado de control de proceso PCB, que
se compone de varios campos que representan su estado, el contador del programa (con la siguiente
instrucción a ejecutar), registros de la UCP (que contiene los registros que utiliza), información de
planificación (prioridad, punteros de colas,...), información de memoria y de proceso (tiempo de UCP, límites
temporales) e información de E/S. Incluye tablas de páginas o tablas de segmentos además del valor de los
registros base y límite.Las tablas de memoria almacenan información sobre la asignación de MP y virtual a
procesos, datos de protección y acceso a memoria compartida e información de gestión de memoria virtual

73
Las tablas de E/S son usadas por el SO para conocer el estado de un dispositivo de E/S, los canales de
comunicación y las posiciones de memoria usadas para la transferencia.
A cada proceso se asigna una zona de memoria. Si es compartida habrá que evitar accesos simultáneos y
si es reservada, evitar accesos no autorizados. Por tanto el SO debe controlar las direcciones de memoria
permitidas a cada proceso, en general con un registro base y otro límite que indican la primera dirección y la
última o la longitud de la zona. Si se produce un intento de acceso no autorizado se activará una
interrupción de error.
El espacio de memoria en que se da concurrencia de procesos se denomina sección crítica. El SO tiene la
responsabilidad de evitar colisiones (exclusión mutua), inanición o interbloqueo (que la espera no sea
indefinida) y que el acceso sea progresivo. Además, el resultado de los procesos debe ser independiente de
su velocidad y orden de entrada en la sección crítica. Estos errores se denominan condición de carrera.
Las tareas más importantes de gestión de procesos que realiza el SO se resumen en la sincronización, que
se da cuando varios procesos interactúan y debe evitarse incurrir en incongruencias entre ellos y el control
de los estados, en particular los bloqueos dados por la E/S y la asignación de tiempo de UCP. Estas dos
tareas implican por una parte la planificación de los procesos, la comunicación entre ellos y el interbloqueo.
3.1. Planificación
En la gestión de procesos adquiere especial importancia la planificación para asignar el tiempo de UCP que
consumirá cada uno. Ésta ha de orientarse a obtener un mínimo tiempo de respuesta mínimo y la máxima
productividad. El SO es el que decide los procesos que entran en cola, para lo que se vale de dos
planificadores, el de corto y largo plazo.
El planificador a largo plazo selecciona procesos de memoria secundaria y los carga en la MP para su
ejecución y actúa cuando lo solicita un nuevo programa. El planificador a corto plazo selecciona uno de los
procesos listos y le asigna UCP, se ejecuta casi constantemente. A veces se utilizan planificadores a medio
plazo, para organizar colas de suspensión, que contienen los procesos en espera en memoria secundaria.
Un proceso se ejecuta a ráfagas, bien de CPU, bien de E/S que lo bloqueen. Las ráfagas poseen distintas
duraciones, que debe tener en cuenta el planificador.
El planificador a corto, es el que planifica el uso de UCP y mantiene la cola de procesos listos y la cola de
dispositivo, con los procesos en espera de E/S. Un proceso en cola de procesos que pasa a ejecución
podrá ejecutar una ráfaga de UCP, requerir una E/S y pasar a la cola de dispositivo. Del mimo modo, podrá
crear nuevos procesos y esperar a que terminen o ser eliminado por algún error, violación de permisos, etc.
Los planificadores, para asignar los procesos a la UCP utilizan algoritmos de planificación, que deben entre
otros, deben contar con criterios como el tiempo de respuesta (el que pasa entre la emisión de la solicitud y
la primera respuesta), el tiempo de retorno (el empleado en ejecutar el proceso), uso de UCP, plazos de
ejecución, equidad (todos los procesos deben tratarse), prioridades, productividad (número de procesos
terminados en la unidad de tiempo), equilibrio de recursos o tiempo de espera de un proceso.
Los algoritmos implementan políticas de asignación, cuyo rendimiento, en general dependerá de los
programas que se ejecuten. Como ejemplo pueden pensarse en la asignación de memoria a los procesos
más comúnmente utilizados, ya que puede suponerse que se seguirán utilizando más habitualmente. Sin
embargo podrá usarse la política contraria, los procesos más recientemente utilizados, precisamente por
esto, se utilizarán menos en el futuro.
Esta es la razón por la que la política más apropiada dependa de la ejecución concreta de los programas.
Algunos de los algoritmos de planificación más conocidos son FCFS, SJF o round robin.
El algoritmo FCFS implementa una cola FIFO en la que el primer proceso que pide recursos es el primero
en ser atendido. No es eficiente ya que un proceso largo o un bucle pueden bloquear el procesador.
El algoritmo SJF (primero el trabajo corto), ejecuta ráfagas sin interrupción, eligiendo siempre la de menor
duración de entre las asignadas a cada proceso. Es util en procesos por lotes. Si dos procesos tienen la
misma duración de ráfaga se aplica FCFS. Es óptimo, pero presenta la dificultad del cálculo de la duración
de la siguiente ráfaga, que suele estimarse como de duración igual a la anterior.
El algoritmo Round Robin (turno rotatorio) implementa una cola FIFO circular de procesos listos en que se
asigna a cada proceso un tiempo máximo o “cuanto”, de forma que si un proceso requiere una ráfaga menor
que el cuanto, se libera y si es mayor, se interrumpe dejando paso al cuanto de otro proceso. Está pensado
para sistemas de tiempo compartido.
Cuando un algoritmo implementa una política de prioridades, la gestión se realiza en función de la prioridad
de cada proceso, con varios niveles o con colas de diferentes prioridades. En este caso, al dar servicio a la
cola más prioritaria se procesa la siguiente más prioritaria y así sucesivamente. Si se trata de colas

74
multinivel, se permite a los procesos cambiar de cola, de forma que los procesos prioritarios se sitúen en las
colas prioritarias. En general se dispondrá de cierto número de colas, un algoritmo de gestión para cada una
y un algoritmo para el cambio de procesos a colas de mayor o menor nivel.
Estos ejemplos de algoritmo suponen el trabajo con un único procesador que ejecuta órdenes en forma
secuencial. En un entorno multiprocesador, tanto el hardware como el SO deben gestionar los procesos de
forma diferente así como repartir la carga entre procesadores. En estos casos, la creación de hilos no ofrece
un paralelismo en los programas de forma que se explote la capacidad de un multiprocesador.
La planificación al ser más compleja, afecta al rendimiento. Uno de los mayores problemas es el arbitraje de
dos procesos que se ejecutan en dos procesadores distintos y acceden al mismo espacio de memoria. Las
posibles soluciones generan dos tipos de arquitectura, NUMA y SMP. En la primera, cada proceso tiene
acceso y control de una parte de la memoria y en la segunda todos los procesos comparten memoria.
3.2. Comunicación entre procesos
La comunicación entre procesos (ICP) es una de las tareas importantes del SO. Se realiza a través de
zonas de memoria compartida u otros métodos como por ejemplo soluciones hw. El SO ofrece para la
comunicación dos primitivas, send y receive de argumentos el identificador de proceso destino y el mensaje.
La comunicación puede ser directa o indirecta. En la directa, un proceso nombra explícitamente al receptor,
estableciendo un enlace único entre pares con una señal tipo Send(P, mensaje) y el destino lo recibe
mediante otra señal tipo Receive(Q, mensaje). En la comunicación indirecta los mensajes se cambian
mediante buzones. Si dos procesos tienen un buzón compartido tienen un enlace. Un buzón puede
asociarse a más de dos procesos y entre dos procesos puede haber más de un buzón.
Los buzones pueden tener longitud nula, es decir, no se permite la espera o almacén de mensajes, y por
tanto el emisor y receptor se bloquean hasta que la parte contraria recibe o vuelve a enviar, longitud n, caso
en que el emisor podrá dejar hasta n mensajes que irá descargando el receptor, o longitud ilimitada, si el
emisor puede dejar, teóricamente, un número ilimitado de mensajes.
Para evitar el bloqueo de emisor y receptor se puede implementar exclusión mutua para evitar que el
receptor solicite datos antes de que ser emitidos o el emisor emita antes de que el receptor esté preparado.
3.3. Interbloqueo
El interbloqueo es un problema que afecta a procesos concurrentes que se da cuando se solicita un recurso
que no puede usarse porque en teoría se está utilizando por otro proceso, pero que en realidad puede no
estar usándolo. El problema puede ser originado por el sistema de gestión de recursos.
Si se produce interbloqueo, se cumplen simultáneamente la exclusión mutua (los recursos no se pueden
compartir), retención y espera (se retiene un recurso a la espera de recursos de otros procesos), no
expropiación (un recurso no puede expropiarse) y espera circular (se esperan recursos del proceso
siguiente, que espera recursos del siguiente y el último espera recursos del primero).
Un caso típico de interbloqueo es la inanición, situación en la que un proceso no bloqueado espera un
evento que no se dará, por ejemplo, si con políticas de prioridades, los procesos quedan en espera de
recursos de forma que el inicio del proceso se retrase indefinidamente por atender a procesos prioritarios.
Para evitar el interbloqueo se pueden plantear mecanismos de prevención, detección y recuperación que
pueden resultar caros en cuanto a recursos y proceso, ya que por ejemplo la detección del del recurso o
proceso implicado puede llevar mucho tiempo.
En general para evitarlo se implementan mecanismos de exclusión mutua, u otros que garanticen que los
procesos solicitan todos los recursos necesarios a la vez, de forma que no continue hasta tenerlos todos
disponibles, o bien que si le falta algún recurso, libere el resto a él asignados.
Entre los métodos de prevención del interbloqueo es típico el algortimo del banquero, que precisa
información de cómo se solicitan recursos y su número máximo necesario, el orden en que se solicitan y
liberación. El algoritmo examina dinámicamente el estado de la asignación de recursos para evitar la espera
circular. Para la detección de interbloqueo se pueden usar algoritmos basados en redes de Petri.
Se definen los estados del sistema con el número de recursos disponibles y asignados y por la demanda
máxima de procesos, distinguiendo entonces entre estados seguros e inseguros. Los primeros son aquellos
en que el sistema puede asignar el máximo número de recursos a cada proceso, en orden y evitar el
interbloqueo. un estado inseguro es el que no garantiza que se produzca interbloqueo.
3.4. Exclusión mútua
La exclusión mutua debe garantizar que no se producen inestabilidades debidas a accesos simultáneos a
zonas de memoria compartida. Para ello se aplica el concepto, ya presentado de exclusión mútua. La

75
exclusión mutua se suele implementar desactivando interrupciones en secciones críticas, con variables
interruptor que indican si un proceso puede acceder a una sección crítica o con semáforos del SO, que son
métodos de control similares. Dos algoritmos representativos de implementación de exclusión mutua son los
de Dekker y Peterson.
El algoritmo de Peterson es una simplificación del de Dekker para dos procesos. Básicamente usa una
variable bandera cuyo valor depende del proceso que la invoca y un turno que indica el proceso activo. El
algoritmo de Dekker usa un turno, de forma que al asignar el turno a un proceso, se cierra la sección crítica
al resto. El siguiente es un ejemplo de implementación en seudocódigo.
El algoritmo tiene un vector de banderas y un turno. Un cierto:= 1; bandera[2]:= [0,0]; turno:= 0;
proceso que quiere entrar a la sección crítica coloca su
mientras (cierto) {
bandera a 1. Si la bandera de otro proceso en la sección
crítica es 1, queda en espera hasta que le sea cedido el bandera [Idpro]:=cierto;
turno. Cuando obtiene el turno, si el otro proceso pone su
bandera a 0, sale del primer bucle, entra en la sección mientras (bandera[1-Idpro] = cierto) {
crítica indefinidamente y sale del segundo bucle. Cuando if (turno = 1-Idpro) {
termina le da el turno a otro y pone su bandera a 0.
bandera[Idpro] = 0
Esta solución sw puede sustituirse por otras soluciones hw,
como lo son la inhabilitación de interrupciones o las mientras (turno = 1- Idpro)
instrucciones atómicas. La inhabilitación de interrupciones bandera[Idpro]:= 1 /* espera */
puede generar inanición si un programa no termina.
} /* Sección Crítica */
Otras posibles implementaciones para la exclusión mútua
son los métodos de semáforos y los monitores que }
proporciona el SO. Un semáforo es una variable protegida turno := 1- Idpro; /* turno de otro proceso */
que funciona a modo de indicador de turno, que en general
se disponen tantos, como recursos a gestionar. bandera[Idpro] := 0;

Por ejemplo, un proceso podrá invocar una primitiva tipo /* ''Sección no crítica'' */
SIGNAL para liberar un recurso o un WAIT para esperar su }
turno. WAIT y SIGNAL son instrucciones atómicas.
Si un proceso solicita un recurso y el semáforo posee un valor mayor que 0, el proceso será atendido y se
decrementa el valor del semáforo. Cuando termina libera el recurso y otro proceso en espera recogerá el
turno. La forma elemental de representar un semáforo es como interruptor binario.
El uso de semáforos se suele explicar con problemas típicos como el de los filósofos o el del productor
consumidor. En el primero, cinco filósofos tienen que comer de sus cinco platos respectivos, disponiendo de
sólo 4 tenedores y además se necesitan 2 para comer. En el segundo un proceso produce datos que
consume otro. Los semáforos deben evitar que los datos se consuman más rápido de lo que se producen.
Las soluciones con semáforos, en el primer caso pasa por hacer que cada filósofo (proceso) solicite el
tenedor (recurso) en el mismo orden, para romper la espera circular y el interbloqueo. Si los dos tenedores
están libres, se accede al plato de comida (sección crítica). En el caso del productor consumidor se
incrementa el semáforo en 1 cada vez que el productor genere un dato. Si el semáforo es 0, el consumidor
espera hasta que sea mayor que 0, momento en que consumirá los datos. El uso de semáforos implica el
uso de primitivas por parte de los programas, lo que puede complicar la programación.
Los SO también pueden usar monitores, para evitar la exclusión mútua. Un monitor es un módulo sw que
garantizan que sus recursos (métodos, variables...) sólo se usan por un proceso a la vez. Un monitor se
estructura en una inicialización, datos privados, procedimientos propios y cola de entrada que indica los
procesos en espera. La sección crítica se programa en el cuerpo del monitor, garantizando su integridad.
Además, un monitor podrá suspender un proceso y liberar sus recursos para que otro pueda usarlos
mientras el anterior espere. Esto suele realizarse con variables de exclusión tipo Cwait o Csignal.

76
TEMA 17. SISTEMAS OPERATIVOS. GESTIÓN DE MEMORIA.

1. INTRODUCCIÓN
2. SISTEMAS OPERATIVOS
3. GESTIÓN DE MEMORIA
3.1. Organización
3.2. Asignación
3.3. Protección

77
1. INTRODUCCIÓN
La MP es gestionada por el SO, lo que implica obtener rendimiento y seguridad. Un SO gestiona la memoria
permitiendo a varios procesos disponer simultáneamente de ella y ampliándola con memoria virtual.
2. SISTEMAS OPERATIVOS
Sigue siendo válido lo expuesto en el punto 2 del tema anterior.
3. GESTIÓN DE MEMORIA
La gestión de memoria tiene en cuenta tres aspectos: organización, asignación y protección. La
organización describe cómo se estructura la memoria para dar cabida y gestión a los procesos. La
asignación aborda el problema del control del espacio usado y el libre. Por su parte la protección se encarga
de proteger los espacios reservados de memoria de accesos no autorizados.
Estos tres aspectos deben garantizar la ejecución segura de los procesos, así como orientarse a ofrecer un
correcto rendimiento del sistema, puesto que las políticas a implementar pueden afectar de forma notable la
eficiencia del sistema, si por ejemplo se desaprovecha memoria, hay demasiada fragmentación, etc.
3.1. Organización
La organización de la memoria la realiza el SO, designando las zonas que ocupará cada programa o
proceso. La primera solución que se plantea, más didáctica que práctica es la organización absoluta, en la
que el SO reservaría una zona de memoria para cada programa. Es una solución rígida que puede generar
problemas, ya que en principio puede no conocerse la longitud ni número de programas que se procesarán.
La organización absoluta se realiza en tiempo de compilación.
Soluciones más flexibles son las basadas en direccionamientos lógicos, que el SO traduce a direcciones
físicas, bien estáticamente, si la traducción se realiza en tiempo de carga del programa en MP, bien de
forma dinámica que se realiza en tiempo de ejecución, sumando la dirección lógica al valor de un registro.
Los cálculos los hace la MMU (Memory Management Unit) del procesador.
Los primeros gestores de memoria organizaban la memoria en una parte para el SO y otra de programa, lo
que se conoce como organización de valla o registro límite. Actualmente, la gestión de memoria es más
compleja distinguiéndose dos grandes formas de organización, las particiones fijas y las variables.
Particiones fijas: En esta forma de organización, el SO crea zonas de memoria de tamaño fijo y distribuye
los procesos completos en esas zonas contiguas. Este método genera fragmentación interna, es decir, se
desaprovecha parte de la memoria, ya que es difícil que el tamaño de un proceso coincida con el de la
zona, con lo cual se ubicará, en el caso general, en una zona algo mayor.
La diferencia de tamaños representa el grado de fragmentación. Para minimizarla se usan algoritmos y
sonas de distintos tamaños. El SO decide el tamaño de cada zona en función del tamaño máximo de
proceso, memoria disponible, etc. Además mantiene una tabla con la zona ocupada por cada proceso.
Particiones variables: La memoria se organiza en zonas en función de las necesidades de los procesos,
ajustando la partición al tamaño del proceso. En este caso la fragmentación surge cuando un proceso se
libera de la memoria y queda su hueco. El siguiente proceso que pase a ocupar ese hueco, lógicamente
será de menor o igual tamaño, lo que genera fragmentación externa, en contraposición al anterior tipo de
fragmentación, la interna.
Para gestionar la fragmentación interna el SO puede intentar fusionar huecos adyacentes, de forma que si
un proceso se libera y existe un hueco aledaño se unan, u optar por la compactación de memoria,
trasladando áreas ocupadas a zonas contiguas, sin espacios, generando zonas libres grandes. Estas
técnicas de desfragmentación requieren un tiempo que debe considerarse y lógicamente se da con
organizaciones dinámicas.
La organización de la memoria requiere que el SO debe conocer qué zonas están libres y cuales ocupadas.
Para ello puede servirse de un mapa de bits o listas. La utilización de mapas de bits divide la memoria en
zonas variables a las que se asigna, por ejemplo un 1 si está ocupada y un 0 si está libre. Otra vez se
precisa asumir compomisos puesto que si las zonas son pequeñas, se incrementa el coste de
mantenimiento y si son demasiado grandes se incrementará la fragmentación. El uso de listas representa la
memoria como nodos de la lista con la propiedad de ocupado o libre. El tipo de lista marca el rendimiento de
la gestión de los huecos y por tanto de la memoria.
Las políticas a seguir para organizar los procesos en memoria utilizan criterios, que pueden ser igual de
óptimos o no, dependiendo de la situación. Los más habituales son el de primer ajuste, en que se recorre la
memoria hasta que se encuentra un hueco en que cabe el proceso, el mejor ajuste, que busca el hueco más
ajustado al tamaño del proceso o el de peor ajuste, que genera el hueco más grande posible.

78
3.2. Asignación
La asignación soluciona los problemas de la ubicación de procesos en memoria. Básicamente se distinguen
los casos de llegada de un proceso nuevo, de sustitución y de captura, cuando un proceso que no es nuevo
debe entrar en memoria.
La asignación de memoria a procesos debe afrontar el problema de intercambio de procesos, lo que
representa todo un arte, que implica decidir los criterios y políticas óptimas de cambio bajo demanda o las
estimaciones de los procesos que más habitualmente se usarán en el futuro.
Paginación. Es una técnica que intenta optimizar el uso de memoria dividiéndola en bloques del mismo
tamaño llamados marcos de página, de forma que un proceso puede dividirse y situar sus partes en marcos.
El SO mantiene el estado de cada marco con una tabla de marcos que indica si están libres o no.
A su vez, el espacio de direcciones de un proceso se divide en páginas y se buscan los marcos necesarios
para cargar las páginas del proceso. Una dirección lógica se divide en un número de página y un
desplazamiento en la misma. Los marcos del programa no son contiguos, sino que se gestionan con una
tabla de páginas creada al cargar el proceso. La tabla de páginas se opera con la MMU y así se evita la
fragmentación externa y la interna queda limitada a media página por proceso.
La forma de implementar la tabla de páginas ha de tener en cuenta que no sea de un tamaño excesivo y el
tiempo de asignación y de cambio de contexto debe minimizarse. Si en los registros se almacena un
puntero al comienzo de la tabla, el cambio de contexto sólo implica cambio en un registro, pero con más
accesos a memoria. Una solución de compromiso es el de memoria asociativa. Se basa en que la mayoría
de procesos usan habitualmente las mismas páginas, que se guardarán en la memoria asociativa con su
marco físico. Si una página no está en la memoria asociativa se busca en la tabla de páginas.
Segmentación. Intenta solucionar la fragmentación interna distinguiendo las partes lógicas de un programa.
El espacio de direcciones de un proceso se divide en partes lógicas de tamaño variable denominados
segmentos con diferentes nombres y tamaños. Las direcciones especifican el número de segmento y
desplazamiento. La segmentación la controla el programador.
La segmentación se define en tiempo de compilación, cuando se les asigna identificadores, con los que se
crea una tabla de segmentos que hace corresponder direcciónes lógicas y físicas y almacena la dirección
física base y el tamaño de segmento. Como el número de segmentos es variable, es necesario almacenar
un registro con la longitud de la tabla de segmentos. Puede generarse fragmentación externa.
Los SO actuales usan una solución combinada, la segmentación paginada, que usa segmentación de cara
al usuario y los segmentos se dividen en páginas, minimizando la fragmentación externa e interna. La tabla
de segmentos contiene la dirección de la tabla de páginas del mismo. Por tanto, una dirección lógica tiene el
número de segmento y el desplazamiento a su vez se divide en página y desplazamiento en ella.
Memoria virtual. Si un proceso necesita más memoria que la que puede tener en MP, puede usarse
memoria virtual (MV), que es memoria secundaria (HD o similar), que se trata como si fuese MP. Su
operativa consiste en dividir el programa, cargando partes en la memoria real y partes en la virtual. Cuando
es preciso ejecutar parte del programa en MV, se genera una petición y se cambia una página de memoria
por la que se necesita ejecutar. El funcionamiento es transparente al usuario, pero lógicamente más lento.
El SO debe conocer qué partes del programa están en cada nivel, MP o MV y aplicar una política de
intercambio eficiente. Cuando se requiere un cambio de página de MV a MP, se produce un fallo de página
que hace que el SO cargue la página necesaria. La secuencia consiste en verificar las direcciones, guardar
el estado del proceso, seleccionar un marco libre o sustituir otra página, cambiar la página en MV a MP y
actualizar la tabla de páginas.
El cambio de MV a MP también se conoce como swapped in y el cambio contrario swapped out (se toma
como referencia la MP). El proceso de cambio no es trivial, debe seleccionar los procesos a retirar, los que
pasarán a MP y gestionar el espacio de intercambio.
El uso de MV requiere minimizar el tiempo promedio de acceso (suma del tiempo de acceso a memoria por
la probabilidad de no tener fallo de página más el tiempo de solución de fallo de página por la probabilidad
de ocurrencia) para aumentar su eficiencia. Por tanto, la gestión de MV intentará reducir la probabilidad de
fallo de página con políticas eficientes de sustitución de páginas. Las habituales son FIFO, sustitución
óptima, LRU o segunda oportunidad.
Una política FIFO selecciona la página que lleve más tiempo en memoria, considerando que las páginas
más usadas no volverán a serlo en el futuro reciente. La sustitución óptima considera la sustitución de la
página que más tardará en volver a ser utilizada. Posee un carácter didáctico y comparativo, ya que no
puede conocerse el futuro. El criterio LRU (última menos usada) cambia la página menos usada,

79
considerando que la tendencia seguirá sin usarla en el futuro. El criterio de segunda oportunidad consiste en
señalar a cada página referenciada o no mediante un bit que se actualiza con cada cambio.
Elegir un criterio no es trivial, y cualquiera puede presentar buen comportamiento en función de la ejecución
particular que se presente. Además pueden combinarse técnicas, mejorando el rendimiento. En cualquier
caso, el SO debe evitar la sobreasignación de memoria sin producir fallos de pagina.
Lógicamente, si se asignan más marcos a un proceso se reducen sus fallos de página, a cambio de menos
procesos activos. Por el contrario, si se asignan menos marcos, los fallos aumentan, pero caben más
procesos en memoria. El SO debe adquirir un compromiso entre estos parámetros.
Los algoritmos de sustitución se pueden dividir en locales o globales. Los locales sustituyen marcos de un
proceso y los globales seleccionan marcos del conjunto de todos los que hay en memoria. Ambos criterios
suponen ventajas e inconvenientes.
Por ejemplo, la sustitución global con muchos procesos puede provocar un aumento del intercambio de
páginas, la hiperpaginación, que disminuye el rendimiento del procesador. La sustitución local ante
hiperpaginación, limita los efectos al proceso que se trate, pero el rendimiento cae si la hiperpaginación
afecta a varios procesos.
Se denomina conjunto de trabajo al de páginas usadas en un momento por un proceso. Para evitar
problemas, la situación deseable es contar con los conjuntos de trabajo de cada proceso simultáneamente
en memoria. Determinar qué páginas constituyen el conjunto de trabajo puede utilizarse el principio de
localidad, que enuncia que las referencias de los programas tienden a agruparse en zonas concretas del
espacio de direcciones que cambian poco, es decir, podría estimarse el conjunto de trabajo con las páginas
usadas más recientemente e intentar no sustituir las páginas del conjunto de trabajo de un proceso.
3.3. Protección
La gestión de memoria que realiza el SO debe garantizar que un proceso no accede a zonas de memoria
reservadas a otros espacios. Son los aspectos de protección de memoria. Los mecanismos de protección
son varios, como los ya presentados de exclusión mútua.
Por ejemplo, en caso de reubicación estática, las direcciones generadas por la UCP deben verificar que son
mayores que la dirección base y menores que el límite de la zona, si no es así, debe producirse un error que
tratará el SO.
Por su parte, la paginación obtiene mayor rendimiento cuando dos o más procesos ejecutan código común
de una misma página. En este caso el SO debe garantizar que los distintos procesos no interfieren y la
ejecución se realiza con seguridad. La protección de la memoria podrá implementarse con bits de
protección asociados a las páginas o métodos similares.
Del mismo modo, la segmentación también permite la compartición de código entre procesos. Los métodos
de protección de segmentos son ahora más eficaces que en el caso de la paginación, ya que puede
protegerse todo el código y dejar los datos sólo de lectura.

80
TEMA 18. SISTEMAS OPERATIVOS. GESTIÓN DE ENTRADA/SALIDA.

1. INTRODUCCIÓN
2. SISTEMAS OPERATIVOS
3. GESTIÓN DE E/S
3.1. Interrupciones
3.2. Acceso Directo a Memoria

81
1. INTRODUCCIÓN
Los dispositivos de E/S permiten la interacción de máquina y usuario. Es misión del SO su gestión y
sincronización con el resto de componentes del ordenador. En general el tratamiento de la E/S es el mismo
independientemente del dispositivo que se trate. Por tanto, el SO proporciona funciones genéricas para el
tratamiento de la E/S y será el fabricante el que adapte su firmware y software al dispositivo concreto.
2. SISTEMAS OPERATIVOS
Sigue siendo válido lo expuesto en el punto 2 del tema anterior.
3. GESTIÓN DE E/S
La gestión de E/S del SO debe contemplar tareas como el envío de comandos a periféricos, tratamiento de
interrupciones, control de dispositivos y errores, gestión de buffers o presentar un interface simple entre
dispositivo y resto del sistema, en general común a todos (independencia del dispositivo).
Tratamiento de interrupciones. Si un dispositivo está preparado para una operación de E/S generará una
interrupción y será el SO el que la atienda, lo que implica que se debe suspender el trabajo que en ese
momento ejecutase el procesador y realizar tareas de bajo nivel agrupadas en una rutina de servicio
transparente al usuario.
Controladores de dispositivos. El SO provee mecanismos de gestión de dispositivos, ocultando los detalles
hw. Los controladores, son el firmware del dispositivo. En general se enlazan con el SO con programas de
alto nivel conocidos como drivers. Por tanto, un driver es un programa que instala el firmware de dispositivo
necesario para que sea correctamente gestionado por el SO. Suele denominarse, por abuso del lenguaje,
driver tanto al firmware como al software instalador.
Buffers. Un buffer es una memoria intermedia o caché que se suele usar para adaptar velocidades en las
transferencias de E/S, de forma que se escribe o lee rápidamente en la caché y cuando el dispositivo está
listo se le transfiere la información a su ritmo. Un tipo especial de buffer es el pool, que es un buffer en
forma de cola, lo que permite tratar varios trabajos a la vez, lo que se conoce como spooling.
Independencia de dispositivos. Ofrece un nivel más de independencia que los controladores, que permite al
SO tratar dispositivos similares con el mismo código de forma consistente. Por ejemplo, los dispositivos
orientados a bloques, como discos o CD pueden tratarse con las mismas llamadas.
La comunicación con los dispositivos de E/S se puede realizar por sondeo, interrupciones o acceso directo a
memoria, lo que ya se citó en el tema 2. El sondeo sería una evolución de la espera activa, donde la UCP
consulta periódicamente el estado del dispositivo. No tiene en cuenta prioridades y es muy ineficiente. El
método de interrupciones consiste en utilizar señales hw que alertan del estado operativo de un dispositivo.
Al recibirse, el micro pasa a atender la interrupción con una rutina de servicio de la interrupción. El acceso
directo a memoria supondría una evolución de las interrupciones al gestionarse casi automáticamente la
rutina de servicio, al permitirse directamente el acceso del dispositivo a su rutina en memoria.
3.1. Interrupciones
Las interrupciones surgen de la necesidad de enviar información a la CPU por parte de los periféricos. Al
contrario que el sondeo, esta técnica es más eficiente, ya que sólo usa la CPU cuando el periférico lo
demanda. A cada dispositivo se asigna una línea de interrución o IRQ (Interrupt ReQuest) que llega al
controlador de interrupciones que entre sus funciones debe habilitar o inhibir las líneas de interrupción
(enmascaramiento), establecer prioridades e interpretar líneas no enmascables conocidas como NMI
El procesador, si no integra un controlador de interrupciones suele disponer una línea única de interrupción
llamada INT, activada por el controlador de interrupciones. Cuando se activa, el procesador consulta los
registros del controlador de interrupciones para identificar la IRQ y ejecutar su correspondiente rutina.
La secuencia del procesador entonces termina la instrucción en curso, guarda el valor del contador de
programa para poder continuar tras la rutina de servicio (ISR, Interrupt Service Routine), que es ejecutada y
al terminar retoma el estado anterior restaurando el contador de programa.Un PC típico dispone un
controlador (en general en el chipset) de 16 o 24 líneas IRQ y ofrece interrupciones software o excepciones
en ensamblador para cambiar de contexto a modo monitor ante posibles errores.
El tratamiento de las interrupciones dependerá del dispositivo. Para ello, se dividen en dispositivos
orientados a bloques y a caracteres. Los orientados a bloques son direccionables, es decir, el programador
puede leer o escribir un bloque concreto del dispositivo. Ejemplos son discos duros y CS. Estos bloques
tienen tamaño fijo y una dirección y pueden operarse sin afectar otros bloques.
Los dispositivos orientados a caracteres trabajan con secuencias de bytes sin estructuración. No son
direccionables. Ejemplos son el teclado y pantalla. Otros componentes no se ajustan a esta clasificación,
como los relojes, que ni aceptan direccionamiento ni generan o aceptan flujos de caracteres.

82
3.2. Acceso Directo a Memoria
En el tratamiento de las interrupciones, cuando se produce una, el SO ejecuta el controlador de dispositivo y
su correspondiente rutina de servicio, de forma que la comunicación con la UCP se realiza por medio de los
registros del procesador o bien a través de zonas reservadas de la MP, lo que se denomina E/S mapeada
en memoria. Esto implica que se pierde parte de la memoria, para implementar la memoria de comunicación
con los dispositivos.
Una técnica más avanzada es la de acceso directo a memoria o DMA
por sus siglas en inglés. DMA consiste en permitir a los dispositivos
acceder directamente al bus del sistema, con su respectivo control,
lógicamente, para realizar su comunicación, sin que tenga que
intervenir la UCP, lo que la descarga de proceso.
Ejemplos de dispositivos que usan esta técnica son tarjetas gráficas o
controladores de disco duro. Una transferencia DMA copia un bloque
de memoria de un dispositivo a otro sin afectar al proceso del micro,
aunque bien es cierto, que al ocuparse el bus del sistema, se prohibe
su uso en esos instantes.
El arbitraje del bus puede realizarse por medio de dos esquemas, el
robo de ciclo y la ráfaga.
El DMA por robo de ciclo está basado en la utilización de uno o más ciclos de UCP por cada instrucción, de
forma que cuando una instrucción no recurre al bus, puede ser usado para la transferencia DMA. De esta
forma se consigue una alta disponibilidad del bus para la UCP, a cambio de una transferencia de datos más
lenta. Es el método habitual debido a la baja interferencia con el procesador.
El DMA por ráfagas trabaja enviando bloques en ráfagas que ocupan el bus completamente consiguiendo
una alta velocidad pero impidiendo el uso del bus a la UCP. El arbitraje del bus lo realiza en este caso el
controlador DMA.

83
TEMA 19. SISTEMAS OPERATIVOS. GESTIÓN DE ARCHIVOS Y DISPOSITIVOS.

1. INTRODUCCIÓN
2. SISTEMAS OPERATIVOS
3. GESTIÓN DE ARCHIVOS Y DISPOSITIVOS
3.1. Sistema de archivos
3.2. Gestión de dispositivos

84
1. INTRODUCCIÓN
La gestión de archivos y dispositivos requiere una estructura y organización que debe proveer el SO. Cada
uno dispondrá de su sistema de archivos particular y gestionará los dispositivos según su programación. La
forma de organización del SO en este ámbito debe ser tenida en cuenta por administradores, usuarios y
programadores, para obtener el máximo rendimiento del equipo.
Esta gestión lleva asociada problemas de seguridad, que estarán previstos en su mayoría por el SO, que
proveerá una estructura homogénea, herramientas de corrección de errores, de protección y de explotación
de la información.
2. SISTEMAS OPERATIVOS
Sigue siendo válido lo expuesto en el punto 2 del tema anterior.
3. GESTIÓN DE ARCHIVOS Y DISPOSITIVOS
Un archivo o fichero es una unidad lógica de almacenamiento, que ofrece una forma homogénea de
tratamiento de la información. Cada SO provee su sistema de archivos, que será elegido al instalarse. Para
referenciar un archivo, se utiliza un identificador, un nombre que suele asociarse a un índice de una tabla de
asignación, y una ruta, que indica dónde se encuentra almacenado.
En general, el sistema de archivos, los directorios, se organizan en forma de árbol jerárquico. Los directorios
son un tipo de archivo especial, capaces de contener otros archivos, que a su vez podrán volver a ser
directorios. Los archivos finales, suelen llevar asociado a su nombre una extensión que indica su tipo o
formato para facilitar tareas como la identificación del programa con el que tratarlo.
La ruta de un archivo suele tener una estructura que comienza con la unidad o dispositivo raíz donde se
encuentra almacenado y, separados con barras (\ o /) los distintos directorios a los que acceder hasta llegar
al contenedor último. El último componente de la ruta será el nombre del archivo con su correspondiente
extensión, o sin ella, según las opciones del SO.
Se distinguen dos tipos de rutas, la absoluta y la relativa. Una ruta absoluta especifica toda la localización
del archivo desde su raíz y la relativa especifica la localización desde el directorio actual, con lo que se
ahorra la referencia de los directorios de niveles anteriores.
Cada archivo lleva asociados atributos como su nombre, tipo, tamaño, permisos, fechas, etc. Los atributos
se usan, entre otros, para su protección, en general, limitar que usuarios no autorizados puedan acceder a
él, o modificarlo. La seguridad suele implementarse mediante ACL, listas de control de acceso o el acceso
por capacidades. Se pueden distinguir tres tipos de sistemas de archivos: sistemas de archivo de disco, de
archivo de red y de propósito especial.
Los sistemas de archivos de disco se orientan al almacenamiento en memoria secundaria como por ejemplo
FAT, NTFS, Ext2, Ext3 o ISO 9660 (CDs). Los sistemas de archivos de red, solucionan el acceso a
archivos a través de red para lo que usan protocolos como NFS o Samba. Los sistemas de archivos de
propósito especial son los que ofrecen funciones distintas a las anteriores, como el intercambio con
memoria virtual. Ejemplos son Swap, acme o cfs.
Si un archivo puede tener distintas estructuras lógicas, el SO debe ser capaz de identificarlos y tratarlos, lo
que incrementa la complejidad del sistema. En otros SO, como Unix no se definen tipos de archivos, de
forma que sólo se empaquetan bytes según los bloques físicos, otorgando más flexibilidad a costa de menor
soporte y obligando a las aplicaciones a interpretar la estructura de archivo. Los archivos con estructura de
árbol organizan sus registros con una clave y según su organización se distinguen tres tipos, serie no
estructurada de bytes, secuencia de registros de longitud fija o árbol de registros.
Un archivo es operado por las aplicaciones o por el SO que provee un programa gestor de archivos que
para ello, además de mostrar el contenido de directorios o revisar la estructura de archivos del sistema. Los
gestores en modo texto ofrecen la información en forma de lista de contenido, mientras los gráficos los
muestran con iconos.
3.1. Sistema de archivos
Los archivos se almacenan en soportes de almacenamiento permanente y son operados por el SO con
herramientas como el gestor de archivos. A nivel de programa un archivo es tratado como una secuencia de
bytes sin orden o agrupados en registros.
A nivel físico se estructuran en bloques fijos de 512 B, debido a la naturaleza de los dispositivos. El sistema
de archivos permite la organización de los bloques en archivos o directorios, con la información de qué
bloques pertenecen a qué archivos. Además gestiona la seguridad y permisos, integridad, cuotas de disco,
crecimiento de archivos, métodos para evitar fragmentación o enlaces simbólicos, entre otros.

85
Un sistema de archivos seguro debe asegurar a los archivos su integridad, privacidad y disponibilidad, o
sea, que no sean modificados, ni consultados sin autorización y que estén presentes cuando se requieran.
Para asegurar estos extremos, el SO puede utilizar mecanismos como las ACL, el sistema UGO (user,
group and others) que establece permisos en una jerarquía para el propietario del archivo, su grupo y el
resto de usuarios u otros mecanismos particulares.
Las técnicas de limitación de fragmentación tienden a almacenar los archivos en zonas contiguas del disco,
con el fin que las cabezas lectoras minimicen sus movimientos de posicionamiento y por tanto también el
tiempo de acceso. Para optimizar la estructura del árbol de directorios, los SO suelen usar enlaces, archivos
que apuntan a otros archivos, mediante la ruta del archivo enlazado.
Las cuotas y el soporte para crecimiento de archivos se
orientan a evitar que el disco se sature. Las cuotas
reservan un límite de espacio a cada usuario. El
sistema de archivos debe soportar un aumento de la
capacidad de disco.
Los discos tienen su caché, pero el SO puede
implementar más caché en MP para realizar menos
accesos a disco. La gestión de la caché es similar a la
gestión de memoria presentada en el tema 16.
El proceso de escritura de la caché puede realizarse de forma diferida, en la que se escribe en caché y más
tarde en disco, o de forma directa. El uso de cachés mejora el rendimiento del sistema.
Por fin, el SO mantiene una zona de memoria virtual en disco, que puede estar o no, relacionada
directamente con el sistema de archivos, por ejemplo, en WS se usa un archivo protegido de tamaño
variable, mientras Linux usa una partición swap al margen del sistema de archivos.
La implantación del sistema de archivos puede organizarse con asignación adyacente, con lista, lista e
índice o inodos. La primera almacena cada archivo en bloques contiguos en disco. Es eficiente pero
produce mucha fragmentación. La asignación con lista mantiene cada archivo con una lista ligada de
bloques, donde la primera palabra de cada bloque apunta al siguiente, eliminando la fragmentación, pero
ralentizando el acceso al obligar a leer toda la estructura.
La asignación mediante una lista e índice combina el método anterior con un índice que soluciona el
problema de acceso aleatorio. Cada archivo tiene una lista con sus bloques y una tabla en que se indica si
el bloque está ocupado o no. Si está ocupado, se presenta la dirección del siguiente bloque del archivo. El
problema es el tamaño de tabla.
Los sistemas tipo Unix usan inodos, que permiten asociar a cada archivo un tabla con la dirección de sus
bloques, pudiendo existir varios niveles de bloques. Cuando se carga el archivo, se carga en MP el inodo, lo
que acelera la gestión.
Para conocer si un bloque está ocupado o no, el sistema de archivos, en general usará un mapa de bits,
que lo indicará con uno de sus dos posibles valores o una lista que enlace los bloques libres.
3.2. Gestión de dispositivos
El SO puede planificar el acceso a disco en base a prioridades o posición del cabezal para minimizar el
tiempo de acceso. Esto puede hacerse eligiendo los accesos que menor movimiento de las cabezas
precisen. Esta planificación la implementan algoritmos como SSTF, SCAN o LOOP.
El planificador de disco minimiza tiempo de búsqueda, prioriza procesos, reparte el ancho de banda del
disco a procesos y garantiza plazos de tiempo. Los algoritmos de planificación básicamente reordenan
peticiones para que sigan el orden que el cabezal irá encontrando en su movimiento.
Algunos algoritmos de planificación son el de planificación aleatoria (RSS), FIFO y LIFO, no óptimos, al no
tener en cuenta la posición del cabezal, SSTF (búsqueda más corta primero) que busca el movimiento
mínimo del cabezal, SCAN, que ordena las peticiones según el movimiento en un sentido del cabezal, con
sus variantes C-SCAN, SAN-N y LOOP o la planificación por prioridades..

86
TEMA 20. EXPLOTACIÓN Y ADMINISTRACIÓN DE UN SO MONOUSUARIO Y MULTIUSUARIO.

1. INTRODUCCIÓN
2. EXPLOTACIÓN Y ADMINISTRACIÓN DE UN SO MONOUSUARIO
2.1. Explotación
2.2. Administración
2.2.1. Sistema
2.2.2. Procesos
2.2.3. Memoria
2.2.4. Archivos
3. EXPLOTACIÓN Y ADMINISTRACIÓN DE UN SO MULTIUSUARIO
3.1. Explotación
3.2. Administración
3.2.1. Usuarios
3.2.2. Recursos
3.2.3. Permisos
3.2.4. Seguridad

87
1. INTRODUCCIÓN
La explotación de un SO es la forma en que el usuario utiliza los recursos del sistema. En primera
aproximación puede decirse que explotar un SO se refiere a su utilización.
La administración de un SO se refiere a la forma en que se configura su potencial. Básicamente la
administración gira en torno a tres conceptos: usuarios, recursos y permisos, cuyas relaciones deben ser
definidas como marco principal de la administración.
Un SO monousuario es aquel en que sólo gestiona un único usuario simultáneamente, bien debido a
limitaciones hardware, software o de otra índole. La explotación y administración de un SO multiusuario es
más compleja que el caso monousuario, pero ofrece más prestaciones, ya que permite gestionar varios
usuarios simultáneamente. Las soluciones comerciales de este tipo más extendidas son WS 2003 y 2008
Server, UNIX, Linux o Solaris. Los WS son la versión para servidores mientras que los Unix-like tienen
versiones libres, que no gratuitas, aunque pueden conseguirse de forma gratuita sin quebrantar la ley.
2. EXPLOTACIÓN Y ADMINISTRACIÓN DE UN SO MONOUSUARIO
Los SO monousuario son los que sólo gestionan un usuario a la vez. Esta forma de trabajo lo simplifica, ya
que los dispositivos de E/S y control dependen del proceso en ejecución y por tanto las instrucciones
acaparan los recursos y se procesan en el momento. Ejemplos de SO monousuario son las versiones
domésticas de WS y MS-DOS.
En general el tipo de usuario no se define y, por tanto, los medios para restringir el acceso al mismo usuario
son casi inexistentes, ya que un usuario accede a la información y por tanto apenas existen limitaciones
para acceder a cualquier archivo. Las técnicas de protección y seguridad se basan en copias de seguridad.
En algunos SO se accede al sistema por medio de un usuario único con permisos totales. Es el caso de SO
antiguos como MS-DOS y WS 95/98/Me o MacOS, en que no se diferencia claramente los permisos de
administrador y usuario genérico. No implementan el concepto de multiusuario.
Para presentar la explotación y administración de un SO monousuario, en la siguiente exposición se irá
combinando teoría y ejemplos de implementación con MS2 (Microsoft Disk Operating System), por ser uno
de los SO más representativos y no resta generalidad. Entre sus limitaciones se encuentran ser
monousuario, monotarea y gestionar pobremente la memoria y como fortalezas su compatibilidad, lo que
hizo que fuera uno de los SO de más amplia difusión.
2.1. Explotación
En general, un SO puede explotarse en modo por lotes o en tiempo real. En el proceso por lotes se agrupan
tareas que se realizan de forma conjunta y diferida, mientras en los sistemas de tiempo real, las instrucciones
se ejecutan instantáneamente, que es la forma habitual. La explotación del SO en tiempo real puede
clasificarse en función del número de usuarios, procesos, procesadores o el tiempo de respuesta. Este tema
presenta la explotación del SO atendiendo al número de usuarios, en particular, el caso monousuario.
La principal herramienta de explotación de un SO son sus instrucciones. En general, se dispone de dos
tipos de instrucciones, las del SO, privilegiadas y las instrucciones de usuario que representan el verdadero
interface, denominado también intérprete de comandos. La interfaz de MS2 trabaja en modo texto
presentando en pantalla C:\> o similar. El símbolo '>' es el prompt o indicador de comienzo de línea y la letra
anterior la unidad activa en el momento actual. Es gestionado por el programa command.com.
La explotación del DOS se realiza con órdenes o comandos, que son palabras que expresan una operación.
Las órdenes se ejecutan introduciéndolas con sus parámetros tras el prompt y pulsando Enter. MS2 no es
case-sensitive, no distingue entre mayúsculas y minúsculas en las órdenes y permite el uso de caracteres
comodines, que pueden tomar cualquier valor como * e ? Para el direccionamiento de ficheros, se puede
especificar un direccionamiento absoluto o relativo, separando los directorios con /. La sintaxis de un
comando es el esquema que indica cómo se interpreta correctamente ese comando. Indica el nombre de la
orden, los parámetros válidos y las opciones posibles.
En la explotación del sistema, el usuario realizará tareas sobre archivos y dispositivos, manejo de discos y
unidades, uso del sistema de archivos, gestión y trato de ficheros o uso de variables de entorno y
configuración del SO. La realización de estas tareas se hará siguiendo la sintaxis que marque el sistema.
Como ejemplo, algunos comandos típicos usados para el tratamiento de discos en MS2 son:
Comando Función Sintaxis
format / Formatea unidades. El parámetro obligatorio es el nombre de la format unidad [opciones]
unformat unidad a formatear. Unformat deshace el formateo e intenta
unformat unidad [opciones]
recuperar datos en el anterior formateo.

88
chkdsk / Realiza una revisión lógica y física del disco y ofrece un chkdsk unidad [opciones]
scandisk informe.
scandisk unidad [opciones]
defrag Realiza una defragmentación de una unidad defrag unidad
diskcomp Compara dos discos pista a pista diskcomp disco1 disco2
fdisk Crea particiones en el disco duro. Fdisk [particion] [opciones]
sys Instala los ficheros necesarios en el sector de un disco para convertirlo en disco de arranque.
Los archivos de arranque son io.sys y msdos.sys.
diskcopy Copia un disquete a otro evaluando archivos, no bytes. No sirve para discos duros.
Ejemplos de comandos usados para el tratamiento de directorios son:
Comando Función Sintaxis
dir Muestra el contenido de un directorio dir [nombre de fichero][opciones]
cd Cambia de directorio a la nueva ruta absoluta o relativa cd [nuevo directorio]
md (Make Diredtory) Crea un directorio. md [ruta/nombre de directorio]
rd (Remove Directory) Elimina un directorio que estará vacío rd [ruta/nombre directorio]
tree Muestra el árbol de directorios que cuelgan del actual
deltree Elimina directorios y todo su contenido deltree [ruta/nombre directorio]
Comandos usados para el tratamiento de ficheros son:
Comando Función Sintaxis
copy Copia un archivo de una ruta origen a otra ruta. Conserva el original copy [origen] [destino]
xcopy Copia archivos y directorios vacíos o no, de origen a destino xcopy [origen] [destino]
move Mueve un archivo de un directorio a otro. El origen desaparece. move [origen] [destino]
rename Cambia el nombre de un fichero. rename fichero
del Borra un fichero. del fichero
undelete Intenta recuperar ficheros borrados con el comando del. undelete fichero.
print Print. Imprime un fichero. print fichero
attrib Muestra los archivos con sus atributos. Permite modificarlos. attrib fichero [accion]
sort Ordena un fichero Sort fichero
Ejemplos de comandos de parametrización del sistema son:
Comando Función Sintaxis
doskey Almacena instrucciones ejecutadas y las recupera con el cursor
prompt Configura la forma de mostrar la línea de comandos prompt [opciones]
cls Limpia la pantalla y coloca el prompt en la línea superior
date / time Muestran y permiten modificar la fecha y hora configurada en el sistema
Ejemplos de operadores son:
Operador Función Sintaxis
< Redirección de la entrada [comando] < archivo
> Redirección de la salida [comando] > archivo
>> Redirección de la salida a un archivo existente [comando] >> archivo
| Redirección de la salida de un comando como entrada de otro [comando1] | [comando2]

89
2.2. Administración
La administración de un SO monousuario puede dividirse en la administración del sistema, procesos y
memoria. Siguiendo con el caso representativo, decir que MS2 es un SO monousuario y monotarea,
robusto, con un sistema de archivos jerárquico, sin protecciones, y con una administración engorrosa de la
memoria. Para ejecutar un proceso hijo, el SO necesita ejecutar un programa padre, de forma que sólo se
ejecuta uno en cada momento. Si el programa padre deja de funcionar, el programa hijo se bloquea
automáticamente.
2.2.1. Sistema
MS-DOS utiliza cinco programas para su funcionamiento, io.sys, config.sys, ms-dos.sys, command.com y
autoexec.bat. El arranque de MS-DOS se realiza con los ficheros io.sys y ms-dos.sys. Con ellos se lee y
ejecuta autoexec.bat, que lee la configuración del sistema del fichero config.sys.
io.sys configura el arranque y gestiona la E/S de memoria. En el proceso de arranque debe especificarse la
configuración del sistema, que en MS2 se hace con el fichero config.sys. ms-dos.sys representa el núcleo
del SO y el command.com el intérprete de comandos, responsable del prompt. Por fin, autoexec.bat es un
fichero que contiene instrucciones ejecutadas en el arranque.
En general, un SO ofrecerá flexibilidadpara adaptarse a las exigencias del usuarios. Para ello dispondrá de
comandos de parametrización, personalización y optimización del sistema. En MS2 esta parametrización se
realiza básicamente en los ficheros autoexec.bat y config.sys.
El fichero autoexec.bat debe tener obligatoriamente ese nombre y extensión, pues será el que se busque
para su ejecución. Debe situarse en el directorio raíz (C:\). Es editable, ya que se codifica en texto en
formato ASCII. En su estructura se distinguen tres partes, de sistema, de configuración y de gestión.
En la parte del sistema se encuentran las siguientes líneas de configuración:
@ECHO OFF. Para no mostrar las instrucciones de autoexec.bat en pantalla.
SET PROMPT $P$G. Define el prompt.
SET PATH [ruta]. Establece directorios “abiertos”, para ejecutar cualquier programa que esté en él desde
cualquier otro punto del ordenador.
SET TEMP [ruta]. Establece el directorio temporal. En general suele definirse en C:\dos\temp.
SET DIR CMD=/O/P/W. Define las condiciones iniciales de ejecución del comando dir.
La configuración del fichero autoexec.bat, sigue una sintaxis bastante lógica, con la referencia al parámetro
que se configurará. Lineas de configuración típicas podrían ser mode codepage select= 850, para la
configuración de video o c:\dos\keyboard.sys sp para la configuración del idioma del teclado.
Por su parte, para la gestión, se debe seguir también la sintaxis que define Microsoft. Ejemplos de líneas de
configuración típicas de gestión serían C:\dos\drivers\mouse.com o C:\dos\mscdex.exe, para instalar los
drivers del ratón.
La configuración del fichero config.sys es similar, pudiéndose editar y teniendo en cuenta que es el fichero
donde se cargan los controladores mínimos de funcionamiento del sistema, ha de encontrarse en el
directorio raíz. Ejemplos de líneas de configuración podrían ser device=display.sys, device=mouse.sys, etc.
Comandos de parametrización del fichero config.sys son mode, para definir las características del teclado,
date y time para introducir fechas, path, que indica la ruta de un programa a ejecutar, prompt, para
cambiarlo, keyb para configuración del teclado o device/devicehigh, que carga controladores de dispositivos.
Algunos controladores genéricos de MS2, suelen tener la extensión sys. Los más conocidos pueden ser
himen.sys y emm386.sys para gestión de memoria, ramdrive.sys, que crea un disco virtual en memoria,
ansi.sys de gestión de monitor y teclado, display.sys y ega.sys para la pantalla, setver.exe, para especificar
la versión a ejecutar de un programa y dblspace.sys para indicar dónde se guarda dblspace.bin.
En MS2, algunas llamadas al sistema, son similares a las de Unix, pero también se pueden realizar con
señalamientos al núcleo, en general a través del vector 0x20. Pueden clasificarse también en llamadas para
gestión de procesos, memoria, ficheros y directorios y gestión de E/S.
2.2.2. Procesos
La administración de procesos en MS2 no soporta ejecución simultánea. Una vez arrancado el SO la shell
muestra su prompt indicando que puede aceptar instrucciones. Cuando se ejecuta una instrucción o
programa, la shell inicia un nuevo proceso hijo que debe finalizar antes de volver a mostrar el prompt.
Cuando un proceso hijo se ejecuta, su padre se suspende hasta que termine el hijo.

90
MS2 cuenta con dos tipos de archivos ejecutables, los .com y los .exe que generan dos tipos de procesos.
Los archivos .com, no llevan encabezado, contienen un sólo segmento de código ejecutable que es cargado
en memoria y ejecutado. Los procesos que generan poseen segmentos de texto, datos y pila que no
pueden superar en total 64K. Los archivos .exe poseen código ejecutable e información sobre reasignación.
Sus procesos disponen además de los mencionados, de segmentos adicionales.
Cada proceso en MS2 dispone de un bloque PSP (Prefijo de Segmento de Programa) inicial de 256 B, que
guarda información como el tamaño del programa, puntero al PSP padre, puntero al bloque del contexto
(zona de memoria con las variables de shell), etc.
Al generarse un proceso hijo en MS2 se comprueba si existe memoria suficiente y en caso que no haya no
se creará, ya que no utiliza memoria virtual. Si el proceso hijo se crea, en general hereda los archivos del
padre y puede abrir sus propios archivos, que serán cerrados al morir el hijo, se recuperará la memoria que
ocupase y se elimina por completo.
Existen también programas residentes en memoria, que aunque terminen su ejecución, siguen cargados en
la memoria, debido a razones diversas como si, por ejemplo, se usan frecuentemente al contener sus
propios controladores de interrupciones.
2.2.3. Memoria
La administración de memoria tiene por objetivo su optimización. En MS2 la gestión puede ser manual o
configurarse automáticamente (a partir de la tercera generación, 80386) mediante el gestor memmaker, que
evita bastante la intervención del usuario. La administración de memoria permite direccionar tanta RAM
como disponga el hw, aunque se hace de forma compleja debido a las limitaciones impuestas por las
primeras generaciones de procesadores (8086, 8088) en que se contaba con 20 bits en el bus de
20
direcciones, es decir sólo se podía direccionar hasta 1 Mb de memoria (2 posiciones). De esta forma, la
memoria se divide en cuatro zonas: memoria convencional, superior, alta y extendida.
La memoria convencional es la zona que abarca desde la primera posición hasta los
640 Kb y almacena los datos y programas de usuario.
La memoria superior es la zona comprendida entre los 640 Kb y el 1 Mb, se divide
en módulos de 64 Kb y se usa para datos del sistema como las rutinas BIOS. A
veces se la denomina memoria reservada y como no suele emplearse por completo,
a partir de MS2 5.0 es posible usar bloques libres (UMB, Upper Memory Blocks)
para programas residentes o controladores obteniendo más memoria convencional.
A partir del 1 Mb, 1024 Kb, se encuentra la memoria extendida, que abarca el resto
de memoria que disponga el ordenador. En los de segunda generación (80286)
hasta 16 Mb, y a partir de los procesadores de tercera generación, hasta los 4 Gb.
Dentro de la memoria extendida hay una zona, la memoria alta que comprende las
direcciones entre los 1024 y 1088 Kb. En un principio MS2 no podía acceder a la
memoria extendida, porque se requería que el procesador trabajase en modo
protegido, por lo que la mayoría de programas modernos usaban recursos para
acceder con sus propios gestores de memoria.
Una de las soluciones para direccionar la memoria extendida fue la técnica de memoria expandida (EMS),
que maneja la memoria extendida con punteros almacenados en la memoria superior en un bloque
reservado de 64 K (marco de página). En realidad, es un mapeo de memoria, con una gestión engorrosa, ya
que la información debe llevarse a memoria convencional, tratarse y volver a almacenarlo en la memoria
extendida, actualizando el bloque de la memoria superior.
Esta técnica también se conoce como conmutación de bancos de memoria. Además puede usarse memoria
extendida para simular memoria expandida. El direccionamiento se realiza por medio de dos bloques de 16
bits, segmento y desplazamiento y la gestión la realiza el programa hymen.sys
La zona de memoria alta se usa para cargar el núcleo del SO y liberar espacio en memoria convencional. A
partir de MS2 5.0 se accede a memoria alta sin trabajar en modo protegido. Si se distingue memoria alta, la
extendida comienza a partir de los 1088K. Por fin, decir que si se mapea la BIOS en la memoria, para
acelerar el proceso, a esa zona que contiene la BIOS se la denomina shadow.
MS2 cuenta con dos programas para la administración de la memoria, hymen.sys, ya presentado, para el
direccionamiento y emm386.exe para el acceso y gestión de memoria alta. La administración de la memoria
requiere analizar las líneas de configuración del fichero config.sys residentes en memoria (files, buffers,
lastdrive) ajustando sus valores y añadir la linea “device” para cargar los controladores himen.sys y
emm386.exe, el primero para crear memoria alta y el segundo los bloques de memoria superior. La orden
DOS = HIGH carga el núcleo en memoria alta y DOS = UMB crea los bloques.

91
Para obtener el máximo de memoria convencional debería parametrizarse emm386 para tener la mayor
cantidad de memoria superior posible, examinar los controladores de dispositivos del config.sys definidos
con las órdenes device o devicehigh e intentar cargarlos en memoria superior y examinar los programas
residentes del fichero autoexec.bat (cargados o no con loadhigh) e intentar cargarlos en memoria superior.
2.2.4. Archivos
La administración de archivos sigue una organización jerárquica en forma de árbol, de cuya raíz cuelga el
resto archivos y se nota como el nombre asignado a la unidad lógica o física que lo contiene, por ejemplo
“C:\”. Para referenciar un archivo, se usan rutas absolutas y relativas y para referenciar el directorio padre se
puede usar “..” y el actual “.”, existiendo ficheros especiales de caracteres y bloques para dispositivos.
A nivel lógico, el disco duro del SO diferencia cuatro zonas, el sector de arranque, el primero del disco, y por
tanto el primero en ser leído, que almacena los programas de arranque, la tabla FAT, para
direccionamiento, el directorio raíz, en general limitado a 3 sectores y por fin, información de usuario.
La información se almacena en directorios y archivos. Los directorios son archivos con referencias a otros
archivos. Los archivos son grupos de bytes referidos por un nombre. Los archivos y directorios sólo pueden
verse desde el directorio inmediatamente superior. El directorio activo es el actual del usuario, y como no se
pueden montar sistemas de archivos adicionales, si se referencia un archivo de una unidad no activa
actualmente, se debe indicar su ruta.
El nombre de los directorios puede tener como máximo 8 caracteres y extensión no obligatoria, de 3,
separada por un punto. En sus atributos están el nombre, tamaño y fecha de la última modificación. Los
nombres de los archivos también tienen como máximo 8 caracteres y una extensión obligatoria de 3,
separada por un punto. Ejemplos de extensión de archivo son .exe para ejecutables, .sys de sistema, .bat
para los de procesamiento por lotes,.com de comando o ejecutables, .bak, copias de seguridad, etc.
Los archivos no poseen propietario ni enlaces. Sus atributos indican si son de sólo lectura (readonly),
archive, si ha sido modificado desde su creación, hidden, si es oculto, system, si es un archivo del SO o
directory, si es un directorio.
MS2 ofrece varias herramientas de administración. Pueden señalarse msbackup, dblspace y defrag.
Msbackup realiza copias de seguridad o las restaura. La copia puede ser total o incremental y puede
programarse. A partir de MS2 6.0 se incorpora el compresor de disco DoubleSpace, con el que poder doblar
la capacidad del disco duro. Los datos se comprimen antes de grabarse en el disco y se descomprimen al
ser leídos. Por su parte el defragmentador, defrag, reduce la lejanía de los clusters que almacenan un
fichero para reducir el tiempo de acceso e incrementa el rendimiento del disco.
3. EXPLOTACIÓN Y ADMINISTRACIÓN DE UN SO MULTIUSUARIO
Un SO multiusuario es aquél que soporta simultáneamente más de un usuario, de forma que la misma UCP
puede dar servicio a la vez a distintos usuarios, que accederán desde distintos terminales. El paradigma de
SO multiusuario es UNIX, filosofía presente desde su concepción y que ha heredado la familia GNU-Linux.
En el mundo Microsoft, SO multiusuario característicos son los WS a partir de XP y las versiones servidores
como 2003 y 2008 Server. Se basan en la tecnología WS NT y como características destacables están el
que todas las opciones de seguridad funcionan sobre NTFS, no sobre FAT, son multitarea y multiusuario y
el sistema de seguridad está basado en niveles de protección para usuarios y grupos.
Se permite acceder al escritorio de un usuario desde cualquier equipo conectado al servidor mediante
Terminal Server, se pueden compartir directorios y recursos en red, contiene servidores para aplicaciones
de red y se ofrece el servicio de controlador de dominio para gestionar usuarios y grupos.
La exposición del tema se apoyará en la descripción de Unix y se comentarán las características más
relevantes de las soluciones Microsoft.
3.1. Explotación
Unix es un SO que deriva de los primeros diseños para gestionar centrales de conmutación telefónica. Es
un sistema robusto y caro. Parte del código se cedió para su uso en investigación y universidades. Así
surgió Minix, una pequeña implementación didáctica de Unix que fue aprovechada por Linus Torvalds para
escribir un nuevo núcleo de SO llamado Linux.
Anteriormente, la FSF, Free Software Foundation, tenía como proyecto principal el llamado GNU (GNU is
Not Unix) cuyo objetivo era el desarrollo de un SO libre. Desarrolló numerosas aplicaciones, pero le faltaba
el núcleo, lo que completó el lanzamiento de Linux. La mayoría de SO de libre distribución, están basados
en Linux y por eso se les denomina por su nombre particular y se añade GNU/Linux, especificando así la
separación entre el núcleo del sistema, Linux, y el resto, GNU.

92
Unix es un SO completo de grandes prestaciones, multiusuario, multitarea y de tiempo compartido. Linux es
casi idéntico, comparte la mayoría de características técnicas y funcionales yrepresenta una alternativa
directa de los sistemas comerciales. También existen distribuciones comerciales basadas en Linux como
SUSE o Red Hat y otras gratuitas como Ubuntu o Debian.
Los SO basados en Unix, como Linux, también se pueden referenciar como Unix-like. En general, las
características generales del SO son válidas para los Unix like. Éstos SO suelen soportar diversos sistemas
de archivos, como Ext3, XFS, FAT o NTFS, usan las características de modo protegido de los procesadores
80386 y superiores, soportan paginación por demanda con una partición en disco llamada swap.
La memoria dedicada a los programas y la caché del disco está unificada, los ejecutables pueden usar
librerías de enlace dinámico y el acceso a dispositivos se trata como un fichero. Ofrecen potentes
herramientas y servicios de trabajo en red en general utilizando una estructura cliente servidor e incluyen un
servidor X-Windows y numerosos controladores.
El formato de un comando Unix es: comando [parámetro]. Donde “comando” es el nombre de la instrucción,
siempre presente y en minúsculas y el parámetro será el que requiera o no, el comando. Los parámetros
serán opciones, precedidas de un guión o nombres de ficheros. Los metacaracteres son caracteres que
tienen un valor comodín, sustituyendo a uno o más caracteres, son el * y el ?, como en MS2.
El acceso al SO requiere identificación, que consta de un nombre de usuario (login) y una contraseña o
password. Si la identificación es correcta se accede al sistema. Para salir del sistema se usan los comandos
exit, logout, o pulsando Ctrl-D. Una consola virtual en Unix permite a un usuario tener más de una sesión de
login al mismo tiempo. Para acceder a una nueva consola virtual se utiliza la combinación de teclas alt-tecla
de función. Para abrir una consola virtual después de entrar al sistema se usa Alt-F2 y para conmutar a la
primera alt-F1. Para salir del sistema se deben cerrar todas las sesiones abiertas.
Algunos ejemplos de comandos usados para el tratamiento de directorios son:
Comando Función Sintaxis
ls, dir Muestra el contenido de un directorio. Dir equivale a ls –l. ls [nombre de fichero][opciones]
cd Cambia de directorio a la nueva ruta absoluta o relativa cd [directorio]
mkdir (Make Diredtory) Crea un directorio. mkdir [ruta/nombre de directorio]
rmdir (Remove Directory) Elimina un directorio rmdir [ruta/nombre directorio]
pwd Path absoluto del directorio actual desde el raíz pwd
Comandos usados para el tratamiento de ficheros son:
Comando Función Sintaxis
cp Copia un fichero de un origen a un destino. Conserva el original. cp [origen] [destino]
rm Borra ficheros rm [opciones] [fichero]
mv Mueve un archivo de un directorio a otro. El origen desaparece. mv [origen] [destino]
cat Dirige el contenido de un fichero a la salida estándar. cat [fichero]
more Muestra un fichero en pantalla haciendo pausa entre pantallas more [fichero]
In Crea vínculos entre archivos In [opcion] [origen][destino]
grep Busca el patrón pasado como argumento en un fichero o varios grep [patrón] [fichero]
Comandos de propósito general son:
Comando Función Sintaxis
man Ayuda en línea man [comando]
passwd Cambia la clave de acceso de usuario en la máquina que se ejecuta passwd [contraseña]
who Información de quién está en el sistema who
hostname Devuelve el nombre de la máquina del SO Hostname
echo Devuelve el contenido del argumento que se le pasa Echo [argumento]
date Fecha y hora del sistema date

93
Los operadores típicos en Unix son los mismos que en MS2, ya que prácticamente son estándar. Sin
embargo, si debe destacarse un clásico de las herramientas de explotación en Unix, el editor de textos vi,
muy usado, en general para editar los ficheros de configuración. La forma usual de vi es vi [fichero].
Vi tiene tres formas de trabajo, modo comando, comando de línea y edición. El modo comando permite
desplazarse por el texto, el modo comando de línea permite ejecutar comandos y el modo edición permite
agregar texto. Al entrar en vi, se entra por defecto en modo comando y podrá pasarse a modo edición,
mediante comandos de edición como i. Para pasar de modo edición a modo comando se pulsar Esc. Para
acceder a modo comando de línea, se debe estar en modo comando y pulsar “:”, para ejecutar comandos
como por ejemplo salir guardando cambios (wq).
Linux, ofrece interfaces gráficas de explotación y administración. El administrador Linux suele usar la línea
de comandos, dado que su shell es muy potente. El interfaz gráfico en Linux se denomina servidor X, y se
conocen como X-Window, gestores gráficos de tipo ventanas. Los más conocidos son KDE y Gnome. Por
su parte WS presenta un interface de usuario gráfico permitiendo administrarlo con ventanas y menús,
aunque también permite usar la línea de comandos MS-DOS con su “símbolo del sistema”.
3.2. Administración
Un administrador de sistemas cuenta entre sus tareas la gestión de usuarios, recursos y permisos, la
organización del sistema de archivos, mantenimiento y documentación técnica o el control del rendimiento
del sistema. Para ello, los SO multiusuario ofrecen sus herramientas de administración.
Tanto WS como Linux organizan jerárquicamente su estructura de archivos en forma de árbol. Con respecto
a los dispositivos WS los distingue, mientras que en Linux se tratan como ficheros. En WS el disco del
sistema suele ser C:. En Unix cuando se desea acceder a un dispositivo se debe montar sobre algún
directorio del sistema de archivos.
La organización de los directorios de Unix parte del directorio raíz, o root, notado como “/”. De éste cuelgan
el resto, que se organizan lógicamente. Los directorios habituales son /home, que contiene los directorios
principales de cada usuario, /dev, contiene los ficheros que representan los dispositivos, /etc contiene los
ficheros de configuración del sistema, /bin los ejecutables de los programas, /sbin contiene programas
accesibles al superusuario, /usr los programas de uso comun a los usuarios, /lib contiene librerías comunes
a los programas, /proc contiene ficheros especiales que intercambian información con el kernel, /var
contiene información temporal de programas o /tmp con información temporal de los programas.
La configuración del sistema en Unix está en ficheros de configuración en su mayoría tipo texto que pueden
ser editados con cualquier programa editor de textos.
WS tiene tres carpetas fundamentales por defecto en C:, Archivos de Programa, Documents and Settings y
Windows. La primera contiene los ejecutables de los programas instalados en el sistema, la segunda una
carpeta por cada usuario del sistema y la tercera los archivos del SO. Con respecto a las carpetas de cada
usuario, contienen los datos del perfil de usuario en un archivo llamado ntuser.dat. Además, contiene los
documentos del usuario y los datos que los programas necesitan de ese usuario en concreto.
3.2.1. Usuarios
Para que alguien acceda a Unix, necesita una cuenta de usuario, es decir, un conjunto de datos que lo
definan en el sistema. Como se ha dicho, el acceso se realiza mediante login (nombre de usuario) y
contraseña. Los datos de una cuenta del sistema entre otros incluyen el nombre de usuario, su clave, un
UID, o número de identificación de usuario, un GID o número de identificación de grupo, el directorio inicial
de entrada al sistema o la shell que usa por defecto el usuario. Los usuarios se registran en el fichero
etc/passwd. La información de los grupos está en etc/group.
En Unix, los usuarios se clasifican según una jerarquía, en superusuario o root, con todos los privilegios, es
el perfil administrador del sistema, usuarios típicos, son los normales del sistema, con limitaciones sobre él y
los usuarios especiales, que se asignan por el sistema a tareas específicas, como por ejemplo el uso de
aplicaciones de uso común. Cualquier usuario posee la perspectiva de su propio usuario, lo que se nota
como “u”, user, los usuarios de su grupo, notado como “g” y el resto de usuarios referidos como “o” (others).
El comando useradd o adduser, añade un usuario al sistema y permite modificar algunos parámetros como
el grupo, directorio de trabajo, etc. Userdel suprime un usuario del sistema. Los comandos groupadd y
groupdel permiten gestionar grupos en Unix, creando y eliminando un grupo respectivamente.
En WS se distinguen usuarios locales y globales. Los locales se conectan directamente y los globales los
gestiona el controlador de dominio pudiendo conectarse en remoto. Para cada usuario se almacena el
nombre de login, nombre completo, contraseña cifrada y un dato llamado SID o identificador seguro, que
garantiza la identificación única del usuario. El usuario administrador se crea por defecto, requiriendo
contraseña. Existe un usuario invitado, por defecto desactivado.

94
Un usuario tiene un perfil local o de red. El perfil local afecta a la configuración del equipo en que se crea. Si
es un perfil de red, se puede tener la misma configuración en todas las estaciones de red. El perfil de red,
puede ser móvil u obligatorio. En móvil puede modificarse y los cambios permanecen para las siguientes
sesiones. El perfil se guarda en la carpeta Documents and Settings. Algunos grupos se crean al instalar el
sistema como por ejemplo Administradores, Duplicadores, Invitados, Operadores de Copia, etc. cada uno
con unos permisos predefinidos.
3.2.2. Recursos
La administración de recursos en Unix se realiza de manera similar al resto del sistema, de manera muy
lógica. Por un lado, el hardware instalado está en el directorio /dev como un fichero más. Si son discos se
pueden montar mediante la orden mount para acceder a ellos. La configuración del dispositivo está en el
directorio /etc. En Unix la administración de recursos se hace con el usuario root.
Algunas distribuciones cuentan con instaladores sencillos que guían al usuario. En ocasiones se debe
compilar el código fuente de los programas, lo que adapta mejor el programa al hardware y las necesidades
del usuario. El administrador debe, una vez instalado, asignar permisos a los programas e informar a los
usuarios de los cambios.
Un caso típico es la administración de la impresión. En Unix se incluyen programas, el sistema Ip, para
imprimir. La complejidad de Ip se abstrae al usuario, que accede con sólo tres comandos: Ip, Ipstat y cancel.
La gestión se realiza mediante colas de impresión. El comando Ipstat muestra el estado de la impresora y
cancel elimina o detiene los trabajos de impresión. En algunos sistemas la utilidad Ipadmin permite
gestionar todos los recursos de impresión. El sistema cuenta con el proceso demonio (daemon) llamado
spooler que secuencia las tareas de impresión y convierte los datos a un formato que entienda la impresora.
En lenguaje de impresión estándar de Unix es PostScript.
En WS, la administración de recursos se suele realizar con programas que suelen incluir un ejecutable
instalador que facilita la tarea. Los dispositivos P&P (plug and play) son sencillos de instalar. WS reconoce
el dispositivo y pide la instalación de drivers. El administrador los instala o el sistema le asigna, si puede, un
controlador genérico. En WS, las impresoras se gestionan mediante ventanas. Permite compartirlas en red.
En la administración de recursos puede incluirse la administración de procesos. En Unix, el comando ps
muestra una lista de los procesos del usuario activos actualmente. Si el comando es ejecutado por el root, la
información será la de todos los procesos de todos los usuarios. El listado de los procesos muestra un PID
(Process IDdentifier), número único que identifica un proceso, el nombre del proceso, el terminal (TT) que
lanzó el proceso, su estado (STAT) y el tiempo de UCP (TIME). Si se desea eliminar un proceso se utiliza el
comando kill que “mata” el proceso, especificando su PID, o el numero de job precedido del carácter %.
3.2.3. Permisos
La administración de permisos quizá sea el aspectos más importantes en la gestión de un SO. Un SO
multiusuario debe ofrecer modos de proteger el acceso a la información. Para ello se utilizan los permisos.
Los permisos distinguen tres tipos, de lectura (r, read), que permite a un usuario consultar el contenido de
un archivo, de escritura (w, write), que permite a un usuario modificar o borrar un archivo y el permiso de
ejecución (x, eXecution), que permite al usuario ejecutar un programa o un script. A cada usuario (u, g, o) se
le asigna una terna rwx que define sus permisos para cada fichero o directorio. Para comprobar los
permisos de un archivo se usa el comando Is –I (o sus alias dir o II).
Cada archivo cuenta con 12 bits de permiso. El primer grupo de 3 bits indica los permisos rwx para el
propietario, el segundo indica los del grupo propietario, el tercero indica los permisos para el resto de
usuarios y los últimos tres bits son Sticky, Setgid y Setuid. Con estos 12 bits solamente debe garantizar la
privacidad y la seguridad de los archivos del sistema.
El bit de ejecución, en caso de un directorio, indica si se puede acceder a él. Los bits Setuid y Setgid, si
están activos, si se trata de un ejecutable, al ser ejecutado por un usuario, el proceso adquiere el UID o el
GID del propietario. Los ficheros seuidados son uno de los problemas básicos de seguridad en Linux, ya
que un ejecutable seudidado cuyo propietario tenga muchos permisos tiene control total sobre la máquina.
El usuario root tiene todos los permisos de la máquina, por tanto, el administrador del equipo debe usar para
su trabajo normal un usuario que no sea root, ya que puede ser peligroso.
El propietario de un archivo puede cambiar los permisos con el comando chmod cuya sintaxis se puede
indicar con texto o una combinación numérica con bits en grupo de 3 decimales. La sintaxis es chmod [a, u,
g, o] [+, -] [r, w, x] [fichero], donde “a” referencia a todos los usuarios, “u” al propietario del archivo, ”g” a su
grupo, y ”o” al resto de usuarios. El signo + significa la adición del permiso y el – la sustracción. Las letras
indican los permisos, como se ha visto. Por ejemplo chmod go-x fichero (o bien, chmod 766 fichero),
eliminaría el permiso de ejecución para el grupo y el resto de usuarios (766 significa que los bits serán 111
110 110, es decir, no permite la ejecución ni al grupo ni a otro usuario).

95
Por su parte, WS organiza los permisos para el sistema en conjunto y para archivos en concreto. Cuenta
con directivas de seguridad que establece las políticas de gestión de cuentas, directiva local y configuración
de claves públicas. Los archivos contienen atributos de protección, el SID del usuario propietario.
Las listas de control de acceso de protección incluyen permisos que los usuarios y grupos tienen sobre un
archivo o carpeta. La lista puede tener un número indefinido de entradas de forma que concede o deniega
permisos a cada usuario o grupo del sistema. Cada entrada define una serie de niveles de acceso al
archivo, cada uno de ellos puede ser negativo o positivo.
Las listas de control de acceso de seguridad se usan para definir qué acciones tiene que auditar el sistema.
En principio la lista está vacía. Los permisos se ordenan por nivel, es decir, si un usuario tiene permiso de
control total, tiene todos los permisos anteriores. Estos permisos de los archivos son leer, escribir, leer y
ejecutar, modificar y control total. En caso de carpetas, se añade un permiso al principio que es el de listar.
El administrador puede no tener acceso a un archivo, pero si el derecho de tomar posesión, es decir, de
hacer que el SID del propietario del archivo sea él mismo por lo que al tomar posesión del mismo puede
modificar los permisos. La posesión no se puede devolver.
3.2.4. Seguridad
La seguridad es uno de los pilares básicos de la administración de un SO. Por tanto hay que tener
consciencia de las amenazas a la seguridad y de las prácticas para garantizarla. Debe existir un plan de
seguridad que al menos contemplará qué se debe proteger (hw, sw y datos) y a qué amenazas está
sometido el sistema (físicas, desastres naturales, sabotajes, virus).
En el tema 63 se hace un estudio más profundo de los aspectos de seguridad. Adelantar sin embargo que
debe considerarse al menos el estudio de la seguridad en dos planos, el físico y el lógico. El primero
orientado a mitigar los efectos de las amenazas del mundo físico y el plano lógico, más referido a software.
En cualquier caso, la seguridad en los SO, exige que los usuarios dispongan de permisos limitados, justos
para realizar su trabajo y el SO ofrezca únicamente los servicios necesarios. Es común que los SO
dispongan de archivos de registro, log o eventos del sistema para analizar disfunciones, como errores o
intrusiones. Asimismo, es conveniente mantener el sistema de archivos limpio y ordenado comprobando
que cada archivo tenga los permisos mínimos necesarios.
Las auditorías y análisis forenses, permiten revisar sucesos de seguridad del sistema. Un SO debe poderse
auditar para investigar los fallos de seguridad. Unix permite monitorizar casi todas las actividades llevadas a
cabo en el sistema mediante archivos de log. Un archivo de log, o log, es un fichero de texto cuya
información es parametrizable. El demonio syslogd almacena informes sobre el estado del SO y el fichero
syslog contiene el registro de seguridad. La configuración la realizará el administrador, disponiendo de los
ficheros log que considere necesarios, con la información que crea oportuna.
En WS Server pueden usarse herramientas de auditoria activando las categorías de sucesos a auditar y
definir el registro de seguridad. Esto permite registrar sucesos como el acceso a servicios, cambio de
directivas, privilegios, administración de cuentas y otros del estilo.
Otros aspectos de seguridad son las copias de seguridad, mantener actualizado el software, monitorizar la
actividad de red, equipos de usuarios y la gestión de contraseñas. En cuanto a las copias de seguridad y la
creación de imágenes de un sistema, existen numerosas herramientas en Unix y WS para realizar estas
tareas. Es prácticamente un deber tener una copia de seguridad actualizada y una imagen del sistema para
restaurarlo en poco tiempo.

96
TEMA 21. SISTEMAS INFORMÁTICOS. ESTRUCTURA FÍSICA Y FUNCIONAL.

1. INTRODUCCIÓN
2. SISTEMAS INFORMÁTICOS
3. ESTRUCTURA FÍSICA Y FUNCIONAL
3.1. Estructura física
3.2. Estructura funcional

97
1. INTRODUCCIÓN
Un sistema informático es el conjunto de elementos relacionados para procesar información de manera
automática. El conjunto de elementos que forman un sistema informático diferencia tres partes
fundamentales, el hardware, o parte física, el software o parte lógica y el factor humano.
Ejemplos de sistemas informáticos son los equipos habituales, como el PC, impresoras y demás o las redes
de comunicaciones.
2. SISTEMAS INFORMÁTICOS
En temas anteriores se han expuesto los fundamentos de los ordenadores. Los primeros se enfocan al hw y
arquitectura de sistemas para dar paso a la parte lógica, en particular los SO. Una vez estudiados estos
aspectos, se combinan para presentar un nivel superior de abstracción, el sistema informático. Para ello, se
añade el recurso humano, que incluye administradores, analistas y usuarios, entre otros.
El subsistema físico de un sistema informático es el conjunto de elementos inertes de un equipo, y que han
sido presentados bajo el nombre de hardware. Este incluye la UCP, memoria, dispositivos de E/S o
periféricos. El subsistema lógico se ha englobado bajo el nombre de software y como se ha explicado
también, hace referencia al conjunto de recursos lógicos que consiguen hacer funcionar al subsistema físico
como se espera. En resumen, se refiere a la programación del hardware.
El software distingue dos tipos de programas, los de sistema y los de aplicación. Los primeros manejan los
recursos lógicos para que opere el ordenador y los segundos atienden funcionalidades de usuario. Dentro
de esta división primaria, el software debe incluir también el firmware.
El subsistema humano de un sistema informático es el conjunto de recursos humanos que intervienen en la
explotación y administración del sistema. Como primera aproximación, el recurso humano puede dividirse
en usuarios e informáticos. Los usuarios son las personas dedicadas a la explotación del sistema, capaces
de realizar su trabajo sin unos conocimientos avanzados de informática o del sistema, aunque si los posean
de las aplicaciones que utilizan. Los informáticos englobarían al personal que realiza labores avanzadas
sobre el sistema, como la administración, análisis, diseño, programación o formación.
3. ESTRUCTURA FÍSICA Y FUNCIONAL
3.1. Estructura física
La estructura física de un sistema informático, el hardware, agrupa el conjunto de elementos físicos,
componentes electrónicos y mecánicos. Las estructuras físicas y lógicas capaces de obtener un rendimiento
adecuado a las exigencias actuales en cada momento se pueden englobar bajo el término de mínimos
operativos. Básicamente, el mapa conceptual puede dividir la estructura física en dos partes, la UCP y los
interfaces de E/S, dispositivos y periféricos.
La UCP a su vez distingue dos componentes fundamentales ya estudiados, la unidad de control, UC, que
gestiona los componentes del equipo y la UAL, unidad aritmético lógica, encargada de los cálculos y
operaciones lógicas a ejecutar.Los interfaces de E/S incluyen periféricos y dispositivos para las funciones de
interface humano o tareas relacionadas con la E/S como las memorias externas.
Entre los mínimos operativos de la estructura física debe tenerse en cuenta la capacidad de memoria, tanto
la memoria principal, RAM y las secundarias como los discos duros. Las dos características a evaluar para
prever sus prestaciones son capacidad y velocidad de acceso. En general, y debido al abaratamiento de la
memoria auxiliar y secundaria, el peso de la inversión en un equipo, en lo que a memoria se refiere, debe
centrarse en la memoria principal, ya que la capacidad de disco duro podrá suplirse con almacenamiento
externo o de otro tipo, como el almacenamiento en red.
La estructura física de un sistema informático debe proveer interfaces serie y paralelo. Los clásicos puertos
van perdiendo popularidad a medida que la ganan desarrollos como USB. Otros puertos habituales son los
de red (conector RJ45) y módem (conector RJ11), lectores de tarjetas, puertos PCMCIA, etc.
La estructura física y sus características, tales como potencia de cáldulo o velocidad sirve para clasificar los
sistemas informáticos, distinguiendo entre sistemas mainframe, miniordenadores y microordenadores.
Un mainframe es un gran ordenador con altas prestaciones en cuanto a memoria, potencia, etc. Suelen ser
de propósito general. Si están muy especializados y equipados para ofrecer más prestaciones se
denominan supercomputadores. Los miniordenadores son ordenadores con prestaciones medias orientados
a un propósito general. Los microordenarores poseen una estructura física de perfil bajo, e incluiría los
ordenadores domésticos, aunque sus prestaciones, en ocasiones son bastante considerables.
Otros criterios de clasificación de ordenadores son por la forma de tratamiento de la información, que los
divide en digitales y analógicos. Los analógicos tratan señales continuas, en general orientados al trabajo en
tiempo real y los digitales realizan su proceso con información y señales en formato digital.

98
Los ordenadores digitales según la aplicación para la que se conciben pueden a su vez clasificarse en
científicos, para tareas especializadas y administrativos, diseñados para menos operaciones, pero más
datos de entrada y salida, usados en tareas de administración y gestión.
El último aspecto a considerar de la estructura física es el sistema de vídeo, ya presentado y de cuyas
características deben recordarse la resolución, medida en puntos luminosos o pixels y representada como
una matriz de columnas por líneas. El valor de la resolución es inversamente proporcional al número de
colores. Sistemas de vídeo clásicos son CD (Color Display), ECD (Enhanced Color Display), MCGA (Multi
Color Graphics Adapter) y VGA (Video Graphics Array). Estándares más avanzados son SVGA (Súper
VGA) y XGA (Extended GA). Debe resaltar la importancia de la estandarización impulsada por VESA (Video
Electronics Standard Association) en la evolución de la tecnología de video.
3.2. Estructura funcional
La estructura funcional de un sistema informático puede resumirse en la elaboración de unos resultados en
función de unos datos de entrada. La información es gestionada y tratada por el sistema lógico, el software,
que es la parte crítica de la estructura funcional del sistema.
El procesamiento de la información requiere una secuencia de instrucciones o etapas a cubrir, que en
general, implementa un programa. La confección de un programa concreto comienza con la búsqueda de la
solución a un problema que se planteará de acuerdo a una metodología de diseño. El diseño suele
apoyarse en técnicas como el uso de seudocódigo y organigramas para la elaboración de algoritmos, lo que
se presenta en mayor profundidad en el tema 25.
Resumiendo, se podría decir que la estructura física de un sistema informático posee tres componentes
fundamentales, UCP, memoria y unidades de E/S. La estructura funcional, por tanto, dependerá de la física
y se describe definiendo la interrelación de los elementos físicos. También puede resumirse el
funcionamiento del sistema como un proceso indefinido en el que las instrucciones de un programa son
ejecutadas en la UCP, que hará uso de la memoria para almacenar la información en curso y adaptar
velocidades de las unidades de E/S, que también son gestionadas por la UCP.
Por tanto la estructura funcional descansa sobre el software, que es el que controla el proceso de datos. Se
distingue tres tipos de sw dependiendo de su uso, el software de sistemas, de programación y de aplicación.
El software de sistemas sirve de interfaz usuario máquina y permite controlar los periféricos. Son los SO,
que disponen instrucciones internas, cargadas en memoria y de ejecución inmediata e instrucciones
externas que se guardan en memoria secundaria y para su ejecución deben cargarse en memoria.
El software de programación está compuesto por los entornos de programación que permiten generar
código. El grueso de este software lo representan los lenguajes de programación, que se clasifican en
lenguajes de bajo nivel, nivel medio y alto nivel. Los lenguajes de bajo nivel son los lenguajes máquina
binarios, los de nivel medio suponen un nivel superior de abstracción como los ensambladores y los
lenguajes de alto nivel se acercan al lenguaje humano, usados habitualmente para programar.
El software de aplicación es el que implementa las soluciones para el usuario. Se codifica con lenguajes de
programación y puede clasificarse en programas verticales, estándar y shareware.
Los programas verticales son programas a medida creados para problemas muy concretos. Los programas
estándar o de propósito general se diseñan para resolver problemas genéricos, de forma que se limita el
coste de la programación a medida. En este grupo se encontrarían los procesadores de texto, hojas de
cálculo, BBDD, programas de diseño gráfico y en general el grueso del software comercial.
El shareware son programas que incluyen soluciones verticales y estándar. Se diseña para resolver
distintos tipos de problemas y su distribución suele ser libre, es decir, con el código fuente y gratuito,
aqunque existan opciones comerciales.

99
TEMA 22. PLANIFICACIÓN Y EXPLOTACIÓN DE SISTEMAS INFORMÁTICOS. CONFIGURACIÓN.
CONDICIONES DE INSTALACIÓN. MEDIDAS DE SEGURIDAD. PROCEDIMIENTOS DE USO.

1. INTRODUCCIÓN
2. PLANIFICACIÓN Y EXPLOTACIÓN DE SISTEMAS INFORMÁTICOS
2.1. Planificación
2.2. Explotación
3. CONFIGURACIÓN
3.1. Servidores
3.2. Clientes
3.3. Usuarios
4. CONDICIONES DE INSTALACIÓN
4.1. Instalación del HW
4.2. Arranque
4.3. Parada
5. MEDIDAS DE SEGURIDAD
6. PROCEDIMIENTOS DE USO

100
1. INTRODUCCIÓN
Una vez realizado el análisis de necesidades y el diseño de la solución para los requisitos de una empresa u
organización, en lo referente a sus sistemas de información, se procede con la instalación de los sistemas
informáticos. La instalación debe tener en cuenta el entorno, la forma de conexión, la configuración y los
aspectos de seguridad.
Tras la instalación del sistema informático se entra en la fase de planificación y explotación. La planificación
del sistema requiere una metodología para su correcta configuración y funcionamiento, lo que garantizará
una explotación, un uso, eficiente que logre los objetivos de rendimiento y productividad marcados.
2. PLANIFICACIÓN Y EXPLOTACIÓN DE SISTEMAS INFORMÁTICOS
La planificación de un sistema informático es el conjunto de métodos y organización que lo estructuran de
cara a su explotación, es decir su funcionamiento en la operativa habitual. Sin una correcta planificación que
organice el sistema, es previsible que se produzcan errores y un uso ineficiente de los recursos que limiten
en gran medida la productividad.
La planificación debe contar con consideraciones tales como que los usuarios deben monitorizar el buen
funcionamiento de su equipo en la gestión de su trabajo habitual. Debe existir una función de lanzamiento y
control que, de acuerdo con la planificación, prepara y encola la operación de los trabajos a realizar,
controlando su seguimiento y calidad.
La analogía entre la explotación de un sistema informático y un sistema industrial clásico ha hecho heredar
su estructura a los departamentos de explotación y proceso de datos. Sin embargo, las particularidades de
la informática obliga a adaptar la explotación a la escala del teleproceso y las nuevas aplicaciones,
distinguiendo entre procesos orientados a la actualización de información y los dedicados a obtenerla e
interpretarla, restado protagonismo al operador, pero conservando su responsabilidad en el proceso.
Existe pues una fuerza centrípeta hacia la información donde el operador posee un perfil más de custodio y
garante del correcto funcionamiento del servicio, aligerando sus funciones de control que interpreta la
explotación como un servicio más que como proceso o cadena de transformación.
El esquema de explotación, groseramente resumido, pondría al usuario como origen de la información, al
ser el que la obtiene y al operador como monitor de disponibilidad del servicio. La programación distribuida y
conceptos de organización como el cloud computing aceleran este enfoque aunque haya partes que sean
más clásicas, apareciendo funciones tipo atención al cliente del servicio y similares.
2.1. Planificación
La planificación de un sistema informático es la forma de estructurar su organización y funcionamiento. Se
concreta en normas de actuación y deriva en un modelo de explotación que responde a los objetivos. El
modelo variará según la organización y poseerá características distintas según el nivel de aplicación. La
metodología de explotación consistirá en diseñar un modelo acorde con las necesidades y cuya complejidad
aconseja analizarlo bajo modelos específicos. Se distinguen los siguientes niveles de planificación.
A largo plazo. Representa el primer nivel de planificación del trabajo y recursos. Entre sus tareas están la
negociación de fechas, plazos de entrega o tiempos de respuesta con los usuarios, la cantidad y calidad de
recursos a utilizar con los proveedores y considerar conjuntamente todo el sistema informático para
actualizarlo en función de las necesidades.
A corto plazo. Se apoya en los compromisos adquiridos y recursos disponibles, sin negociación. Se
contempla un número de trabajos limitado y la realiza el departamento de explotación o similar, marcando
como objetivo el cumplimiento de plazos y realizando un seguimiento detallado de las operaciones, que se
corregirán con algún proceso de realimentación.
Microplanificación. Es la planificación a nivel de estación de trabajo y consiste en ordenar temporalmete las
operaciones a realizar, evaluar el uso de recursos críticos, la información de operaciones precedentes y
prioridades. El objetivo es el cumplimiento de plazos y la optimización del uso de recursos.
Una vez realizada la planificación a cada nivel, se debe establecer un sistema de planificación, en el que al
menos existan tres etapas, una planificación manual, mecanizada y automática. La planificación manual
tiene por objetivo la recogida y validación de los datos de la planificación. El departamento de explotación
se ve como una caja negra, aunque a nivel interno estén definidas las relaciones entre sus componentes.
La planificación mecanizada parte de los datos recogidos en la planificación manual y su objetivo es
mecanizar el tratamiento de la información para elaborar los planes a corto y largo plazo. La planificación
automática pretende explotar la documentación obtenida en la planificación mecanizada para generar
planes automáticos en función del desarrollo del trabajo y conseguir una realimentación de las operaciones

101
de forma que los datos sean reflejo de la realidad. Sus ventajas son la visión automática de los trabajos que
no alcanzarán el plazo de entrega y la obtención de información estadística o detallada del servicio.
La información obtenida del sistema de planificación, caracteriza por el estudio directo del uso de los
recursos podría ser suficiente para facilitar la negociación de la carga de trabajo a largo plazo y por tanto
representa un recurso fundamental para la gestión de la explotación.
Sin embargo, esta información puede no ser significativa para la planificación de recursos. Para ello debe
tenerse en cuenta la utilización de recursos por parte de las aplicaciones. Si en el futuro, las aplicaciones
requieren otros recursos, se debe realizar un análisis que describa su nivel de utilización en cada caso,
estableciendo, por ejemplo un perfil de uso por horas, una proyección temporal en función de las
perspectivas de crecimiento y la estimación de los sistemas de respaldo para garantizar la disponibilidad.
La explotación, por su parte generará información de realimentación sobre el uso actual de recursos (nivel
de carga) y la utilización que de ellos hacen las distintas aplicaciones. Esto marcará las tendencias de
crecimiento y actualización en el tiempo.
2.2. Explotación
La explotación de un sistema informático es la utilización y operativa diaria que se realiza en el sistema.
Para que ésta sea correcta, se debe usar una metodología que defina un modelo de explotación conforme a
las necesidades y cuya complejidad aconseja basarlo en modelos típicos como lo son el modelo decisional,
organizacional, relacional e informacional.
El modelo decisional define la estructura de las decisiones y funciones a realizar en los diversos niveles
para controlar las operaciones de explotación. Distingue tres niveles, planificación, lanzamiento y control.
La planificación comprende la de largo plazo, con decisiones de previsión y necesidades de los planes de
desarrollo, normalmente anual y la de corto plazo, que distribuye temporalmente el trabajo en plazos típicos
de meses, semanas o días. El lanzamiento consiste en la preparación de los requisitos necesarios para la
ejecución del trabajo. El sistema debe de dotarse de cierta holgura para hacer frente a trabajos no previstos.
El control consiste en verificar los resultados obtenidos, obteniendo además medidas de rendimiento y
características del trabajo para la elaboración de nuevos planes. El conjunto de planificación, lanzamiento y
control garantiza el flujo correcto de tareas y aprovechamiento eficaz del sistema.
El modelo organizacional muestra la asignación de responsabilidades y la estructura de la organización.
Dependerá de la complejidad y volumen de trabajo así como de los recursos humanos disponibles.
El modelo relacional define la relacion entre el departamento de explotación y el resto de la organización.
La gestión de los recursos hw, sw y las normas de trabajo marcará las relaciones entre los departamentos
de explotación, sistemas y proyectos. Las normas deben establecer muy claramente las relaciones con los
usuarios, con desarrollo, coordinación y seguimiento de incidencias y sistemas.
El modelo informacional es el encargado de organizar los soportes documentales y el flujo de información.
Se distinguen tres grupos de información, documentación de procedimientos, necesaria para explotar los
programas, controlar resultados, etc., documentación de trabajos, información necesaria para su ejecución y
control y documentación de control, que revela periodicamente el estado de la explotación.
El sistema de información utilizado en la explotación debe ser
mecanizable para evitar al máximo la burocracia. Asimismo, la
metodología de explotación influirá en el diseño de las
aplicaciones, que debe tener en cuenta aspectos como la
utilización de recursos, seguridad o el seguimiento y control.
La organización del departamento de explotación está
condicionada por factores como el tamaño de la instalación, SO,
las características de la organización, sus recursos disponibles o
su personal.
El objetivo del departamento de explotación es el proceso de datos, eje de su actividad, para lo que será
necesario distinguir cuatro funciones básicas, el establecimiento de procedimientos operativos,
procesamiento, actualización del sistema y formación.Cada área funcional del departamento de explotación
estará encargada de realizar las tareas básicas, que en un primer momento no deben identificarse con
puestos de trabajo concretos hasta tener en cuenta las particularidades de la empresa, ya que, por ejemplo,
una persona podría desempeñar diversas tareas.Si la escala del departamento es mayor, será necesario
crear áreas de trabajo, negociados o similares. Algunas áreas típicas son control, producción, almacén y
biblioteca.
El área de control o planificación tiene por misión la recepción de documentos, planificación de trabajos,
control de los resultados o la distribución de documentos, entre otros. El área de producción suele tener

102
encomendadas tareas como la conversión de información a soportes adecuados para la entrada en el
sistema, la preparación de los trabajos, su ejecución y el acabado y presentación de los mismos. El almacén
gestionará los suministros y la biblioteca los elementos técnicos y documentación.
Como en toda organización, habría que incluir una jefatura o dirección y si cabe podría darse alguna
secretaría general. La dirección del departamento debe estar perfectamente coordinada con la dirección de
la que dependa dentro de la empresa.
El objetivo último de la explotación de un sistema informático será ofrecer cierto nivel de servicio, razón por
la cual el departamento de explotación visto por el cliente ya sea externo o interno, la propia empresa, será
el principal indicador de la efectividad del proceso de datos.
La efectividad se entiende como cumplimiento del nivel de servicio comprometido, conjunto de aspectos
tales como plazos de entrega, tiempo de respuesta, calidad o coste, susceptibles de negociarse. En
ocasiones, los problemas de la explotación serán ajenos al departamento o la propia organización y la
solución probablemente pase por coordinar a otros departamentos o empresas.
Por su parte, la actividad del departamento de explotación puede encajarse en el modelo clásico de
planificación, ejecución, medida y realimentación. La actividad propia del departamento y sus objetivos
concretarán las exigencias de recursos y aplicaciones, que a su vez facilitarán la elaboración de la
planificación a largo y corto plazo.
Una vez en ejecución la planificación diaria, la necesidad fundamental es la información operativa para la
gestión del centro de proceso de datos, que exige un control a dos niveles, uno inmediato, que vigile la
correcta evolución del plan diario y corrija pequeñas variaciones eventuales y un control diferido, fruto del
análisis a posteriori de desviaciones y que debe tender a la renegociación de nuevos planes a largo plazo, o
el rediseño de recursos.
Este control diferido no es una reacción directa ante problemas, es un análisis en el que tener en cuenta
consideraciones como la implantación de nuevos servicios, aplicaciones o necesidades de crecimiento,
aspectos de mayor envergadura que las posibles desviaciones de los objetivos.
Este control tiene como primera derivada la consideración de dos criterios básicos para la consecución de
los objetivos, la necesidad del predominio de la proactividad sobre la reacción, es decir, la necesidad de una
replanificación constante y la disposición de un sistema de información para la gestión y control del centro
de explotación robusto y coherente
3. CONFIGURACIÓN
Una vez preparado el sistema informático y comprobado su funcionamiento, el penúltimo paso de su
instalación competa es la configuración del sistema, visionándolo en conjunto. Debido a la complejidad que
suele representar la configuración es bueno dividirla en partes, de entre las que pueden destacarse la
configuración de los servidores, las estaciones clientes y los usuarios.
3.1. Servidores
En el caso general, un sistema informático descansará sobre una estructura de red, en la que existirán
equipos especiales que ofrezcan servicios fundamentales para el desarrollo de la actividad. Estos equipos
son los servidores.
La configuración de una máquina como servidor depende del software que monte. En principio, ordenadores
que pueden considerarse orientados al usuario pueden tener la potencia suficiente para realizar funciones
de servidor. Lógicamente, la carga estimada de trabajo marcará la potencia del equipo a disponer como
servidor. Pero, es importante aclarar que el carácter cliente o servidor lo da el sw instalado.
Por estas razones, se puede hablar de servidores dedicados y no dedicados. Los dedicados realizan tareas
de servidor en exclusiva, mientras que los servidores no dedicados pueden realizar funciones de distintos
servidores o de servidor y estación de trabajo. Otra vez, en función de la organización, recursos y
especificaciones tendrá que decidirse si se opta por servidores dedicados o no.
En general, se recomienda el uso de servidores dedicados para cada tipo de servicio, como puedan ser los
servidores web, de correo electrónico, impresión, etc. En el tema 68 se explican las funciones de los
servidores más comunes en una red.
3.2. Clientes
Un cliente puede entenderse como cualquier máquina o usuario de una red que solicita un servicio. En
principio, las estaciones de trabajo de la organización cumplirán con el rol de cliente y por tanto
implementarán el software y los protocolos de comunicación necesarios para el diálogo con los servidores.
En un principio, y debido a lo caro del equipamiento, las soluciones de trabajo se diseñaban con grandes
ordenadores a los que se conectaban clientes ligeros o “tontos”, que incluso cargaban su SO desde la red, o

103
símplemente suponían una puerta de entrada a la red como terminal remoto. Esto podría considerarse
como la prehistoria de las redes, donde los programas y los datos residían en los servidores y los usuarios
accedían al servidor que requiriesen.
Con el avance y reducción de costes informáticos, la limitación de la velocidad de transmisión en red generó
una fuerza centrífuga en la que las estaciones de trabajo ofrecían una gran potencia (micros potentes,
discos de gran capacidad de almacenamiento, velocidad de proceso) y por tanto se cargó su capacidad de
proceso con más inteligencia. En este caso las aplicaciones se instalan en el disco duro local de cada
estación y no son compartidos en red.
Actualmente, el desarrollo, velocidad de transmisión y fiabilidad de las redes vuelve a mover el centro de
gravedad hacia la centralización de servicios, de manera que los servidores vuelven a recuperar importancia
y conceptos como el cloud computing, en que se dispone el trabajo en red, tiende a aligerar los clientes y
estaciones de trabajo orientándolos a la conexión a la red.
Se podría, sin embargo, hablar de una estructura o escenario intermedio, en que las aplicaciones se
instalan de forma distribuida, parte en el servidor y parte en el cliente, ya que en muchos casos los clientes,
ya sean estaciones de trabajo, móviles, blackberrys, tablets o demás, poseen mucha potencia de proceso y
no se podrían considerar terminales ligeros sin inteligencia.
3.3. Usuarios
Un usuario es la persona o ente que hace uso del sistema informático. Para gestionar un usuario se utiliza
información agrupada en un objeto llamado “cuenta de usuario”. A un usuario se le identifica con un nombre
(username o login) y contraseña (password). Sus características definen el “perfil de usuario”.
La distinción mínima entre usuarios define dos perfiles, el administrador y el usuario. A partir de aquí puede
desgranarse y especializarse la definición de perfiles tanto como se quiera. Ejemplos de usuarios en WS
pueden ser invitados, administradores de impresión, etc. La distinción entre usuarios es un concepto muy
válido a la hora de otorgar permisos sobre los recursos del sistema, lo que facilita la administración, en
particular de lo relativo a seguridad. Lógicamente, los usuarios administradores poseen privilegios sobre el
sistema y los usuarios habituales los tienen limitados.
El siguiente paso en la administración de usuarios es el concepto de grupo, un conjunto de cuentas de
usuario con características comunes que a veces se nombran como grupos de seguridad. Un grupo es una
unidad para facilitar la administración de usuarios que puede ser efectiva en entornos reducidos, sin tener
que mantener una infraestructura mayor de servidores. Un usuario puede pertenecer a más de un grupo y
cada grupo podría tener establecidos ciertos privilegios.
Los aspectos que permite configurar la definición de usuarios y grupos, entre otros son las restricciones de
conexión, caducidad de cuentas, política de contraseñas o aspectos de seguridad avanzados.
4. CONDICIONES DE INSTALACIÓN
4.1. Instalación del HW
Una vez disponible el hw del sistema puede comenzar su instalación, conforme a las recomendaciones y
normativa de seguridad, salud y riesgos laborales. La lógica recomienda trabajar en superficies planas,
despejadas y limpias de polvo, papeles, ceniza, etc. Del mismo modo es recomendable aislar el sistema de
fuentes de distorsión eléctrica, generadoras de ruido, como los motores eléctricos o aires acondicionados.
Un aspecto clave para la seguridad del trabajador es que los bancos de trabajo e instalaciones eléctricas
dispongan de tomas de tierra en correcto estado. Los posibles accidentes debidos a malas instalaciones
eléctricas y tomas de tierra pueden ser muy graves. Además se podrían causar daños al hardware, originar
malos funcionamientos que deriven en pérdida de información o generar inestabilidades en los programas.
La conexión de periféricos no suele ser problemática, ya que cada uno suele llevar asociado un conector
diferente que no presenta dudas en cuanto a la forma de conectarlo. Así, por ejemplo, los conectores del
monitor suelen ser los típicos VGA y la popularización de conectores USB suelen usarse para ratones,
teclados, impresoras y demás dispositivos. La conexión eléctrica no debe realizarse hasta terminar la
instalación de todos los elementos.
La instalación de discos duros y unidades de DVD lleva asociada una alimentación que debe revisarse
porque si se olvida generará errores de detección que son molestos aunque fáciles de localizar. Cuando se
arranca el equipo y se empieza a leer los discos duros hay que evitar movimientos que puedan dañarlos.
4.2. Arranque
Antes de encender el sistema, debe comprobarse que las tomas de electricidad están conectadas, en
particular la del monitor, porque sino, no se verá nada en pantalla. Si se considera que está todo correcto se

104
arranca el sistema y comienza su secuencia de inicio con una rutina de comprobación de los componentes,
que sigue los procesos de la BIOS y se denomina POST (Power On Self Test).
Durante el POST aparecen en pantalla las imágenes programadas en la BIOS y la tarjeta gráfica (en
general un logotipo del fabricante) y los mensajes en que se indica la tecla para acceso a BIOS y secuencia
de arranque. Si existen problemas se indicará con un código y un mensaje en pantalla o señales acústicas
en forma de pitidos. Su significado debe ser consultado en el manual del fabricante porque no es estándar.
Si existen problemas que pueden ser identificados, por los mensajes o los pitidos, los esfuerzos se
orientarán en esa solución. Si no se tienen indicaciones es recomendable apagar el sistema y revisar la
instalación de nuevo. En caso que no aparezca nada en pantalla problemas típicos son la falta de
alimentación del monitor, encendido del mismo, ajustes de resolución, memoria de video, etc.
A veces, pueden generarse pausas en el proceso de arranque por mensajes que indica la BIOS, que hasta
que no se afirma su lectura no dejan seguir la secuencia, como por ejemplo la indicación de fecha errónea,
pila baja, o similares. Si el POST es correcto suele terminar con uno o dos pitidos y comenzar la secuencia
de arranque, que podrá realizarse desde una unidad de DVD, USB o el HD.
4.3. Parada
La parada de un sistema informático no es trivial. Debe considerarse que si hay aplicaciones en bloqueo o
en funcionamiento, una parada mal realizada puede ser crítica y ocasionar daños al equipo y la información.
La parada podrá ser lógica o física. Lo recomendable es realizar una parada o interrupción lógica, pero
puede darse el caso de una parada física brusca, a la que a veces se denomina “botonazo”. Una parada
lógica es la que hace un cierre más o menos ordenado del sistema. Si se tiene el control sobre el SO, la
forma de proceder es el cierre de las aplicaciones con los menús del programa o bien con las utilidades de
administración del propio SO como las señales kill o los administradores de tareas.
Si se pierde el control del SO se puede recurrir a la combinación de teclas Ctrl+Alt+Sup, que es una
interrupción lógica de reinicio del sistema. En algunos sistemas esto es equivalente a dejar apretado unos
instantes el botón de encendido o bien a pulsar el botón de Reset. Si no funcionase ninguna opción de
parada lógica, debe considerarse la parada física, muy agresiva y que conlleva ciertos riesgos, por tanto,
sólo se realizaría en casos un tanto extremos. Al parar el sistema de manera abrupta, se deja de alimentar y
por tanto pueden dañarse los dispositivos y como en el caso de la parada lógica, es casi seguro que parte
de la información pueda perderse.
5. MEDIDAS DE SEGURIDAD
Cuando se habla de seguridad e informática, casi de inmediato se piensa en los dos aspectos en que se
divide, la seguridad física y lógica, que se aplica tanto a equipos individuales como a los sistemas en red,
verdadero talón de aquiles de la seguridad lógica. Para su desarrollo, se puede consultar el tema 63.
En este contexto, la instalación de un sistema informático, las medidas de seguridad se refieren a las que
deben adoptarse para realizar correctamente la instalación. Puede decirse que tienen como marco general
las normas básicas de seguridad y salud laboral, regidas por la ley 31/1995 de 8 NOV de prevención de
riesgos laborales y toda la legislación asociada como puedan ser los RD 485/1997 o el 486/1997 de 14
ABR, disposiciones mínimas en materia de seguridad y salud en el trabajo y lugares de trabajo.
Es muy importante prestar atención a las normas de seguridad laboral y concientizar al trabajador en la
importancia de la prevención. Las normas y medidas de seguridad tienden a prevenir accidentes laborales,
proteger la salud de los trabajadores y preservar el cuidado de la maquinaria, elementos de uso común y
materiales con los que se desarrolla el trabajo.
El éxito de las medidas de seguridad resulta de la capacitación constante, la responsabilidad en el trabajo y
la concienciación de toda la organización. Debe comprenderse que el no respeto a las normas puede poner
en peligro la integridad física o degenerar en enfermedades profesionales. Cada individuo debe cumplir y
hacer cumplir las normas de seguridad.
Para desarrollar la cultura de seguridad en el trabajo, las empresas deben evaluar los riesgos laborales de
las instalaciones y los puestos de trabajo y dotar a los trabajadores de EPIS (equipos de protección
individual), que les permitan un desarrollo seguro de sus tareas. También es conveniente llevar un registro
de los accidentes e investigar sus causas y aplicar medidas tendentes a su eliminación. La cultura de
seguridad laboral en la empresa reduce significativamente el número de accidentes.
Como medidas de seguridad particulares en la instalación de sistemas informáticos pueden citarse la
revisión de la instalación eléctrica, que esté adecuada a lo dispuesto en el RD 842/2002, de 2 AGO, por el
que se aprueba el RBT, ITs complementarias y Normas UNE. Y el uso de pulseras de conexión a masa a la
hora de manipular equipos, lo que protegerá contra descargas tanto al trabajador como al propio equipo.

105
La iluminación general de los puestos de trabajo debe alcanzar los 100 lux como mínimo según el anexo IV
del RD 486/1997. También se indica la disposición en las proximidades de los puestos de trabajo, de locales
de aseo con garantías higiénicas, retretes, dotados de lavabos, etc. Las disposiciones de seguridad contra
incendios, señalización de pulsadores y alumbrado de emergencia también se recogen en distintas
recomendaciones, como por ejemplo en el RD 786/2001. En el RD 485/1997, su anexo 11 especifica
normas de orden, limpieza y mantenimiento de los lugares de trabajo. Asimismo, es importante la
colocación de las mesas de oficina en posición vertical a ventanas para eliminar los reflejos en las PVD.
Como resumen general, las medidas de seguridad siguen una lógica sencilla encaminada a mantener un
orden y limpieza orientado a la prevención de los riesgos. Es común en toda empresa u organización
realizar cursos de formación en seguridad para los trabajadores, implantar su cultura de seguridad en el
trabajo y tener planes de evaluación de riesgos, de recomendada lectura.
6. PROCEDIMIENTOS DE USO
Los procedimientos de uso de los sistemas informáticos son el conjunto de normas y recomendaciones que
se establecen en un contexto dado para conseguir una utilización responsable y eficiente de los recursos.
Hay que hacer notar que un uso no responsable de los mismos puede tener implicaciones legales.
Aunque no forme parte, en sentido estricto, de los procedimientos también es conveniente tener en cuenta
la documentación necesaria para el funcionamiento y mantenimiento de los sistemas informáticos. De este
modo, es recomendable tener bien localizada la documentación completa relativa a cada aplicación, la
descripción clara y detallada de su uso, hardware sobre el que opera, el SO, versión y demás programas
relacionados con la aplicación, BBDD utilizadas, estructura de los archivos y en general, toda la información
que se considere importante y útil para facilitar el funcionamiento.
La documentación, cuando describe cómo utilizar el sistema, se presentará en formato de procedimiento de
trabajo normalizado. Los procedimientos suelen incluir aspectos generales y principios de buenas prácticas
de uso, responsabilidades del personal implicado, procedimientos de seguridad, de de control de cambios
hw y sw, de revisión periódica del sistema, de mantenimiento, validación, etc. Si el aspecto a tratar es de
especial importancia, se establecerá un procedimiento individual para ese uso particular que se pretende
automatizar y normalizar.
Es importante que los procedimientos de uso establezcan claramente que cada usuario es responsable de
los recursos a él asignados, por lo que cada usuario soporta las consecuencias de usos negligentes. Las
normas específicas establecidas en cada procedimiento, para el uso de un equipo o recurso deben seguirse
puntualmente. Asimismo, debe formarse al usuario, o dejar patente en los procedimientos la observancia y
cumplimiento de la legislación vigente acerca de la protección de la intimidad, propiedad intelectual y ley de
telecomunicaciones. En este sentido, la legislación sobre propiedad intelectual también afecta a contratos
sobre licencias sw y otros materiales como imágenes, texto y similares. En general, se prohibe de forma
expresa la copia de sw que no sea libre. La facilidad de tratamiento de estos contenidos es un factor de
vulnerabilidad frente a derechos de autor.
Pueden establecerse procedimientos menos técnicos, referidos a aspectos más humanos como por ejemplo
normas de comunicación con otros entes, de forma que, por ejemplo, no se cometan faltas de respeto a la
hora de usar el correo electrónico, envío de correo basura, utilización responsable del mismo, etc. Debe
concienciarse y dejarse escrito, que, considerado como parte del sistema informático, la información es el
recurso más valioso. Protejerla y hacer un uso responsable de la misma es labor de toda la organización.
Suele ser habitual también utilizar los sistemas de una organización para labores diferentes a las de la
propia organización. Estas situaciones deben evitarse en lo posible, según los procedimientos que se
establezcan. Por fin, tanto administradores como usuarios deben informarse de los cambios en los sistemas
informáticos, nuevos servicios y requisitos de seguridad o nuevas necesidades de los usuarios.
Los cambios deben comunicarse y hacerse accesibles de forma ágil, con métodos y herramientas como por
ejemplo listas de distribución o entornos web.

106
BLOQUE 3. PROGRAMACIÓN Y BBDD.
Tema 23. Diseño de algoritmos. Técnicas descriptivas.
Tema 24. Lenguajes de programación. Tipos. Características.
Tema 25. Programación estructurada. Estructuras básicas. Funciones y procedimientos.
Tema 26. Programación modular. Diseño de funciones. Recursividad. Librerías.
Tema 27. Programación orientada a objetos. Objetos. Clases. Herencia. Poliformismo. Lenguajes.
Tema 28. Programación en tiempo real. Interrupciones. Sincronización y comunicación entre tareas.
Lenguajes.
Tema 29. Utilidades para el desarrollo y prueba de programas. Compiladores. Intérpretes.
Depuradores.
Tema 30. Prueba y documentación de programas. Técnicas.
Tema 31. Lenguaje C: Características generales. Elementos del lenguaje. Estructura de un programa.
Funciones de librería y usuario. Entorno de compilación. Herramientas.
Tema 32. Lenguaje C: Manipulación de estructuras de datos dinámicas y estáticas. Entrada y salida
de datos. Gestión de punteros. Punteros a funciones.
Tema 33. Programación en ensamblador. Instrucciones básicas. Formatos. Direccionamientos.
Tema 34. Sistemas gestores de BBDD. Funciones. Componentes. Arquitectura de referencia y
operacionales. Tipos de sistemas.
Tema 35. La definición de datos. Niveles de descripción. Lenguajes. Diccionario de datos.
Tema 36. La manipulación de datos. Operaciones. Lenguajes. Optimización de consultas.
Tema 37. Modelo de datos jerárquico y en red. Estructuras. Operaciones.
Tema 38. Modelo de datos relacional. Estructura. Operaciones. Álgebra relacional.
Tema 39. Lenguajes para definición y manipulación de datos en sistemas de BBDD relacionales.
Tipos. Características. Lenguaje SQL.
Tema 40. Diseño de BBDD relacionales.
Tema 41. Utilidades de los sistemas gestores de base de datos para el desarrollo de aplicaciones.
Tipos. Características.
Tema 42. Sistemas de BBDD distribuidos.
Tema 43. Administración de sistemas de BBDD.
Tema 44. Técnicas y procedimientos para la seguridad de los datos.

BIBLIOGRAFÍA
Sistemas de tiempo real y lenguajes de programación. Alan Burns & Andy Wellings. Pearson Educación.
Sistemas de BBDD: Conceptos fundamentales. Elmasri, R. y Shamkant, B.
Diseño y Administración de BBDD. Gary W. Hansen. Prentice Hall.
Fundamentos de Algoritmia. Brassard, Bratley. Prentice-Hall.
Metodología de la programación. Alcalde E y García. McGraw Hill.
Domingo Giménez Cánovas: Apuntes de algorítmica. Publicaciones UPM.
Introducción al lenguaje C. Jose Miguel Santos..

Recursos web:
http://www.etsit.upm.es/ http://informatica.uv.es/iiguia/TSTD/
http://es.wikipedia.org/wiki/Portada http://www.mitecnologico.com
http://ditec.um.es

107
TEMA 23. DISEÑO DE ALGORITMOS. TÉCNICAS DESCRIPTIVAS.

1. INTRODUCCIÓN
2. DISEÑO DE ALGORITMOS
3. TÉCNICAS DESCRIPTIVAS
3.1. Seudocódigo
3.2. Diagrama de Flujo de Datos

108
1. INTRODUCCIÓN
Un algoritmo es una secuencia lógica de pasos a seguir en la solución de un problema. Pueden
implementarse con distintos lenguajes de programación.
2. DISEÑO DE ALGORITMOS
El diseño de un algoritmo debe ser estructurado; partir de una situación inicial, desarrollar un determinado
proceso y por concluir en uno o varios estados finales. Debe ofrecer los mismos resultados ante las mismas
condiciones. Su concepto base es el mismo que el de la programación.
Un algoritmo presenta las propiedades de precisión (todos los pasos están definidos), finito (número limitado
de pasos), estructuración (posee una entrada y una o varias salidas) y eficacia (resuelve un problema). En
informática, un algoritmo representa el proceso de datos. Para ello se apoya en el uso de operandos y
operadores, variables y constantes, instrucciones, y en general, de los recursos típicos de programación.
Los operandos son los datos que tratará el algoritmo y los operadores, los símbolos que expresan cómo
tratarlos (suma, comparación, etc). Una variable es un dato que puede cambiar de valor en la secuencia del
algoritmo. Deben ser declaradas e inicializadas. En contraste, una constante es un dato que no modifica su
valor. Se definen al principio del algoritmo. Por su parte, las instrucciones de proceso, indican una operación
sobre un dato o del sistema. Se dividen en declarativas, primitivas y de control.
Las instrucciones declarativas asignan valores a operandos. Las primitivas incluyen instrucciones del
sistema, como las de E/S. Las de control permiten dirigir y gestionar el desarrollo del proceso. Pueden ser
alternativas o repetitivas. Las alternativas bifurcan el proceso y las repetitivas implementan bucles en
función de las condiciones que se evalúen.
Por último, se pueden definir subalgoritmos al estilo de subprogramas, subrutinas, métodos o funciones, que
serían pequeños algoritmos que realizan algún proceso que puede ser identificado funcionalmente y posee
la ventaja de ahorrar código y facilitar la comprensión de la rutina.
Cuando un algoritmo se ejecuta sobre un número elevado de datos o muchas veces, el coste computacional
es un factor crítico del rendimiento del programa o el sistema. Para evaluar si el algoritmo es eficaz, se
calcula teóricamente el coste del mismo como un límite en el infinito, en general, en términos de la cota
superior asintótica, representada con la letra omega.
Expresa cómo aumenta la cantidad de proceso en función del número de variables u operaciones a realizar.
De este modo, la operación de sumar los números de una lista recorrida secuencialmente aumenta su
complejidad de forma lineal con el número de elementos. Esto se representa como O(n).
El cálculo de la complejidad se realiza modelando el comportamiento del algoritmo para el peor de los casos
con una función, que será la que indique el orden de complejidad que tiene. Una complejidad expresada
2
como O(l) es constante, O(logn) posee un comportamiento logarítmico, O(n) lineal, O(n ) cuadrático,
c
O(n·logn) lineal logarítmico, O(n ) exponencial y O(n!) factorial.
No siempre puede ser interesante buscar un algoritmo de baja complejidad, ya que esta se calcula en el
peor de los casos. Si los datos no son muy voluminosos o en el entorno de trabajo, algoritmos distintos
presentan complejidades similares podría utilizarse alguno que, en principio, no fuese el menos complejo,
debido a razones de simplicidad, uso de recursos, etc.
Como orientación en el diseño de algoritmos, pueden utilizarse estrategias como buscar problemas
análogos al propuesto o generalizaciones del problema, particularización a partir de problemas generales,
modificación (buscar una solución parecida y adaptarla al problema original), uso de esquemas o la
posibilidad de añadir factores “catalizadores” que ayuden a encontrar la solución del problema.Otras
técnicas típicas son aplicar superposición, es decir dividir el problema en partes más pequeñas, fáciles de
resolver y encontrar la solución total como suma de las parciales.
Por su parte, la recursividad aplica el mismo algoritmo sobre si mismo varias veces, de forma que en la
última llamada, devuelve una solución que será empleada por la penúltima llamada, y así, de forma
sucesiva hasta completar la solución total. En estos casos debe tenerse en cuenta el recorrido del algoritmo.
Existen algoritmos más sofisticados como los de ensayo y error, evolutivos, voraces o de vuelta atrás. El
diseño final, también dependerá de factores tácitos, como la experiencia del analista o programador.
3. TÉCNICAS DESCRIPTIVAS
Las técnicas descriptivas de algoritmos definen cómo trabaja el algoritmo, detallando pasos y proceso.
También sirven de ayuda en el diseño. Las técnicas utilizadas habitualmente son seudocódigo y diagramas
de flujo de datos o DFD.
3.1. Seudocódigo

109
Consiste en escribir un algoritmo de forma intermedia entre el lenguaje humano y uno de programación. Su
esencia es olvidar los detalles de la implementación y centrarse en el diseño. No existen estándares,
simplemente basta aplicar la lógica, utilizando unas ciertas pautas de claridad y estructuras típicas en
programación. Como convenios de facto, podrían ponerse los siguientes ejemplos:
Las sentencias de control, pueden codificarse de manera similar PROGRAMA pares
a cualquier lenguaje de programación. Por ejemplo MIENTRAS
VARIABLES
[condición]… FIN-MIENTRAS, o SI [condición] ENTONCES…
FIN-SI. n : Entero
Las primitivas pueden codificarse de forma clara como EMPIEZA
ESCRIBIR, LEER, etc. Para la asignación de valores puede
LEER n
utilizarse :=, >, →, etc.
SI RESTO(N/2)==0 ENTONCES
Los subprogramas deben declararse de forma nítida. Por ejemplo
SUBPROGRAMA [nombre del subprograma], definir el cuerpo y ESCRIBIR “el número es par”
por fin declarar su fin con FIN-SUBPROGRAMA. Como en un
lenguaje de programación, el subprograma podrá aceptar SI NO
parámetros de entrada y proporcionarlos a su salida. ESCRIBIR “el número es impar”
Los comentarios podrán ponerse entre asteriscos, /*, etc. A la FIN-SI
derecha se muestra un ejemplo de programa que identifica un
número par, realizado con seudocódigo. FIN-PROGRAMA

3.2. Diagrama de Flujo de Datos


Un diagrama de flujo de datos es un esquema que presenta
visualmente la secuencia de proceso de datos. Permiten
representar varios niveles de concreción. Los que indican el flujo
de datos de un sistema sin entrar en detalles son los
organigramas. Si se detalla la secuencia de acciones de un
algoritmo se denominan ordinogramas.
Los organigramas usan símbolos para representar soportes, E/S,
dispositivos de almacenamiento, etc. y lineas de flujo que
enlazan los soportes con los procesos.Los ordinogramas
representan algoritmos al detalle. Cuentan con símbolos como
los de inicio y fin (óvalo), proceso (rectángulo), E/S
(paralelogramo), alternativa (rombo), subprograma (rectángulo
con lados verticales dobles), conectores (círculos pequeños para
unir lineas de flujo o páginas) y líneas de flujo.
En la figura se presenta un ejemplo con la utilización de éstos
símbolos.

110
TEMA 24. LENGUAJES DE PROGRAMACIÓN. TIPOS Y CARACTERÍSTICAS.

1. INTRODUCCIÓN
2. LENGUAJES DE PROGRAMACIÓN
3. TIPOS Y CARACTERÍSTICAS
3.1. Abstracción
3.2. Objetivo
3.3. Paradigma
3.4. Traducción

111
1. INTRODUCCIÓN
Un lenguaje de programación es una representación formal de algoritmos y funciones de un sistema. Por
ello tiene una serie de símbolos que pertenecen al lenguaje. Para desarrollar programas se utilizan
lenguajes de programación que establecen una sintaxis de codificación de instrucciones.
2. LENGUAJES DE PROGRAMACIÓN
Un lenguaje de programación es un conjunto de símbolos, con una sintaxis que define el significado de sus
elementos y expresiones y es usado para gestionar el comportamiento físico y lógico de un sistema. Su
principal característica es ofrecer un sistema normalizado para que distintos programadores puedan
desarrollar aplicaciones que sean portables entre equipos o puedan ser combinadas entre si.
Un lenguaje de programación permite especificar cómo y sobre qué datos operará un ordenador. Un
lenguaje de programación es parecido al lenguaje natural, pero más esquemático. Como se ha presentado,
los micros ejecutan instrucciones de su ISC, el lenguaje máquina. La traducción de un lenguaje de
programación a lenguaje máquina se puede realizar secuencialmente o en bloque.
Si la traducción la realiza un programa intérprete, éste irá adaptando las instrucciones del lenguaje de
programación cuando se vayan ejecutando. Si el programa se traduce por completo a lenguaje máquina se
realiza una compilación y el programa que realiza la traducción se denomina compilador.
La evolución de los lenguajes de programación se puede agrupar en 5 generaciones. La dos primeras
responden al estado primitivo de desarrollo, lenguaje máquina y lenguaje ensamblador, respectivamente.
La tercera generación incluiría lenguajes de medio y alto nivel, que ofrecen sintaxis más amigables para el
programador. Ejemplos serían COBOL, C, C++ o Java. Son lenguajes imperativos u orientados a objetos.
La cuarta generación se refiere a lenguajes declarativos, cuyo principal exponente es SQL, que más que
resolver el problema, lo plantea en un lenguaje más cercano aún al lenguaje natural. La quinta generación
estaría compuesta por los lenguajes pensados para resolver problemas sin la intervención del programador,
propios del campo de la inteligencia artificial.
Los lenguajes de programación poseen algunas características comunes. Entre ellas, la definición de sus
elementos, como operadores o instrucciones. La definición de los niveles léxico (símbolos), sintáctico
(reglas de relación entre símbolos) y el semántico (significado de las expresiones). Y el ámbito de su
aplicación, bien concreta o genérica. Cada lenguaje de programación define su sintaxis, para lo que hace
uso de distintos parámetros:
Datos. Cada lenguaje define sus tipos de datos, así como su representación interna. Tipos de datos
comunes son enteros (int, integer), reales (real) o lógicos (boolean).
Variables y constantes. En general, al declarar un tipo de datos, el lenguaje lo entiende como una variable.
Si se desea declarar una constante se usará una palabra reservada como constant o similar. La asignación
de valores puede usar distintos símbolos (:=, =, etc.) Algunos lenguajes necesitan caracteres especiales
para las variables, como PHP, que usa el símbolo $.
Aspecto importante de las variables es su ámbito de definición. Las variables pueden ser locales y globales.
Una variable local se utiliza en un ámbito limitado, como una subrutina o un bucle, al abandonarlos se
destruyen. Una variable global se usa en el contexto del programa. No se deben mezclar ámbitos de uso y
es buena práctica no dar el mismo nombre a variables locales y globales. Para relacionarlas es
recomendable utilizar el paso de variables por valor, es decir, utilizar en cada ámbito, el valor concreto de la
variable, no la variable directamente.
Operadores. Las operaciones sobre datos, se indican con operadores. Se distinguen los aritméticos como
suma, resta, etc. prácticamente comunes a cualquier lenguaje, los relacionales, utilizados para comparar (<,
> =, <>, ==,...) y los lógicos, que evalúan expresiones devolviendo un valor binario. Ejemplos son NOT (!),
AND (&), OR (||), etc. Los operadores tienen prioridades, esto es, el procesador evaluará primero unas
operaciones sobre otras, a no ser que se modifique la prioridad mediante paréntesis.
Instrucciones. Indican qué acción se realiza. Se distinguen las condicionales, de repetición y ordinarias.
Instrucciones condicionales son las que evalúan una expresión, y en función del resultado realizan un
proceso u otro. Ejemplos son la instrucción tipo IF... THEN... ELSE, SWITCH o CASE. Las instrucciones de
repetición realizan el mismo proceso un número dado de veces. Ejemplos son las instrucciones tipo WHILE,
FOR o DO... UNTIL. Las instrucciones ordinarias englobarían el resto de instrucciones que realizan los
procesos comunes de lectura, escritura, etc.
Otra característica común a todos los lenguajes de programación es la posibilidad de definir subprogramas,
procedimientos o funciones. Estas estructuras son agrupaciones de código que es repetido en el programa

112
varias veces. Por tanto, lo que hacen es englobar ese código común, y cada vez que es necesario se invoca
para que realice la función que sea. Esta organización ahorra líneas de código y facilita su legibilidad.
Entre los subprogramas se suele distinguir entre funciones y métodos. La diferencia estribaría en que los
métodos realizan un proceso y las funciones además devuelven un valor. La llamada a un procedimiento
requiere que se le den unos datos de entrada, en general variables, que cambian de ámbito, como se acaba
de explicar. El paso de variables se realiza por valor o por referencia, siendo recomendable el primero.
Por fin, los lenguajes de programación también incluyen la posibilidad de incluir comentarios en el código,
que no son tenidos en cuenta por el intérprete o compilador, pero hacen el código más legible y sobre todo,
mantenible para los programadores. Pueden usar símbolos como // o /*.
Para presentar un esquema general, puede decirse que un programa, al igual que un texto, consta de una
introducción, cuerpo del escrito y conclusión. Pero, por afinar un poco más, debe desgranarse la
introducción en una cabecera, declaración de unidades externas, variables, constantes, tipos de datos y
subprogramas, el cuerpo del programa y un fin, que en general se dará con la instrucción END o similar.
Lenguajes como PASCAL son rígidos en su estructura y otros como Java ofrecen más libertad. Por ejemplo,
en Java, el cuerpo del programa comienza con MAIN y los subprogramas serían los métodos y funciones de
la clase principal u otras.
3. TIPOS Y CARACTERÍSTICAS
Los lenguajes de programación se pueden clasificar según varios criterios: abstracción, objetivo, paradigma
de programación y tipo de traductor.
3.1. Abstracción
Según el nivel de abstracción del lenguaje, es decir, su cercanía al lenguaje natural, se pueden identificar
los lenguajes máquina, ensamblador y de alto nivel.
El lenguaje máquina es el que interpreta el microprocesador. Utiliza código binario, octal o hexadecimal y
era utilizado por los programadores de los primeros ordenadores. Como es diferente para cada máquina, es
difícil de portar y lo engorroso de su programación desaconseja la programación directa. El proceso normal
es programar en alto nivel y traducir a lenguaje máquina. Todas las instrucciones máquina son imperativas,
ya sean de trasferencia de datos, E/S, control u otras.
El lenguaje ensamblador es una primera abstracción del lenguaje máquina y usa nemónicos para identificar
instrucciones y datos. Permite comentarios y etiquetas para definir puntos de control lógico o rutinas.
Los lenguajes de alto nivel son más cercanos al humano, más fáciles de aprender y con una sintaxis bien
definida. Permiten a los programadores realizar un desarrollo independiente de la tecnología que lo ejecute,
liberándolos de los detalles hardware, no usando instrucciones máquina directamente.
Entre sus características destacan el uso de variables, una sintaxis flexible, un conjunto de instrucciones
ámplio y potente e inteligibilidad humana. Deben ser traducidos o compilados y los programas resultantes,
aunque puedan perder eficiencia en comparación con un desarrollo en ensamblador, es recomendable. El
compilador marcará la eficiencia del código máquina resultante de la traducción.
Como ejemplos y características de algunos lenguajes
de alto nivel, se pueden citar Basic, un lenguaje
desarrollado con fines didácticos, pero su evolución a
Visual Basic lo ha hecho muy popular en el desarrollo
de aplicaciones. MS Office ofrece un intérprete Basic.
C y C++, también muy populares, permiten usar
instrucciones de bajo nivel. Son muy usados en el
desarrollo de SO y aplicaciones. En general, los
programas en C obtienen muy buen rendimiento.
Java es un lenguaje que suele ser interpretado, lo que
permite una buena ejecución en máquinas virtuales
con independencia del hardware y SO.
PHP es también un lenguaje interpretado que no precisa compilación. Fue diseñado para añadir
funcionalidad a HTML en la generación de páginas web dinámicas.
3.2. Objetivo
Pueden identificarse lenguajes de programación de propósito general, específico y scripting. Los primeros
pueden utilizarse para programar cualquier tipo de aplicación mientras que los segundos sólo se aplicarían
a problemas particulares como gráficos o sonido.

113
Los lenguajes de propósito general, lo que si han marcado es una especialización, por sus características
particulares. Así, por ejemplo, C y C++ se usan mucho en programación de SO o Java en aplicaciones
multiplatarfoma.
Los lenguajes de scripting automatizan tareas dentro de otro programa. Son interpretados por el programa
que los ejecuta. Los lenguajes de shell scripting se ejecutan en el shell del SO automatizando tareas de
gestión. Los más conocidos son los de Unix o Linux como Bash.
Otros lenguajes de scripting son los usados en navegadores, como JavaScript, uno de los más extendidos.
El esquema actual de trabajo puede resumirse en uso de PHP en servidores, datos en XML y Javascript en
el navegador cliente. PHP, PERL o ASP son lenguajes de script, interpretados directamente.
Los lenguajes de propósito específico irían un poco más allá de los de scripting. Como ejemplo podría servir
el lenguaje MediaWiki, que actuaría entre el lenguaje natural del redactor de un artículo y el lenguaje HTML
final, no utilizándose para otro propósito.
3.3. Paradigma
El paradigma de programación es la filosofía utilizada en el desarrollo. El tipo de programa a desarrollar
marcará el paradigma más adecuado a aplicar. Se distinguen los siguientes:
Programación estructurada. Basada en la definición de métodos y funciones que representan subprogramas
lo que facilita su mantenimiento, la reutilización de código y el ahorro de líneas de código. No se considera
buena práctica de programación estructurada el uso de instrucciones incondicionales como GOTO.
Programación modular. Es la evolución de la programación estructurada. La idea subyacente es la misma,
estructurar el desarrollo en módulos o subrutinas que resuelven problemas complejos y facilitan la
mantenibilidad y reutilización de código. Se usan bibliotecas (librerías).
Orientación a objetos (POO). Es la más empleada actualmente, aunque su esencia es similar a la
programación estructurada, organizando el código de forma diferente y orientándose al desarrollo modular.
Un programa se denomina clase y posee una entidad diferenciada. Cada clase, puede ser hija o padre de
otra clase que la amplíe, es el concepto de herencia, que materializa la reutilización masiva de código. Los
elementos de un programa son objetos que se declaran en la ejecución y pueden interactuar. En el tema 29
se trata más en detalle. Lenguajes como C++, Java, o Pascal soportan POO. Java además proporciona un
repositorio de clases llamado API con clases definidas para facilitar la programación.
Programación en tiempo real. Es la necesaria para sistemas que tienen especificaciones temporales de
caracter inmediato. Un ejemplo podría ser un sistema de seguridad de una central nuclear que requiera una
respuesta casi instantánea. Un lenguaje de programación para sistemas de tiempo real debe ofrecer
facilidades para interactuar ágilmente con los dispositivos de E/S, tener algún medio de control del tiempo,
establecimiento de umbrales y prioridades temporales y aspectos del estilo.
Estos paradigmas se desarrollan en orden en los siguientes temas. Otros paradigmas que pueden ser
identificados son la programación imperativa, usada en todos los lenguajes y consiste en detallar los pasos
a dar en la solución de un problema, en términos de estados del programa y sentencias de cambio entre
estado. Algunos lenguajes como Basic poseen un carácter imperativo más marcado. La programación
funcional define sus instrucciones con funciones matemáticas. Ejemplo destacado es LISP.
La programación declarativa enuncia tareas, dejando al sistema que lo resuelva. Ejemplo es una consulta
SQL. La consulta no especifica cómo buscar la información, que se hará según se implemente en la
máquina o servidor. Por fin, la programación lógica, intenta modelar la lógica humana, con parámetros y
métricas matemáticas. Se aplica en inteligencia artificial y sistemas expertos y lenguaje representativo es
PROLOG
3.4. Traducción
Como se comentó, los lenguajes de programación pueden ser compilados (ejemplo, C) si se traducen por
completo antes de su ejecución o interpretados (PHP) si se traducen cuando se ejecutan instrucción a
instrucción o compilados en tiempo de ejecución (usados en máquinas virtuales).
Por fin, otra clasificación más específica distinguiría entre lenguajes tipados y no tipados. Los primeros,
declaran tipos de datos de forma estática, como C, en que sus variables tienen el mismo tipo de datos
durante la ejecución. Los lenguajes no tipados manejan variables cuyo tipo de datos puede cambiar, como
JavaScript.

114
TEMA 25. PROGRAMACIÓN ESTRUCTURADA. ESTRUCTURAS BÁSICAS. FUNCIONES Y
PROCEDIMIENTOS.

1. INTRODUCCIÓN
2. PROGRAMACIÓN ESTRUCTURADA
3. ESTRUCTURAS BÁSICAS
4. FUNCIONES Y PROCEDIMIENTOS

115
1. INTRODUCCIÓN
La programación estructurada estudia la forma de organizar la programación de manera que establece una
serie de reglas para generar programas legibles y fáciles de mantener, obteniendo software de calidad.
2. PROGRAMACIÓN ESTRUCTURADA
Desde el principio de la programación, surgió la necesidad de desarrollar código sencillo y sobre todo
mantenible. La programación estructurada es una forma de desarrollar código de forma clara. Para ello hace
uso de tres estructuras: secuencia, selección e iteración, desaconsejando las estructuras incondicionales
tipo GOTO. El teorema del programa estructurado, demostrado por Böhm-Jacopini, enuncia que todo
programa puede escribirse usando sólo esas tres estructuras.
La programación estructurada presenta las ventajas de ofrecer una estructura diferenciada con un código
más legible, con bloques de código más contextuales y más fáciles de documentar, reduce el coste de
mantenimiento y en general los programas reducen la complejidad, obteniendo mayor rendimiento. Como
inconvenientes, citar que todo el programa se presenta en un bloque de código, lo que se puede solucionar
modularizando.
La programación estructurada propone una técnica consistente en refinamientos sucesivos, consistentes en
valorar el programa con completitud e ir concretando poco a poco sus parcelas funcionales. Esto puede
lograrse identificando partes funcionales en la estructura del programa. Son los conocidos como recursos
abstractos, y la técnica de Top-Down, consistente en el planteamiento general del problema e ir
descendiendo paulatinamente en la implementación de los detalles. La técnica inversa se llama Bottom-Up.
La programación estructurada hace un uso exhaustivo del Top-Down para enfatizar la planificación del
problema globalmente y evitar los detalles de soluciones tangentes al objetivo del programa. Como
inconveniente se puede citar el retraso de las pruebas, ya que es necesario detallar el programa para
empezar la codificación de subrutinas para obtener resultados. El desarrollo real combina ambas técnicas.
En general, el planteamiento del problema aconseja el Top-Down y la reutilización de código o la necesidad
de prototipos el enfoque Bottom-up.
La evolución de la programación estructurada es la modular, que permite escribir subrutinas en módulos
independientes llamados bibliotecas, aunque se utiliza más el nombre de librerías, por la traducción
engañosa del inglés (library).
3. ESTRUCTURAS BÁSICAS
Como estructuras básicas de la programación estructurada se citan la secuencia, bifurcación, iteración y
subprogramas.
Secuencia. La estructura secuencial es la estructura natural de cualquier programa. Consiste en la
enumeración de las instrucciones que debe realizar el programa de forma consecutiva. Cada instrucción se
define con una palabra reservada del lenguaje, que no se puede usar para otros propósitos como nombrar
una constante y suele limitarse con algún identificador como ;. Es habitual después del limitador introducir
un retorno de carro para mejorar la legibilidad. En algún lenguaje es el salto de carro el mismo limitador.
Bifurcación. Permite cambiar la secuencia de ejecución del programa en función de condiciones. Las
condiciones pueden anidarse o usar estructuras que seleccionen una serie de operaciones según el valor
que tome cierto parámetro. Se suelen delimitar con palabras reservadas como BEGIN o END. Estructuras
típicas se definen con instrucciones IF... THEN... ELSE, CASE...OF o SWITCH.
Iteración. Implementa bucles, que repiten un proceso hasta que se cumpla una condición. El proceso puede
repetirse como poco una vez, o ninguna, según la estructura que se use. Las tres instrucciones habituales
son FOR... TO, WHILE y DO...UNTIL.
Subprogramas y subrutinas. Agrupan código que realiza una operación, distinguiendo una funcionalidad. La
implementación incrementa la legibilidad del programa y ofrece la funcionalidad de llamar a la subrutina
siempre que se requiera. La subrutina se declara en algún lugar del programa, en general al principio, tras la
declaración de variables, constantes y tipos de datos.
Para identificarlas las subrutinas se nombran. Aceptan parámetros de entrada y pueden devolver valores.
Se distinguen dos tipos fundamentales de subrutinas, las funciones y los procedimientos, aunque algunos
lenguajes como C no hacen distinciones. Se exponen en más detalle en el siguiente punto.
Operaciones comunes dentro de las estructuras es la asignación y la definición de constantes y tipos de
datos. La asignación consiste en dar valores a variables. Cuando se define una variable, se reserva un
espacio en memoria que podrá tener cualquier valor, denominado basura. Hasta que no se inicializa la
variable o la constante, su valor no estará controlado. La definición de constantes y tipos de datos se realiza
según marque la sintaxis particular de cada lenguaje.

116
4. FUNCIONES Y PROCEDIMIENTOS
Tanto las funciones como los procedimientos son estructuras que ofrecen los lenguajes de programación
para implementar subprogramas.
Una función es una estructura que define una subrutina y devuelve un valor tras su ejecución. Puede
utilizarse para asignar a una variable ese valor resultado de su ejecución. Un ejemplo simple podría ser
resultado:=raiz(m); donde resultado sería una variable y raiz una función que calculase la raíz cuadrada del
número n que le sea pasada, en este caso m.
Un procediminento es una subrutina que no devuelve valores a su salida,
simplemente realiza un proceso, como pudiera ser una presentación en pantalla
o la impresión de un archivo.
Como se verá, en los lenguajes orientados a objetos, las funciones y los
procedimientos reciben el nombre de métodos y definen las operaciones que
pueden realizarse con los objetos.
Las ventajas de usar subrutinas son la reducción de redundancia en el código,
mejora de su legibilidad, localización de puntos de fallo, reutilización de código,
modularidad y ocultación de los detalles de implementación, lo que permite que
distintos programadores se centren en su parcela particular de desarrollo y su
trabajo se engrane por medio de interfaces bien definidos.
Las funciones y los procedimientos tienen una estructura definida. Suelen declararse con una cabecera
donde se indica su nombre, para identificarlos, que incluirá los datos de entrada y los de salida si se trata de
una función. La programación del cuerpo se realiza siguiendo las normas del lenguaje de programación. El
valor devuelto por una función se indicará con alguna palabra tipo RETURN o parecida.
En el paso de variables entre el programa principal y las subrutinas, puede utilizarse el paso por valor o por
referencia, que ya se han explicado, pero que debe insistirse en su importancia. Lenguajes como C,
permiten incluir un valor o un puntero a la posición de memoria de la variable a pasar. Siempre es
recomendable utilizar el paso por valor.
Las subrutinas también pueden implementar recursividad, invocándose a si mismas. Para un buen
rendimiento, se debe diseñar de forma que las sucesivas invocaciones vayan afrontando problemas menos
complejos del original y concluir el proceso recursivo con alguna condición de fin de recursividad, sin la cual
se podría caer en un bucle infinito, lo que “colgaría” el programa.

117
TEMA 26. PROGRAMACIÓN MODULAR. DISEÑO DE FUNCIONES. RECURSIVIDAD. LIBRERIAS.

1. INTRODUCCIÓN
2. PROGRAMACIÓN MODULAR
3. DISEÑO DE FUNCIONES
4. RECURSIVIDAD
5. LIBRERIAS

118
1. INTRODUCCIÓN
La programación modular puede entenderse como el siguiente paso en la evolución de la programación tras
la programación estructurada. Las diferencias son más bien formales. Si la programación estructurada
establece los criterios de programación para obtener código de mayor calidad en cuanto a mantenimiento y
simplicidad, la programación modular evoluciona en el sentido de dar más independencia al código de forma
que pueda atomizarse para facilitar su reutilización, lo que también redunda en una mejora del
mantenimiento y aligera el cuerpo principal de los programas.
2. PROGRAMACIÓN MODULAR
La programación modular es una técnica de diseño de programas que plantea la codificación dividiéndola
en partes sencillas llamadas módulos que se implementan por separado. La programación modular estudia
los módulos desde el punto de vista de su estructura y relación.
En general se busca que los módulos de un programa sean funcionales y tengan poca relación entre ellos,
simplificando los problemas, permitiendo la definición de equipos de desarrollo independientes y logrando
programas fáciles de mantener.
El ensamblado o la comunicación entre módulos se realizan definiendo correctamente los interfaces que
serán los que utilicen los usuarios de los módulos. De esta se obtienen aplicaciones más robustas, ya que
los errores no se propagan, se quedan limitados al módulo en que se ha programado. Los módulos además
pueden ofrecerse compilados a empresas clientes u otros equipos de desarrollo de forma que los detalles
de la implementación permanezcan ocultos y símplemente se maneje el interfaz.
Por tanto, aunque ya pueda tenerse una idea de módulo, puede definirse como una parte de código de un
programa definida en un ámbito de visibilidad particular, oculta al resto del programa y módulos con los que
se relaciona a través de un interfaz que incluirá los resultados que proporcione, si los hubiera.
Por tanto, un módulo es una caja negra que define las unidades en que se descompone un programa más o
menos extenso. Su interfaz incluirá declaraciones de constantes, variables, procedimientos y funciones. El
cuerpo del módulo debe incluir el código necesario para cumplir su función. En general se refiere como
parte pública el interfaz del módulo y parte privada a los detalles de implementación. También debe
especificarse qué partes del módulo son exportables a los demás y actuarán como interfaz. Un módulo
puede importar otros módulos y exportar funciones o procedimientos.
Por ejemplo, en C no se hacen distinciones entre elementos importables y exportables. El código se usa
como ficheros que se incluyen en la cabecera, exportando todo menos lo marcado como static. Al crear un
módulo se crea un archivo de cabecera (con extensión .h) que declara los elementos exportables. El archivo
de código (extensión .c), incluye el de cabecera (sintaxis # include [cabecera.h]). C no permite exportar un
elemento sin su implementación, por lo que debe ser pública, lo que se soluciona en C++.
El correcto diseño de los módulos debe tener en cuenta dos aspectos, la independencia funcional y la
cohesión. La independencia funcional consigue que cada módulo realice su función sin apenas interacción
con otros, simplificando los interfaces. La cohesión se refiere a que la función realizada sea lo más
específica posible, ofreciendo entonces un bajo acoplamiento, es decir poca dependencia con otros
módulos, de forma que no se propaguen errores.
Por su parte, el programa principal se centrará en la decisión de qué módulos utilizar y el control de la
operación. La organización del programa podrá entonces jerarquizarse y facilitar la comprensión y
mantenimiento del código ya que se podrá medir la profundidad y anchura del programa.
3. DISEÑO DE FUNCIONES
Una función es una rutina que ofrece un valor de salida. En el diseño de funciones, debe tenerse en cuenta
la agrupación de tareas por operación funcional, que sea reutilizable, altamente cohesionada (lo más
especializada posible) y con bajo acoplamiento, que no dependa de otras funciones o procedimientos.
La cabecera de las funciones debe indicar su nombre. El nombre a elegir debe ser lo más indicativo posible,
para facilitar la comprensión del programa. Del mismo modo, los parámetros o datos que recibirá la función
deben ser definidos en la cabecera. En general, debe optarse por el paso de variables por valor y evitar en
lo posible el paso por referencia.
Del mismo modo se especificará el valor de salida de la función. El cuerpo del código de la función debe
seguir las recomendaciones típicas de buenas costumbres de programación y documentación.
4. RECURSIVIDAD
La recursividad consiste en la llamada de un programa a si mismo. Es un recurso típico que ofrecen los
lenguajes de programación para implementar operaciones que se repiten varias veces. Para evitar
problemas al implementar recursividad, como pudieran ser bucles infinitos, existen dos condiciones a

119
verificar: que en cada invocación del programa se reduzca la complejidad del problema y que exista al
menos una condición de fin de recursividad. Otro tipo de recursividad es la aplicada en algunos tipos de
datos, en los que su definición incluye el mismo tipo de datos que se está definiendo. Es el caso habitual de
las estructuras dinámicas como listas o colas.
El diseño de un algoritmo recursivo es diferente al de uno iterativo. El algoritmo recursivo soluciona el
problema suponiendo que ya tiene solucionado una parte del problema, con lo que su aplicación varias
veces va utilizando esas suposiciones hasta llegar a una solución atómica. En ese momento se realiza el
camino inverso para completar la solución toal. Un algoritmo iterativo soluciona una parte del problema y
repite el proceso para las demás partes, hasta completar la solución completa del problema.
Un ejemplo clásico de comparación entre recursividad e iteratividad es el cálculo del factorial de un número.
Un algoritmo iterativo operará multiplicando el número, sea n, por n-1, etc. El algoritmo recursivo lo hará
multiplicando n por el factorial de n-1, momento en que se llamaría a sí mismo para calcular (n-1)!. Al final
se llegaría a 1!=1 y se devolverían las invocaciones hasta completar n!.
Un algoritmo recursivo puede tranformarse en uno iterativo. La elección dependerá del coste computacional,
legibilidad del código u otros. El cálculo de la complejidad de un algoritmo iterativo es más sencillo que el de
uno recursivo porque aumenta el coste en memoria para cada llamada recursiva.
La recursividad es muy utilizada en recorrido de grafos, ordenación de vectores o algoritmos de fuerza
bruta, en los que se intentan probar todas las soluciones. En este caso se requiren controles si el algoritmo
no converge a la solución. Son los algoritmos de backtracking.
5. LIBRERIAS
Una biblioteca o librería es un conjunto documentado, probado y, en su caso, compilado, de procedimientos
y funciones invocables desde otro programa. Existen librerías básicas o comunes que solucionan problemas
habituales y librerías adicionales que realizan tareas más específicas. Representan el paradigma de la
reutilización de código y ofrecen gran facilidad en el desarrollo de software.
Las librerías comunes se dividen en marcos de referencia que son conjuntos de utilidades sobre un tema
concreto. Existen marcos de referencia de matemáticas, gráficos, etc. Las librerías adicionales pueden ser
de libre distribución o propietarias.
El nombre de librería es una mala traducción del término inglés original, library, que debe traducirse por
biblioteca, pero habitualmente se usan los dos términos como sinónimos.
El lenguaje C tiene una biblioteca estándar utilizada por la mayoría de programas. Ofrece herramientas de
E/S, operaciones con cadenas y otras. ANSI publicó las bibliotecas ANSI C junto con su implementación
estándar. Con respecto a Java es reducida y no ofrece operaciones para interfaces gráficos o estructuras
dinámicas, a cambio de mayor facilidad para compilar en distintas plataformas. La biblioteca Java, o API de
Java, es potente y completo y proporciona herramientas de todo tipo para el desarrollo.
Los SO también proporcionan librerías. Por ejemplo, Linux permite desarrollar aplicaciones gráficas con las
librerías Gnome o KDE. WS proporciona un API, bibliotecas generalmente dinámicas llamadas DLLs. Una
biblioteca de enlace dinámico puede ser enlazada por el programa y accedida en tiempo de ejecución de
forma que las aplicaciones de interfaz gráfico ocupan menos al enlazar a la parte GUI de las DLLs de WS.
La mayor parte de las bibliotecas se encuentran en los archivos Kernell32.dll User32.dll y Gdi32.dll. Algunos
entornos de programación para WS amplían las bibliotecas y ofrecen interfaces más amigables. Microsoft
también la agrupó en marcos de referencia como el MFC Microsoft Fundation Classes.

120
TEMA 27. PROGRAMACIÓN ORIENTADA A OBJETOS. OBJETOS. CLASES. HERENCIA.
POLIMORFISMOS. LENGUAJES.

1. INTRODUCCIÓN
2. PROGRAMACIÓN ORIENTADA A OBJETOS
3. OBJETOS
4. CLASES
5. HERENCIA
6. POLIMORFISMOS
7. LENGUAJES

121
1. INTRODUCCIÓN
La programación orientada a objetos, POO, supone un paso más en el diseño y modularidad del desarrollo
de código. Por un lado, hereda las buenas prácticas de la programación estructurada y por otro, lleva más
allá la programación modular. La POO está muy extendida, por ser ideal en el desarrollo de aplicaciones
gráficas, lo que ha hecho que algunos lenguajes de programación se hayan adaptado a esta metodología.
2. PROGRAMACIÓN ORIENTADA A OBJETOS
La POO representa un paradigma de programación que como unidad básica utiliza objetos, abstracciones
software, para el desarrollo de programas, consiguiendo un alto nivel de abstracción.
Un objeto puede actuar como agente que presta un servicio, sin ofrecer detalles de su implementación, con
lo que su relación con el resto del software es a través de un interface muy definido. La POO utiliza los
conceptos de encapsulamiento, abstracción, polimorfismo y herencia. Se popularizó en los años 90 y su uso
es muy extenso.
Como ejemplos de lenguajes con los que se puede programar con objetos se pueden citar Visual Basic,
C++, Object Pascal, y prácticamente la totalidad de lenguajes. Sin embargo, destacan Smalltalk y Java. El
primero se pensó con fines educativos y está muy enfocado a objetos.
Java también está muy pensado para la POO robusta y flexible. La programación usará al menos un objeto,
la clase main. Ofrece un API extenso y comparte la mayoría de la sintaxis de C++, más simple y evitando
instrucciones de bajo nivel. Cuenta con un recolector de basura que permite despreocuparse de la
liberación de memoria de objetos eliminados.
3. OBJETOS
Definir un objeto sin más es complicado sin una analogía previa. Por tanto, debe pensarse primero en el
caso de la programación estructurada. En la programación estructurada existían unos tipos de datos, por
ejemplo enteros y al codificar un programa, se podía hacer uso de esos tipos de datos, definiendo variables.
Por ejemplo, podría definirse una variable llamada contador de esta forma: contador:integer;
Como primera aproximación podría decirse que un tipo de datos, en POO, se llamará clase, y una variable
de ese tipo de datos, de esa clase, será un objeto. Siguiendo con la analogía, la variable contador sería un
objeto de la clase integer.
Por tanto, en el contexto de la POO, puede definirse un objeto como una instancia dinámica de una clase.
De esta forma, y teniendo como referencia el ejemplo propuesto será más fácil entenderlo. Una clase puede
instanciarse, creando un objeto, al que se asigna un espacio en memoria.
Un objeto se comporta como una entidad independiente con datos propios, capaz de relacionarse con otros
objetos a través de un interfaz. El concepto de objeto es más amplio que el de la variable del ejemplo. De
hecho, la variable contador, de tipo entero, termina ahí su esencia. Es un entero. Un objeto es más
complejo, puede incluir funciones, procedimientos (métodos), variables, etc. Es una especie de contenedor
amplio, cuyas propiedades estarán marcadas por la clase a la que pertenezca.
Un objeto tiene tres características: identidad, comportamiento y estado. Su identidad es el conjunto de
propiedades que posee por el hecho de definirse. El comportamiento de un objeto se refiere a las acciones
que puede llevar a cabo, que vendrán dadas por sus métodos, lo que equivale a los procedimientos y
funciones de la programación estructurada. Los métodos definen el comportamiento de los objetos y
permiten modificar su estado, es decir la situación en la que se encuentra (valores de sus variables,
relaciones, etc.).
4. CLASES
Una clase es la definición abstracta de un objeto. Por tanto, define las propiedades, funciones y forma de
utilización de los objetos de su clase. En POO, el diseño de programas se realiza pensando en las
entidades lógicas que lo componen, más que en la función y subrutinas, como en los casos de
programación estructurada y modular. Se piensa en objetos, que modelan entes reales.
De forma similar a la inicialización de variables, un objeto, al instanciarse, debe dársele una identidad, lo
que se realiza con un método llamado constructor. Una clase puede tener varios constructores en función
de cómo se instancie. En este caso, se denomina sobrecarga y consiste en que varios métodos de una
clase puedan tener el mismo nombre pero cambien su función según los argumentos.
Para realizar operaciones con un objeto es necesario llamar a sus métodos y pasarle los parámetros
necesarios. No se aconseja tratar los atributos internos de un objeto directamente. En POO, las operaciones
sobre los datos de un objeto se realizan con métodos. Piénsese por ejemplo, en una clase automóvil, y un
objeto de esa clase llamado “micoche”. Si se desea conocer la potencia de “micoche”, se dispondrá de un

122
método llamado potencia() que devolverá el valor correspondiente. Para cambiar de color “micoche” habrá
otro método, que aceptará un parámetro que indique el nuevo color y actualice el atributo color de micoche.
Los objetos pueden tener atributos o métodos públicos y
privados. Las clases atributos estáticos que tendrán el mismo
valor para todos los objetos durante la ejecución. Los atributos
estáticos serán accedidos invocando directamente a la clase, no
a través de objetos. En POO se utilizan dos conceptos:
ocultación y encapsulamiento. La ocultación es la propiedad de
los objetos por la que la implementación de su código no puede
manipularse directamente (es privada), sino que debe hacerse
uso de los métodos que define el objeto a modo de interfaz.
El encapsulamiento se refiere a la definición de objetos como entidades aisladas, lo que les otorga
independencia del programa que los use, pudiendo además exportarse a otros programas.
La ocultación se logra mediante palabras reservadas que asigan a los atributos y métodos los permisos
correspondientes. La palabra reservada “public” permite el acceso a todos los objetos y “protected” permite
el acceso sólo a clases hijas. Antes de destruir o dejar de usar un objeto, debe liberarse la memoria que
utiliza. Para ello los objetos suelen disponer de un método destructor.
5. HERENCIA
Una clase puede crearse a partir de otra clase, lo que implica que la nueva clase tenga las características
de la clase padre o superclase y además pueda añadir nuevas funciones o atributos. Este es el concepto de
herencia. Su característica principal es el ahorro de código al permitir crear clases complejas a partir de
otras ya definidas.
Para definir una clase hija, hay que indicar en su código que extiende una superclase. Una clase abstracta
sólo sirve para ser heredada, no para tener instancias propias. Si a un objeto se le llama con un método que
no tiene, se consulta ese método en la clase padre. Los métodos pueden redefinirse en las clases hijas o
añadirles funciones y llamar al de la superclase.
Los lenguajes de programación incorporan clases primitivas que pueden ser extendidas o usadas por los
programadores gracias a la herencia. La herencia trata las clases de forma jerárquica, ya que todas
descienden de una superclase común. Estas clases se definen en el API. Leguajes como C ++ permiten
herencia múltiple, esto es, que una clase sea hija de varias superclases. Java sólo permite herencia simple.
Si no se desea que un método o atributo se pueda heredar, a la hora de declarar una variable o un método
se usa la palabra reservada “private”, que impide el acceso a clases hijas y objetos.
6. POLIMORFISMOS
Un objeto que puede tener atributos de varias clases se dice polimórfico. Esta propiedad puede darse
gracias a la herencia, al instanciar el objeto como de la superclase.
Para ejemplificarlo, sea una superclase polígono, definida con un método dibuja(), que presenta en pantalla
el polígono que se le pasa. Si se definen clases hijas de polígono, como círculo o cuadrado, con sus
respectivos métodos dibuja() al ser llamados se presentará en pantalla el polígono correcto, ya sea un
círculo, un cuadrado u otro, sin ambigüedad, ya que se entenderá que el método a usar es el definido en el
polígono correspondiente. El método dibuja podrá declararse e implementarse o no en la superclase. Si no
se implementa, el método será virtual y se habla entonces de polimorfismo puro.
El polimorfismo puede ser de enlace dinámico o estático. El dinámico define el tipo de clase que tendrá el
objeto en tiempo de ejecución y el estático en tiempo de compilación. Cuando se definen métodos con el
mismo nombre, distinguidos por el tipo de argumentos que reciben, se habla de sobrecarga.
En el ejemplo anterior, habría sobrecarga si en la clase polígono se definieran dos constructores, uno que
recibiera el diámetro y la posición para construir un círculo y otro la posición de dos vértices y el lado para el
cuadrado.
El método dibujar tendría que implementar las dos posibilidades y ejecutar la que correspondiera según el
caso. En este caso, si se añadiera un nuevo tipo de polígono no habría que recompilar la superclase como
sí ocurriría en caso de sobrecarga.
En C++, el polimorfismo se define en la superclase mediante métodos virtuales. En otro caso se considera
que hay sobrecarga de la clase hija sobre la clase padre. En caso de usar métodos virtuales se produce un
enlace dinámico, si no, será estático. Java, además, incorpora el concepto de interfaz, una clase abstracta
sin métodos, que actúa como plantilla para que el programador escriba el código necesario en cada método
definido en la interfaz. Esto permite implementar herencia múltiple y aplicar polimorfismo.

123
7. LENGUAJES
Los lenguajes de programación orientada a objetos, son aquellos que implementan los conceptos y
características del paradigma de la POO. Del mismo modo, debe entenderse esta afirmación en sentido
inverso, y es que, la propia naturaleza de la POO impone unas condiciones de estructura y definición de los
lenguajes que la implementan.
Aunque, lenguajes no púramente orientados a objetos, pueden ampliarse o presentar facilidades para
trabajar de forma orientada a objetos. Por ejemplo, si un lenguaje no implementa la posibilidad de definir
una clase, o un objeto, no podrá considerarse orientado a objetos. Para que sea considerado como tal,
deben proporcionarse los mecanismos o ampliaciones necesarias para manejar los conceptos de la POO.
Del mismo modo, podría darse el caso en que no todos los conceptos que define la POO se implementen
en un determinado lenguaje y que éste no pierda su carácter de lenguaje orientado a objetos.
Como condición mínima para considerar a un lenguaje de programación orientado a objetos, podría
establecerse la posibilidad, al menos, de definir tipos de datos abstractos, que puedan contener y efectuarse
operaciones sobre ellos y que puedan ser instanciados.
Suele considerarse al lenguaje Simula (1967) como el primero de los lenguajes orientado a objetos. Simula
se concibió como lenguaje para la creación de programas de simulación, donde los objetos representan la
información importante. El ejemplo paradigmático es Smalltalk (1972) con el que se desarrolló el grueso de
la teoría de POO.
Otros ejemplos de lenguajes orientados a objetos lo suponen ABAP, C++, D, Object Pascal, Eiffel, Java,
JavaScript, Objective-C, Perl, PHPv5 y posteriores, PowerBuilder, Python, Ruby, Visual Basic .NET o Scala
(utilizado por Twitter).
Como se ha comentado, algunos lenguajes no son puramente orientados a objetos y combinan la POO con
otras metodologías. Es el caso de C++, Pascal o OOCOBOL, por ejemplo, a los que se les ha añadido las
funcionalidades necesarias para soportar la POO. Por fin, apuntar que el siguiente escalón en nivel de
abstracción lo representa la metodología de Programación Orientada a Aspectos (POA), todavía en
desarrollo.

124
TEMA 28. PROGRAMACIÓN EN TIEMPO REAL. INTERRUPCIONES. SINCRONIZACIÓN Y
COMUNICACIÓN ENTRE TAREAS. LENGUAJES.

1. INTRODUCCIÓN
2. PROGRAMACIÓN EN TIEMPO REAL
3. INTERRUPCIONES
4. SINCRONIZACIÓN Y COMUNICACIÓN ENTRE TAREAS
5. LENGUAJES

125
1. INTRODUCCIÓN
La programación en tiempo real es la que se ocupa de los sistemas que están sujetos a restricciones
temporales. Es decir los programas que deban trabajar en tiempo real deben ejecutarse en unos límites de
tiempo estrictos. El software de tiempo real, controla sistemas de misión crítica, como por ejemplo las
medidas a tomar ante una alarma en una central nuclear o el control del sistema antibloqueo de los frenos
de un auto. Si la respuesta no se obtiene a tiempo, se dice que el sistema fracasa.
2. PROGRAMACIÓN EN TIEMPO REAL
El origen de la programación en tiempo real se remonta a los primeros tiempos de la simulación, cuando se
requería que la simulación siguiera la velocidad del proceso real simulado. Actualmente, aunque el término
se asocia a “velocidad”, lo cierto es que el proceso podrá ser más o menos rápido, lo que si debe garantizar
la programación en tiempo real es la respuesta a tiempo.
Un sistema es de tiempo real si su respuesta no sólo es correcta lógicamente, sino que responde a tiempo.
Esto es debido a que una respuesta fuera de tiempo es inútil y puede causar un fallo crítico del sistema
completo, como por ejemplo dañarlo o implicar la pérdida de vidas humanas.
En este sentido podrían diferenciarse sistemas de tiempo real hard y soft. Los sistemas hard imponen
condiciones temporales severas, como por ejemplo, un sistema de control de vuelo, mientras que los soft
permiten cierta flexibilidad en los tiempos, como en un sistema de adquisición de datos. También se habla
de sistemas real, sistemas hard con respuestas temporales muy cortas, como pueda ser un sistema de
guiado de misiles y sistemas firm, sistemas soft en los que no hay beneficio con respuesta fuera de plazo.
Los criterios de diseño dependerán de la aplicación, pero algunos ejemplos típicos son la maximización del
número de plazos cumplidos, lo que en conjunto minimiza el retraso y maximiza el número de tareas de alta
prioridad que cumpen plazos.
Debido a las restricciones temporales que debe cumplir la programación en tiempo real, el diseño del
software está muy condicionado por la arquitectura del hardware, las características del SO y los requisitos
particulares de la aplicación. En general un sistema de tiempo real integrará hardware, software y elementos
de BBDD para conseguir sus requisitos funcionales y de rendimiento.
El problema duele ser la decisión de asignar funciones relativas al rendimiento. Por ejemplo, dejar una
respuesta temporal en manos de un programa o implementarlo con hardware. Del mismo modo, los
sistemas de tiempo real suelen dedicarse en exclusiva a una aplicación para poder cumplir sus requisitos.
Tradicionalmente los sistemas de tiempo real eran militares, pero actualmente son muchos los sistemas
cotidianos que emplean algun tipo de éstos sistemas en medicina, control de procesos, automatización
industrial, etc. De los aspectos relativos al diseño de tiempo real destacan la coordinación entre tareas, el
proceso de interrupciones, la E/S, la especificación de las condiciones de tiempo y la precisión de su BBDD.
La programación en tiempo real se aplica en el contexto del rendimiento de sistema, en general medido en
términos temporales o con criterios como la tolerancia a fallos u otros factores críticos. Además debe
tenerse en cuenta la carga si se controlan varias tareas simultáneamente.
Términos utilizados habitualmente en este entorno son el tiempo de respuesta del sistema o tiempo que
tarda el sistema en responder a un evento, el cambio de contexto, referido al tiempo necesario para
conmutar entre tareas y latencia de la interrupción o tiempo transcurrido antes de que el cambio sea posible.
En general, un sistema de tiempo real se enfrenta a un flujo continuo de datos de entrada. El diseño debe
asegurar la correcta recepción de los datos, que no se pierdan y tener en cuenta su asincronicidad. La
fiabilidad suele ser un aspecto crítico del diseño, así como la recuperación ante fallos y la reinicialización del
sistema. La monitorización y control de los eventos en directo, no suelen tolerar la pérdida o errores del
sistema, por lo que la programación presta especial atención a mecanismos de restauración y recuperación
ante fallos, incorporando frecuentemente redundancias para asegurarlos.
3. INTERRUPCIONES
En el proceso de E/S, las interrupciones son un mecanismo de control fundamental. Como se presentó,
permiten que las operaciones sean asíncronas, evitando la espera activa del estado de los dispositivos
(chequeo constante del estado).
El tratamiento de las interrupciones cobra una especial importancia en sistemas de tiempo real frente a otro
tipo de sistemas, dado que su respuesta es crítica. Del mismo modo, en el caso general, se debe responder
a numerosas interrupciones, por lo que deberán establecerse prioridades entre ellas. Debe tenerse en
cuenta el retorno al estado anterior a la interrupción así como evitar bucles o interbloqueos.
La operativa normal en el manejo de interrupciones, comienza cuando se produce una interrupción y el flujo
normal de proceso se ve interrumpido por un evento detectado por el hardware. Un evento puede ser

126
cualquier suceso que requiere una atención inmediata, generado por hardware o software. En ese
momento, el estado del programa se congela y se activa la rutina de servicio correspondiente a la
interrupción. El estado del programa interrumpido incluye el valor del contador de programa, con la dirección
de la siguiente instrucción, información del modo de proceso, prioridad, etc. y el contenido de los registros.
Una vez congelado el estado del programa, se activa, es decir, se pasa el control
a la rutina de servicio de la interrupción, que bifurca al software apropiado para
su tratamiento. Se ejecuta la rutina y al terminar, se devuelve el control al
programa principal, que será descongelado.
Cada dispositivo debe controlarse de forma diferente, cada uno requerirá una
rutina de servicio distinta para atender sus interrupciones. Para identificar un
dispositivo que interrumpe, pueden usarse distintos métodos, aunque de los más
populares es el de interrupciones vectorizadas. Éste consiste en un conjunto de
posiciones de memoria, en general contiguas, llamadas vectores de interrupción,
que mapean las direcciones hardware de los dispositivos y las asocian con sus
rutinas de servicio. Es decir, cada vector debe contener o hacer referencia a la
dirección de la rutina correspondiente.
4. SINCRONIZACIÓN Y COMUNICACIÓN ENTRE TAREAS
Cuando un sistema de tiempo real maneja varias tareas, el software y por tanto la programación deben
suministrar mecanismos de comunicación entre tareas y asegurar su sincronización. Para esto, los SO y los
lenguajes con soporte de tiempo real, usan recursos como los semáforos, buzones o mensajes.
Los semáforos son mecanismos de control de la sincronización y señalización. Los mensajes son similares
pero además pueden contener algún tipo de información adicional.
Los semáforos de colas son primitivas software para gestionar tráfico como colas de tareas en espera de
recursos, acceso a dispositivos, etc. La sincronización evita que las tareas o recursos interfieran entre sí,
afectando a los procesos independientes que desarrolla cada una.
Los semáforos también se usan habitualmente en la gestión de buzones, que son almacenados
temporalmente en buffers para controlar el paso de mensajes entre procesos. Si un proceso genera una
información, se almacena en un buzón e informa al proceso receptor del nuevo mensaje. Esta operativa es
la forma más eficiente de trabajo para ciertos sistemas de tiempo real. Algunos de estos suministran una
localización para evitar y recibir referencias a los datos del buzón, eliminando la necesidad de transferir los
datos y ahorrar tiempo y sobrecarga.
5. LENGUAJES
Como se ha explicado, un lenguaje de programación de sistemas de tiempo real debe facilitar la realización
de sistemas concurrentes, fiables y puntuales. Las características más importantes para realizar programas
en pequeña escala son el léxico, los tipos de datos y objetos, instrucciones, subprogramación y la estructura
de los programas.
Los métodos y tecnología usados en la confección de otros tipos de sistemas no sirven, en general, en
sistemas de tiempo real, ya que éstos exigen mayor fiabilidad y condiciones temporales estrictas. Las
plataformas de desarrollo y ejecución suelen ser diferentes, resulta difícil hacer pruebas en la plataforma de
ejecución y medir los tiempos con precisión.
El diseño de un STR se compone de varios aspectos, tales como el funcional (relación entre valores de
E/S), el concurrente (concurrencia, sincronización, comunicación), el temporal y el arquitectónico
(componentes y relaciones). Cada aspecto se expresa mejor con un tipo de notación. Por ejemplo, el
aspecto funcional aconseja el uso de Simulink, el diseño detallado de componentes, UML y los aspectos de
concurrencia y arquitectura se modelan mejor con AADL (Analysable Architecture Description Language).
Hay varias clases de lenguajes utilizados en STR, lenguajes ensambladores, flexibles y eficientes, pero
costosos y poco fiables, lenguajes secuenciales (Fortran, C, C++), que precisan un SO para concurrencia y
tiempo real y lenguajes concurrentes como Ada o Java que incluyen concurrencia y tiempo real.
El lenguaje C es muy utilizado para programación de sistemas. Es estructurado, con bloques, sin un tipado
fuerte, es decir, muy flexible pero a veces poco seguro. No integra concurrencia ni tiempo real, que se
consigue invocando servicios del SO de forma explícita. Tampoco facilita la descomposición modular ni la
POO. Se puede conseguir con C++, la extensión de C para POO. En general so se usa con STR por las
limitaciones en fiabilidad.
Ada es un lenguaje diseñado específicamente para STR empotrados. Ofrece concurrencia, tiempo real y
acceso a hw e interrupciones. Ada deriva de Pascal y por tanto es marcadamente tipado y estructurado en
bloques. Está pensado para la construcción de sistemas grandes y cambiantes. Sus características

127
habituales de programación incluyen paquetes (módulos) y esquemas genéricos, extensión de tipos con
herencia, una biblioteca jerárquica e interfaces normalizadas con otros lenguajes (C, Fortran), entre otros.
Ada 2005 es una versión actualizada de Ada, que define un núcleo común para todas las implementaciones
(core language) y anexos especializados para programación STR, sistemas de alta integridad, distribuidos,
sistemas de información y cálculo numérico. Los anexos definen paquetes de biblioteca y mecanismos de
implementación. No añaden sintaxis ni vocabulario al lenguaje.
Otro lenguaje es SPARK. Permite el uso de técnicas de análisis estático. Es un subconjunto de Ada con
anotaciones. El perfil de Ravenscar define un subconjunto seguro de la parte concurrente de Ada, y los
correspondientes servicios de sistema operativo.
Java puede considerarse un lenguaje concebido para construir sistemas distribuidos, basado en objetos
dinámicos, con concurrencia integrada en el lenguaje y que ofrece bibliotecas de clases (APIs) muy útiles de
forma que el código objeto sea portátil. Java es interpretado por una máquina virtual (JVM) con la filosofía
“write once, run everywhere”. La definición original no es adecuada para STR ya que la planificación de
actividades concurrentes no está bien definida, los mecanismos de sincronización son inadecuados, la
gestión dinámica de memoria introduce indeterminismo, la medida del tiempo no es estricta y presenta
problemas con excepciones y concurrencia.
Java para tiempo real (RTSJ) se basa en una máquina virtual extendida para STR. Existe una
implementación de referencia (TimeSys), otras comerciales (por ejemplo, Jamaica) y versiones en
investigación como Java para sistemas de alta integridad (HIJA). Los compiladores y máquinas virtuales
para Java de tiempo real no están todavía maduros ya que deben pulirse los aspectos de gestión de
memoria y recogida de basura.
Por su parte, los lenguajes síncronos se basan en un modelo matemático sencillo, en los que los sucesos
son instantáneos y las acciones también. Pueden darse sucesos y reacciones simultáneos y permiten
realizar un análisis formal del comportamiento temporal y se compilan a autómatas realizados en lenguajes
de programación secuenciales (C, Ada sin concurrencia). Ejemplos son Esterel, Lustre, Signal o
Statecharts.

128
TEMA 29. UTILIDADES PARA EL DESARROLLO Y PRUEBA DE PROGRAMAS. COMPILADORES.
INTÉRPRETES. DEPURADORES.

1. INTRODUCCIÓN
2. UTILIDADES PARA EL DESARROLLO Y PRUEBA DE PROGRAMAS
3. COMPILADORES
4. INTÉRPRETES
5. DEPURADORES

129
1. INTRODUCCIÓN
Una vez realizado el análisis y diseño de un programa se entra en la etapa de desarrollo y prueba. Los
programas escritos en lenguajes de alto nivel necesitan ser traducidos a lenguaje máquina. Para ello se
usan compiladores e intérpretes. Los entornos actuales de desarrollo son más complejos que un simple
compilador y ofrecen, entre otras, funcionalidades de depuración.
2. UTILIDADES PARA EL DESARROLLO Y PRUEBA DE PROGRAMAS
Los lenguajes de programación se pueden clasificar según varios criterios. Uno de ellos es el nivel de
abstracción, distinguiéndose entonces lenguajes de alto y bajo nivel según su cercanía al lenguaje máquina.
La mayoría de lenguajes de desarrollo software son de alto nivel, por lo que requieren ser compilados o
interpretados para traducir su código a código máquina.
Las utilidades para el desarrollo y prueba de programas han sufirdo una gran evolución desde que
aparecieran los primeros compiladores. De entre ellas se distinguen las herramientas RAD, para el
desarrollo rápido de aplicaciones, que agrupan diversas técnicas como el desarrollo iterativo, construccion
de prototipos y el uso de herramientas CASE e IDEs.
Las herramientas CASE, Computer Aided Software Engineering, son diversas aplicaciones destinadas a
aumentar la productividad del desarrollo software reduciendo el coste económico y temporal en todos el
ciclo de vida de desarrollo software. Entre sus características comunes destacan el control de versiones, la
generación semiautomática de código, refactorización de código o edición UML.
Algunas aplicaciones comerciales ofrecen funcionalidades añadidas y suelen presentar interfaces gráficos,
aunque existen en modo texto. Las herramientas CASE de interface gráfico también se conocen como IDE,
Entornos de Desarrollo Integrado, cuya principal característica es el diseño de interfaces gráficos, a parte de
las funciones típicas de edición, compilación, depuración, etc. En sentido estricto, las herramietas CASE e
IDE no son lo mismo, aunque suelen utilizarse ambos términos indistintamente.
El diseño de interfaces gráficos es intuitivo y potente, ya que las herramientas permiten diseñarlos de forma
similar a un programa de diseño gráfico para añadir posteriormente funcionalidad a sus objetos. Esta
metodología agiliza el desarrollo de prototipos de forma que la programación pueda centrarse en la
codificación de la funcionalidad de los objetos y funciones.
Algunos ejemplos de IDES son Visual Basic, Delphi (para Pascal) y Netbeans (para Java). Además, hay SO
que ofrecen objetos gráficos como botones, ventanas, etc. que pueden utilizarse en el IDE correspondiente,
que podrá extender sus características u ofrecer bibliotecas propias como las de Swing de Java.
3. COMPILADORES
Los programas en alto nivel se escriben con herramientas que permiten editar texto. El producto se
denomina código fuente, que debe compilarse para ser traducido código máquina. Un compilador trabaja en
dos fases: análisis y síntesis: La primera comprueba que la sintaxis del código fuente es correcta y en la
fase se síntesis traduce el código fuente al código objeto.
El análisis léxico comprueba que todos los símbolos del código fuente pertenecen al lenguaje y por tanto
están bien escritos. Para su control, se crea una tabla de símbolos, que servirá para el análisis sintáctico. El
módulo del compilador que realiza el análisis sintáctico también se conoce como parser.
El parser realiza un análisis a nivel de sentencia, más complejo, ya que debe analizar los datos de la tabla
de símbolos que creó el analizador léxico y comprobar la estructura de cada expresión del código fuente. El
analizador semántico detecta la validez en cuanto a significado de las expresiones.
Entre las funciones del analizador semántico están la comprobación de la correcta declaración de variables,
constantes y funciones y que sean accesibles desde su ámbito de utilización, comprobación de declaración
única de identificadores, de la coherencia de tipos al evaluar expresiones, verificación del no intento de
modificación de constantes o la generación de la tabla de símbolos.
La fase se síntesis traduce el código fuente al código objeto. La traducción hace uso de una etapa
intermedia en que se genera un código simbólico que no corresponde a una máquina real, sino a una
máquina abstracta que define un comportamiento general. El objetivo de este código intermedio es reducir
el número de programas necesarios para construir compiladores.
Así un compilador posee una primera etapa o front end que traduce a código intermedio y un back end que
traduce al código máquina concreto de que se trate. Cada lenguaje de programación tiene su front end que
traduce a lenguaje intermedio y cada máquina posee su back end que traduce el lenguaje intermedio a
código objeto, que será enlazado por programas llamados linkers para poder ejecutarse.

130
La fase de síntesis optimiza el código intermedio, aprovechando propiedades algebraicas de operadores,
reduciendo expresiones comunes o eliminando bucles innecesarios y una vez optimizado, se genera el
código máquina, que podrá optimizarse de nuevo en función de la máquina concreta.
Los compiladores pueden trabajar realizando en una fase el análisis y la síntesis para obtener el programa
o en varias etapas leyendo el código fuente varias veces realizando las tareas por partes. Existen también
compiladores que optimizan el código resultante sin afectar al funcionamiento del programa, mejorando su
rendimiento. Los compiladores cruzados, por su parte, permiten generar código máquina diferente de la
máquina en la que trabajan. Ejemplos de lenguajes que usan compiladores son C, C++, PASCAL o COBOL.
4. INTÉRPRETES
Algunos lenguajes de alto nivel no necesitan ser compilados, sino que un intérprete los analiza y ejecuta
simultáneamente. El resultado de este interpretación no se guarda como un programa ejecutable. Los
programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el
programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y
depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del
programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno
no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce
comúnmente como máquina virtual).
Para evitar el problema de la lentitud, sin perder la gran ventaja de poder hacer código multiplataforma, la
mayoría de los lenguajes interpretados actuales se denominan híbridos. Dentro de estos hay una gran
variedad de intérpretes dependiendo de la cantidad de código que se precompila y el que se interpreta.
Dentro de esta variedad se pueden distinguir dos tipos de intérpretes híbridos:
- Bytecode: Es un código intermedio más abstracto que el código máquina. Este código está optimizado y
comprimido. El intérprete, generalmente llamado máquina virtual lo ejecuta más rápidamente, pero sigue
siendo multiplataforma. Los lenguajes más comunes que usan bytecode son: PHP, Perl o Python.
- Compiladores Just- In – Time. O JIT, Estos compilan el bytecode a código máquina en el momento de la
ejecución. Java es el más representativo. El programador crea un código fuente que transforma a bytecode.
Al ejecutarse por primera vez, este es compilado a código máquina por la máquina virtual. Luego se
almacena ya compilado. Sigue siendo multiplataforma porque la máquina virtual se debe instalar en el
ordenador cliente y ella lo adapta a la plataforma deseada.
Aunque el proceso de compilación o de transformación a bytecode no de errores, es posible que el
programa resultante sí los de. Para facilitar la tarea a los desarrolladores, hay unos programas que permiten
encontrar el error más fácilmente:
5. DEPURADORES
Hay multitud de situaciones en las que un error no se detecta en el momento de la compilación. Puede
haber una división por cero o intentar acceder a una posición de memoria no permitida.
Los depuradores ejecutan el programa que da el error y permiten detener el programa en algún punto de
ruptura ya definido y en ese momento, el programador puede observar la situación de la memoria o las
variables. También puede ejecutar una a una las instrucciones o las funciones, puede insertar código o
hacer que salte alguna instrucción. De esta manera, podrá detectar la razón del error.
Al compilar, es necesario indicar que el código resultante debe tener las indicaciones necesarias para el
depurador. Los depuradores se pueden usar para técnicas de ingeniería inversa cuando se necesite
conocer las instrucciones de un programa.

131
TEMA 30. PRUEBA Y DOCUMENTACIÓN DE PROGRAMAS. TÉCNICAS.

1. INTRODUCCIÓN
2. PRUEBA Y DOCUMENTACIÓN DE PROGRAMAS
2.1. Verificación y prueba
2.2. Documentación
3. TÉCNICAS
3.1. Pruebas de caja blanca
3.2. Pruebas de caja negra

132
1. INTRODUCCIÓN
La verificación de un programa consiste en comprobar que la implementación de un algoritmo o un cierto
desarrollo responde correctamente o de forma esperada en función de la entrada proporcionada. La prueba
de un programa tiene por objetivo la detección y eliminación de errores. Un error puede definirse como la
diferencia entre el resultado de un programa y los esperados.
Al desarrollar un programa, su complejidad y coste obliga a mantenerlo una vez puesto en explotación. Sin
una adecuada documentación del desarrollo el mantenimiento puede ser muy costoso. La documentación
debe incluir las explicaciones necesarias para desarrolladores y mantenedores así como la relativa al
usuario, como manuales y guías.
2. PRUEBA Y DOCUMENTACIÓN DE PROGRAMAS
La verificación y prueba de un programa es un trabajo complejo pues evaluarlo por completo antes de su
venta o puesta en marcha puede considerarse imposible. Por tanto debe aprenderse a convivir con el error
y programar de forma que ante errores, se obtenga una respuesta adecuada.
Efectivamente, ante un error, un programa podría responder con un resultado incorrecto, sin advertir del
error, o por ejemplo, cayendo en un bucle infinito, bloqueando el SO o saliendo a él sin más. Estos
comportamientos no son deseables, puesto que el análisis del error se complica e indican que un programa
no es robusto. Por tanto, ante una situación de error, ha de procurarse que un programa se comporte de
forma ordenada, generando un mensajes de error significativos, o bien detectando el error y dando la
oportunidad de corregirlo o continuar. Si un programa se comporta así, se dice que es amigable.
Una vez generado el programa, sus módulos deben ser claros y fácilmente comprensibles para facilitar el
mantenimiento. El estilo de programación deseable debe combinar simplicidad y claridad. Como poco, las
técnicas de documentación de programas deben abordar la documentación interna (del código fuente), los
métodos de declaración de datos, la construcción de sentencias y las técnicas de E/S.
2.1. Verificación y prueba
La verificación y prueba de software son críticas para garantizar su calidad. La prueba no asegura que el
código esté libre de errores, su objetivo es demostrar que existen defectos en el desarrollo. Las técnicas y
fundamentos de la prueba de programas se orientan a descubrir errores, teniendo en cuenta que un buen
caso de prueba es el que presenta alta probabilidad de descubrir errores y que una prueba tiene éxito si
descubre un error.
El desarrollo de la prueba
sigue el esquema de la
figura. Se proporcionan dos
entradas al proceso de
prueba, la configuración del
sw y una configuración de
prueba.
La configuración del software incluye la especificación de los requisitos, el diseño y el código fuente. La
configuración de prueba incluye el procedimiento, casos de prueba y resultados esperados. Tras realizar las
pruebas, se evalúan los resultados, comparándolos con los esperados. Cuando se descubre un error se da
comienzo a la fase de depuración.
La fase de depuración se apoya en técnicas de prueba, que pueden basarse en la función que realice el
programa o en la relación entre sus módulos, comprobando que cada uno funciona correctamente. El primer
grupo serían pruebas de caja negra y el segundo las de caja blanca.
2.2. Documentación
La documentación de un programa es una parte vital de su desarrollo. Sin ella, la fase de mantenimiento se
complica sobremanera, se limita la vida útil del software y se perjudica el desarrollo de nuevas versiones.
La documentación comienza con la elección del nombre de identificadores tales como variables y etiquetas,
la generación de comentarios y el esquema visual del programa. La elección de nombres significativos es
vital para la legibilidad del programa. En cuanto a los comentarios, hay recomendaciones de buenas
prácticas como la inclusión de comentarios de prólogo y descriptivos.
Se recomienda la inclusión de comentarios prologares al principio de cada módulo que indiquen la función
del módulo, una descripción del interfaz con algún ejemplo de llamada, descripción de los argumentos y los
módulos subordinados. Asimismo debe explicarse la función de los datos relevantes como variables,
restricciones, limitaciones e información destacable como el diseñador, revisor y fechas de modificación.

133
En el cuerpo del código se incluirán comentarios descriptivos del proceso, de forma que se realice por
bloques más que por líneas y se recomienda el uso de tabulaciones y espacios para facilitar la lectura.
El estilo en la declaración de datos es propio de la fase de codificación y se recomienda estandarizarlo
aunque no se contemple en el lenguaje de programación. El orden en la declaración facilita la legibilidad y el
mantenimiento. Del mismo modo, la construcción de sentencias debe ser sencilla y directa, aunque implique
más instrucciones que penalicen algo la eficiencia. Así, algunos lenguajes permiten instrucciones con
muchas operaciones que merman la legibilidad del desarrollo. En lo posible, este estilo debe evitarse.
Las instrucciones pueden simplificarse evitando el uso abusivo de anidación de bucles, uso de condiciones
complejas, intentar usar comparaciones complementarias (condiciones negativas), uso de paréntesis para
clarificar expresiones o uso de espacios para incrementar la legibilidad.
En cuanto al tratamiento de la E/S, en general requerirá una organización lógica y simple que compruebe
los errores y el formato de la información. Buenas prácticas de desarrollo podrían ser la validación de los
datos de entrada, la comprobación de las posibles combinaciones de entrada, formatos de entrada simples,
uso de indicativos de fin de dato, especificar opciones y límites, uniformidad de los formatos de entrada,
etiquetado de las salidas y diseño de informes.
3. TÉCNICAS
3.1. Pruebas de caja blanca
La prueba de software mediante técnicas de caja blanca se refieren a la prueba de los módulos internos que
forman el programa. Intentan cubrir al menos una vez las alternativas de cada módulo, comprobar todas las
decisiones lógicas en las condiciones de verificación o no (condición verdadera o falsa), ejecutar los bucles
en sus límites y comprobar las estructuras internas de datos asegurando su validez.
La importancia de las pruebas de caja blanca radican en que el desarrollo de la ejecución de un programa
puede utilizar caminos críticos, o que pueden llegar a serlo, que deben ser probados, al menos alguna vez.
Para ello se pueden categorizar este tipo de pruebas en las siguientes:
Prueba del camino básico. Es una técnica de caja blanca que permite obtener una medida de la complejidad
lógica del diseño para definir un conjunto de caminos de ejecución en que se basarán los casos de prueba.
Las pruebas deben garantizar que se ejecuta cada sentencia al menos una vez.
El proceso de realización de la prueba del camino básico comienza con el diagrama de flujo, que sirve para
evaluar la complejidad del programa, lo que permitirá elaborar un conjunto de caminos independientes para
definir los casos de prueba que los evalúen.
Prueba de flujo de datos. Consiste en seleccionar caminos de prueba según la definición y uso de las
variables del programa.
Prueba de la estructura de control. La prueba del camino básico no cubre todas las exigencias de una
prueba de caja blanca. Para ello, se usan técnicas de prueba de estructuras de control, con especial
atención a condiciones y bucles. La prueba de condiciones orienta en la generación de pruebas adicionales
e intenta discernir si la cobertura de la prueba es sencilla. La prueba de bucles, por su parte, se centra en la
validez de los bucles, bien sean simples o anidados.
A los bucles simples se les debe probar al menos 0, 1, 2, m, n-1, n y n+1 veces, siendo n el número máximo
de iteraciones del bucle y m un número menor comprendido entre 2 y n-1. En los bucles anidados, el
número de pruebas crece geométricamente con el nivel de anidamiento, con lo cual el número de pruebas
es inmanejable. Para ello se intenta probar el bucle más profundo como si fuera un bucle simple con
condiciones mínimas en los bucles anteriores a él y extender estas pruebas hacia el exteriror.
3.2. Pruebas de caja negra
Las pruebas de caja negra consideran el sistema, el programa, como algo opaco desde el exterior. No
evalúan la implementación interna, sino las respuestas obtenidas en función de las entradas. Es decir, son
pruebas sobre el interfaz. Las pruebas se orientan a mostrar que la funcionalidad es correcta y el programa
responde según lo esperado, con respuestas íntegras y coherentes. Las pruebas de caja negra intentan
encontrar errores en los interfaces, funciones, de estructuras de datos o accesos a BBDD externas y otros
errores de rendimiento, inicialización y fin. De las técnicas de caja negra destacan las siguientes.
Partición equivalente. Consiste en dividir el espacio de entradas posibles en clases de datos de los que
derivar los casos de prueba. El objetivo es descubrir errores genéricos antes de realizar pruebas más finas.
Es decir, se intenta reducir el número de casos de prueba descubriendo clases de errores.
El diseño de los casos de prueba se basa en la evaluación de un conjunto de estados válidos o no para las
condiciones de entrada. En general, una condición de entrada será un valor numérico o un rango, un
conjunto de valores relacionados o una condición lógica. Las clases de equivalencia se pueden definir

134
teniendo en cuenta que si una condición de entrada especifica un rango o valor específico, se distinguirá
una clase válida y dos no válidas. Del mismo modo, si una condición de entrada especifica un miembro de
un conjunto o es de tipo lógico, se definirá una clase de equivalencia válida y otra no.
Análisis de valores límite (AVL). Los errores tienden a darse más en los límites de los valores de entrada
que en los valores centrales. Esta es la razón del análisis de valores límites, que intenta usar casos de
prueba para éstos, de forma similar a la técnica de la partición equivalente.
Así, por ejemplo, si una condición de entrada especifica un rango entre los valores a y b, se deben diseñar
pruebas para ambos valores y los inmediatamente superiores e inferiores y lo mismo para el rango de
valores de salida. . Si las estructuras de datos internas tienen límites preestablecidos (como los arrays), el
caso de prueba comprobará la estructura en sus límites.
Prueba de comparación. En aplicaciones críticas se utiliza hw y sw redundante, para garantizar la
disponibilidad del sistema y minimizar el impacto de errores. El sw redundante es desarrollado por distintos
equipos que generan versiones independientes, caso en el que se debe comparar los desarrollos evaluando
cada versión con la misma batería de prueba que garantice la coherencia de los resultados.

135
TEMA 31. LENGUAJE C: CARACTERÍSTICAS GENERALES. ELEMENTOS DEL LENGUAJE.
ESTRUCTURA DE UN PROGRAMA. FUNCIONES DE LIBRERÍA Y USUARIO. ENTORNO DE
COMPILACIÓN. HERRAMIENTAS.

1. INTRODUCCIÓN
2. LENGUAJE C: CARACTERÍSTICAS GENERALES
3. ELEMENTOS DEL LENGUAJE
4. ESTRUCTURA DE UN PROGRAMA
5. FUNCIONES DE LIBRERÍA Y USUARIO
6. ENTORNO DE COMPILACIÓN
7. HERRAMIENTAS

136
1. INTRODUCCIÓN
El lenguaje C es una evolución del lenguaje B, usado para desarrollar UNIX. Es uno de los más usados y
sirve de base a otros lenguajes a nivel léxico como PHP, Java o C++.
2. LENGUAJE C: CARACTERÍSTICAS GENERALES
El lenguaje C fue desarrollado en la década de los 70 y tuvo gran éxito debido a la eficiencia del código que
desarrolla, permitiendo el uso de instrucciones de alto y bajo nivel. A mediados de los 80 ANSI estandarizó
el lenguaje y definió sus bibliotecas e ISO lo normalizó en 1990. La evolución de C es C++, lenguaje que
permite la programación estructurada, modular y la POO.
Como características generales de C, destacan el ser un lenguaje de alto nivel, imperativo, de propósito
general, orientado a la programación de sistemas, portable, flexible y muy expresivo, pudiendo especificar
muchas operaciones en pocas líneas de código. Esta característica aunque potente debe ser mirada con
cuidado porque su abuso puede mermar la legibilidad y por tanto el mantenimiento del código.
Un lenguaje es Turing completo cuando tiene un poder computacional igual a una máquina de Turing. En
este sentido C es un lenguaje Turing completo. Un ejemplo de la potencia de C es la posibilidad de
referenciar una variable por su nombre o un puntero a la misma que indique la dirección de memoria en la
que se encuentra la variable.
El lenguaje C también posee desventajas como la poca modularidad, un exceso de flexibilidad que puede
hacer menos disciplinada la programación y faltas de comprobaciones que pueden derivar en programas
inestables. Parte de estos inconvenientes se solucionan en C++ sin perder potencia ni flexibilidad.
3. ELEMENTOS DEL LENGUAJE
Los elementos del lenguaje C, como en la mayoría de lenguajes de alto nivel, pueden distinguirse en
operadores, instrucciones y definición de variables, constantes, funciones y procedimientos.
Cualquier palabra usada en la sintaxis del lenguaje constituye una palabra reservada que no podrá usarse
de otro modo, como pueda ser el nombre de una variable. La definición de variables se realiza indicando su
tipo (int, char, double, float, short o long) para asignar memoria. Un ejemplo podría ser int switch, que
definiría una variable con el nombre switch que sólo podrá tomar valores de tipo entero. La asignación de
valores a una variable se hace con el simbolo ´=´ seguido del valor a asignar.
Las instrucciones se codifican terminándose en punto y coma. La edición de código aconseja escribir cada
instrucción en líneas diferentes, usar tabulaciones, etc. para facilitar la legibilidad.
Los operadores básicos que provee C son aritméticos, de comparación, lógicos y avanzados. Los
operadores aritméticos son los símbolos típicos de suma, resta, etc. con sus prioridades habituales,
teniendo en cuenta la evaluación de paréntesis. Los operadores de comparación también son los típicos,
sólo mencionar la diferencia entre ´=´ y ´==´, que puede llevar a confusión. El primero se usa para
asignación de un valor, en lenguajes como Pascal equivaldría a ´:=´. El igual doble se refiere a la
comparación. El símbolo ´¡=´ equivale a la lógica not equal. Operadores lógicos son también los habituales,
pudiendo usarse ´&&´ para and lógico y ´||´para el or lógico. Ejemplos de operadores avanzados son ++
para autoincremento o += para añadir un valor a una variable.
Las instrucciones en C pueden diferenciarse en instrucciones de expresión, de control e instrucciones
compuestas. Las instrucciones de expresión son instrucciones elementales que representan una acción
simple o atómica, pueden entenderse como el tipo de acción más sencilla que se puede ejecutar en un
programa, consistente en la evaluación de esa expresión. Ejemplos de este tipo de instrucción sería una
definición de una variable.
Las instrucciones de control modifican el flujo de ejecución de un programa. if (a>0) {
Pueden ser de salto condicional y de repetición.
//instrucciones
Las instrucciones de control de salto condicional como if, else pueden anidarse
} else if(a<0) {
entre llaves que agrupan instrucciones o funciones a ejecutar en el cuerpo de la
instucción, como en el ejemplo. Una variante de anidamiento if, es la instrucción //instrucciones
switch(){} que selecciona un conjunto de instrucciones en función del valor de
cierta condición y que termina con la sentencia break }

Las instrucciones de repetición ejecutan código mientras se cumpla una condición. La instrucción
característica es while(){}, que ejecutará código mientras se de la condición y su variante do{} while() que
funciona de igual modo con la diferencia que al menos se ejecutará una vez.
Otra instrucción de repetición característica es for, utilizada para la construcción de bucles en que un
contador controla el número de veces que se ejecuta el código incluido en la instrucción.

137
Las instrucciones compuestas se especifican entre llaves y componen un bloque de instrucciones que
contiene una o varias instrucciones de distintos tipos, ya sean de expresión, control u otras compuestas.
Una función puede entenderse como un subprograma cuyo cuerpo constituye una instrucción compuesta,
ya que la función main especifica un bloque de instrucciones delimitado por llaves.
4. ESTRUCTURA DE UN PROGRAMA
Para describir la estructura de un programa en C se usará un ejemplo. La estructura puede distinguir tres
partes, la cabecera, el cuerpo del programa y las llamadas a subprogramas.
La cabecera indica el nombre del programa y las bibliotecas y subprogramas que utilizará el programa
principal. En el ejemplo mostrado, se utiliza la sentencia #include <stdio.h> que indica que se usará la
biblioteca de funciones básicas de E/S. Otras bibliotecas típicas con stdlib.h, math.h, time.h, por ejemplo.
El cuerpo del programa principal comienza con la #include <stdio.h>
definición del programa como función main. Esta
// comentarios, también con /* */ para varias líneas
función es la que inicia el programa. En este ejemplo,
el cuerpo del programa se compone de una única Int main () {
instrucción, printf(), de la biblioteca stdio.h que permite
printf(“Hola Mundo”);
imprimir por pantalla una cadena de caracteres, en
este caso “Hola Mundo”. }
En el ejemplo se ha incluido un comentario, lo que se realiza con // si ocupa una línea o con los símbolos /*
para abrir y */ para cerrar el comentario, si son más de una línea.
La tercera parte de la estructura de un programa es la llamada a subprogramas, que puede no existir,
aunque en un caso genérico, por modularidad, legibilidad y mantenibilidad es lo habitual. Los subprogramas
pueden ser funciones o procedimientos. Las funciones deben indicar en su comienzo el tipo de datos que
devuelven, como en el ejemplo, mientras los procedimientos comienzan con void, ya que no devuelven
nada, simplemente ejecutan código. Existen versiones de C en que no es necesario comenzar con int.
La llamada a subprogramas se realiza invocando su nombre e introduciendo entre paréntesis las variables o
argumentos que usará. El paso de argumentos puede realizarse por referencia o por valor. Si se realiza por
valor, especifica simplemente el valor del argumento. La referencia pasa al subprograma la variable o
argumento en si mismo, con lo cual se pierde parte del control. Siempre que se pueda se aconseja pasar los
argumentos por valor.
Cuando una variable se pasa por referencia, suele realizarse con un puntero, es decir, una estructura de
datos que indica la dirección de memoria donde se almacena el valor de la variable. Un ejemplo básico del
uso de punteros sería el mostrado en el recuadro.
La definición de un puntero se hace con un nombre precedido de *, en el ejemplo se declara el int * p
puntero p. Para asignarle la dirección de memoria donde se almacena la variable v se usa &v.
p = &v
Tras esta instrucción el puntero p apuntaría a la dirección de memoria que almacena a v.
El uso de punteros es delicado. Al usar el * antes del nombre, se indica la dirección a la que apunta el
puntero, con lo que se podría cambiar el valor de una variable directamente. Siguiendo con el ejemplo, si se
escribiese ahora *p = 8, el valor de v ahora sería 8. Una misma dirección puede ser apuntada por distitntos
punteros o incluso no apuntar a nada, apuntar a NULL. Usar punteros en los argumentos de las funciones,
puede mejorar el rendimiento a costa de incrementar la probabilidad de error. En general no se aconseja.
Los punteros permiten crean estructuras de datos como vectores o matrices directamente. La creación de
un vector se puede hacer inicializando un puntero con con [n], siendo n el número de componentes del
vector. Esta posibilidad ofrece mucha potencia a cambio de inestabilidad, ya que no se controla el
desbordamiento que se produce si se apunta a posiciones de memoria mayores que el tamaño del vector.
De forma similar se puede definir una matriz, inicializando con dos asteriscos y luego acceder con [][].
Otra estructura de datos típica en C es estruct, lo que podría equivaler a un struct registro {
registro. Struct permite crear tipos de datos nuevos. El ejemplo muestra un struct
int campo1,campo2;
llamado registro que poseería tres campos, campo1 y campo2, de tipo entero y
una cadena de 10 caracteres. Paraa acceder a los componentes de la estructura char nombre[10]; }
registro se usa el operador flecha, ->.
La POO se implementa en C++, que permite, por ejemplo, declara una clase con la palabra class y un
nombre, que abrirá una llave, se detallará el código de la clase y se cerrará la llave. Para instanciar la clase
y crear un objeto, se opera de forma similar a una variable. Como recordatorio, una clase suele contar con
métodos constructores de nombre igual al de la clase y la declaración de variables podrá ser public, private
o protected si son accesibles por cualquiera, por nadie o por sus clases hijas, respectivamente. Una variable
será de tipo static si al usarla se hace referencia a la clase y no al objeto.

138
El acceso a un atributo o método de un objeto se hace con un punto o flecha según se declare como
puntero o por valor. La herencia en C++ se consigue usando la palabra public seguida de las clases de las
que hereda una dada. En C++ se permite herencia múltiple.
5. FUNCIONES DE LIBRERÍA Y USUARIO
La palabra librería, es una traducción de la inglesa library, falso amigo, ya que la traducción correcta es
biblioteca. Sin embargo su uso habitual la ha instaurado, usándose ambas palabras, librería y biblioteca,
para referirse a repositorios de código y datos que proporcionan servicios a programas independientes, lo
que permite que el código y los datos se compartan.
Algunos programas pueden ser independientes y formar parte de una biblioteca, pero la mayoría de sus
componentes no son ejecutables. Ejecutables y bibliotecas se referencian entre sí a través de un proceso
conocido como enlace o link, que suele realizar un programas denominado enlazador o linker.
El lenguaje C no presenta algunos tipos y servicios de otros lenguajes, como el booleano, manejo de
cadenas o memoria dinámica. El entorno de compilación estándar de C define un conjunto de bibliotecas de
funciones que cubre los servicios elementales. Las interfaces de estos servicios vienen definidas en los
ficheros de cabeceras (header files). El nombre de estos ficheros suele terminar en .h.
Algunos servicios proporcionados por las bibliotecas estándares son la E/S de datos (stdio.h), manejo de
cadenas (string.h), conversión standard (stdlib.h) o rutinas matemáticas (math.h). Adicionalmente, los SO
también proveen su propio API de herramientas para acceder a recursos del sistema. Si se desarrolla
código portable, estas librerías deben evitarse. Un usuario también puede crear sus propias bibliotecas.
El lenguaje C permite crear programas modulares, escribiendo el código fuente en varios archivos, con la
extensión .c. Para ser enlazados por otros, se generará un fichero con el mismo nombre del código fuente
con extensión .h. El archivo principal, por ejemplo, usará #include “nombre.h”.
6. ENTORNO DE COMPILACIÓN
Los programas en alto nivel se desarrollan generando un archivo con el código fuente, que para ser
ejecutado en un SO tendrá que compilarse y traducirse a código máquina. Un compilador realiza la
traducción en dos fases: análisis y síntesis.
El entorno de compilación de C cuenta con un preprocesador que sirve para definir las constantes y para
incluir en el código fuente las librerías definidas con #include. Esta fase genera un código intermedio, que es
analizado y se traduce a código objeto, que está inconexo hasta que el linker de C lo monte por completo. El
compilador también realiza una optimización del código, aprovechando posibilidades de simplificacion.
Ejemplos de compiladores de C en Linux, son GNU compiler collection, un conjunto de compiladores para
varios lenguajes de programación. En este caso, para compilar código fuente se usa el comando gcc con el
formato: gcc [fuente.c] [opciones] [ejecutable]. Ejemplo: gcc fuente.c –o ejecutable. La opción –o indica que
se indica el nombre del fichero destino. Si no se especifica se llamará igual que el fuente sin extensión.
GNU compiler Collection permite usar un fichero make, para empaquetar los detalles de la compilación y
realizar todas las operaciones necesarias con el comando make. Si se usa un depurador (debugger) para
detectar problemas o errores de programación también se podrá incluir en el fichero make.
De los depuradores más conocidos destaca gdb. Se utiliza con la opción –g al compilar y una vez compilado
el programa, el resultado podrá analizarse con gdb, para dar solución a los problemas detectados.
7. HERRAMIENTAS
El desarrollo y depuración de programas en C, como en la mayoría de lenguajes, requiere herramientas
más potentes que un simple editor de texto. Las necesidades de programación, en general lo relativo a la
parte gráfica, aconseja la utilización de entornos de desarrollo integrados o IDEs.
Las herramientas IDE comparten características de las herramientas CASE, permitiendo editar código,
compilarlo, depurarlo o diseñar interfaces gráficos. El diseño del interfaz grafico puede hacerse de forma
similar a como se haría con un programa de diseño gráfico, añadiendo el código necesario para cumplir con
la funcionalidad de sus elementos, desarrollo que consigue ahorrar tiempo y costes.
Entre los más conocidos se pueden citar C++ builder, Visual C++ o Netbeans. El primero, desarrollado por
Borland, permite utilizar la capacidad de C++, facilitando la programación de forma gráfica. Posee una
versión gratuita llamada Turbo C++, por analogía con Turbo Pascal. Visual C++, está desarrollado por
Microsoft y se orienta al diseño con el API de WS. Netbeans permite programar en C y C++, aunque se
concibió para Java. Funciona con Linux y Windows.

139
TEMA 32. LENGUAJE C: MANIPULACIÓN DE ESTRUCTURAS DE DATOS DINÁMICAS Y ESTÁTICAS.
E/S DE DATOS. GESTIÓN DE PUNTEROS. PUNTEROS A FUNCIONES.

1. INTRODUCCIÓN
2. LENGUAJE C: MANIPULACIÓN DE ESTRUCTURAS DE DATOS DINÁMICAS Y ESTÁTICAS
2.1. Manipulación de estructuras estáticas
2.1.1. Arrays y cadenas
2.1.2. Estructuras
2.1.3. Uniones
2.2. Manipulación de estructuras dinámicas
2.2.1. Listas
2.2.2. Árboles
3. ENTRADA Y SALIDA DE DATOS
4. GESTIÓN DE PUNTEROS
5. PUNTEROS A FUNCIONES

140
1. INTRODUCCIÓN
C es un lenguaje de programación flexible y potente. Se trata de un lenguaje de tercera generación, de alto
nivel, imperativo y muy expresivo.
2. LENGUAJE C: MANIPULACIÓN DE ESTRUCTURAS DE DATOS DINÁMICAS Y ESTÁTICAS
Las estructuras de datos estáticas y dinámicas se expusieron respectivamente en los temas 11 y 12. Allí se
explicaba como en las primeras, se conoce a priori cuántos datos la componen y su tamaño, razón por la
cual se reserva un espacio fijo en memoria para su manipulación. En contraste, el tamaño de las estructuras
de datos dinámicas puede variar en tiempo de ejecución, lo que las hace más flexibles que las estructuras
estáticas, que por contra presentan mayor eficiencia y sencillez de manipulación.
2.1. Manipulación de estructuras estáticas
2.1.1. Arrays y cadenas
La declaración de arrays en C sigue la sintaxis “tipo nombre [tamaño]”, donde tipo indica el tipo de datos
que contiene el array, su nombre especifica como se nombra y el tamaño el número de elementos del array.
El tipo de datos no puede ser void (vacío) y el tamaño puede omitirse cuando se inicializa el array, cuando
se declara como parámetro formal en una función o si se hace referencia a un array declarado en otra parte
del programa. Un ejemplo simple podría ser int alumnos [40].
Los arrays pueden ser multidimensionales, utilizando la sintaxis “tipo nombre [tamaño1][tamaño2][...]”,
similar a la de un array unidimensional, y donde tamaño1 sería la primera dimensión, tamaño2 la segunda,
etc. El tamaño de la primera dimensión puede omitirse en los mismos casos anteriores. El tamaño también
puede indicarse con constantes o expresiones de constantes de tipo entero. El lenguaje C no chequea el
límite del array, por lo que la responsabilidad descansa en el programador.
Para acceder a un elemento de un array, se hace referencia a su nombre y los índices de la posición a
consultar entre corchetes. Un subíndice puede ser una constante, una variable u otro tipo de expresión. Un
ejemplo de definición de array bidimensional sería int ajedrez [8][8]. La referencia ajedrez [5][3] daría como
resultado un número entero, que por ejemplo representase una ficha.
Una cadena de caracteres es un array unidimensional donde sus elementos son de tipo char. Su sintaxis es
char cadena [longitud], similar a la de un array. Las posiciones de una cadena se indican desde la posición
0 y existe una última posición ocupada por el carácter null (/0), con el que el lenguaje C finaliza todas las
cadenas de caracteres.
Algunas funciones útiles para manipulación de arrays y cadenas son size of (tamaño), que devuelve el
tamaño en bytes de su operando, que si es un array, el resultado será su tamaño. La función gets() lee una
cadena de caracteres de la entrada estándar, stdin, y la almacena en la variable especificada, que será un
puntero a la cadena de caracteres leída. Y la función puts(), que escribe una cadena de caracteres en la
salida estándar, stdout, reemplazando el carácter null por el de retorno de carro (\n).
Las funciones específicas de manipulación de cadenas se agrupan en la biblioteca string.h, que se invoca
con la sentencia # include <string.h>. Algunas de estas funciones son strcat (cadena1, cadena2), para
añadir la cadena2 a cadena1 y devuelve un puntero a cadena1, strchr (cadena, c), que devuelve un puntero
a la primera posición en que se encuentre el carácter c en la cadena o null si no se encuentra.
La función strcmp (cadena1, cadena2) compara la cadena1 con la cadena2 y devuelve un valor menor que
0 si la cadena1 es menor que la 2, 0 si la cadena1 es igual a la 2 y mayor que 0 si la cadena1 es mayor que
la 2. Strcpy (cadena1, cadena2), copia la cadena2, incluyendo el carácter de terminación nulo, en la
cadena1 y devuelve un puntero a cadena1.
Estos ejemplos de funciones son muy útiles para la programación, ya que las operaciones con caracteres
son habituales. El resto de la librería puede consultarse en su documentación y ayuda.
2.1.2. Estructuras
Una estructura es una agrupación de datos de distinto tipo bajo un mismo nombre. struct alumno {
Permite definir un nuevo tipo de datos que puede manipularse como si fuera un tipo
int edad;
predefinido. En el lenguaje C una estructura sólo puede contener declaraciones de
variables. En otros lenguajes las estructuras se conocen como registros. Cada char nombre[50];
elemento de la estructura es un campo o miembro, y su sintaxis responde al ejemplo
}
de la derecha.
En el ejemplo se define una estructura llamada datos y entre llaves se especifica la declaración de sus
miembros, edad, de tipo entero y nombre, una cadena de 50 caracteres. Para referir un campo de la
estructura, se utiliza la notación variable.miembro, por ejemplo alumno.nombre.

141
Cuando los elementos de un array son tipo estructura, se dice que se maneja un array estructuras o de
registros, siendo una construcción muy potente. Si se usa la sentencia typedef se pueden usar las
estructuras como un tipo de datos predeterminado. Si la estructura se declara como puntero, se puede usar
el operador -> para acceder a sus miembros.
2.1.3. Uniones
Una unión es una estructura de datos similar a las estruct, pero que puede contener miembros de diferentes
tipos, en una misma zona de memoria, ahorrando así espacio. Para almacenar los miembros de una unión,
se requiere una zona de memoria igual a la que ocupa el miembro mas largo de la unión.
Todos los miembros son almacenados en el mismo espacio de union {
memoria y comienzan en la misma dirección. El valor almacenado
struct { int nombre;
es sobreeescrito cada vez que se asigna un valor al mismo
miembro o a un miembro diferente. long nomina;
La declaración de una unión sigue la sintaxis de la estructura, }
cambiando "struct" por "unión". La referencia a sus campos se
realiza de forma similar a como se hace con las estructuras. Las struct { char contrato [80];
uniones representan una buena solución cuando se presentan int duracion;
datos alternativos en una misma estructura, para lo que puede
optarse por definir dos estructuras distintas o una que englobe a }
ambas (union), como se muestra en el ejemplo. }
2.2. Manipulación de estructuras dinámicas
Las estructuras de datos dinámicas requieren una una asignación dinámica de memoria, es decir en tiempo
de ejecución del programa, en vez de reservarlo en tiempo de compilación. Esta asignación se realiza en
general con un puntero a la zona de memoria asignada. En C esto se realiza con la función malloc(),
incluida en la biblioteca malloc.h, invocada con #include <stdlib.h> o <malloc.h>.
Un ejemplo de sintaxis sería p = malloc(t);, donde malloc(t) asignaría un bloque de memoria de t bytes,
devolviendo un puntero que referencia el espacio asignado. Si el espacio de memoria es insuficiente o si t
es 0, la función retorna un puntero nulo. Para liberar un bloque de memoria asignado por malloc, se usa la
función free(). Ejemplo: free(void *p);
2.2.1. Listas
Una lista, se construye de forma que cada cada elemento apunta o direcciona al siguiente, por lo que
también recibe el nombre de lista enlazada. Para construir una lista se definen los elementos que la
componen, en general registros, struct, en lenguaje C, que tendrá que contener algún campo que sirva de
referencia al elemento siguiente, en el caso típico un puntero. En el ejemplo se muestra una definición
general típica de elemento de una lista.
Un tipo de lista característico son las pilas y colas, en las typedef struct id tregistro;
que las inserciones y supresiones se hacen en los
struct id{
extremos, bien al principio o al final, como se explicó en el
tema 12, siendo entonces una pila una lista organizada en /* declaración miembros de la estructura */
forma LIFO y las colas en forma FIFO. Si la lista debe
tregistro *siguiente;
tener un orden, al modificar un elemento se obliga a
reordenarla por completo. }
Los punteros o campos que sirvan de enlace en la lista pueden ser más de uno, pudiéndose generar listas
enlazadas, doblemente enlazadas o estructuras derivadas más complejas.
2.2.2. Árboles
Un árbol es una estructura jerárquica en la que cada nodo apunta a uno o struct nodo {
más hijos. El primer nodo se denomina raíz y un nodo sin hijos nodo terminal
/* definición de campos */
o nodo hoja.
nodo *izqdo;
Un árbol binario es una variante de árbol en la que cada nodo posee dos
ramas, que van definiéndose de froma recursiva, ya que cada subárbol nodo *dcho;
también constituye un árbol binario. En el ejemplo de la derecha se muestra
una definición de árbol binario en C. Si el árbol está vacío, la raíz es null, en };
caso contrario, los punteros izquierdo y derecho direccionan cada subárbol. typedef nodo *arbol;
Por fin, la definición de grafos en C es similar a la de árboles, ya que un grafo no deja de ser un árbol no
jerárquico, en que cada nodo puede ir unido a cualquier otro.

142
3. ENTRADA Y SALIDA DE DATOS
La entrada y salida de datos en el lenguaje C se gestiona con la biblioteca <stdio.h>, que incluye las
instrucciones habituales para estas operaciones por consola. En C cada dispositivo hardware es tratado
como un archivo, de forma que se le puede asociar una secuencia y para el intercambio de información
debe realizarse una operación de apertura.
Para conectar el sistema de E/S con un buffer, se usan punteros a archivos, es decir, un puntero a la
información del archivo, tal como nombre, estado o posición actual. El puntero a un archivo lo identifica en
disco y usa la secuencia asociada para gestionar las funciones de E/S. Para obtener una variable de tipo
puntero a archivo se debe usan sentencias tipo FILE *puntero;.
De las funciones de E/S de datos, destacan printf(), scanf, fopen, fclose o putc(), entre otras. La primera,
printf() formatea una cadena de caracteres y la envía a la salida estándar, aceptando como argumentos un
string y sus opciones. Un ejemplo podría ser printf (“El TOTAL es: %d”, total), donde el especificador %d
indica un entero con signo y total sería la variable que contiene ese entero. Si el valor de total fuese 120, en
pantalla se vería “El TOTAL es: 120”. Hay distintas especificadores para cada tipo de datos. Se usa ´f´ para
coma flotante ´e´ para coma flotante en notación científica o ´c´ para carácter.
La función scanf se usa para obtención de datos por consola. La sintaxis invoca la función y como
argumentos se espera una variable y opciones. Si se escribe scanf(“%d”,&opcion), por ejemplo, se asignaría
a la variable opcion el valor entero introducido por consola. El símbolo ´&´ indica el puntero de la variable.
De forma similar, para obtener una cadena por consola se puede usar la función gets() y para un único
carácter existe la función getchar().
La función fopen() abre una secuencia para poder ser usada y asociada a un archivo. Su sintaxis es FILE
*fopen(const char *nombre, const char *modo), siendo *nombre un puntero a una cadena de caracteres que
representan un nombre de archivo, pudiendo incluir una especificación de directorio. La cadena apuntada
por *modo indica el modo de apertura del archivo, bien sea lectura (r), creación y escritura (w), adición de
datos (a), apertura y lectura/escritura (r+), creación y lectura/escritura (w+) o adición o creación de un
archivo para lectura/escritura (a+). Para cerrar una secuencia abierta con fopen(), se usa fclose(), que
termina la escritura y realiza un cierre ordenado a nivel de SO, liberando el bloque de control del archivo. Su
sintaxis es int fclose(FILE *fp).
Las funciones putc() y getc() escriben caracteres en un archivo abierto previamente con fopen() en modo
escritura y en modo lectura, respectivamente. Sus sintaxis es: int putc(int car, FILE *pf) y int getc(FILE *pf).
La función fputs() escribe una cadena en la secuencia especificada. Su sintaxis es int fputs(const char *cad,
FILE *pf). fgets() lee una cadena de la secuencia especificada hasta el carácter de salto de línea o hasta
completar una longitud-1 caracteres. La función rewind() inicia el indicador de posición al principio del
archivo indicado en su argumento. Su prototipo es: void rewind(FILE *pf);
4. GESTIÓN DE PUNTEROS
Un programa escrito en C se estructura en cuatro partes principales: el área de código con las instrucciones
del programa, el área de datos estáticos, que contiene las variables tipo static y extern, el heap o zona que
almacena datos de control y variables y la pila, una zona de memoria reservada para el almacenamiento
dinámico. El área de código y la de datos estáticos no puede cambiar de tamaño en ejecución.
Un puntero permite almacenar una dirección de memoria para facilitar el acceso aleatorio. En el lenguaje C,
las características de los punteros pueden resumirse en que son variables que gestionan memoria
dinámica. En general apuntan a direcciones de memoria de la zona heap, aunque pueden apuntar a
posiciones estáticas y hacen referencia al tipo de datos de la posición de memoria a que apuntan, que
recibe el nombre de tipo base o referenciado. Es decir, un puntero apunta al espacio físico de un dato,
pudiendo apuntar variables, funciones u otras estructuras como otros punteros. En las funciones se suelen
usar para el paso de valores por referencia
Para declarar un puntero se usa el *. En el ejemplo, p es un puntero que apunta a un dato de int *p;
tipo entero. La instrucción p = &a; asignaría a p la dirección de memoria de la variable a. Es
p = &a;
decir, el operador & indica la dirección de memoria de una variable.
El uso de punteros en los argumentos de funciones, permite el paso de parámetros por referencia, de forma
que las operaciones que se lleven a cabo en la función, modificarán la variable apuntada directamente.
Esto, como se ha explicado, con respecto al paso por valor, evita la duplicidad y mejora el rendimiento, pero
puede hacer perder el control, por tanto no es recomendable. Un puntero tipo void podrá tener cualquier tipo
de datos en tiempo de ejecución usando órdenes de casting como (int). El espacio de memoria requerido
para un puntero, es el número de bytes necesarios para especificar una dirección. En la familia de micros
8086, una dirección "near" (dirección con respecto a la dirección base del segmento) necesita 16 bits y una
dirección "far" (dirección segmentada) necesita 32 bits.

143
La gestión de punteros plantea la dificultad de conocér qué se referencia. Pero una vez comprendido bien
su funcionamiento, no debiera ser problemático su uso. Para ejemplificarlo, el siguiente código presenta dos
versiones de un mismo programa para el listado por pantalla de los elementos de un array. En el primer
caso, se utiliza la variable entera, ind, para referirse directamente a una posición del array. En el segundo
código, se listan los valores contenidos en la posición base de memoria del array más el número de posición
que indica el índice, ind. Esto se expresa con *(lista+ind), ya que *lista es la dirección de comienzo del array.
#include <stdio.h> #include <stdio.h>
main(){ main(){
static int lista[] = {10, 20, 30, 40, 50}; static int lista[] = {10, 20, 30, 40, 50};
int ind; int ind;
for (ind = 0; ind<5; ind++) printf("%d", lista[ind]); for (ind = 0; ind<5; ind++) printf("%d", *(lista+ind));
} }
Por tanto, *(lista+1) y lista[1] representan el mismo valor, es decir, hay dos formas de referirse al contenido
de una posición de un array, *(array+posicion) o array[posicion]. Del mismo modo, la asignación: p = lista es
equivalente a p = &lista[0], siendo p una variable de tipo puntero. Sin embargo, hay que tener en cuenta que
el nombre de un array es una constante y un puntero es una variable, por tanto operaciones como lista = p o
lista++ no serían válidas.
Otro caso de estudio es el del ejemplo, un array cuyos elementos contengan punteros int *a[10], ente;
o direcciones. En este caso se ha definido un array de 10 posiciones con punteros a
a[0] = &ente;
datos de tipo entero y una variable entera ente. El código asigna al elemento a[0] la
dirección de ente y escribe su contenido. printf("%d", *a[0]);
La situación parece todavía más compleja si cada elemento del array fuese un puntero a otro array, caso
que se denomina de doble indirección o punteros a punteros. Su manejo y gestión es más compleja, pero
confiere al lenguaje C gran potencia y flexibilidad. Para especificar que una variable es un puntero a un
puntero, se utiliza la sintaxis: tipo **variable.
La sintaxis también debe ser cuidadosa para no caer en errores. Por ejemplo, hay que tener algunas
precauciones al direccionar un array bidimensional con punteros. Si el direccionamiento se hace con
índices, la sintaxis típica es tabla[fila][columna], lo que se puede interpretar como un array cuyos elementos
de una fila son arrays, que forman las columnas.
Si se escribe tabla[1], se elegirá la primera posición del array, es decir, otro array, que representa la primera
columna. Usando punteros, la expresión equivaldría a tabla+1. La posición tabla[1][0], sería *(tabla+1)+0.
Las direcciones tabla+1 y *(tabla+1) coinciden, pero poseen diferente significado. Por ejemplo, tabla+1+2 se
refiere a la fila tabla[3], mientras *(tabla+1)+2 se refiere al elemento tabla[1][2] y *(*(tabla+1)+2) es el
contenido del elemento tabla[1][2].
5. PUNTEROS A FUNCIONES
Otra posibilidad que permiten los punteros en C es la referencia a funciones, lo que dota al lenguaje de más
potencia y rendimiento. Un puntero a una función básicamente es una variable que guarda la dirección de
comienzo del subprograma. Al declarar una función como puntero, el nombre se escribe entre paréntesis.
En la sintaxis del ejemplo, fcn es un puntero a una función que acepta como int (*fcn)(int j, char ch);
argumentos un entero (j) y un carácter (ch) y devuelve como resultado un entero.
a=(*fcn) (j,ch);
Con punteros a funciones se pueden crear matrices de los mismos. Para invocarlas también hay que poner
su nombre con el * dentro de paréntesis como en el ejemplo, en que se aceptan como argumentos j y ch en
la función fcn y el resultado se almacena en la variable a.

144
TEMA 33. PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR. INSTRUCCIONES BÁSICAS.
FORMATOS. DIRECCIONAMIENTOS.

1. INTRODUCCIÓN
2. PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR
3. INSTRUCCIONES BÁSICAS
3.1. De transferencia
3.2. Aritméticas
3.3. Lógicas
3.4. De desplazamiento
3.5. Constantes, directivas y cadenas
4. FORMATOS
5. DIRECCIONAMIENTOS

145
1. INTRODUCCIÓN
El lenguaje ensamblador es un lenguaje de programación de bajo nivel para circuitos integrados tales como
microprocesadores y microcontroladores. Es una representación simbólica del código máquina y como se
vió depende de la arquitectura de la UCP definida por el fabricante.
Es una programación compleja que se realiza con nemónicos para representar instrucciones, datos,
direcciones de memoria o variables. En general se tiende a no programar directamente en ensamblador.
2. PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR
El lenguaje ensamblador fue el primer intento de sustituir el lenguaje máquina por otro más parecido al
lenguaje humano. La idea era sustituir la codificación binaria de las instrucciones por nemónicos, lo que
supone un incremento de la abstracción, pero sigue siendo una programación engorrosa. Esto es debido a
que cada máquina tiene su propio conjunto de instrucciones, y se precisa conocer las particularidades del
hardware y se trabaja directamente con direcciones de memoria y registros, lo que obliga a describir
detalladamente las operaciones de un programa.
A la vez se obtienen códigos muy
eficientes en cuanto a utilización
de memoria y tiempos de
ejecución si se compara con la
compilación del programa escrito
en un lenguaje de alto nivel.
Para ejemplificar la programación
en lenguaje ensamblador se
presenta el ISC y modelo de
programación del micro 8086 de
Intel, que posee los registros
internos mostrados en la tabla.
Son 14 registros de 16 bits, que
se agrupan en categorías.
Para los registros de datos,
puede hacerse referencia a la
mitad de cada registro con la
denominación H o L.
Así, AH se usa para los 8 bits más significativos y AL para los menos menos significativos del acumulador,
BH y BL para el registro base, etc. El registro de banderas posee la estructura mostrada.
Consta de 6 flags que indican el estado del
micro y 3 que indican su modo de
funcionamiento. Su significado es:
CF. (Bit 0. Acarreo). Con valor 1 indica acarreo en operaciones aritméticas.
PF. (Bit 2. Paridad). Indica paridad par o impar.
AF. (Bit 4. Acarreo auxiliar). Indica necesidad de ajuste en operaciones aritméticas BCD.
ZF. (Bit 6. Comparación). Indica con un 1 si el resultado de la última operación ha sido 0.
SF. (Bit 7. Resultado). Almacena el bit de signo del resultado.
TF. (Bit 8. Captura). Usado para el control de la operación paso a paso en operaciones de debbugging.
IF. (Bit 9. Interrupción). 1 indica permiso de interrupción para dispositivos externos.
DF. (Bit 10. Dirección). Indica si una operación sobre una cadena de caracteres se realiza hacia adelante o
hacia atrás, incrementando o decrementando los registros SI y DI (1 empieza por el final).
OF. (Bit 11. Overflow). Indica con un 1 si ha habido desbordamiento aritmético.
Un programa se organiza en memoria en cuatro bloques señalados con un registro de segmento y al menos
otro de desplazamiento. Los segmentos, como se indicó en el tema 4, son los de código, datos, pila y extra.
El segmento de código contiene las instrucciones del programa, se apunta con el registro CS y se usa como
registro de desplazamiento el IP. El segmento de datos, contiene los datos del programa, es apuntado por el
registro DS y se usan los registros de desplazamiento BX, SI y DI. El segmento de pila, utiliza el registro SS
para puntarlo y los registros de desplazamiento SP o BP. Por fin el segmento de desbordamiento o extra
usa el registro de segmento ES y los registros de desplazamiento BX, SI, o DI.

146
3. INSTRUCCIONES BÁSICAS
Las instrucciones básicas en lenguaje ensamblador son similares para la mayoría de dispositivos. El ISC
presentado en el Tema 2, aunque un tanto conceptual, ejemplifica bien qué tipo de instrucciones se pueden
encontrar. En ensamblador, existen dos tipos de sentencias: instrucciones y directivas. Las instrucciones se
aplican en tiempo de ejecución y las directivas, en tiempo de ensamblado.
En un primer intento, las instrucciones básicas, pueden clasificarse en instrucciones de transferencia de
datos, aritméticas, lógicas y de desplazamiento.
3.1. De transferencia
Las instrucciones de transferencia de datos incluirían instrucciones del tipo MOV, XCHG, PUSH, POP, IN,
OUT, LEA, LDS o LES. Explicar el funcionamiento de todas no tendría demasiado sentido. Lo que si es
importante es conocer su operativa general, por lo que se presentan un par de ejemplos.
La instrucción MOV posee la sintaxis MOV [destino][origen]. Mueve un byte o una palabra del origen al
destino, que será un registro o una posición de memoria. El origen será un registro, una posición de
memoria o un valor directo. Fuente y destino deben ser del mismo tipo y no pueden moverse datos entre
dos elementos de memoria y tampoco mover un valor directo a un registro de segmento.
Ejemplo: mover el contenido de la posición de memoria mem1 a la posición mem2. MOV AX mem1
Como no se puede hacer directamente, se carga en el acumulador el valor de mem1 y
MOV mem2 AX
seguidamente se mueve el valor del acumulador (AX) a mem2:
Instrucciones muy usadas son las de manejo de la pila. Poseen la sintaxis PUSH [origen] y POP [destino].
El origen es la localización del dato que se mete en la pila y destino la localización del dato que se extrae.
Son ejemplos típicos serían PUSH (dato), que introduciría el valor de la variable dato en la pila y POP AX,
que extraería el valor de la cima de la pila y lo llevaría al acumulador.
3.2. Aritméticas
Las instrucciones que representan operaciones aritméticas son las habituales. Internamente trabajarán en
lógica binaria con representaciones en CA2 u otros, como ya se explicó. Algunas de estas instrucciones
serían NEG, ADD, ADC, SUB, DEC, SBB, MUL o MOD.
El nemónico de cada instrucción da idea de la operación que realiza. Por ejemplo NEG cambia el signo del
operando sobre el que actúa, ADD suma dos operandos y el resultado lo almacena en el destino, SUB es la
resta, MUL, la multiplicación, etc.
Ejemplo: RESTO EQ 9 MOD 5; Esta instrucción calcula el módulo (el resto) de la división de 9 entre 5 y el
resultado, 4, quedaría almacenado en la variable RESTO.
3.3. Lógicas
Indican operaciones lógicas. Las habituales, NOT, OR, AND, XOR... e incluirían otras, que se podrían llamar
relacionales, como EQ (equal), NE (not equal), LT (less than), GT (greater than), etc.
Como ejemplo, supóngase que los registros AX y BX contienen respectivamente los valores hexadecimales
FEDC y 1234, la instrucción OR AX BX dejaría en AX el resultado (FEFC).
3.4. De desplazamiento
Incluyen instrucciones como SAL, SHL, SAR, SHR, ROL, ROR, etc. Operan sobre registros realizando
desplazamientos de bits.
En el código propuesto como ejemplo, la primera instrucción mueve 2 a CL y la MOV CL 2
segunda desplaza el contenido de AL 2 posiciones a la izquierda y el resultado lo deja
ROL AL CL
almacenado en AL.
3.5. Constantes, directivas y cadenas
Las constantes indican valores que no cambian. Se usan de modo similar a un lenguaje de alto nivel y se
distinguen tres tipos: binarias, numéricas y caracteres. En las numéricas si se usan números negativos
habrá que indicar su signo si son decimales o en CA2 en el caso de binario, octal o hexadecimal. Una
constante hexadecimal con su primer bit a 1 debe anteponer un cero, para que se distinga de una cadena
de caracteres.
Por su parte, las directivas se aplican en tiempo de ensamblado y se utilizan para indicar al ensamblador
qué hacer con instrucciones y datos. El formato de una directiva es: [nombre] Directiva [operandos]
[comentario], donde los corchetes indican partes opcionales, que podrán aparecer en la declaración o no.
Ejemplo: CR EQU 13; asignará el valor 13 a la constante CR.

147
Otro aspecto importante es el tratamiento de cadenas. Una cadena es una serie de bytes o palabras de
hasta 64 Kb. Por defecto estas instrucciones suponen que la cadena fuente se define en el segmento de
datos y su desplazamiento y la cadena destino en el segmento extra y su desplazamiento.
Los registros SI y DI se actualizan automáticamente tras cada operación. Si los operandos son de tipo byte,
el incremento es 1 y 2 si son de tipo palabra, pudiendo ser además positivo si la bandera de dirección DF
es 0, o negativo si DF es 1. Instrucciones para el manejo de cadenas son MOVS, MOSVSB o REP. Por
ejemplo, MOVS [destino][origen] transfiere un byte o palabra de la cadena fuente (direccionada por SI) en el
segmento de datos a la cadena destino (direccionada por DI) en el segmento extra.
4. FORMATOS
El formato general de una instrucción en lenguaje [Etiqueta]: INSTRUCCIÓN [operandos] [comentario]
ensamblador responde al siguiente esquema:
Donde los corchetes indican opciones. En la sintaxis de la instrucción, lo que siempre aparecerá será el
nombre de la instrucción, ya que una instrucción puede no usar operandos. La instrucción se escribirá en
una línea y los campos estarán separados, al menos por un espacio en blanco, como en los ejemplos que
ya se han presentado.
El campo etiqueta corresponde al nombre simbólico de la primera posición de las que ocupa la instrucción y
se usa para romper la secuencia del programa. Este nombre podrá tener hasta 31 caracteres de longitud y
se permite usar letras de la A a la Z (las minúsculas se convierten a mayúsculas), números del 0 al 9 y
caracteres especiales, pero el primer carácter no puede ser un dígito, si se usa el punto estará al principio y
no se pueden utilizar palabras reservadas como AX o MOV. Los dos puntos que separan la etiqueta de la
instrucción se usan para declararla.
Esto indica si la referencia a la etiqueta se realiza desde el mismo segmento de código o desde otro
distinto, ya que si se refiere al mismo segmento, el micro solo cargará el IP al bifurcar a esa instrucción,
mientras que si es en otro deberá cargar los registros IP y CS al bifurcar.
La longitud de la instrucción es de dos a seis caracteres y representa la acción que ejecutará la instrucción.
El campo comentario es opcional y sirve para documentar el código, al final de cada instrucción. Debe ir
precedido por punto y coma. El campo operandos indica los datos con los que se opera. Podrá ser uno, dos
o ningún operando. Si son dos, en general se entiende que el primero es el destino y el segundo el origen.
Los operandos podrán ser registros, direcciones de memoria o constantes. La forma de referenciarlos se
denomina modo de direccionamiento.
5. DIRECCIONAMIENTOS
El direccionamiento es la forma en que se referencia una una posición de memoria mediante su dirección.
La dirección se obtendrá directamente o realizando algún cálculo, según el tipo de direccionamiento. Son:
Direccionamiento inmediato. No hay direccionamiento en sentido estricto, el dato aparece de forma explícita
en la instrucción. Ejemplo: MOVE AX, 0A46Bh; el operando es directamente el valor 0A46Bh.
Direccionamiento absoluto. El campo de dirección de la instrucción contiene la dirección de MP donde se
encuentra el dato o se refiere a un registro. Ejemplos: MOVE AX BX, MOV AX [073Bh]. El operando origen
es el registro BX en el primer caso y en el segundo se encuentra en la dirección de memoria 073Bh.
Direccionamiento indirecto. El CD contiene el registro donde se encuentra la dirección de memoria donde
está el dato. Ejemplo: MOV AX [BX]. Al indicar BX entre corchetes, se significa que BX contiene la dirección
de memoria donde buscar el operando.
Direccionamiento indexado. Se usa un registro y un desplazamiento (que se indicará con un número o
registro) que indica el comienzo de la dirección donde se encuentra el operando. Los registros que se
pueden usar son BX y BP. Ejemplo: MOV AX [BX + 4]. El dato se localiza cuatro posiciones mas allá de la
dirección indicada por BX.
Los modos de direccionamiento que se refieren a posiciones de memoria, pueden ir precedidos por un
registro de segmento. Como por ejemplo en la forma MOV AX ES: [BX], que movería a AX el contenido de
la dirección indicada por BX en el segmento extra y no en el segmento de datos donde se buscaría por
defecto si no se especificara el prefijo de segmento.

148
TEMA 34. SISTEMAS GESTORES DE BBDD. FUNCIONES. COMPONENTES. ARQUITECTURA DE
REFERENCIA Y OPERACIONALES. TIPOS DE SISTEMAS.

1. INTRODUCCIÓN
2. SISTEMAS GESTORES DE BBDD
3. FUNCIONES
4. COMPONENTES
5. ARQUITECTURA DE REFERENCIA Y OPERACIONALES
5.1. Arquitectura de referencia
5.2. Arquitectura operacional
6. TIPOS DE SISTEMAS
6.1. Según modelo
6.1.1. Jerárquico
6.1.2. Red
6.1.3. Relacional
6.1.4. Orientado a objetos
6.2. Según estructura
6.3. Según usuarios

149
1. INTRODUCCIÓN
Una de las aplicaciones más importantes de la informática es el procesamiento de grandes cantidades de
información. Para ello se utilizan los Sistemas Gestores de BBDD, en adelante abreviado como SGBD.
Manejar mucha información, es un problema que inicialmente se solucionó con ficheros más o menos
organizados. En principio esto mejora la eficiencia, ya que el fichero está adaptado al programa que lo
utiliza, pero a largo plazo puede resultar una solución más lenta si se utiliza otro programa, o si se crea un
nuevo fichero, se pueden generar problemas de coherencia, redundancia y actualización. Además, esta
organización impone normas rígidas en la búsqueda y recuperación de información, la relación entre los
datos no siempre está definida, así como los aspectos de seguridad.
Otros problemas son la dependencia del programa respecto de los datos o el acceso concurrente. Para ello,
estos problemas vienen a solucionarse con los SGBD, cuyos primeros modelos eran jerárquicos o en red.
Actualmente se ha impuesto el modelo relacional y se están probando con éxito modelos orientados a
objetos o datos XML.
2. SISTEMAS GESTORES DE BBDD
Las BBDD surgen para dar solución a algunos de los problemas que presentan los sistemas de ficheros. Se
estructuran como un conjunto de datos organizados de modo que se controla el almacenamiento de datos
redundantes, y se independizan de los programas que los usan. Esto se consigue almacenando los datos y
sus relaciones, pudiéndose acceder a los mismos de distintas maneras.
En una BBDD se almacena información de entidades. Los datos de cada entidad se denominan atributos.
La información de cada entidad se almacena en registros y sus atributos en los campos de cada registro.
Por lo general, conociendo el valor de uno o varios atributos de una entidad se identifica un elemento.
Un conjunto de atributos de una entidad es una superclave de dicha entidad si su valor permite identificar
univocamente cada elemento de la entidad. Si de una superclave no se puede obtener ningún subconjunto
que sea a su vez superclave, esa superclave se denomina candidata. Al diseñar una BBDD, de las claves
candidatas existentes debe elegirse una como clave principal o primaria y el resto de claves candidatas no
elegidas como primaria se les denominará claves alternativas.
Entre dos entidades existe una referencia si un campo o conjunto de campos de un entidad es clave de la
otra, lo que permite localizar una entidad a partir de otra. Los atributos que forman la clave de la segunda
entidad se denominan clave ajena de la entidad. Para completar la estructura deben establecerse las
relaciones entre entidades, aquello que poseen en común.
El grado de una relación representa la participación en ella de cada entidad. Se distinguen tres tipos de
grado, 1:1, 1:n y n:m. Un grado 1:1 (uno a uno) implica que a cada ocurrencia de una entidad le
corresponde una ocurrencia de la segunda y viceversa, es una relación biunívoca. El grado 1:n (uno a
muchos) indica que a cada ocurrencia de la primera entidad le pueden corresponder varias ocurrencias de
la segunda y a cada ocurrencia de la segunda le corresponde no más de una de la primera.
El grado n:m (muchos a muchos) expresa que cada ocurrencia de la primera entidad puede corresponderle
varias ocurrencias de la segunda y viceversa. Las relaciones de grado uno a uno se denominan simples y
las demás complejas.
Una vez definida una BBDD su tratamiento se realiza con un SGBD, que sirve de interface entre los datos y
el programa que hace uso de la misma, ofreciendo independencia de los datos, integridad, seguridad.
Entre los objetivos de un SGBD está la abstracción, ya que oculta al usuario la organización interna de la
información. Los requisitos exigibles a un SGBD deben incluir el acceso simultáneo de distintos usuarios sin
incoherencias con la posibilidad que cada usuario disponga de una visión particular de la estructura, debe
haber flexibilidad en los métodos de acceso, garantizarse confidencialidad y seguridad, proveer protección
ante fallos con mecanismos de recuperación y es deseable un interfaz de alto nivel.
Del mismo modo es importante la independencia física (el soporte físico de la BBDD) e independencia
lógica, es decir, la capacidad de modificación de los datos y sus relaciones, presentar una redundancia
controlada, en que los datos se almacenan una vez, salvo excepciones y permitirse la interrogación directa
(query), para acceso a los datos de forma conversacional. Otro requisito importante es el tiempo de
respuesta, que debe ser el mínimo posible.
De este modo, un SGBD ofrece ciertas ventajas como son la facilidad para manejar gran cantidad de datos,
la integridad de los mismos y la independencia de datos y aplicaciones que los utilizan. El tiempo de
desarrollo de aplicaciones se ve reducido drásticamente aumentando además su calidad. Por contra,
pueden señalarse como inconvenientes la complejidad, en general notable, y por tanto la necesidad de
administración de la misma, lo que puede suponer sobrecostes a considerar.

150
3. FUNCIONES
Un SGBD como software destinado a la creación, control y manipulación de la información de una BBDD
debe incluir funciones como la descripción del esquema de la BBDD, permitir su manipulación y gestión, con
operaciones como la consulta, recuperación o modificación, ocultando su estructura física al usuario,
proveer un diccionario de datos y como se ha comentado, garantizar la integridad de los datos y la
seguridad del acceso y comunicaciones.
La definición del esquema de la BBDD debe permitir, una vez diseñado, describirlo mediante un conjunto de
instrucciones. Esto se realiza con un lenguaje específico denominado de definición de datos (DDL).
El acceso a los datos, en general se realizará con algún lenguaje de alto nivel, que se apoyará en un
lenguaje específico que recibe el nombre genérico de lenguaje de manipulación de datos (DML). El DML
puede utilizarse de dos formas, bien incluyendo sentencias DML en programas escritos en lenguaje de alto
nivel, bien mediante programas que contengan exclusivamente sentencias propias de este lenguaje. En el
primer caso, el SGBD incluiría un precompilador que traduzca instrucciones DML en otras reconocibles por
el compilador del lenguaje de alto nivel (lenguaje anfitrión).
El acceso a la información de forma conversacional se refiere a la inclusión de un interfaz de usuario que
permita introducir sentencias directamente para obtener información. La función de gestión de ficheros es
realizada por un módulo gestor encargado de la comunicación con el SO y que podrá incluir funciones de
control de usuarios, recuperación frente a fallos y otras.
El SGBD además permitirá insertar, modificar, borrar y recuperar con un rendimiento aceptable los datos
solicitados. Por facilitar su estudio, se pueden agrupar las funciones de un SGBD en tres niveles. El primero
incluiría las funciones relativas a la gestión de tablas o estructuras de datos en memoria secundaria, que
aunque responsabilidad del SO, existen casos en que se delegan en el SGBD para incrementar el
rendimiento. El segundo nivel agruparía las funciones de gestión de los datos almacenados, los enlaces que
se establecen entre ellos y las estructuras que permitan su tratamiento. En el tercer nivel se encontrarían
funciones que permiten la interpretación y análisis de las peticiones de usuario y la presentación de los
datos solicitados.
4. COMPONENTES
A nivel macroscópico o externo, un SGBD podría verse como un sistema compuesto por hardware, datos,
programas y usuarios.
El hardware es el componente físico donde se almacenan los datos. Ejemplos pueden ser un sistema de
discos redundantes o un servidor dedicado. Los datos constituyen la información, que debe ser lo menos
redundante posible. Los programas representan el interfaz entre datos y usuarios, logrando independizar los
aplicaciones y SGBD. Son capaces de gestionar los datos y atender peticiones de consulta de más de una
aplicación. Por fin, los usuarios son la parte humana del sistema y se distinguen varios roles, como son los
usuarios, administradores, programadores y otros.
A nivel interno, el SO proporciona las herramientas básicas de comunicación con el hardware, mientras los
componentes de un SGBD pueden varian según las soluciones comerciales y la implementación que se
haga del mismo. Pero como componentes comunes a todos se pueden identificar módulos gestores de
archivos, de BBDD y procesadores de consultas.
El módulo gestor de archivos administra el almacenamiento de los datos en archivos, ya que en el último
escalón, los datos se tratan como ficheros. El gestor de BBDD está encargado de comunicar el resto de
componentes con los archivos proporcionando una interfaz con la BBDD y el procesador de consultas es el
módulo encargado de traducir las consultas de un lenguaje de alto nivel como SQL, a consultas de bajo
nivel, permitiendo su optimización.
Otros componentes identificables en un SGBD son el lenguaje de descripción del esquema conceptual, el
lenguaje de definición de esquemas, módulos de privacidad e integridad, módulos generadores de informes
y un lenguaje de consulta de propósito general.
El lenguaje de descripción del esquema conceptual debe ser sencillo y capaz de evaluar la consistencia de
datos, mientras el lenguaje de definición de esquemas, debe permitir especificar restricciones de privacidad,
seguridad y acceso. Los módulos de privacidad tienen entre sus funciones la protección de la BBDD frente a
accesos no autorizados y el módulo de integridad proporcionará la integridad y coherencia de los datos.
5. ARQUITECTURA DE REFERENCIA Y OPERACIONALES
Un SGBD es un conjunto de procedimientos, ayudas de documentación, lenguajes y programas de software
que permite administrar una BBDD. Entre sus objetivos se encuentra proporcionar a los usuarios una visión
abstracta de la información, es decir, ocultar los detalles de implementación permitiendo una recuperación
eficaz de la información.

151
El SGBD proporciona información a los usuarios y desarrolladores desde diferentes planos de abstracción.
De este modo, puede identificarse un nivel físico, más cercano al hardware, que establece la forma de
almacenamiento físico en memoria de los datos, un nivel de visión, en que cada grupo de usuarios accede
sólo a la parte de la BBDD que debe usar, permaneciendo oculta la implementación física, y un nivel
conceptual que describiría la estructura y organización interna del sistema.
5.1. Arquitectura de referencia
La arquitectura de referencia de un SGBD define una BBDD a distintos niveles, buscando la independencia
de datos y aplicaciones. La arquitectura de referencia más extendida es la definida por ANSI-SPARC que en
su división X3 establece que “la arquitectura de una BBDD debe poseer tres niveles: interno, conceptual y
externo”. Algunos autores dividen el conceptual en dos ya que no existe una herramienta general que
permita definir el modelo conceptual. Los niveles se establecen según la perspectiva del almacenamiento
físico, del usuario, y del programador.
El nivel interno describe la estructura física interna de la BBDD mediante un esquema que especifica los
detalles de almacenamiento físico y métodos de acceso. El nivel interno es propio de cada SGBD y en
principio no puede ser manipulado, al contrario de los otros dos niveles que podrán modificarse con algún
lenguaje de manipulación de BBDD.
El nivel interno define cómo se almacenn los datos, los ficheros que contienen, sus registros y las rutas de
acceso y es descrito por el SGBD por medio del esquema o vista interna. En este sentido conviene recordar
la diferencia entre los registros físicos y lógicos, y que un registro físico puede contener más de un registro
lógico y elementos descriptivos como la longitud, tipo de registro o punteros. La correspondencia entre
registros lógicos y físicos se denomina mapeo.
Por tanto, la definición del nivel interno exige definir los archivos de datos que almacenan la BBDD, los
archivos de índices, que permiten el acceso a la información y un diccionario de datos que almacene la
información relativa a la estructura de la BBDD.
El nivel conceptual describe la estructura de la BBDD para
una comunidad de usuarios, mediante un esquema o vista
que oculta los detalles de las estructuras de
almacenamiento describiendo entidades, atributos,
relaciones, operaciones y restricciones. El nivel conceptual
en BBDD relacionales son tablas, registros, relaciones y
consultas. Este nivel corresponde a la estructura de los
datos de la base, obtenida una vez implementados los
requisitos de los usuarios, para los que se ve como una
colección de registros lógicos sin especificar su
almacenamiento.
Los ficheros conceptuales no existen físicamente. A la parte del esquema conceptual de interés para un
usuario final se le denomina subesquema conceptual. De esta forma el esquema conceptual podría
contener datos elementales, datos compuestos que permiten reagrupar campos para describir registros o
asociaciones, relaciones entre ellos e incluso las normas de definición y restricción de los datos.
El nivel externo es el nivel más alto de abstracción y describe esquemas externos o vistas de usuario. Cada
esquema externo describe la parte de la BBDD que interesa a un grupo de usuarios determinados y oculta
el resto de detalles. Representa la percepción individual del usuario o programador de la BBDD.
El SGBD extrae los datos requeridos al invocar con una operación de E/S un registro lógico, a partir de su
registro físico en la BBDD. Para cada programa de manipulación se necesita especificar un esquema,
subesquema o vista externa para acceder a los datos. Habrá usuarios que puedan acceder a más de un
esquema externo, que podrá ser compartido por varios. Así se protege el acceso no autorizado.
Para construir un subesquema hay que tener presente que pueden omitirse algún tipo de registro, o incluso
campos del registro conceptual, cambiarse el orden relativo de los campos del registro y que las relaciones
entre datos pueden omitirse en el esquema conceptual. Para una BBDD específica, habrá un esquema
interno y un único esquema conceptual, pero puede haber varios esquemas externos, que podrán definirse
para un grupo de usuarios.
La relación de un SGBD respecto a usuarios y datos debe poseer tres propiedades, permitir la descripción
de los esquemas de la BD, excepto el conceptual, debe existir correspondencia entre esquemas y deben
estar aislados (independencia de datos).
El aislamiesto o independencia de los datos se refiere tanto a la independencia lógica entre el esquema
lógico y los externos como a la física, entre el esquema lógico y el esquema interno.

152
5.2. Arquitectura operacional
La arquitectura de operaciones de un SGBD está basada en módulos funcionales, entre los que se distingue
un módulo de análisis y ejecución de consultas, de acceso a datos, de transacciones y bloqueos y un
módulo manejador de recuperación.
El proceso de acceso a los datos se inicia con un
comando del SGBD. El comando es analizado y a
partir del esquema externo se establece la
correspondencia con el esquema lógico para
construir un plan de actuación que es optimizado y
ejecutado.
Mediante el esquema interno, se identifican los
datos físicos a los que acceder y el ejecutor del
plan invoca los módulos de acceso a datos, que
usan los gestores de buffers y de espacio para
acceder a los datos de forma eficiente.
Todo el proceso se apoya en un manejador de transacciones y de bloqueos encargados de mantener la
coherencia. También existe un manejador de recuperación que permite mantener la coherencia de los datos
cuando se producen interrupciones del servicio.
6. TIPOS DE SISTEMAS
El criterio tradicional de clasificación de BBDD ha sido su modelo, identificándose entonces sistemas
jerárquicos, en red y relacionales. Otros criterios de clasificación son su estructura o sistemas actuales en
proceso de prueba, como se exponen en los siguientes apartados.
6.1. Según modelo
6.1.1. Jerárquico
Las primeras BBDD se implementaban usando un modelo jerárquico, con estructura de árbol con relaciones
de uno a muchos. Los registros o segmentos siguen una organización jerárquica, de forma que al eliminar
un nodo padre se deben eliminar los nodos hijos. Este modelo es utilizado actualmente en algunas BBDD
como el sistema DNS. También los ficheros XML presentan una estructura similar presentando utilidades de
recorrido parecidas a las de éstas BBDD. Comparte además, limitaciones de descripción de relaciones
complejas, ya que un elemento sólo se relaciona con un padre.
Las BBDD jerárquicas son navegacionales. Sus operaciones
seleccionan objetos por posición lógica en relación al último
segmento accedido, lo que da lugar a limitaciones como la
imposibilidad de relaciones complejas de muchos a muchos y la
conveniencia de usar lenguajes de manipulación fuertemente
navegacionales. Las relaciones suelen implementarse con punteros.
Las BBDD jerárquicas generan estructuras estables y de gran
rendimiento en casos de aplicaciones que manejen un gran volumen
de información con datos muy compartidos.
6.1.2. Red
El modelo jerárquico evolucionó al modelo de red, que presenta forma de malla donde un hijo puede tener
varios padres, actualmente en desuso. Representa otro modelo también conocido como CODASYL, en que
se permiten otros tipos de relaciones, aunque, se distingue entre BBDD en red simple (no permite
relaciones muchos a muchos, caso típico) y BBDD en red compleja. Cualquier sistema es representable
como una BBDD en red, que al igual que en el caso jerárquico requieren lenguajes navegacionales.
Las estructuras de datos distinguen registros, ficheros y conjuntos
que permiten relaciones de uno a muchos. Representa registros
propietarios y miembros. Los tipos de indicadores de posición
pueden ser respecto a registros y respecto a sets. La representación
de relaciones muchos a muchos, es indirecta al descomponerse en
relaciones de uno a muchos con registros puente.

En el ejemplo de la figura, cada recuadro se referiría a un registro. El conjunto de registros del mismo nivel
podrían agruparse en ficheros, por ejemplo Vendedores={vendedor1,vendedor2} y los conjuntos o sets
podrían combinar distintos conceptos, por ejemplo Tienda_Vendedor, Vendedor_Articulo, etc.

153
6.1.3. Relacional
Las BBDD evolucionaron hacia el modelo relacional concebido por Codd, basado en la teoría de relaciones
y que pretende obtener mayor flexibilidad y rigor en el tratamiento de datos. Define una estructura única, la
relación, dependiente de los nombres de atributo, cada uno con un dominio y utiliza como operadores
lenguajes de especificación, no navegacionales, en donde se indica qué se quiere obtener, no cómo. El
modelo relacional es el más usado y en el que están basados los SGBD más potentes de la actualidad,
como puedan ser Oracle o SQL Server.
El modelo relacional se estudia en detalle en los temas 37 y 38. Por tanto, adelantar que se estructura en
varias tablas con una serie de registros formados por columnas o campos con el mimo tipo de datos para
todos los registros. Además, todos los registros de una tabla tienen el mismo número de columnas. La
esencia del modelo es imponer restricciones a las tablas para que puedan tratarse con relaciones
matemáticas, de ahí su nombre y que a las tablas de una BBDD relacional se les llame relaciones.
La información puede guardarse en cualquier orden y se acceder mediante consultas especificadas en un
lenguaje dado, en general SQL. Se permiten restricciones como por ejemplo una clave principal única o
claves foráneas que apunten a registros de otra tabla. Una BBDD relacional correcta debe evitar
redundancias, para lo que se define según formas normales, que aconsejan la no existencia de campos con
múltiples valores en un registro y que todo campo del registro debe depender total y exclusivamente de la
clave y no de otro campo.
El modelo relacional es el más extendido en el diseño y gestión de BBDD por presentar una
conceptualización sencilla y un lenguaje de definición y manipulación de datos potente y flexible.
6.1.4. Orientado a objetos
Este modelo amplía el relacional para integrar los lenguajes de POO y la complejidad de los nuevos
desarrollos de aplicaciones, incorporando características como herencia o polimorfismo. El grupo ODMG,
Open Database Management Group, desarrolla el estándar y el modelo de objetos para persistencia, que
especifica cómo y qué elementos deben definirse para conseguirlo. Se apoya en el lenguaje ODL de
definición de objetos. Existen modelos híbridos, sistemas objeto-relacionales, como pueden ser Oracle o
SQL3 y capas de persistencia que mapean objetos sobre estructuras relacionales conocidos como ORM,
Object Relational Mapping, caso de Hibernate en Java o Zope en phyton.
En la estructura de una BBDD orientada a objetos se distinguen los objetos, que pertenecen a un tipo y
poseen un identificador único y los literales, que no tienen identificador y están embebidos en los objetos.
Las BBDD son navegacionales y se accede mediante OQL (Object Query Languaje), que obliga a la
manipulación mediante los métodos definidos en los objetos.
6.2. Según estructura
Según su estructura, los tipos de SGBD se diferencian en centralizados, cliente-servidor, paralelos y
distribuidos. Los sistemas centralizados se ejecutan en un único equipo, no existe paralelización y la gestión
y visualización de datos se realiza en la misma máquina. En general pueden atender a varios usuarios
simultáneamente. Los sistemas cliente-servidor presentan el interface en el lado del cliente y el servidor
provee el acceso a los datos, mientras una estructura paralela consta de varios procesadores y discos
trabajando en paralelo.
Por su parte, los sistemas distribuidos se estructuran en máquinas distantes conectadas en red,
compartiendo un esquema común con transacciones locales y globales. En estos sistemas, la BBDD real y
el software del SGBD pueden estar localizados en distintos lugares de una red. Los SGBD distribuidos
homogéneos usan el mismo SGBD en cada localización. Una tendencia actual es crear sw para tener
acceso a varias BBDD autónomas preexistentes almacenadas en SGBD distribuidos heterogéneos, dando
lugar a lo que se conoce como SGBD federados o sistemas multibase de datos en los que los SGBD
participantes tienen cierto grado de autonomía local.
6.3. Según usuarios
Atendiendo al número de usuarios a los que da servicio el sistema, los SGBD pueden clasificarse en
sistemas monousuario y multiusuario.Los sistemas monousuario sólo atienden peticiones de un único
usuario a la vez, siendo típico de sistemas tipo PC. Los sistemas multiusuario, por su parte permiten atender
peticiones de varios usuarios simultáneamente y son la mayor parte de los SGBD.
Por fin, también podrían clasificarse los SGBD en aquellos de propósito general o específico. La diferencia
suele estar en los requisitos de rendimiento que obligan a un diseño e implementación de SGBD específicos
para aplicaciones críticas, que no tienen cabida en un contexto general, como puedan ser aplicaciones de
bolsa, de reservas aéreas u otros sistemas de procesamiento de transacciones en línea (OLTP), que deben
atender un gran número de transacciones concurrentes sin excesivos retrasos.

154
TEMA 35. LA DEFINICIÓN DE DATOS. NIVELES DE DESCRIPCIÓN. LENGUAJES. DICCIONARIO DE
DATOS.

1. INTRODUCCIÓN
2. LA DEFINICIÓN DE DATOS
2.1. Jerárquico
2.2. Red
2.3. Relacional
2.4. Orientado a objetos
3. NIVELES DE DESCRIPCIÓN
3.1. Nivel de Arquitectura
3.2. Nivel de Datos
4. LENGUAJES
4.1. Jerárquico
4.2. NDL
4.3. SQL
4.4. XSD
5. DICCIONARIO DE DATOS

155
1. INTRODUCCIÓN
La definición de datos desde el punto de vista de los SGBD incluye la definición del concepto y sus
diferentes niveles de descripción, de SGBD y de modelado. La implementación de estos conceptos se
realiza con lenguajes de definición de cada modelo, en particular el relacional. Los modelos jerárquico y en
red son menos utilizados, aunque poseen gran utilidad didáctica. El modelo orientado a objetos también
resulta útil para explicar los modelos de mapeo de persistencia de objetos.
2. LA DEFINICIÓN DE DATOS
El objetivo de la definición de datos es especificar la estructura de una BBDD que soporte un modelo
conceptual concreto. Esto se hace detallando sus componentes, en particular los elementos que componen
la BBDD, su estructura, relaciones, reglas de integridad, controles de acceso, características físicas y vista
de cada usuario. La definición se realiza con los modelos de datos que se pasan a describir.
2.1. Jerárquico
Compuesto por una serie de registros básicos (segmentos) que se relacionan con otros segmentos,
formando una estructura de árbol. El conjunto de los árboles de diferentes tipos definidos en el sistema
forma la BBDD.
2.2. Red
Compuesto por una serie de registros de datos. Los registros se almacenan en ficheros, por tipos,
conjuntos o sets, que relacionan los registros uno a uno o uno a varios.
2.3. Relacional
Es el modelo más extendido. Se estructura con dos
elementos, la tupla y la relación.
Las tuplas se relacionan en conjuntos llamados relaciones.
Una tupla puede estar en una única relación. Las relaciones
pueden representarse en forma de tabla, en la que cada fila
representa una tupla, como en el ejemplo.
2.4. Orientado a objetos
El modelo de datos orientado a objetos encapsula métodos o procedimientos y datos en una unidad que se
denomina objeto. Los objetos a su vez se agrupan en clases. Un objeto puede contener enlaces a otros
objetos o estar compuesto por ellos. En una BBDD orientada a objetos, puede accederse a través de un
sistema gestor y almacenarse en disco directamente.
3. NIVELES DE DESCRIPCIÓN
Una vez elegido el modelo de datos, su descripción puede realizarse a distintos niveles. Uno de los
objetivos es abstraer al usuario el detalle de la implementación. Esto se consigue organizando su estructura
en niveles, basados principalmente en dos criterios, la arquitectura de la BBDD y el modelado de los datos.
La ventaja de esta organización es poder realizar cambios a un nivel sin afectar al resto, es decir, de forma
transparente (por ejemplo al ampliar la capacidad de almacenamiento).
3.1. Nivel de Arquitectura
La arquitectura más estandarizada para la definición de niveles es la ANSI/X3/SPARC, que divide el SGBD
en tres niveles: interno, conceptual y externo.
Nivel interno. Es el nivel más bajo de abstracción. Describe cómo se almacenan físicamente los datos:
tamaño de bloques, posición de registros, unidades físicas de almacenamiento, índice, etc.
Nivel conceptual. Define qué datos reales están almacenados y sus relaciones (limitaciones de integridad,
relaciones entre registros, etc.). A nivel conceptual se incluyen todos los datos que contendrá el SGBD.
Nivel externo. Es el de abstracción más alto y define para cada usuario un subesquema de la BBDD,
llamado externo, en función del perfil del usuario.
3.2. Nivel de Datos
A nivel de datos se persigue conocer qué datos almacenará el SGBD en cuestión. El modelado de datos
también se organiza en 3 niveles de abstracción: conceptual, lógico y físico.
Nivel conceptual. Define las reglas del sistema en estudio y el modelo de los datos para la funcionalidad
buscada. Se usan herramientas como el esquema entidad-relación.

156
Nivel lógico. Expresa las reglas del modelo conceptual con herramientas concretas ajustadas a uno de los
modelos de BBDD. Por ejemplo, modelo lógico relacional si se ha elegido un SGBD relacional
Nivel físico. Se definen los datos en función de los tres niveles de arquitectura del SGBD. Se adapta el
modelo lógico a las características del sistema que lo va a soportar.
4. LENGUAJES
Cada nivel de descripción de datos hace preciso un lenguaje para su definición física y estructural. A nivel
de arquitectura se distinguen los siguientes lenguajes.
Nivel interno y conceptual. Todos los SGBD deben poseer un lenguaje para la definición física de los datos.
No existe una separación real entre el nivel interno y el conceptual.
Nivel externo. El nivel externo presenta su lenguaje específico. Para el modelo de datos jerárquico es BCP
(Bloque de especificación de programa), en el modelo en red se usan subesquemas y en el relacional (SQL)
se usa la definición de vistas y tablespaces.
Desde la perspectiva de la descripción de datos, se usan los siguientes lenguajes:
Nivel conceptual. Se especifica mediante el modelo entidad-relación
Nivel lógico. Los sistemas relacionales ofrecen su esquema lógico relacional. Para el modelo en red se usa
el diagrama de estructura de datos y para el modelo jerárquico diagramas de Bachman, que también
pueden ser usados para el modelo en red.
Nivel físico. Cada modelo de datos usa un lenguaje. Por ejemplo, el modelo relacional SQL, o el modelo en
red que usa NDL.
4.1. Jerárquico
La definición de datos con criterio del modelo DBNAME = GestionFacturas
jerárquico se basa en segmentos (el
SEG NAME = Factura, BYTES=12
equivalente a las tuplas del modelo relacional)
y árboles, que definen la relación entre FIELD NAME=CodigoCliente,BYTES 4, START 1
segmentos. Se definen a la vez, como en el
ejemplo de la derecha. FIELD NAME=Nombre,BYTES 8, START
SEG NAME = Importe, PARENT=Factura, BYTES 8
Los controles de acceso se realizan
autorizando el acceso a un árbol concreto. FIELD NAME=Importe, BYTES 8, START 1
4.2. NDL
NDL (Network Database Languaje) es SCHEMA Name=GestionFacturas
un lenguaje de definición de datos del
RECORD NAME is Factura;
modelo en Red, definido por ANSI.
Otro estándar ISO para NDL es el ISO DUPLICATES NOT ALLOWED FOR codigo IN Factura.
8907:1987. Deriva del trabajo de
definición del modelo en red de un RECORD NAME IS CodClien; codigo TYPE IS CHARACTER 32.
grupo de trabajo llamado CODASYL y RECORD NAME IS Nombre; nombre TYPE IS CHARACTER 64.
prácticamente está en deususo.
RECORD NAME IS Importe; importe TYPE IS CHARACTER 64.
Los elementos de NDL son el registro
(similar a la tupla SQL), el fichero SET NAME IS Cliente;
(conjunto de registros) y el Set OWNER IS Factura
(relaciona registros). A la derecha se
muestra un ejemplo similar al anterior. MEMBER IS Nombre

4.3. SQL
Los elementos que integran una BBDD relacional son tuplas y relaciones. En SQL las tablas definen la
relación y los campos de las tuplas que la componen. Se realiza con la sentencia:
CREATE TABLE NombreRelación (definicion CampoTupla1, definicion CampoTupla2)
La integridad y definición de relaciones cuenta con recursos como claves ajenas, claves primarias y
disparadores. Las claves ajenas y primarias se incluyen como definición de las tablas.
Los disparadores consisten en la verificación de una PRIMARY KEY Campos
serie de condiciones y ejecución de ciertas acciones
FOREIGN KEY NombreClave REFERENCE Tabla
en respuesta a eventos de la BBDD.

157
Para definir los disparadores se usa el lenguaje de manipulación de datos o DML. SQL define un
sublenguaje de control de acceso, DCL, que permite asignar uno o varios permisos (inserción, borrado,
modificación) a ciertos recursos (tablas, columnas, etc.).
Las vistas de usuario, representan la GRANT Permiso ON recurso TO usuarios [with grant option]
posibilidad de definición de esquemas
CREATE VIEW nombreVista AS ConsultaSelección
externos que faciliten la consulta de datos.
La sintaxis de permisos y vistas es la mostrada en el recuadro. Algunos SGBD permiten la creación de
Tablespaces o espacios de usuario para la definición de esquemas externos.
4.4. XSD
XML, es un lenguaje de marcas extensible, por sus siglas en inglés. XSD es un lenguaje de definición de
datos basado en XML (XML Schema Definition). XML representa una estructura de datos, muy usada para
el intercambio de datos entre aplicaciones.
XSD permite definir <?xml version="1.0" encoding="UTF-8"?>
estructuras de datos
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
complejas usando XML. A
la derecha se muestra un <xsd:element name="Factura">
ejemplo.
<xsd:complexType>
XSD se orienta a una
<xsd:sequence>
mayor expresividad que la
descripción formal ofrecida <xsd:element name="CodigoCliente" type="xsd:string"/>
por los DTD. Supone una
alternativa y evolución. <xsd:element name="Nombre" type="xsd:string" maxOccurs="10"/>

XSD aporta muchos tipos </xsd:sequence>


de datos y tipos de datos <xsd:attribute name="importe" type="xsd:double"/>
complejos, lo que facilita la
potencia y funcionalidad de </xsd:complexType>
las aplicaciones que los </xsd:element>
usen en el procesamiento
de datos. </xsd:schema>

XSD se basa en espacios de nombres (namespaces). Cada namespace se compone de elementos y


atributos relacionados y cuya relación se establece al crearse. Además se permite la relación entre
elementos de distintos espacios.
XML y otras especificaciones y tecnologías, están muy en relación con la POO. Las BBDD orientadas a
objetos no son comunes, lo que si es más común es utilizar capas de persistencia para realizar mapeos de
objetos para el modelo relacional. Los mapeos objeto-relacionales no son un modelo en sí, son técnicas de
conversión del modelo de objetos al relacional.
Como framework de persistencia puede citarse Hibernate, que define, para cada tabla, qué columnas
almacenarán cada propiedad del objeto. Incluye métodos propios para no acceder directamente a la BBDD.
Apache propuso el framework iBatis, que define un mapeo XML para cada clase, indicando cómo realizar
las operaciones básicas para cada objeto. Otros entornos n-tier, como Enterprise Java Beans o Rails, usan
sus propios modelos de persistencia específicos sobre BDBD relacionales.
5. DICCIONARIO DE DATOS
El diccionario de datos es la herramienta usada para gestionar la información de una BBDD. Es una guía
que describe la BBDD y los objetos que la forman. Contiene las características lógicas del repositorio donde
se almacenan los datos del sistema, incluyendo nombre, descripción, alias, contenido y organización.
Identifica los procesos donde se emplean los datos y lugar donde se precisa acceso inmediato.
Como se ha indicado, una BBDD definirá un esquema interno, un esquema lógico y esquemas externos
(vistas). El DBA define estos esquemas mediante el diccionario de datos, que contendrá una descripción
interna, conceptual y externas, una descripción de campos, registros y relaciones e información relativa a la
seguridad e integridad de los datos.
Para el modelo relacional existen herramientas específicas, pero el diccionario de datos suele gestionarlo el
SGBD, que almacena la información como relaciones con las mismas características que el resto. La
ventaja es usar los mismos lenguajes que para datos como SQL. Cada fabricante implementa su versión.

158
En una BD relacional, el diccionario de datos contiene información sobre la estructura lógica y física de la
BBD, las definiciones de sus objetos (tablas, vistas, índices…), espacio asignado y usado por cada uno,
valores por defecto de las columnas de las tablas, restricciones de integridad, privilegios y roles de los
usuarios y auditoría de información, como los accesos a los objetos.
Además, el diccionario de datos debe soportar las descripciones de los modelos conceptual, lógico, interno
y externo de la BD, estar integrado en el SGBD, apoyar la transferencia eficiente de información al SGDB (la
conexión entre los modelos interno y externo debe ser realizada en tiempo de ejecución) y debe estar
almacenado en un medio de almacenamiento con acceso directo para la fácil recuperación de información.
El diccionario de datos es uno de los elementos clave de gestión para un administrador. No debe
confundirse el diccionario de datos de un SGBD con el diccionario de datos del proceso de análisis. El
primer contexto es el concreto de una implementación; el segundo es una descripción conceptual de los
datos del sistema a analizar.

159
TEMA 36. LA MANIPULACIÓN DE DATOS. OPERACIONES. LENGUAJES. OPTIMIZACIÓN DE
CONSULTAS.

1. INTRODUCCIÓN
2. LA MANIPULACIÓN DE DATOS
3. OPERACIONES
3.1. Álgebra relacional
3.2. Cálculo relacional
4. LENGUAJES
5. OPTIMIZACIÓN DE CONSULTAS

160
1. INTRODUCCIÓN
Un SGBD representa un modo fiable de acceso a datos, separando éstos de las aplicaciones que los
requieren. Un SGBD suele estructurarse en tres niveles de abstracción: externo, conceptual y físico.
El nivel externo, define los datos con la perspectiva del usuario. El nivel conceptual define cómo se
organizan los datos en el sistema y el nivel físico define cómo se almacenan. Un SGBD debe entonces
permitir la definición de datos (con un lenguaje de definición, DDL), su gestión (con un lenguaje DML) y el
control de acceso (DCL).
2. LA MANIPULACIÓN DE DATOS
Una vez que se tienen estructurados y definidos los datos, se hace necesario manipularlos, existe la
necesidad de trabajar con la información que representan. Para ello, los SGBD proporcionan una serie de
reglas que se agrupan en un código llamado lenguaje de manipulación de datos o DML por sus siglas en
inglés. Son lenguajes de consulta con los que los usuarios pueden gestionar la información. El DML más
extendido en la actualidad es SQL. Otros son IMS/DL1 o Codasyl, por ejemplo.
3. OPERACIONES
Una operación es una acción indivisible sobre registros o relaciones de la BBDD. Una operación del modelo
relacional debe permitir manipular datos estructurados en forma de relaciones. Las operaciones pueden
agruparse en dos tipos, la consulta y la actualización. La actualización distingue 3 operaciones: inserción,
modificación y eliminación, que a veces se presentan de forma independiente, estudiándose por tanto,
cuatro operaciones básicas. Además, cada modelo de BBDD puede ampliar el repertorio de operaciones
básico, en función de su naturaleza.
Consulta. Consiste en la obtención de información a partir de las relaciones que contiene la BBDD. La
obtención de los datos puede requerir el análisis y la extracción de datos de una o más relaciones. En SQL,
se realiza con la sentencia SELECT.
Actualización. Es un cambio nuevo de la información de la BBDD. La actualización puede darse insertando
un nuevo dato, modificándolo o eliminándolo. La inserción consiste en añadir registros (en SQL, sentencia
INSERT), la modificación en alterar la información de un registro (en SQL, sentencia UPDATE) y la
eliminación en su borrado (en SQL, sentencia DELETE).
3.1. Álgebra relacional
La formulación de las operaciones se apoya en dos tipos de notación, la del álgebra y la del cálculo
relacional. La primera, es una notación que presenta las operaciones aplicando operadores a las relaciones.
La notación del cálculo relaciónal aplica operadores como condiciones lógicas entre tuplas. La notación
algebraica define varias operaciones:
SELECT (σ). Obtiene las tuplas que satisfagan una condición en una relación. Si es R una tabla con el
atributo A, σA=a(R) = {t ∈ R ∣ t(A) = a} donde t es una tupla de R y t(A) el valor del atributo A de la tupla t.
PROJECT (π). Obtiene atributos (columnas) específicos de una relación. Sea R una relación que contiene
un atributo X. πX(R) = {t(X) ∣ t ∈ R}, donde t(X) denota el valor del atributo X de la tupla t.
PRODUCT (×). Define el producto cartesiano de dos relaciones. Si R es una tabla de rango k1 y S de rango
k2. R × S es el conjunto de las k1 + k2 tuplas cuyos primeros k1 términos forman una tupla en R y cuyos
últimos k2 componentes forman una tupla en S.
UNION (∪). Es la unión de conjuntos. Sean las tablas R y S del mismo rango. La unión (R ∪ S) es el
conjunto de las tuplas que están en R, en S o en ambas a la vez.
INTERSECT (∩). Es la intersección de conjuntos. Sean las tablas R y S del mismo rango. Su intersección (R
∩ S) es el conjunto de las tuplas que están en R y en S a la vez.
DIFFERENCE (− o ∖). Es el conjunto diferencia de tablas. Sean R y S dos tablas del mismo rango. Su
diferencia (R – S) es el conjunto de las tuplas que están en R y no en S.
JOIN (Π). Es la conexión de tablas por sus atributos comunes. Sea R una tabla con los atributos A, B y C y
sea S una tabla con los atributos C, D y E. C es un atributo común. R Π S = π R.A,R.B,R.C,S.D,S.E(σR.C=S.C(R × S)).
Es decir, es la selección de tuplas cuyos valores para el atributo C sea igual (σR.C = S.C), haciendo su
producto R × S. El resultado devolvería una tabla con el atributo C duplicado, que podría eliminarse.
DIVIDE (÷). Sea R una tabla con los atributos A, B, C, y D y sea S una tabla con los atributos C y D. Se
define la división de las mismas como R ÷ S = {t ∣ ∀ ts ∈ S ∃ tr ∈ R,, tr(A,B)=t∧tr(C,D)=ts} donde tr(x,y) es una
tupla de la tabla R con sólo los componentes x e y. La tupla t consiste sólo en los componentes A y B de la
relación R.

161
3.2. Cálculo relacional
El cálculo relacional se basa en la lógica de primer orden. Presenta dos variantes, el cálculo relacional de
dominios (DRC), que opera con componentes (atributos) de las tuplas y el cálculo relacional de tuplas
(TRC), que opera con tuplas.
El cálculo relacional de tuplas tienen el siguiente formato: x(A) ∣ F(x) siendo x una variable de tipo tupla, A
un conjunto de atributos y F una fórmula. El resultado son todas las tuplas t(A) que satisfagan F(t).
El cálculo relacional de dominios posee el formato t1 θ t2, donde t1 y t2 son términos y θ es un operador de
comparación. Su definición es: { t1,t2,t3 ∈ A(t1,t2,t3) ∧ ∃s3,s4(B(s1,s2,s3,s4) ∧ t1=s3 ∧ s4>300000) }. Las
fórmulas se construyen del mismo modo que en el cálculo de tuplas.
El álgebra y cálculo relacionales tienen el mismo poder de expresión. Una consulta determinada puede
realizarse usando cualquiera de ambos, como demostró Codd en 1972 con su algoritmo de reducción. A
veces se indica que los lenguajes basados en cálculo relacional son de más alto nivel o más declarativos
porque su compilador o intérprete marca el orden de evaluación más eficiente, a diferencia de los basados
en álgebra relacional, donde se especifica el orden de las operaciones directamente.
4. LENGUAJES
Los lenguajes de manipulación de datos (DML) distinguen dos tipos, procedimentales y declarativos. En
general son de más alto nivel que los lenguajes de programación.
Lenguajes procedimentales. Permiten al usuario declarar las instrucciones para realizar operaciones que
ofrezcan el resultado deseado.
Lenguajes declarativos. Permiten al usuario describir la información deseada sin especificar un
procedimiento de obtención de la misma.
Los lenguajes basados en álgebra relacional, al basarse en la teoría de conjuntos, definen consultas,
obligando a seguir etapas construidas con operaciones del álgebra relacional, resultando en una nueva
relación con los datos de la consulta. Por tanto, son lenguajes procedimentales.
Los lenguajes basados en cálculo relacional se basan en la lógica de predicados. Se sirve de una notación
que formula la consulta en términos de las relaciones. Al no describir procedimientos, se dice que son
lenguajes declarativos. El lenguaje SQL combina construcciones de álgebra y cálculo relacionales, con
predominio del cálculo. Por tanto, puede considerarse como lenguaje declarativo.
5. OPTIMIZACIÓN DE CONSULTAS
La optimización de consultas se refiere a la mejora del tiempo de respuesta de la BBDD, es decir, mejorar la
eficiencia. El problema surge desde que una consulta al realizarse de distintas formas puede generar un
número de lecturas que difieran en varios órdenes de magnitud. Esto supone un coste en tiempo, uso de la
red de comunicación, almacenamiento, cómputo, etc. En definitiva un coste en rendimiento.
Por tanto, la optimización de consultas es un aspecto importante de la manipulación de datos que en
general sigue un procedimiento que distingue cuatro etapas: la representación interna de consultas, la
conversión a forma canónica, la elección de procedimientos de bajo nivel y la elección de planes de
consulta.
La representación interna de consultas. Debe ser relacionalmente completa, ofrecer un apoyo para el resto
de etapas y proporcionar un grado de libertad para realizar posibles optimizaciones. Se representará con los
lenguajes estudiados.
Conversión a forma canónica. Existen optimizaciones previas con un resultado positivo seguro. Por tanto se
orienta a definir una expresión equivalente de una consulta, que mejore el rendimiento, la conocida como
forma canónica de la consulta.
Elección de procedimientos de bajo nivel. Consiste en evaluar una consulta previamente transformada, sus
índices, rutas de acceso y distribución de los valores de los datos almacenados para realizar una
agrupación física de los registros.
Un optimizador debe tener algún procedimiento disponible para operaciones join (más complejas) como los
casos en que la condición sea con clave candidata, el campo de restricción esté indexado o el campo de
restricción no esté indexado pero sí agrupados los datos físicamente.
Elección de planes de consulta. Un plan de consulta debe contemplar una estimación de costes, que como
se ha indicado dependen de varios factores, en particular la generación de resultados intermedios, en
relación directa con el número de E/S
Algunas estrategias generales de optimización serían:

162
1. Realizar las selecciones tan pronto como sea posible
2. Combinar ciertas selecciones con un producto cartesiano anterior, para realizar una asociación o JOIN
3. Combinar secuencias de operaciones unarias, como selecciones y proyecciones
4. Detectar subconsultas con resultados equivalentes que puedan reutilizarse en una misma consulta
5. Mediante cascada de selecciones, sustituir una selección compuesta en varias simples
6. Mediante sus propiedades, desplazar cada selección y proyección simple lo más abajo posible del árbol
7. Usar las propiedades de proyección y selección para combinar cascadas de proyecciones y selecciones
en una selección sencilla, una proyección sencilla o una selección seguida de una proyección
Con esta estrategia se persigue hacer todas las proyecciones y a continuación todas las selecciones que
afecten a una misma relación en vez de alternar dichas operaciones.
Además, se puede intentar dividir los nodos interiores del árbol resultante en grupos de modo que todo nodo
interior que presente una operación binaria esté en un grupo con sus antecesores de una operación unitaria.
El grupo incluirá toda cadena de descendientes correspondientes a operaciones unitarias y que terminen en
una hoja del árbol, excepto en caso que la operación binaria sea un producto cartesiano no seguido de
selección para formar un JOIN.

163
TEMA 37. MODELO DE DATOS JERÁRQUICO Y EN RED. ESTRUCTURAS. OPERACIONES.

1. INTRODUCCIÓN
2. MODELO DE DATOS JERÁRQUICO Y EN RED
2.1. Modelo de datos en red
2.2. Modelo de datos jerárquico
3. ESTRUCTURAS
3.1. Modelo de datos en red
3.2. Modelo de datos jerárquico
4. OPERACIONES
4.1. Modelo de datos en red
4.2. Modelo de datos jerárquico

164
1. INTRODUCCIÓN
Los sistemas jerárquico y en red están obsoletos. Pero didácticamente ofrecen la perspectiva de evolución
de los SGBD y por eso se usan, ya que ofrecen una estructuración de la información más directa.
2. MODELO DE DATOS JERÁRQUICO Y EN RED
2.1. Modelo de datos en red
El modelo en red representa la información como un conjunto de registros conectados entre sí por enlaces.
Cada registro puede tener varios padres y varios hijos, formando una retícula o red, que le da nombre. Es
un modelo teórico potente, pero complejo de implementar.
Las primeras implementaciones se basaron en las especificaciones del grupo Codasyl (Conference on Data
System Languages), un consorcio de industrias informáticas creado en 1959. Un subgrupo de Codasyl se
encargó de la definición de la gestión de datos, el DBTG, que publicó las primeras especificaciones para el
modelo en red, conocido como Modelo Codasyl.
Las especificaciones definían varios lenguajes por separado: un lenguaje DDL para definir el esquema de la
BBDD, otro DDL para crear uno o más subesquemas para definir vistas en aplicaciones y un lenguaje de
manipulación de datos (DML) para definir instrucciones para COBOL.
2.2. Modelo de datos jerárquico
Puede considerarse el modelo jerárquico como un caso particular del modelo en red. Las BBDD jerárquicas
se concibieron en la década de los 60. La primera implementación del modelo fue IMS (Information
Management System) de IBM, creado para el programa Apollo de la NASA. El sector banca y AAPP
adoptaron también esta tecnología. Uno de los más fogosos defensores del modelo fue Bachman frente a
Codd, defensor del modelo relacional. El modelo es procedimental. No permite inclusión de reglas
adicionales de integridad, salvo las incluidas en los programas de acceso a datos. Los controles de acceso
se realizan autorizando o denegando al usuario el acceso a árboles concretos.
3. ESTRUCTURAS
3.1. Modelo de datos en red
Los elementos del modelo en red SCHEMA Name=Docencia
Codasyl son registros, ficheros y
RECORD NAME IS Departamento;
conjuntos.
DUPLICATES NOT ALLOWED FOR codigo IN Departamento;
Un registro es una colección de campos y
representa la unidad mínima de acceso. codigo TYPE IS CHARACTER 8;
Un fichero es un conjunto de registros del
mismo tipo. No es necesaria su definición nombre TYPE IS CHARACTER 50.
ya que para cada tipo de registro se crea RECORD NAME IS Profesor
un fichero. Un conjunto o set es un
enlace del modelo de red. DUPLICATES NOT ALLOWED FOR dni IN Profesor;

La potencia del modelo en red reside en dni TYPE IS CHARACTER 10;


los sets, pero su implementación es nombre TYPE IS CHARACTER 50.
compleja. Las restricciones que impuso
Codasyl sobre los sets fueron admitir sólo RECORD NAME IS Alumno;
tipos de interrelaciones jerárquicas de DUPLICATES NOT ALLOWED FOR dni IN alumno;
dos niveles: propietario y miembro (en el
modelo teórico, un set podría unir más de dni TYPE IS CHARACTER 10;
dos registros). nombre TYPE IS CHARACTER 50.
En el nivel propietario solo se permite un SET NAME IS Departamento_Profesor;
tipo de registro. Una misma ocurrencia de
miembro no puede pertenecer en un OWNER IS Departamento
mismo tipo de set a más de un MEMBER IS Profesor
propietario. Esto hace que se simplifique
la implementación física de los set, ya SET NAME IS Profesor_Alumno;
que sus ocurrencias se pueden organizar OWNER IS Profesor
como una cadena.
MEMBER IS Alumno
En el cuadro se muestra un ejemplo de
definición de BBDD con tres registros y RETENTION IS OPTIONAL
dos conjuntos. INSERTION IS AUTOMATIC

165
En un esquema entidad relación las relaciones N:M se podrían convertir en varias relaciones 1:N con hijos
nuevos. RETENTION puede tomar tres valores, FIXED, MANDATORY u OPTIONAL. FIXED indica que una
ocurrencia en un conjunto no puede desconectarse, ni pasar a conectar con un registro diferente.
MANDATORY que las ocurrencias no pueden desconectarse, pero pueden reconectarse a otro registro y
OPTIONAL que las ocurrencias del conjunto pueden desconectarse o reconectarse. En el ejemplo, un
profesor conectado a un departamento, si el set es MANDATORY, nunca podrá estar sin departamento.
INSERTION puede ser AUTOMATIC, si un registro se conecta automáticamente a la ocurrencia adecuada, o
MANUAL, cuando debe hacerse explícitamente mediante CONNECT
3.2. Modelo de datos jerárquico
El modelo jerárquico representa la información con estructura de árbol. Los registros, menos la raíz, son
hijos de otro registro, padre, que debe ser único. Los elementos que lo componen son el segmento, árbol y
segmentos virtuales.
El segmento equivalente al concepto de registro y consta de campos. El árbol representa las relaciones
padre-hijo entre segmentos. Una BBDD jerárquica define uno o más tipos de árbol. De cada árbol sólo
puede existir una instancia. Los segmentos virtuales evitan la duplicidad de datos cuando debe realizarse
para representar las relaciones N a N contienen un puntero al registro original.
Siguiendo el ejemplo anterior, la relación DBD NAME=Docencia
N:N entre profesor y alumno no podría
SEG NAME=Departamento, BYTES=58
representarse directamente en el modelo
jerárquico. Habría que usar registros FIELD NAME
virtuales o duplicar información.
FIELD NAME=Nombre, BYTES = 50, START = 9
Un árbol que modela esa información se
SEG NAME=Profesor, BYTES =60, PARENT=Departamento
muestra en el recuadro.
FIELD NAME=(DNI,SEQ), BYTES=10, START=1
El sistema jerárquico ofrece varias formas
de almacenamiento, incluyendo el FIELD NAME=Nombre, BYTES=50, START=11
secuencial en cinta (que no permite
modificaciones sin reescribir la BBDD) o el SEG NAME=Alumno, BYTES=60, PARENT=Profesor
indexado que permite acceder FIELD NAME=(DNI,SEQ), BYTES=10, START=1
directamente a cada elemento.
FIELD NAME=Nombre, BYTES=50, START=11
4. OPERACIONES
4.1. Modelo de datos en red
El DML para el modelo en red es navegacional: cada MOVE 'Jesus' TO Nombre IN Factura
operador selecciona un registro, y se referencia al
FIND ANY Factura USING Nombre
último registro seleccionado.
DO WHILE DB_STATUS=0
El SGBD mantiene un indicador de posición por
cada tipo de registro y conjunto. GET Datos-Factura
Las operaciones de navegación y recuperación de FIND DUPLICATE Factura USING Nombre
registros se realizan con las sentencias FIND y GET.
END DO
FIND posiciona un registro. Se puede usar indicando claves. Si se desea modificar el registro, debe
añadirse FOR UPDATE. Una vez posicionado un registro se usa GET para recuperar su valor. En el cuadro
se muestra un ejemplo. Para recorrer conjuntos, se usa: FIND... WHITHIN Nombre-Set
Para las operaciones de actualización de registros se usan las sentencias STORE, MODIFY y ERASE.
STORE crea un nuevo registro. MODIFY reemplaza el registro actual (donde está posicionado el puntero de
fichero) y ERASE elimina un registro. ERASE ALL elimina todos los registros relacionados en un conjunto.
Para las operaciones de actualización de conjuntos MOVE '001' TO Codigo IN Departamento
se usan las sentencias CONNECT, RECONNECT y
FIND ANY Departamento USING Codigo
DISCONNECT. CONNECT conecta un registro a un
conjunto y quedará conectado al padre donde esté MOVE '1R' TO DNI IN Profesor
apuntando el puntero del fichero. Un ejemplo se
muestra en el cuadro, donde se posiciona el puntero FIND ANY Profesor USING DNI
en el departamento de codigo '001'. CONNECT Profesor TO Departamento-Profesor
Lo que se conecte, se conectará con ese departamento como padre. En la sentencia Find Any Profesor, se
conectará ese profesor. Al final se conecta el profesor 1R al departamento 001.

166
RECONNECT reconecta un registro a un conjunto. Funciona como CONNECT. Y DISCONNECT
desconecta un elemento de un conjunto. Debe ser posicionado primero en el fichero correspondiente al
registro a desconectar.
4.2. Modelo de datos jerárquico
Las operaciones en el modelo de datos jerárquico se resumen en recuperación de registors, adición,
modificación y borrado.El sistema jerárquico guarda un puntero de posición dentro del árbol, y un área de
memoria con la que se intercambian datos que contiene un segmento de cada tipo.
Los registros se recuperan con la sentencia GET, que tiene la sintaxis:
GET [FIRST] [NEXT] [HOLD] Registro [WHERE Condición]
Al hacer GET NEXT se obtienen el resto de nodos, en recorrido preorden del árbol. No se obtiene un único
tipo de segmento, se va obteniendo el que corresponde. La forma de obtener los registros hijos de un
elemento es con GET NEXT WITHIN PARENT, que devuelve el siguiente elemento hijo del segmento que
esté apuntado por el contador.
La adición de un registro se realiza con la sentencia INSERT, que añade un segmento en la posición donde
se encuentra el apuntador de segmentos.
El reemplazo del contenido de un segmento seleccionado hace uso de la sentencia REPLACE. El borrado
del segmento a que se apunta se realiza con DELETE. Si el segmento tiene hijos, se eliminan también
Las instrucciones de actualización también hacen uso del área de memoria compartida. Se modificará el
registro con el contenido de esa área.

167
TEMA 38. MODELO DE DATOS RELACIONAL. ESTRUCTURA. OPERACIONES. ÁLGEBRA
RELACIONAL.

1. INTRODUCCIÓN
2. MODELO DE DATOS RELACIONAL
3. ESTRUCTURA
4. OPERACIONES
5. ÁLGEBRA RELACIONAL

168
1. INTRODUCCIÓN
Los primeros sistemas de gestión de datos usaban modelos jerárquicos o en red, muy dependientes de la
estructura física del sistema. El modelo de datos relacional de Codd supera sus limitacionesabstrayendo los
detalles del almacenamiento de la BBDD. El concepto clave es la relación entre datos. El modelo se ha
impuesto y actualmente, la mayoría de SGBD son relacionales.
2. MODELO DE DATOS RELACIONAL
El modelo de datos relacional es ampliamente usado en la actualidad. Su funcionalidad se resume en el
establecimiento de cinco objetivos: independencia física y lógica, flexibilidad, uniformidad y sencillez. La
independencia física separa el almacenamiento de datos de su tratamiento, mientras la independencia
lógica lo hace del código del gestor. La flexibilidad ofrece al usuario diversas opciones de presentación de
datos y la uniformidad y sencillez se refieren a la forma de organización de datos normalizada y de fácil uso.
El elemento central del modelo es la relación (tabla) como estructura sobre la que se realiza toda operación.
Una tabla se organiza en tuplas o registros, con el mismo número de campos (columnas). El tipo de datos
de un campo ha de ser igual en todos los registros. La información se recupera con consultas de un
lenguaje estándar como pueda ser SQL.
Para implementar el modelo se propusieron 12 recomendaciones o reglas, enumeradas en la tabla. En la
actualidad no se soportan por completo, como en el caso de la actualización de vistas y la distribución.
Regla Significado Regla Significado
Información Representada con tablas Distribución Soporte a BBDD distribuidas
Tratamiento de Lógica de tres valores Catálogo en El catálogo se consulta igual que
valores nulos línea dinámico los datos
Alto nivel de inserción Posibilidad de hacerlo con Lenguaje Debe existir un lenguaje
actualización y conjuntos o por filas completo de expresable con caracteres para
supresión datos acceso completo
No subversión A bajo nivel se respetan Independencia La integridad no debe depender
las restricciones de integridad del lenguaje
Independencia lógica Los cambios en tablas no Independencia Los cambios físicos afectarán a
de datos afectarán a programas física de datos programas
Acceso garantizado Acceso a tabla, clave y Actualización Todas las vistas actualizables el
columna de vistas sistema debe poder actualizarlas
El diseño de BBDD y su representación gráfica suele usar el modelo entidad-relación. Se usan distintas
formas; rectángulos para las entidades (tablas), elipses para atributos o columnas (si son clave primaria se
subrayan y se indica si es atómico o multivaluado), polígonos para asociaciones de entidades y rectángulos
dobles para entidades y asociaciones débiles dependientes de una entidad padre.
Una entidad que puede especializarse se representa con un triángulo. Los atributos también pueden
representarse con un círculo con el nombre, que será negro si es clave primaria y la mitad negro y mitad
blanco si es clave alternativa. Si es multivaluado se usa una flecha y si es opcional puntos suspensivos.
Si el atributo está compuesto de otros, se unen a la entidad con la misma línea. El grado de la asociación
indica el número de entidades y se representa como M:N. La cardinalidad define el máximo y mínimo
número de ocurrencias de una entidad en una asociación y se representa (0,1), (1,1), (0,M), (1,M), o (M,N).
El diseño debe definir primero las entidades, sus atributos y la clave primaria. Una vez realizado se
establecen las relaciones entre entidades, indicando tipo y cardinalidad. En general, se comienza realizando
una descripción escrita en lenguaje natural y como orientación se identifican entidades con sustantivos y
atributos y los verbos pueden indicar asociaciones.
Una vez diseñado el modelo E/R se transforma en relacional construyendo tablas a partir de entidades. Las
relaciones M:N y los atributos múltiples definirán tablas. Si existe una entidad especializada, se puede
eliminar la entidad padre, lo que es redundante o eliminar las entidades hijas y dar todos los atributos a la
entidad padre, lo que genera valores nulos.
Las asociaciones binarias son más complejas a cambio de claridad y jerarquía, por lo que es de las más
usadas. Las asociaciones 1:1 con cardinalidad (1,1) se suelen agrupar en una tabla y si la cardinalidad es
distinta se puede usar una tabla para la relación o añadir una clave foránea como en la relación 1:M en la
tabla M. La relación N:M siempre necesitará una tercera tabla para la relación, al igual que si existen más de

169
dos entidades. Las asociaciones reflexivas de cardinalidad 1 usarán una clave foránea a su clave principal y
si es N:M se usará una tabla para la relación.
La transformación de modelos aconseja evitar redundancias y garantizar la integridad, lo que se consigue
normalizando la BBDD. Para ello se distinguen 5 formas de normalización, de las que al menos deben
realizarse las conocidas como 3 primeras. Si se decide desnormalizar por algún motivo particular de
implementación deben prevenirse las posibles incoherencias. Las formas normales son las siguientes.
Primera forma normal. Es la de una BBDD en que el valor de los dominios de los atributos es único o
atómico, es decir, para cada campo de un registro (fila) hay un solo valor, no un conjunto. Se consigue
eliminando grupos repetitivos, información derivada, opcionalidad y especialización.
Ejemplo: Sea una tabla de contabilidad con una columna facturas, que puede tener distintos valores, con lo
que no estaría en primera forma normal. La transformación de la BBDD sería eliminar esa columna de la
tabla y crear otra llamada facturas con un identificador único para cada factura. Esto requeriría otra tabla
para relacionar contabilidad y facturas. De esta forma la BBDD cumpliría la primera forma normal.
Segunda forma normal. Es la de una BBDD en primera forma normal y cada atributo distinto de la clave
primaria tiene dependencia funcional completa de la clave candidata. Es decir, conociendo el valor de un
atributo puede conocerse el valor de otro.
Ejemplo: Sea una tabla con atributos usuario, artículo y domicilio. Si un usuario puede asociarse a varios
artículos, por cada registro, el domicilio se repetirá tantas veces como el registro del usuario. Esto podría dar
lugar a incongruencias. Por tanto, si se crea otra tabla con un registro que tenga como campos el usuario y
domicilio, este atributo sólo dependerá del usuario y por tanto se tendrá la BBDD en segunda forma normal.
Tercera forma normal. Una BBDD está en tercera forma normal si lo está en la segunda y no hay
dependencias entre atributos no clave, o sea, un atributo que no sea clave primaria no depende de otro
distinto a la clave primaria. Una versión más restrictiva de esta forma es la forma normal de Boyce-Codd, en
la que todo determinante (atributo que determina completamente a otro) es clave candidata.
Ejemplo: Sea una tabla con atributos código, usuario y teléfono. El teléfono depende del usuario, que a su
vez depende del código, existiendo una dependencia transitiva que puede generar incoherencias al no
impedirse que el mismo usuario se muestre con distintos teléfonos en distintos registros. Por tanto, la
solución pasa por la creación de otra tabla que relacione un usuario como clave foránea con un teléfono.
La mayoría de tablas en tercera forma normal no presentan incoherencias a la hora de actualizar, insertar o
borrar y si se dan, pueden evitarse con las formas de Boyce-Codd o formas normales más altas, que
sucesivamente eliminan dependencias más indirectas entre campos.
Cuarta forma normal. Cada dependencia múltiple no funcional está definida por una clave candidata o un
conjunto de claves primarias. Es decir, si está en tercera forma normal y no presenta dependencias
múltiples no triviales.
Quinta forma normal. Se da cuando una tabla se encuentra en la cuarta forma normal y cada relación de
dependencia se define por las claves candidatas. Este tipo de normalización se usa raramente por no existir
un conjunto de reglas de inferencia que sean seguras y completas para razonar con las restricciones.
3. ESTRUCTURA
El modelo de datos relacional se estructura en base a elementos y restricciones. Los elementos distinguen
dos estructuras, la relación (tabla) y la tupla (registro o fila).
La relación o tabla se apoya en la teoría de conjuntos de forma que la
relación de los conjuntos (dominios) D1, D2,..., Dn es un subconjunto
de su producto cartesiano y n representa el grado de la relación.
Cada tabla tiene un esquema que define la estructura (metadatos) e
instancias. El esquema define la cantidad de columnas, nombre y sus
atributos, mientras que las instancias son los datos almacenados y no
tienen por qué corresponderse con toda la tabla, ya que puede
trabajarse con subconjuntos. La tabla muestra la correspondencia
entre la notación formal y la utilizada en SQL.
Una tupla o registro es una lista ordenada de atributos pertenecientes a un dominio. Un atributo posee
nombre, un número finito de valores del mismo tipo y es atómico. Una visión que ayuda a comprender la
estructura es identificar tuplas con filas de una tabla y cada campo de la tupla con las columnas. Se define
la cardinalidad como el número de tuplas y el grado como el número de columnas.
Los tipos de datos son los impuestos por el SGBD aunque se permita que los usuarios generen otros a
partir de los predefinidos. Codd también introduce la idea de valor nulo, utilizado para modelar información

170
desconocida, haciendo uso de una lógica triestado en que (V and Nulo > Nulo) y (V or Nulo > Verdadero).
Las restricciones son el segundo fundamento del modelo relacional. Son limitaciones impuestas a los
dominios para evitar incoherencias como la existencia de tuplas imposibles en el sistema modelado. Se
puede diferenciar entre restricciones inherentes y de usuario.
Las restricciones inherentes exigen que no haya tuplas repetidas, la no existencia de orden tipo arriba/abajo
o izquierda/derecha, que cada atributo tenga valor único y no se admiten estructuras en una tupla. También
se las conoce como restricciones de unicidad.
Las restricciones de usuario o de valor no nulo obligan a la unicidad con valores no nulos, identificación y
referencias débiles (sólo los completos), parciales (coinciden los no nulos) y completas (sólo los completos o
los nulos se comprueban). El cálculo relacional también permite añadir restricciones.
Otros conceptos importantes de los que se sirve la estructura del modelo son el de clave primaria y ajena.
Una clave primaria es una o más columnas de la tabla e identifica de forma unívoca un registro, cumpliendo
por tanto las dos restricciones descritas. Una clave ajena permite relacionar tablas apuntando a la clave
primaria de otra tabla. Las relaciones pueden ser 1:1, 1:N o N:M y definen la integridad referencial evitando,
por ejemplo, borrar un registro referenciado por la clave ajena de otro y permiten realizar modificaciones o
borrados en cascada.
4. OPERACIONES
Para la operación con BBDD relacionales, Codd propuso la utilización de lenguajes de fundamento
matemático no procedimentales. Las operaciones pueden dividirse en relacionales o específicas, de
conjunto y otras operaciones.
Operaciones específicas o relacionales. Realizan una acción sobre elementos. Destacan la selección
(select), que extrae tuplas especificas de una tabla, la proyección (where), para extraer atributos (columnas)
y la reunión (join), que crea una tabla con las tuplas de una o varias relaciones.
Operaciones de conjunto. Para operar directamente con conjuntos. Son las típicas, como la unión (U), que
crea una tabla con las columnas de todas las tablas unidas, la intersección (∩), que crea una tabla con las
tuplas que aparecen simultáneamente en las tablas intersecadas, la diferencia (-) crea una tabla con las
tuplas que aparecen en la primera tabla y no en la segunda y el producto cartesiano (x) que crea una tabla
de otras dos, combinando de toda forma posible pares de tuplas, una de cada tabla.
Otras operaciones. Las típicas de gestión de la BBDD, como el renombrado (AS de SQL), asignación
(vistas), inserción (r=r ∪ s), eliminación (r=r – s), actualización o división.
Las operaciones en el modelo de datos relacional se pueden agrupar en lo que se conoce como cálculo
relacional. A diferencia del álgebra relacional, que se explica en el siguiente punto, el cálculo relacional
define operaciones que indican cómo obtener un resultado, no lo que se quiere obtener, que sería el objeto
del álgebra. El cálculo y las operaciones se orienta al manejo de tuplas variables (cada variable es una tupla
de una relación) y dominios (cada variable se refiere a un determinado dominio).
El cálculo relacional de tuplas y de dominios sigue la estructura lógica del cálculo, con la salvedad que en
las operaciones con tuplas se manejan tuplas como elementos variables o términos y en el cálculo con
dominios se opera con dominios.
A una expresión de operación, una fórmula, también se la denomina átomo. Una fórmula, es una expresión
que contendrá variables, que podrán ser tuplas o dominios y operadores, de tipo lógico, existencial o
universal. Una constante es un valor determinado de un dominio.
El cálculo es transitivo, de forma que si F y G son fórmulas, también lo serán (F), ¬F, F U G, F ∩ G, etc. y lo
mismo para las variables de tupla, t(F). En el caso de las operaciones con dominios, las fórmulas se
construyen en la forma R (t1, t2,...,tn), siendo R una relación de grado igual a n o superior y t1, t2,...,tn los
términos pertenececientes a los dominios asociados a los atributos de la relación. Las fórmulas poseen la
misma sintaxis que en el caso de las tuplas.
La definición dadas en cálculo y álgebra siempre pueden resultar demasiado abstractas y ser difíciles de
digerir en la primera presentación. La comprensión real de los conceptos suele realizarse al utilizar los
conceptos con ejemplos de implementación. Esto se concreta en el siguiente tema donde se utiliza el
lenguaje SQL como lenguaje representativo de los de definición y manipulación de datos en sistemas de
BBDD relacionales.
5. ÁLGEBRA RELACIONAL
El modelo de datos relacional, en el contexto de las BBDD, utiliza el álgebra relacional para definir
relaciones que permitan organizar y operar con la información.

171
Como se acaba de ver, puede distinguirse entre álgebra y cálculo relacional. La diferencia entre álgebra y
cálculo estriba en que mientras el álgebra define reglas de construcción de relaciones, el cálculo construye
las operaciones con las relaciones en base a unos términos dados mediante un lenguaje, más de
construcción que de manejo.
El álgebra relacional usa un lenguaje orientado a la lógica y operaciones con conjuntos. Su implementación
particular, con lenguajes como SQL, corre a cargo del SGBD del que se trate. Por tanto el álgebra relacional
trabaja en un plano más abstracto. El álgebra relacional define seis relaciones u operaciones básicas:
Selección. Permite seleccionar un conjunto de tuplas (filas) que cumplan una relación, que será expresada
en forma lógica, con operaciones tipo AND, OR, >=, etc.
Proyección. Extrae atributos (columnas) de un conjunto de tuplas en función de una relación.
Producto cartesiano. Construye una relación a partir de dos relaciones dadas combinando de todas las
formas posibles pares de tuplas, una de cada relación. Por ejemplo, dadas dos relaciones de 5 tuplas cada
una, el resultado del producto cartesiano serían 25 tuplas combinanda las columnas de ambas relaciones.
Unión. Construye una relación uniendo tuplas compatibles que aparecen en al menos una relación.
Intersección. Construye una relación con las tuplas que aparecen en ambas relaciones.
Diferencia. Construye una relación con las tuplas que aparecen en la primera y no en la segunda.
De estas relaciones básicas se deducen operaciones derivadas, también ampliamente utilizadas.
Combinación (natural Join). Condiciona el producto cartesiano imponiendo sobre él la selección de las
tuplas que cumplen cierta condición. De esta forma se limita el resultado del producto cartesiano, que puede
ser muy extenso y ofrecer mucha información no necesaria.
Enlace. Construye una relación de otras dos dadas, enlazando todos los posibles pares de tuplas y
cumpliendo las condiciones impuestas.
División. Dadas las relaciones A(x,y) y B(y) siendo ´y´ dominios equivalentes, la división A/B devuelve todos
los valores de x tal que para todo valor de y hay una tupla en A que sea (x,y).
Las relaciones establecidas en el álgebra relacional ofrece la posibilidad de construir otras relaciones a
partir de las originales, de forma potente y sencilla. Los lenguajes utilizados como SQL, que se expone en el
siguiente tema, son intuitivos y fáciles de aprender, pero no siempre es fácil saber que relación resulta
óptima de entre las posibles soluciones a un problema, ya que el coste de computación puede ser muy
diferente en función de las promitivas utilizadas.

172
TEMA 39. LENGUAJES PARA DEFINICIÓN Y MANIPULACIÓN DE DATOS EN SISTEMAS DE BBDD
RELACIONALES. TIPOS. CARACTERÍSTICAS. LENGUAJE SQL.

1. INTRODUCCIÓN
2. LENGUAJES PARA DEFINICIÓN Y MANIPULACIÓN DE DATOS EN SBD RELACIONALES
3. TIPOS
3.1. QUEL
3.2. QBE
3.3. SQL
4. CARACTERÍSTICAS
4.1. QUEL
4.2. QBE
4.3. SQL
5. LENGUAJE SQL
5.1. DML
5.1.1. Consulta
5.1.2. Eliminación
5.1.3. Inserción
5.1.4. Actualización
5.2. DDL
5.3. DCL
5.4. Triggers y transacciones

173
1. INTRODUCCIÓN
Los lenguajes para definición y manipulación de datos en sistemas de BBDD relacionales son lenguajes de
consulta formal que resuelven las peticiones mediante una secuencia de operaciones relacionales que
aplicadas a la BBDD producen la respuesta deseada.
Estos lenguajes representan un interfaz entre usuario y BBDD, permitiendo definir el contenido de una
consulta sin describir cómo debe realizarse, a un nivel más interno.
2. LENGUAJES PARA DEFINICIÓN Y MANIPULACIÓN DE DATOS EN SBD RELACIONALES
Existen varios lenguajes de consulta para la definición y manipulación de datos en sistemas relacionales. La
presentación del modelo relacional por parte de Codd y lenguajes relacionales de forma interrogativa
supusieron un gran impacto en el mercado y las comunidades educativas que condujo al desarrollo e
implementación de estos lenguajes.
Los tres lenguajes característicos que surgieron de esta situación fueron SQL (Structured Query Language),
y QBE (Query By Example), por una parte, desarrollados por IBM en la década de los setenta, similares,
pero siendo SQL textual y QBE gráfico y por otra QUEL (Query Language), lenguaje original de INGRES, un
SGBD relacional desarrollado por la Universidad de Berkeley.
Cada lenguaje se basa en aspectos distintos. Así, mientras SQL lo hace en el cálculo relacional de
dominios, QBE se basa en el álgebra relacional y construcciones del cálculo relacional y por su parte QUEL
está basado en el cálculo relacional de tuplas. Los tres lenguajes además permiten realizar otras tareas,
como la definición y modificación de la estructura de datos, establecer criterios de seguridad, etc.
Tanto QUEL como QBE son dos lenguajes que pueden considerarse obsoletos, aunque se expondrán
ligeramente por su utilidad didáctica. Actualmente el estándar de facto es SQL, razón por la que se le dedica
el apartado 5 en exclusiva, intentando ofrecer también una visión global, debido a que su riqueza semántica
no permite una extensión como pueda ser la de un manual típico de SQL.
Como se ha expuesto en el tema 36, una vez finalizado el diseño de una BBDD y escogido un SGBD para
su implementación, deben especificarse los esquemas conceptual, interno y externo de la BBDD, para lo
que se utilizará un lenguaje de definición de datos (DDL, Data Definition Language), que se incluye como un
componente o parte, del lenguaje SQL.
Para definir quién y cómo accede a los recursos y datos del sistema, se utilizará un lenguaje de control de
datos o DCL (Data Control Language), que viene a ser otra de las partes fundamentales del lenguaje SQL.
Por fin, y una vez creados los esquemas de la BBDD, el usuario precisa un lenguaje de manipulación de
datos, denominado DML (Data Manipulation Language), la tercera parte en que se estructura SQL y que se
expondrá con mayor detalle al presentarlo.
3. TIPOS
3.1. QUEL
QUEL es un lenguaje de consulta que permite dos modos de trabajo, el modo interactivo y el modo inmerso,
en que las sentencias se intercalan con las del lenguaje anfitrión (host programming language).
La estructura básica en QUEL es la relación base, caracterizada porque las tuplas que la constituyen están
físicamente almacenadas en la BBDD y formadas por un número finito de atributos. Existen distintos tipos
de datos que pueden asignarse a un atributo, numéricos, cadenas de caracteres o tipos date o money.
La sintaxis de definición de una relación base es CREATE nombre (atributo1 tipo,...,atributon tipo). El
comando Index permite especificar el primer nivel de indexación de una relación base y para modificar su
estructura de almacenamiento se usa el comando Modify. En QUEL las operaciones de manipulación de
datos son semejantes a SQL, inserción de tuplas (append), eliminación (delete) y actualización (replace).
La organización del almacenamiento de los registros puede seguir tres criterios, heap, hash e indexación.
En el criterio heap, los ficheros no se ordenan y los nuevos elementos se insertan al final. Hash genera
ficheros de acceso muy rápido, basándose en una función hash (resumen) aplicada a un campo del registro
para obtener su dirección de memoria. La indexación de ficheros se utiliza con las siguientes estructuras de
almacenamiento isam y btree.
3.2. QBE
Es un lenguaje de consulta basado en el cálculo relacional de dominios mediante la inserción de parámetros
en las columnas de una relación. La sintaxis de consulta contiene 3 parámetros para su construcción: P
(determina un dominio variable, la columna a consultar), una constante (para indicar el valor impuesto a la
columna de consulta) e -Identificador (nombre de la variable asignada a una columna, precedido de “-”).

174
El interfaz de QBE permite al usuario seleccionar las relaciones necesarias para resolver una consulta entre
todas las relaciones de la BBDD, que ya seleccionadas se representadan, de forma que el usuario podrá
elegir las columnas de interés para configurar su consulta.
Las tablas que constituyen la BBDD pueden definirse, eliminarse o modificarse interactivamente. Para crear
una relación se selecciona del menú, se asigna un nombre y se definen sus atributos. Asimismo, pueden
definirse índices y vistas. Las condiciones de selección pueden usar los operadores habituales (=, <, <,...) o
cajas de condición, si las condiciones son más complejas, como por ejemplo condiciones particulares de
cada atributo de la relación. El resultado de la consulta puede ordenarse con los modificadores AO
(Ascendent Order) y DO (Descendent Order).
En QBE, el producto cartesiano se realiza con el comando JOIN y UNQ elimina las tuplas duplicadas en el
resultado. Para la modificación de la BBDD se utilizan las instrucciones I, para inserción de tuplas, D que las
elimina y U para la actualización de valores.
3.3. SQL
Es el lenguaje comercial más extendido, quizás por su proximidad al lenguaje natural y su comodidad de
uso. El estándar ANSI que data de 1986 ha evolucionado hasta la actualidad, en que la mayoría de SGBD
soportan la versión SQL:92 y SQL:2008, incluye características de manipulación de BBDD con XML.
SQL es un lenguaje de alto nivel declarativo, es decir, indica qué obtener, no cómo obtenerlo. Por tanto, el
orden de ejecución interno de una sentencia puede afectar la eficiencia del SGBD, lo que obliga a realizar
un proceso de optimización por parte del procesador de consultas del SGBD antes de la ejecución.
Además de las facilidades de consulta, SQL ofrece la posibilidad de definir tablas, actualizar la BBDD,
definir vistas y asignar de privilegios. Su conjunto de instrucciones permite definir, manipular y controlar los
datos en una BBDD relacional. El software relacional está diseñado para facilitar la manipulación de los
datos en forma de tablas, pudiendo actuar como lenguaje autocontenido (de consulta interactiva) o
incorporarse a lenguajes de alto nivel convencionales (lenguajes anfitriones).
4. CARACTERÍSTICAS
4.1. QUEL
Las consultas QUEL poseen la sintaxis RETRIEVE atributos WHERE condición. Donde los atributos deben
especificarse bien por el nombre de la relación base a la que pertenecen, bien por la tupla variable definida
sobre la relación base. Las tuplas variables se declaran previamente con RANGE, que además permite
indicar la relación base a partir de la cual se asigna el rango.
Las funciones que ofrece QUEL son: SUM, MAX, MIN, AVG y COUNT, que pueden emplearse con la
sentencia retrieve y where. Cuando se usa una función en la sentencia retrieve, hay que asignar un nombre
al valor devuelto. Para eliminar las tuplas duplicadas de la consulta, debe añadirse a la función los
modificadores MAXU, COUNTU, MINU, AVGU y SUMU.
Asimismo se pueden incluir sentencias where como parte de los parámetros de la función. También se
pueden agrupar tuplas con el modificador BY, que permite especificar el grupo de tuplas sobre las que se
desea que se aplique. Cada función puede presentar sus agrupaciones particulares y recibir como
parámetros los resultados obtenidos por otra función.
4.2. QBE
QBE cuenta con un operador denominado G, que puede aplicarse a una columna para determinar sobre
qué atributo efectuar agrupaciones de tuplas y es habitual que aparezca en conjunción con funciones.
Algunas funciones típicas que ofrece QBE son MAX (máximo valor de una columna), MIN (mínimo), SUM
(suma de los valores de una columna), AVG (valor medio de los valores de una columna) o CNT (que
devuelve el número de elementos distintos de una columna).
Las funciones AVG, SUM y CNT actúan sobre tuplas con valores diferentes en la columna sobre la que se
aplican, ignorando valores duplicados. Si se desea aplicar las funciones sobre todos los valores, duplicados
o no, es preciso indicarlo mediante el sufijo ALL. Al igual que en SQL y QUEL las funciones permiten la
agrupación, aplicada individualmente sobre cada una de las particiones resultantes de la agrupación.
4.3. SQL
La característica fundamental de SQL es su estructura, en la que se distinguen cuatro partes: el diccionario
de datos, un lenguaje de manipulación de datos (DML), uno de descripción de Datos (DDL) y un lenguaje de
control de datos (DCL).

175
El diccionario de datos, también conocido como catálogo o repositorio de datos, contiene metadatos y se
utiliza para consultas previas al acceso a datos reales en un SGBD. Al realizar operaciones sobre la BBDD,
el diccionario se actualizará para reflejar los cambios.
Como se ha presentado antes, el lenguaje DML es el utilizado por los usuarios para trabajar con los datos,
mientras que el DDL sirve para especificar los esquemas conceptual, interno y externo de la BBDD, es decir
lo relativo a tablas y vistas y por su parte DCL ayuda a definir quién y cómo accede a los recursos y datos
del sistema, o sea, las restricciones de usuario. Una descripción más detallada de las características de
SQL se desarrolla en el siguiente punto.
5. LENGUAJE SQL
SQL ofrece una gran potencia para la manipulación de datos. Su capacidad consiste en independizar la
estructura lógica de la BBDD de la estructura física, es decir, diferenciar entre qué datos recuperar y cómo
recuperarlos. Es el SGBD el encargado de solucionar cómo se accede.
5.1. DML
El lenguaje DML es la herramienta fundamental para operar con los datos.
Permite manejar conjuntos de tuplas simultáneamente, lo que supone una
ventaja con respecto a lenguajes de programación de alto nivel. Se distinguen
dos tipos de lenguajes DML, procedurales y no procedurales.
Un DML procedural permite al usuario especificar cómo y qué datos obtener.
Las operaciones de acceso deben describirse con los procedimientos
adecuados. La mecánica de consulta consiste en acceder a un registro,
procesarlo y en función del resultado, acceder a otro registro, repitiendo el
proceso hasta obtener los datos deseados. Las sentencias se incluyen en un
lenguaje de alto nivel, lenguaje anfitrión, del que se hacer uso para el proceso.
Las BBDD jerárquicas y en red usan necesariamente DML procedurales.
Un DML no procedural o declarativo, ofrece independencia de definición de operaciones sobre la BBDD. Es
común que los SGBD permitan la operación interactiva o embebida en un lenguaje de alto nivel con
comandos DML. Un DML no procedural permite especificar los datos a los que se acceda con una sentencia
única y sencilla. El SGBD traducirá las sentencias en varias acciones para recuperar los datos pedidos.
Las BBDD relacionales usan un DML no procedural, como en SQL y QBE. SQL permite el uso de DML
declarativos o procedurales, caso en que se usan los “stored procedures” o bien embebiendo sentencias en
un lenguaje anfitrión. En vez de SQL embebido suele hacerse uso de bibliotecas estándar de acceso a
datos que proveen objetos para las operaciones y gestión de la conexión con la BBDD. Ejemplos de
bibliotecas son ADO.NET (en .NET y Mono), JDBC (en java) o libmySQL (con PHP).
Las operaciones que ofrece un DML pueden agruparse en consulta, eliminación, inserción y actualización.
5.1.1. Consulta
Para consultar registros en una BBDD se usa la sentencia SELECT. También se denomina proyección y
responde a la sintaxis: SELECT [columnas] FROM [tablas] WHERE [condiciones] [opciones]
Ejemplo: select alumnos.nombre from alumnos where alumnos.profesor=’Antonio`, seleccionaría el nombre
de los alumnos a los que da clase el profesor Antonio.
El modificador from, permite especificar las tablas en las que se realiza la consulta y sobre las que se
aplican las condiciones, definidas en where. Si se especifican varias tablas en from, se realiza el producto
cartesiano de las mismas. Las opciones permiten realizar tareas adicionales como por ejemplo ordenar el
resultado. Para ello se usan operadores, que siguen la estructura [GROUP BY {expr} [ASC|DESC],... [WITH
ROLLUP] [HAVING [condición]] [ORDER BY {expr} [ASC|DESC],...]
El operador GROUP BY agrupa el resultado según el criterio expresado, que indica que el valor será común
a las columnas y con la posibilidad de ordenarlo de forma creciente o decreciente con ASC y DESC. WITH
ROLLUP, añade columnas con valores nulos que sirve para agrupar valores. Por su parte, HAVING agrega
condiciones sobre los grupos formados, para definir cuales se mostrarán y cuales no. Puede modificarse
con operadores como SUM, AVG, MIN, MAX o COUNT. El resultado se podrá ordenar con los criterios
expresados en ORDER BY. Otros modificadores son ALL y DISTINCT, para permitir o no, que el resultado
tenga filas idénticas.
SQL también cuenta con operadores de comparación, que a parte de los habituales (=, <>, >, < >=, o <=) se
encuentran algunos como LIKE, para comparar cadenas de caracteres con un patrón. A diferencia del =, el
patrón no tiene que ser la palabra completa o BETWEEN, que permite buscar dentro de un rango.

176
Una subconsulta es una operación select anidada en otro comando. Para implementarlas es común usar el
operador IN (y otros) que condiciona un conjunto de datos y facilita la labor. Un ejemplo sería: select cliente
from ventas where cliente in (select cliente from facturacion where importe>1.000).
La sentencia seleccionaría los clientes de la tabla ventas, tales que el importe de su facturación superase la
cantidad mil. Para usar los valores no escalares que devuelve una subconsulta, SQL ofrece operandos que
relacionan un escalar y un conjunto, como pueden ser ANY y SOME, que devuelven cierto si la
comparación con alguno de los elementos del conjunto se verifica o EXISTS, que devuelve cierto si el
conjunto devuelto no es vacío. IS NULL comprueba si un valor es nulo, MATCH si alguno coincide y
UNIQUE si el resultado es único.
La capacidad de definir operaciones de álgebra relacional en cualquier lenguaje de manipulación de BBDD
es esencial. Así, SQL cuenta con los comandos INTERSECT, que devuelve la intersección relacional de dos
tablas, UNION que las une si son equivalentes o en algunos SGBD, MINUS para expresar la diferencia.
Mención aparte merece la sentencia JOIN (reunión), que une tuplas de dos relaciones en una nueva. SQL
permite además alguna variación de la reunión pura, como son CROSS JOIN que efectúa el producto
cartesiano, NATURAL JOIN, JOIN ON, LEFT JOIN, RIGHT JOIN o JOIN USING que efectúa el producto
cartesiano con una condición.
La solución a una determinada consulta no es única, por lo que su implementación dependerá del usuario,
pero, por ejemplo, en las subconsultas utilizar JOIN suele ser más eficiente.
5.1.2. Eliminación
Para eliminar registros en la BBDD se usa la sentencia DELETE. El borrado debe conservar la integridad de
la BBDD. Posee la sintaxis: DELETE [columnas] FROM [tablas] WHERE [condiciones].
La potencia de SQL debe usarse con precaución. Por ejemplo, podría realizarse un borrado en una tabla
utilizando como condición otra. En el siguiente ejemplo se eliminan los clientes de las tablas compras y
ventas cuyo nombre sea Jan:
DELETE FROM compras, ventas WHERE compras.cliente=ventas.cliente AND ventas.cliente='Jan'
Si se desea que sólo se eliminen los registros de la tabla compras sería:
DELETE compras FROM compras, ventas WHERE compras.cliente=ventas.cliente AND ventas.cliente='Jan'
5.1.3. Inserción
Para insertar registros en la BBDD se usa la sentencia INSERT, que responde a la sintaxis INSERT INTO
tabla [columnas] VALUES (valores). Los valores deben ser del mismo tipo que los de las columnas sobre los
que se inserten y darse en el mismo orden. No es necesario introducir todos los valores de un registro a
menos que una columna tenga la restricción de not null.
A partir de la versión SQL:92 se permite introducir más de un registro por sentencia. Además, insert puede
combinarse con select, en la forma INSERT INTO tabla [columnas] SELECT [opciones]. Los SGBD suelen
incluir utilidades de carga masiva de elementos (bulk copy) pero no forman parte de SQL
5.1.4. Actualización
Para actualizar el valor de los registros se usa la sentencia UPDATE, siempre que se cumplan las
restricciones definidas en la BBDD (referencia, duplicidad, disparadores...) y responde a la sintaxis:
UPDATE [tabla] SET [columna=valor] [WHERE condición]. Pueden usarse varias tablas simultáneamente.
5.2. DDL
El lenguaje DDL relaciona los niveles interno y externo de la BBDD con el nivel conceptual. Permite entre
otras cosas la creación y definición de las tablas de la BBDD y sus atributos, índices y vistas. DDL distingue
otros tres sublenguajes, de los que, al menos, conviene conocer su nombre, ya que suelen tratarse bajo el
mismo nombre de DDL. Estos sublenguajes son VDL (View Definition Language), que permite definir el
esquema externo de la BBDD mediante vistas, DDL, de definición del esquema conceptual (relaciones,
tuplas, restricciones) y SDL (Storage Definition Language) que define el esquema interno (índices, clusters,
segmentos) y que al no ser estándar de SQL, cada fabricante implementa su conjunto de instrucciones.
Los comandos de los tres sublenguajes, o, para no hacer distinciones, de DDL, giran en torno al comando
CREATE, que permite crear BBDD, tablas, dominios, restricciones, etc. Algunas opciones de create son
TABLE, DOMAIN, DATA BASE, SQUEME, VIEW o ASSERTION, que se enmarcan en cada sublenguaje.
SDL como sublenguaje de DDL que permite definir los parámetros del almacenamiento físico (estructura de
ficheros, índices de acceso, etc.), a veces se identifica como DDL interno. Un comando de DDL (referido

177
como general), perteneciente a SDL es CREATE INDEX, que permite definir un índice y en SQL responde a
la sintaxis: CREATE INDEX [nombre del índice] [USING [tipo]] ON [tabla] [indices de columna].
Un tablespace es una localización física donde almacenar objetos de la BBDD como índices o tablas a los
que se pueden asignar segmentos. Para definir uno, se usa el comando TABLESPACE. Un segmento es un
concepto lógico que agrupa partes de una BBDD que se divide, a nivel de almacenamiento, en varios
segmentos, cada uno en un tablespace y en un disco físico diferente para mejorar la eficiencia. Los índices
podrán particionarse y guardarse en varios segmentos.
Los segmentos se definen con SEGMENT. CLUSTER se usa para definir clusters, agrupaciones de tablas
que al compartir atributos se almacenan juntas para mejorar la eficiencia. Con el comando DROP, seguido
de index, tablespace, etc. se elimina el elemento indicado
Con DDL, entendido como sublenguaje para definir el esquema conceptual se pueden definir las tablas y
sus atributos, girando también en torno al comando CREATE con sus modificadores. La creación de tablas
debe preceder a la manipulación sus datos. Para crear tablas se utiliza CREATE TABLE, con la sintaxis:
CREATE TABLE [nombre de tabla] [tuplas [tipo][restricciones]] PRIMARY KEY IS [tupla].
Para definir un esquema de BBDD se necesita identificar el comienzo de la definición con la instrucción
CREATE SCHEMA, una cláusula adicional AUTHORIZATION y definir cada dominio, tabla, vista, etc. Un
dominio es un tipo de datos especializado definido en un esquema usado en la definición de las columnas.
Las tablas se definen en tres pasos, su nombre, sus columnas y sus restricciones. Un ejemplo de definición
del esquema de una BBDD es el siguiente:
create schema MiEmpresa authorization YoMismo
create domain identificador numeric (4) default 0 check (value is not null)
create table Operario (IdOperario identificador primary key, NombreOperario character (12), sueldo (5, 2),
IdSupv numeric (4), foreign key IdSupv references Operario on delete set null)
La instrucción CREATE TABLE permite definir las relaciones identificando el nombre de la tabla, que debe
ser única dentro del esquema. Siguen entre paréntesis y separadas por coma las instrucciones de definición
de columnas y restricciones sobre la tabla. Las columnas se definen con su nombre, tipo de datos, valor por
defecto y aplicación de restricciones como not null, primary key o check.
En el ejemplo existe una restricción de referencia en la tabla que se especifica indicando qué campo
referencia a qué tabla: “foreign key IdSupv references Operario on delete set null”, indica que IdSupv es una
clave externa recursiva, que referencia a su propia relación.
Hay tres tipos de acciones a tomar para mantener la integridad referencial, rechazar la acción (si se viola la
condición de integridad, se aborta la acción), propagar en cascada (se eliminan las tuplas que referencian a
otra, o se modifican si se trata de un cambio de clave) y poner a nulo (se pone hacen null los campos que
referencian a la tupla).
Al crear una tabla o dominio, se debe conocer el tipo de datos que provee el SGBD. En general se ofertan
tipos habituales como cadenas de caracteres (CHAR, VARCHAR, BLOB, TEXT), numéricos (INTEGER,
SMALLINT, LONG DECIMAL), fechas (DATE, TIME), lógicos (BIT, BOOLEAN, BINARY) y otros tipos como
ENUM (para un grupo discreto de valores), SET (uno o varios valores de un grupo definido) u otros más
complejos como ficheros binarios o tipos especiales de números, que dependerán del SGBD elegido.
Como se observa, las tuplas no se definen de forma explícita, se definen al crear la relación. Si dos
relaciones utilizan el mismo tipo de tuplas (mismos datos) debe indicarse en la definición de cada una los
componentes de sus tuplas.
El comando ALTER permite modificar una tabla. Acepta los modificadores ADD, DROP, COLUMN, CHANGE
para modificar algún atributo de una columna. ALTER TABLE puede usarse para añadir una columna a una
tabla, cambiar la definición de una columna existente o eliminarla.
La instrucción DROP elimina un elemento. Así, DROP DOMAIN permite eliminar dominios, DROP COLUMN
combinado con ALTER elimina columnas. DROP TABLE borra todas las filas de la tabla y elimina del
esquema la definición completa de la tabla. Un esquema completo se elimina con DROP SCHEMA.
En el ejemplo también se comprueba como la definición de restricciones sobre los datos se especifican al
crear la relación. Los modificadores null y not null, check, unique, el tipo de datos y su rango o condiciones
más complejas como por ejemplo EstadoCivil char check (EstadoCivil in ‘S’,’C’,’V’,’D’), son otros ejemplos.
A nivel de tuplas también pueden especificarse restricciones como con los datos, usando combinaciones de
más de un dato para la condición lógica con CHECK como por ejemplo check (precio<1000 or gratis='S').

178
Por fin, para definir el esquema externo, se usa el sublenguaje VDL o DDL externo. En SQL se implementa
con el concepto de vista externa, que define los registros externos de que consta. Pueden existir y ser
compartidas varias vistas externas por varios usuarios simultáneamente. Algunos sistemas permiten que
una vista externa se exprese en términos de otras, en vez de definirla explícitamente.
La definición de vistas, consiste en parametrizar una consulta que presente sólo los datos indicados. Por
tanto, son útiles para limitar resultados que no deban mostrarse y definir consultas habituales. La creación
de vistas se realiza con el comando y sintaxis CREATE VIEW [nombre de vista] AS [sentencia SELECT].
Por ejemplo, la sentencia:
CREATE VIEW VistaOperario AS SELECT IdOperario, nombre, oficio FROM Operario,
Haría la selección de los tres campos especificados de la tabla Operario, omitiendo otro tipo de información
como por ejemplo su salario. A esta consulta, para tratarla como vista se le ha aplicado el nombre
VistaOperario.Sentencias para la gestión de la vista son REPLACE, ALTER, para modificarla y DROP que la
elimina. En mySQL se incluye el comando SHOW CREATE VIEW que muestra los datos de definición de
una vista.
Los SGBD permiten que las vistas sean actualizables bajo condiciones estrictas, en general, que cada
registro se corresponda con un registro de una tabla, no se usen funciones agregadas, ni cierto tipo de join,
y condiciones del estilo.
5.3. DCL
El Lenguaje de Control de Datos permite controlar el acceso a datos y el uso de la BBDD, en general, según
el criterio del administrador. DCL permite gestionar los permisos a nivel global del sistema (conexiones), que
se denominan autorizaciones y los permisos de cada elemento.
La administración es compleja, ya que un SGBD tiene muchos recursos diferentes, que varían según el
sistema y los permisos se entrelazan, por ejemplo, permitiéndose acceder a una tabla y no conectarse a la
BBDD de la misma. Para la gestión de permisos y autorizaciones, existen dos sentencias centrales en SQL,
GRANT, para otorgarlos y REVOKE, para eliminarlos. Su sintaxis escribe la instrucción y se combina con
modificadores como CONNECT, para definir el permiso de conexión a la BBDD. La sintaxis de GRANT es:
GRANT [tipo de privilegio] ON [objeto] TO [usuarios] [WITH [opciones]]
El tipo de privilegio especifica la acción sobre la que se efectúa. A parte de connect, pueden ser select,
insert, drop, etc. Los tipos de objetos pueden ser table, function, procedure, etc. Si no se realizan sobre uno
de estos tipos, puede omitirse. En [usuarios] se listan los usuarios a que se refiere la restricción y las
opciones de WITH pueden ser GRANT OPTION, para permitir al usuario delegar el permiso concedido,
MAX_QUERIES_PER_HOUR, para limitar las consultas por hora, MAX_USER_CONNECTIONS, para
especificar el número de conexiones simultáneas, etc.
La sintaxis de REVOKE es de sintaxis similar: REVOKE [tipo de privilegio] ON [objecto] FROM [usuarios].
El DCL de Oracle permite además definir roles y CREATE ROLE JefeProyecto
asignarles permisos y usuarios, evitando definir
GRANT select, update ON Facturación TO JefeProyecto
permisos de forma individual. Un ejemplo es el
mostrado a la derecha. GRANT JefeProyecto TO Alfredo, Francisco
Otros comandos, para controlar el acceso a datos son LOCK y UNLOCK, para bloquear o desbloquear un
elemento. Para el control de la integridad de datos se usan COMMIT y ROLLBACK, que se estudian en el
apartado de transacciones.
5.4. Triggers y transacciones
Un trigger o condición de disparo es una acción que se ejecuta cuando se cumple una condición marcada
por la realización de una operación. Se usan para mejorar la administración de la BBDD, sin necesidad de la
intervención del usuario, prevenir errores, sincronizar tablas o modificar valores de una vista. Asimismo
pueden generar valores de columnas.
La estructura de un trigger consiste en una llamada de activación, que se define con una sentencia que
dispara la acción a realizar, una restricción, o condición necesaria para realizar el código y por fin, la acción
a ejecutar una vez verificadas las condiciones.
Existen dos tipos de disparadores, los de fila (row triggers), que se ejecutan tantas veces como se cumpla la
condición en la tabla asociada al trigger y los de secuencia (statement triggers), que se ejecutan una única
vez independientemente del número de veces que se cumpla la condición. Un ejemplo de trigger sería:
CREATE TRIGGER [nombre] [BEFORE|AFTER] [INSERT|DELETE|UPDATE] ON [tabla] FOR EACH
[ROW|STATEMENT] [operación a realizar]

179
Una transacción es una operación realizada en una BBDD. En contra de lo que pudiera parecer, no son
exclusivas de DML, pueden aplicarse con comandos DDL y DCL. En general las operaciones en las BBDD
las realizan muchos usuarios simultáneamente, lo que puede generar problemas. Por tanto deben
establecerse condiciones para que las transacciones no supongan errores.
Para ello, se exige que las transacciones sean atómicas, es decir, que deben tratarse como una unidad de
trabajo y realizar todas las operaciones incluidas en la transacción o no realizar ninguna. También deben
ser aisladas, es decir, que sus operaciones no afecten a otras transacciones concurrentes. Las condiciones
de trabajo deben garantizar la consistencia, o situación en que la BBDD ha realizado de forma efectiva y
coherente los cambios.
Las transacciones en SQL se controlan con la sentencia BEGIN TRANSACTION, aunque en algunos SGBD
comienzan de forma implícita. Si la transacción sufre alguna incidencia, puede volverse al estado anterior de
comienzo de la transacción con el comando ROLLBACK y si se completa con éxito, se confirma con
COMMIT, que guarda los cambios y deja la BBDD en un estado consistente.
Un ejemplo habitual de transacción es la transferencia entre cuentas bancarias, realizada con dos
operaciones, una de decremento de saldo en la cuenta origen y otra de incremento en la cuenta destino. La
consistencia del sistema, se garantizará con la atomicidad de ambas operaciones, es decir, o que se
realicen las dos o ninguna.

180
TEMA 40. DISEÑO DE BBDD RELACIONALES.

1. INTRODUCCIÓN
2. DISEÑO DE BBDD RELACIONALES
2.1. Diseño Conceptual
2.2. Diseño Lógico
2.3. Implementación

181
1. INTRODUCCIÓN
El desarrollo de un sistema, en particular informático, posee un doble carácter. Un carácter estático referido
a los elementos del modelo y uno dinámico, referido a las operaciones que se pueden realizar con los
elementos. Piénsese, por ejemplo, en el conjunto de números naturales. Su carácter estático sería la
definición de sus elementos, el 1, 2, 3… y su carácter dinámico las operaciones que se definen sobre ellos,
por ejemplo la suma y el producto, y sus propiedades.
El diseño, entendido con completitud, es un proceso proceso descendente desde la
abstracción a la concreción. Suele dividirse, como se indica en la figura en tres
grandes bloques, el análisis del sistema, su diseño y su codificación. Esta fase
también se la conoce como codificación o implementación.
En un principio, el diseño, se centra en la parte estática, pero su relación con la
parte dinámica es tan estrecha que se debe tener siempre en perspectiva.
En la fase de Análisis se especifica el esquema general del sistema, entidades y relaciónes, diagrama de
clases, etc. Es independiente del SGBD que se elija para la implementación. En el segundo nivel, de
Diseño, se concreta el modelo a utilizar. En este caso se estudia el modelo relacional. Por fin, en la fase de
Codificación o Implementación se define la estructura del SGBD con un lenguaje específico. En esta
exposición, se hace con DDL de SQL
2. DISEÑO DE BBDD RELACIONALES
El diseño es la etapa de la construcción del sistema que consiste en concretar la solución con un nivel de
detalle mayor al análisis. El detalle se logra con modelos, esquemas de la realidad, que todavía poseen un
grado alto de abstracción. El modelo más extendido es el de Chen (1976), que establece entidades y sus
relaciones. Es un modelo estático de la estructura del sistema, que establece una notación particular para la
representación y será el utilizado en este estudio.
2.1. Diseño Conceptual
Los componentes del diseño conceptual del modelo entidad-relación son:
Entidad. Se refiere a aquello que se considera, que existe y por tanto se debe describir o representar. Son
los tipos de objetos sobre los que se desea almacenar información.
Relación. Es la definición de la asociación entre entidades. Cada relación asocia una instancia de las
entidades implicadas. Las relaciones poseen propiedades como el grado o la cardinalidad.
Atributo. Es una propiedad de una entidad y sus relaciones. Pueden ser simples, compuestos, multivaluados
o derivados.
Agregación. Es una abstracción que permite tratar relaciones como entidades de nivel superior. La
agregación se trata como otra entidad.
Generalización/especialización. La generalización es un proceso de diseño ascendente. Sintetiza conjuntos
de entidades en un nivel superior basado en características comunes (abstracción). Su función es agrupar
características comunes de entidades para ocultar diferencias. Ahorra repetir atributos.
La especialización es un proceso de diseño descendente. Particulariza grupos de entidades. Se puede
aplicar iterativamente para refinar el esquema de diseño. En términos del diagrama E-R, no existe diferencia
entre especialización y generalización.
Una propiedad importante de las entidades de nivel superior e inferior identificadas con la especialización y
la generalización es la herencia de atributos. Los atributos de las entidades de nivel superior son heredados
por las entidades de nivel inferior.
Restricciones. Expresan condiciones del sistema. Se aplican sobre atributos (dominio, valores…), entidades
o relaciones (cardinalidad, identificación…).
De especial importancia son las restricciones de cardinalidad, representadas con líneas. Se distinguen las
restricciones de dependencia e identificación. Las de dependencia se dan cuando una entidad no puede
identificarse con sus atributos (débil). Se distinguen por su relación con otras entidades. Toman datos de la
entidad fuerte (ciudad/país). Las restricciones de identificación indican qué atributos de las entidades
participantes la identifican, ya que no poseen identificador propio.
2.2. Diseño Lógico
El diseño lógico representa semánticamente el diseño conceptual. Se usa un método iterativo consistente
en transformar la entidad-relación a un esquema lógico, teniendo en cuenta restricciones y normalizar la
estructura para evitar redundancias. Para transformar una entidad-relación a un esquema lógico, se

182
caracteriza cada entidad con un tipo (entidad fuerte no especializada, débil o entidad especializada) para
luego definir las relaciones con su cardinalidad y propiedades.
La normalización supone un proceso de refinamiento que elimina redundancias y genera estructuras que
mantienen la integridad de forma sencilla. Se identifican 6 formas de normalización o formas normales. Se
dice que una relación está en una forma normal si cumple sus restricciones. Se estudian en el tema 53.
2.3. Diseño Físico
El diseño físico define el esquema interno de la BBDD. Su refinamiento utiliza la perspectiva dinámica. Se
suele realizar con el DDL. El diseño físico parte del diseño lógico y resulta en la descripción de la
implementación de la BBDD en memoria secundaria, es decir, estructuras de almacenamiento y los
métodos para acceder de forma eficiente a la información.
El objetivo de eficiencia tiene en cuenta aspectos concretos del SGBD sobre el que se implemente. Los
aspectos que debe tener en cuenta el diseño físico, entre otros son índices, estrategia de gestión del
espacio de almacenamiento, particionado de ficheros o el diseño de constricciones.
Las estructuras físicas se soportan en la forma de gestión de archivos del SO, por lo que un SGBD puede
depender de esta característica. El objetivo es cumplir los requisitos del usuario, que al final podrían
resumirse en dos: rendimiento y disponibilidad.
El rendimiento se asocia al tiempo de respuesta y la capacidad. Lo que se tarda en ejecutar una instrucción
y el número de transacciones que el sistema es capaz de responder por unidad de tiempo. En general,
estos tiempos son un tanto aleatorios y su especificación se da como valor medio.
La disponibilidad puede entenderse como el tiempo durante el que el sistema está activo. Para medirlo se
usan tiempos estadísticos como el tiempo medio entre fallos, de parada o similares.
Por tanto, el diseño físico debe justificar las decisiones de implementación en función de la especificación
de requisitos del usuario o peticionario de forma que adecúe correctamente la BBDD a instalar.

183
TEMA 41. UTILIDADES DE LOS SGBD PARA EL DESARROLLO DE APLICACIONES. TIPOS.
CARACTERÍSTICAS.

1. INTRODUCCIÓN
2. UTILIDADES DE LOS SGBD PARA EL DESARROLLO DE APLICACIONES
3. TIPOS
3.1. Formularios
3.2. Menús
3.3. Informes
4. CARACTERÍSTICAS

184
1. INTRODUCCIÓN
El modelo relacional concebido por Codd para BBDD, las organiza en tablas cuyos elementos son filas o
tuplas y los campos se denominan columnas, que representan los atributos de los tipos de entidades. Cada
tabla corresponde a un tipo de entidad sin información repetida. La operación se basa en álgebra y cálculo
relacional, es decir operaciones lógicas entre conjuntos que por tanto afectan a tablas, no a registros.
El resto de BBDD no responde tanto a modelos teóricos como a soluciones de tratamiento de datos o
gestores de ficheros. En un gestor de ficheros cada BBDD es un fichero, que se divide en varios registros a
su vez formados por campos que describen atributos de las entidades a clasificar.
En la tabla se presenta la
relación entre conceptos y el
tratamiento de esa
información por parte de los
gestores de ficheros y las
BBDD relacionales
2. UTILIDADES DE LOS SGBD PARA EL DESARROLLO DE APLICACIONES
El desarrollo de aplicaciones mediante BBDD relacionales se basa en lenguajes de consulta y programación
específicos que suelen incluir los SGBD. Estos lenguajes para BBDD son similares a los convencionales en
cuanto a estructura, pero con diferencias en cuanto a instrucciones y operaciones. Las instrucciones pueden
agruparse en instrucciones generales, de BBDD y SQL.
Las instrucciones generales, son parecidas en función a las de un lenguaje de programación típico e
incluirían instrucciones de control, declaración de variables, asignación, E/S, etc. Las instrucciones propias
de BBDD son las propias para su gestión, entre las que se encuentran las de uso de tablas, creación de
consultas o impresión de formularios. Las instrucciones SQL son las de ese lenguaje de consulta y suelen
ser incluidas en la mayoría de SGBD debido a su amplia difusión, prácticamente estándar.
La creación y ejecución de un programa sigue los pasos comunes al desarrollo, es decir, la generación del
código fuente, compilación, enlace y ejecución. En algunos SGBD la ejecución puede ser interpretada, con
lo que no habría enlace, siendo común la inclusión de utilidades de depuración.
Una aplicación es un programa que automatiza una tarea. El desarrollo de aplicaciones mediante SGBD
tiene por objetivo la generación de programas para gestionarla. En general, la utilización de la aplicación se
realizará mediante menús que faciliten las tareas habituales sobre la BBDD.
Las aplicaciones no son independientes del SGBD ya que éste debe arrancarse para ejecutar la aplicación y
su rendimiento dependerá de la potencia del SGBD, ya que las acciones y programas de la aplicación usan
las instrucciones que provee el SGBD.
El desarrollo de aplicaciones suele realizarse con herramientas que se identifican con el nombre genérico
de Generador de Aplicaciones, cuyo propósito es facilitar la construcción de estos programas omitiendo u
ocultando detalles de la programación pura. El generador de aplicaciones proporciona un entorno de diseño
que facilita la creación de objetos, menús, procedimientos y acciones sobre ellos utilizando las sentencias
necesarias que proporciona el SGBD.
En el desarrollo de una aplicación se pueden distinguir cuatro etapas, la definición del entorno, de los
objetos, la asignación de acciones y la generación del código.
Definición del entorno. Es la definición de la aplicación, en general con un formulario que define su entorno,
es decir, el nombre de la aplicación, su menú principal y la BBDD a emplear. Esa información sirve para
crear dos programas que describen el sistema de menús y las acciones asignadas. El nombre será el del
programa que genere el SGBD y el índice será el asociado con la BBDD especificada.
El menú principal podrá ser de barra, desplegable o batch. Las opciones de barra y desplegable pueden
definirse en el generador de aplicaciones, mientras que el batch es un proceso por lotes en secuencia que
podrá abrir distintos menús. Una vez definido en entorno de la aplicación, se guardan los ficheros
generados y se pasa a definir los objetos. En general, los menús desplegables dependen de una opción de
un menú de barra horizontal, de forma que se despliega al seleccionar una opción. Pueden usarse menús
de aparición que también podrán aparecer de forma independiente.
Definición de objetos. Los objetos son entidades que presentan alguna propiedad o permiten realizar una
acción. Se suelen diseñar gráficamente y asignarles acciones de las que ofrece el SGBD. El generador de
aplicaciones generará el código necesario para implementar el objeto y sus acciones. Si el objeto es un
menú o proceso por lotes, se trata como un contenedor con otros objetos u opciones a los que asignar una
acción del SGBD.

185
Las cajas de listas son objetos con nombres de ficheros, campos o contenidos de campos de la BBDD.
Funcionan como los menús, permitendo realizar una selección de su contenido y disponer de la información
por selección. Hay tres tipos de cajas de listas, las de ficheros, que contienen nombres de fichero, de
estructuras, que contienen nombres de campo y de valores, con contenido de campos de BBDD.
Los procesos por lotes son objetos que especifican una secuencia de operaciones a ejecutar definida en un
menú. Funcionan de forma transparente al usuario y el ejemplo típico es el de copias de seguridad. Se
definen de forma similar a los menús y se asigna la acción de cada elemento del proceso que podrá
invocarse desde cualquier menú.
Asignación de acciones. Una vez definidos menús y objetos pueden asignarse acciones a cada opción de
los menús. Con los desplegables se puede elegir el tipo de acción a asociar que tendrá su correlación en las
opciones que ofrezca el SGBD. Es habitual encontrar opciones para desplegar menús nuevos o ejecutar un
programa de la aplicación, permitiendo personalizar la ejecución.
Generación de código. Es la última etapa del desarrollo y se implementará en el lenguaje que utilice el
SGBD. Para ello podrá usarse las opciones del Generador de Aplicaciones, tales como Iniciar generación o
Visualizar durante generación. La primera permite generar el código y la documentación, que muestra los
objetos definidos y las acciones especificadas sobre ellos y crea los bloques de ficheros de código código
fuente y los ficheros de documentación de programa. La opción Visualizar hará que se muestre como se
está generando la documentación.
El desarrollo puede ser complejo si se trata de una aplicación grande, caso en que debe estructurarse más
y seguir un procedimiento que siga algunos pasos como los siguientes.
1. Definir los objetivos y funcionalidad. Es una fase similar a la captura de requisitos, donde se debe
especificar lo más cláramente posible la funcionalidad del programa. Es una definición descendente donde
se realiza un planteamiento global para ir descendiendo hasta los detalles. Dividir el desarrollo en partes u
objetivos menores facilitará el trabajo de definición.
2. Diseño de la BBDD. Consiste en definir la BBDD y sus componentes, tales como visualizaciones o
formularios y que serán utilizados por la aplicación.
3. Diseño de menús y procesos por lotes. Es la conceptualización del menú principal y los secundarios. El
diseño es necesario para evitar problemas antes de enfrentarse al Generador de Aplicaciones directamente.
4. Desarrollo. Se refiere al trabajo sobre el Generador de Aplicaciones que dará como resultado el código de
la aplicación.
5. Pruebas. Cada parte del desarrollo y una vez se obtiene la aplicación completa se han de realizar las
pruebas pertienentes para verificar que se cumple con las especificaciones. Superada la fase de pruebas, la
aplicación podrá ponerse en explotación.
3. TIPOS
3.1. Formularios
El desarrollo de aplicaciones mediante SGBD suele incorporar formularios para facilitar las operaciones. Las
utilidades ofrecidas por los SGBD ofrecen formularios para dar formato de pantalla para las especificaciones
y estarán referidos a los elementos de la BBDD sobre la que operen. Se distinguen dos tipos de formularios,
los de consultas (vistas) y los formularios de edición de datos.
Formularios de consultas. Un formulario de consulta permite indicar cómo recuperar la información
almacenada en las tablas. La consulta indicará al SGBD qué datos recuperar. Las consultas serán de
selección, referencia cruzada, unión o acción.
Las consultas de selección permiten recuperar datos de una tabla o la combinación de varias. Las de
referencia cruzada presentan la información con títulos en filas y columnas, ofreciendo gran cantidad de
datos en un formato más legible. Las consultas de unión permiten combinar campos de dos o más tablas o
consultas. Las consultas de acción permiten realizar cambios masivos en los datos que afectarán de
manera similar a todo un conjunto de registros. Se distinguen cuatro tipos de consultas de acción: creación
de tabla, eliminación de registros, adición de datos y actualización.
Una consulta debe definir qué elementos se usarán en cada sección en que se divide, los campos que se
presentarán en pantalla, los criterios de consulta y acciones a realizar, entre otros. El diseño de consultas
sigue las normas típicas de manejo de programas, resulta intuitivo y realiza la comprobación de errores
habituales como la concordancia de datos. Además los SGBD ofrecen funciones predefinidas como sumas,
máximos, promedios, etc.
La combinación de tablas puede ser interna o externa. La interna obliga a la concordancia de datos entre
tablas para obtener la información de consulta. Si no se exige concordancia es una combinación externa.

186
Formularios de edición de datos. Los formularios son facilidades sw
que permiten realizar operaciones sobre BBDD de forma gráfica e
intuitiva, son eficientes, ahorran tiempo y errores. Los SGBD suelen
incluir herramientas de diseño de formularios para automatizar
tareas habituales. La apariencia del formulario se almacena en los
archivos generados en su diseño.
3.2. Menús
Un menú es una forma de agrupar comandos para facilitar la labor del usuario. Los SGBD suelen incorporar
facilidades de diseño de menús, agilizando la programación al evitar la repetición de código. Para crear un
menú se deben definir las listas desplegables con las opciones que se ofrezcan y sus acciones asociadas.
3.3. Informes
Los diseños para impresión suelen incorporar utilidades llamadas informes, que puede definirse como un
diseño de presentación de datos orientado a la impresión (en cualquiera de sus formas), como puedan ser
facturas, listados, etc. El diseño de la sección de contenidos aunque es libre, se recomienda como
referencia, la estructuración en seis partes:
Encabezado del formulario. Que contendrá el título y aparecerá en la primera página.
Encabezado de página. Con títulos, encabezados de columna e información que desee incluirse al principio
de cada página.
Detalle. Es la parte en que se presentan los registros, lo que obliga a definir el origen de los mismos, ya sea
una tabla o consulta.
Resumen. Es opcional y se compone de campos virtuales o calculados, que presentan información
resumida como totales, medias o similares.
Pie de página. Presenta al final de cada página información considerada necesaria o de cortesía como
número de página, fecha u otra información del estilo.
Pie de formulario. Es opcional y se refiere a información que sólo aparece al final de la última página.
4. CARACTERÍSTICAS
En cuanto a las características de los formularios, la información que procesa, se obtiene de una tabla, una
consulta o ser independiente, como por ejemplo una imagen. Los formularios se pueden generar con
asistentes que facilitan su creación al automatizar la generación de código.
Si el formulario trabaja sobre una BBDD, se debe conectar a una tabla, si todos los datos del formulario se
refieren a la misma o a una consulta de selección si los datos pertenecen a distintas tablas.
De las características del menú, destacan las barras de menú, que tendrán un nombre identificativo para
que el programador asocie listas desplegables y presenten un texto de visualización.
Del mismo modo se opera con cada opción de lista desplegable y sus acciones. Una característica derivada
es la posibilidad de definir atributos (controlables en tiempo de ejecución) que afectarán a la apariencia y
actividad de la opción. Por ejemplo, una opción de un menú podrá estar activa o no según el contexto de
actuación.
Entre las características de las utilidades que permiten la generación de informes destacan la estructuración
del informe que ofrece el SGBD, la posibilidad de elegir parámetros de impresión, definición de dispositivos,
gestión de colas, estilos de impresión y otros.

187
TEMA 42. SISTEMAS DE BBDD DISTRIBUIDOS

1. INTRODUCCIÓN
2. SISTEMAS DE BBDD DISTRIBUIDOS
2.1. Características
2.2. Componentes
2.3. Tipos y estructura
2.4. Diseño de BDD

188
1. INTRODUCCIÓN
En la década de los 70 y principios de los 80 la tendencia era centralizar las BBDD. Pero en paralelo a la
evolución de las autopistas de la comunicación y el software de red, se invirtió la tendencia hacia la
descentralización. Hoy dia esta tendencia puede resumirse en cloud, o cloud computing.
Por tanto, los sistemas de BBDD integran estas dos filosofías: BBDD y capacidad de la red. Así puede
definirse una BBDD distribuida como un sistema de BBDD en que los datos están almacenados en red. Se
comparte un esquema de datos global y se ejecutan operaciones a nivel local o global.
Puede entenderse también como un conjunto de localidades que se conocen y por tanto colaboran en la
ejecución de las operaciones sobre el sistema. De esta forma la diferencia entre una BBDD centralizada y
una distribuida puede entenderse desde la localidad de los datos: en las primera una sóla y en la segunda
varias. Cada equipo se da en llamar nodo o emplazamiento.
2. SISTEMAS DE BBDD DISTRIBUIDOS
Una base de datos distribuida (BDD) es un conjunto de varias BBDD lógicamente relacionadas y
distribuidas en diferentes lugares conectados por una red de comunicaciones. De esta forma, un usuario
puede acceder a los datos del sistema, desde cualquier lugar donde tenga conexión a la red.
Un sistema de gestión de base de datos distribuida (SGBDD) gestiona el sistema y proporciona un
mecanismo de acceso que hace que la distribución sea transparente a los usuarios, ocultando los detalles
de su implementación. Por tanto, el SBDD es el conjunto formado por la BDD y el SGBDD.
El entorno habitual de un SGBDD es un conjunto de nodos que cuentan con un sistema de proceso de
datos que incluye una BBDD local, un SGBD y comunicación a través de LAN o WAN.
El problema principal de una BDD es el de concurrencia. Al realizarse las operaciones en red, si coinciden
dos o más al tiempo y sobre un mismo elemento de la BBDD o se produce un error del sistema, la
información puede corromperse. El concepto que subyace es la "ejecución consistente" o "proceso fiable",
referidos a consultas.
Una transacción se entiende, en el dominio de las
BBDD, como una operación básica consistente y fiable.
Una BBDD está en un estado consistente si obedece
todas las restricciones de integridad definidas en ella.
Los cambios de estado ocurren debido a operaciones
sobre la información. Durante la ejecución de una
transacción, la BBDD podría entrar temporalmente en
un estado inconsistente. El matiz es asegurar que se
regresa a un estado consistente al terminar la
transacción.
La gestión de transacciones persigue la transparencia de las acciones concurrentes a una BBDD y en la
gestión de errores. Una transacción siempre termina, aun con errores. Si termina con éxito se dice que se
ha hecho un “commit”. Si se detiene sin terminar su tarea, se dice que aborta. Cuando ocurre esto, se
detiene su ejecución y sus acciones se descartan (undone) regresando al al estado anterior. Esta operación
también se conoce como rollback. Las propiedades de una transacción son:
Atomicidad. Una transacción se trata como una unidad de operación. Por tanto, o se realizan todas las
acciones de la transacción o no se realiza ninguna. Si una transacción se interrumpe, sus resultados
parciales se deshacen. Esta actividad sobrecarga el sistema y se conoce como recuperación de
transacciones. Asegurar la atomicidad por caídas del sistema se conoce como recuperación de caídas.
Consistencia. Es la corrección de una transacción. Por ello, las transacciones no violan las restricciones de
integridad de una base de datos.
Aislamiento. Una transacción no puede revelar sus resultados a otras transacciones concurrentes antes de
su commit. Si varias transacciones se ejecutan a la vez, los resultados deben iguales a si se hubieran
ejecutado secuencialmente.
Durabilidad. Es la propiedad que asegura que una vez que una transacción hace commit, sus resultados
son permanentes y no se borran de la BBDD. Por tanto, los SGBD aseguran que los resultados de una
transacción sobrevivirán a errores del sistema. Se motiva la recuperación a un estado consistente.
Un SGBDD confiable es aquel que puede continuar procesando solicitudes aún cuando el sistema sobre el
que opera no es confiable. Es decir, el SGBDD debe seguir ejecutando las solicitudes de usuario sin violar
la consistencia de la base de datos. Diseñar un sistema confiable requiere identificar los tipos de fallos con
los que el sistema debe tratar. Los errores típicos son:

189
De transacciones. Los errores en transacciones se pueden producir por datos de entrada incorrectos o la
detección de un interbloqueo. La forma usual de afrontarlos es abortarlas. Se ha determinado que el 3% de
las transacciones abortan de manera anormal.
Del sistema. En un SBDD se pueden presentar fallos en el procesador, la MP o la fuente de energía de un
nodo. En este tipo de fallos se asume que el contenido de la MP se pierde, pero el contenido del
almacenamiento secundario es seguro. Se diferencian fallos parciales y totales del nodo. Un fallo total
afecta a todos los nodos del sistema distribuido. Un fallo parcial sólo a algunos nodos.
Del almacenamiento. Son errores en los dispositivos de almacenamiento secundario de las BBDD. Se
pueden presentar por errores del SO, del controlador del disco o del disco mismo.
De comunicación. Para evitarlos se puede dividir la red en varias subredes.
2.1. Características
Suelen enumerarse como características de un SBDD las reglas de Date. Se basan en la idea que un SBDD
debe funcionar como si fuera local. Así, se tienen:
Autonomía local. Los nodos de un SBDD deben ser lo más autónomos posible.
No depender de nodos centrales. Todos deben ser tratados igual.
Operación continua. Fiabilidad y la confiabilidad.
Independencia de localización. La localización física de los datos debe ser transparente.
Independencia de fragmentación y replicación.
Proceso de consultas y gestión de transacciones distribuida.
Independencia del hardware, SO y red
Independencia del SGBD. Permitir la heterogeneidad
Otros aspectos de importancia son la transparencia de la red y la autonomía local. El primero se refiere a la
forma en que se ocultan los detalles de la distribución en la red. La autonomía local es el grado máximo en
que el administrador de un nodo puede ser independiente del resto del SBDD.
La transparencia de red se basa en la definición de los elementos de datos, que es una relación, un
fragmento o una replica. Puede ser centralizada o distribuida. La distribuida tiene prefijos, pierde
transparencia. La centralizada puede suponer un cuello de botella. La transparencia en la replicación y la
fragmentación, indica que el sistema debe saber como se han dividido los datos. La transparencia de
localización indica que el sistema debe saber dónde están los datos
Las ventajas de la autonomía local son que el control sobre sus datos del administrador local (se distribuye
la tarea de administración), que los fallos de un nodo no afectan tanto a otros nodos y su recuperación es
más rápida. Además, se puede acceder a los datos locales sin el catalogo global y la actualización de
software se independiza.
2.2. Componentes
Otros aspectos globales, como la conexión con otros servidores o nomenclatura de datos deben ser tenidos
en cuenta. Por ello se pueden identificar cuatro componentes principales de un SGBDD:
SGBD local (SGBDL). Es un SGBD estándar, responsable de controlar los datos locales en cada nodo con
una BBDD.
Componente de comunicaciones de datos (CD). Es el software que permite que los nodos se comuniquen.
Contiene información de los nodos y los enlaces.
Catálogo global del sistema (CGS). Mantiene información específica de la naturaleza distribuida del sistema,
como los esquemas de fragmentación, replicación y asignación. El catálogo puede ser gestionado como una
BDD, por lo que puede estar fragmentado y distribuido, replicado o centralizado.
Procesador de consultas. Transforma peticiones de alto nivel a peticiones de bajo nivel. Sus funciones son
la descomposición de consultas en elementos de álgebra relacional, la localización de datos, usando el
catalogo del sistema, la optimización global y la optimización local.
2.3. Tipos y estructura
Los SBDD se pueden clasificar con tres criterios: tipo, distribución de los datos, y autonomía de los nodos.

190
Tipo de SBDD. Pueden ser homogéneas (un mismo SGBD) o heterogéneos (con distintos SGBD)
Distribución de los datos. Distingue sistemas centralizados o no. Son centralizados si los nodos se
encuentran en la misma localización aunque puedan ser independientes. Los no centralizados reparten los
nodos en distintas localidades y se conectan en red.
Autonomía de los nodos. Les dan carácter de compuestos, federados o multibase. Los nodos compuestos
disponen de poca autonomía, sus SGBD están bajo el control del sistema distribuido y su esquema local es
definido por el administrador de la BDD. Los SBDD federados son una colección de sistemas de BBDD
cooperativos y autónomos. Una parte del esquema lo define el administrador local, y otra el administrador
del sistema. Distingue consultas locales y globales, que implican el acceso a las otras BBDD federadas. Los
SBDD multibase o federados débilmente acoplados son un conjunto de sistemas de BBDD que no
cooperan. Es el usuario con herramientas quien usa dichas BBDD de forma conjunta.
2.4. Diseño de BDD
El diseño de SBDD distingue 2 estrategias: ascendente, en que se parte de BBDD existentes con el objetivo
de un esquema global y descendente, en que se diseña desde cero. A partir del esquema global, se diseñan
los esquemas locales.
La estrategia descendente supone el caso general. Además de las consideraciones de diseño no distribuido,
se ha de definir dónde se almacenaran los datos. El enfoque habitual usa dos pasos, la fragmentación de
datos (se dividen de la forma más eficiente) y la asignación de los fragmentos (se sitúan de forma óptima,
según el uso que se vaya a dar). Cuanta más información se tenga sobre el uso que se hará de los datos,
más eficiente será el diseño.
Para la fragmentación de datos se puede usar replicación y fragmentación. En la replicación los datos están
en más de un segmento. Con fragmentación los datos se dividen en varios segmentos. Hay varios tipos de
fragmentación: horizontal (se divide en filas), vertical (se divide en columnas) o en celdas (vertical y
horizontal). Para que una fragmentación sea correcta debe cumplirse la compleción (un dato se encuentra al
menos en un fragmento, reconstrucción (existe una operación relacional que aplicada a los fragmentos
permite reconstruir la relación) y la disyunción (un dato sólo está en un fragmento). Pueden darse casos
mixtos, en los que la fragmentación no sea una partición y existan datos duplicados en distintos segmentos,
caso en que no se cumpliría la disyunción.
La asignación de los fragmentos posee el problema que dado un conjunto de fragmentos Fn, una red
formada por un conjunto de localidades Ln, y un conjunto de aplicaciones Qn que se ejecutan, debe
encontrarse la distribución óptima de F sobre L. Los criterios de optimización suelen ser los de coste mínimo
(de consulta, actualización…) y rendimiento (tiempo de respuesta y productividad).
Por fin, las ventajas de los SBDD las resumen sus características: uso compartido de información,
delegación de la administración del sistema, fiabilidad, disponibilidad y agilidad del proceso. Sin embargo,
ofrece los inconvenientes de una mayor complejidad de proceso, coste del desarrollo software, más
probabilidad de errores y mayor tiempo de proceso.

191
TEMA 43. ADMINISTRACIÓN DE SISTEMAS DE BBDD

1. INTRODUCCIÓN
2. ADMINISTRACIÓN DE SISTEMAS DE BBDD
2.1. Roles
2.2. Funciones
2.3. Herramientas
2.4. Seguridad

192
1. INTRODUCCIÓN
La administración de sistemas de BBDD recae en la figura del administrador. Su labor consiste en la
definición de su responsabilidad, funciones y procedimientos de trabajo. En principio estas tareas son
independientes del SGBD concreto que se utilice en la organización.
2. ADMINISTRACIÓN DE SISTEMAS DE BBDD
2.1. Roles
El administrador de la BBDD es la persona o grupo de personas que gestiona el sistema, asegura su
correcto funcionamiento y posee la responsabilidad de su seguridad e integridad.
Según ANSI, las funciones del administrador de una BBDD se pueden organizar en 3 niveles, distinguiendo
tres roles de administración, que coinciden con los niveles que se identifican para una BBDD.
Administrador de la organización. Encargado del diseño lógico y conceptual.
Administrador de la BBDD. Se encarga del diseño físico, mantenimiento, rendimiento y seguridad.
Administrador de Aplicaciones. Crea las vistas, aplicaciones y programas para la gestión de la BBDD.
2.2. Funciones
Las funciones del administrador de BBDD pueden agruparse en 3 áreas de responsabilidad.
Definición del esquema de la BBDD. Es misión del administrador la definición de los esquemas conceptual,
interno y externo. Por tanto, se trata del análisis, la estructura de almacenamiento de la información y el
diseño de vistas.
Gestión del rendimiento. Establecer la forma de controlar y medir el funcionamiento de la BBDD para
obtener un rendimiento óptimo, en función de las características o requisitos esperados.
Gestión de la seguridad. Se refiere a las medidas a implementar para garantizar la seguridad de la BBDD,
incluyendo la integridad de la información y el respaldo y recuperación de la misma.
2.3. Herramientas
Para cumplir con sus funciones y responsabilidades, un administrador de BBDD en general, hace uso de las
herramientas típicas de su entorno. Las más directas son las que ofrece el propio SGBD, entre las que se
suelen encontrar utilidades de copias de seguridad y restauración, gestión de usuarios, permisos,
diccionario de datos, etc.
Existen también herramientas CASE para facilitar tareas de ingeniería de software como la documentación.
Para la gestión del rendimiento, puede hacerse uso de simuladores, cuyos resultados, en general en forma
de gráficos y estadísticas, sirven de orientación para la optimización de la BBDD.
2.4. Seguridad
La seguridad de la BBDD cubre varios aspectos. El primero, el control del acceso a la misma, asegurando,
en lo posible, que el usuario que accede, sea quien dice ser. Otro aspecto es la integridad, referido a que
las acciones que se intentan realizar sean efectivamente esas y que la información es consistente.
Los permisos de cada usuario en la BBDD los otorga el administrador y estarán en consonancia con lo que
cada usuario deba hacer o no, es decir, de su perfil. Las dos herramientas para gestionar este aspecto son
la vista y los permisos de usuario.
Una vista permite seleccionar la información sobre la que trabajará un usuario, de forma que implícitamente,
se oculta la que no se debe mostrar.
Los permisos de usuario limitan el acceso a aquellos que se autoricen. Así, a una vista se pueden aplicar
permisos de usuario como si se tratase de una tabla. Por ejemplo, en una BBDD de pacientes, puede
interesar que cierto perfil de usuario acceda a los datos de contacto, pero no al historial clínico, por tanto,
una vista, recuperará de la BBDD sólo la información relevante a cada tarea.
Por fin, un administrador debe tener en cuenta la integridad de la BBDD, que en general identifica tres
aspectos a cubrir, la integridad de dominios, general y sobre tablas base.
La integridad de dominios se refiere a la limitación en los valores que podrán tomar los atributos o su tipo de
datos. La integridad general se refiere a las restricciones sobre las columnas de las tablas. La integridad
sobre las tablas se refiere a las restricciones de diseño que afectan a claves primarias, foráneas, cláusulas
u otros aspectos.

193
TEMA 44. TÉCNICAS Y PROCEDIMIENTOS PARA LA SEGURIDAD DE LOS DATOS.

1. INTRODUCCIÓN
2. TÉCNICAS Y PROCEDIMIENTOS PARA LA SEGURIDAD DE LOS DATOS
2.1. Técnicas
2.1.1. Protección de ficheros
2.1.2. Protección de tablas
2.1.3. Protección de BBDD
2.2. Procedimientos

194
1. INTRODUCCIÓN
Las técnicas y procedimientos de seguridad de los datos surgen de la necesidad de controlar la ingente
cantidad de información que gestionan las organizaciones. La información no puede verse comprometida y
debe evitarse un uso inadecuado, por el perjuicio que pueda ocasionar.
Del mismo modo, es necesario que la información esté disponible para el que esté autorizado a utilizarla.
Con lo cual, se debe establecer un compromiso entre seguridad y disponibilidad. Las técnicas y
procedimientos se orientan entonces a garantizar las cuatro propiedades de la seguridad: confidencialidad,
autenticidad, integridad y disponibilidad.
2. TÉCNICAS Y PROCEDIMIENTOS PARA LA SEGURIDAD DE LOS DATOS
La seguridad de la información define una serie de conceptos para limitar su entorno de trabajo. Están
presentes en el vocabulario colectivo, pero conviene repasar los más representativos. Así, se puede definir
un dato como la información organizada para su análisis y toma de decisiones. Un dato confidencial es
aquel al que se limita su disponibilidad. Dato sensible es el que no es confidencial, pero permite inferir
información que si lo es. Un dato seguro es el que no se conoce o que no aporta información que deba
protegerse. Por fin, un intruso es aquel que compromete información sensible de un sistema de información.
La necesidad de las técnicas y procedimientos para la seguridad de los datos se debe a criterios como la
intimidad de las personas, es decir, la libertad a decidir qué desea un individuo que se sepa sobre si mismo.
Se entiende como un derecho. La intimidad deriva en la idea de confidencialidad de esa información. La
combinación del derecho a la intimidad y la necesidad de confidencialidad suelen regularse legalmente.
Por tanto, el problema puede centrarse en la seguridad en la divulgación de información. Definir divulgación
no es sencillo. Puede depender del contexto que la identificación de un individuo o cierta información ya sea
un compromiso, pero en otros casos, el compromiso requerirá más información y por tanto se siga teniendo
una posición de seguridad. Por tanto, un compromiso (pérdida de la seguridad) de información se da
cuando se divulga información sensible o confidencial del sujeto al que aplica.
El compromiso de la información entonces puede clasificarse en función de lo que informa. Este
compromiso se suele denominar divulgación y se pueden diferenciar tres criterios de clasificación: tipo, valor
y objetivo.
El criterio del tipo, diferencia divulgación exacta y estadística. La divulgación exacta se da al conocer el
valor exacto de la información. La estadística se produce cuando una información no exacta permite inferir
claramente la información objetivo.
El criterio del valor, diferencia divulgación verdadera y aparente. La divulgación verdadera se da cuando el
valor exacto o estadístico conocido se corresponde con el valor real de la información cuando se da el
compromiso. Si no coincidieran, sería una divulgación aparente.
El criterio de objetivo diferencia divulgación positiva y negativa. La divulgación positiva o interna es la que se
da cuando la información comprometida pertenece al sujeto en cuestión. En la negativa o externa, la
información comprometida no es la del objetivo, sino de su conjunto complementario.
Las técnicas y procedimientos para la seguridad de los datos se orientarán a evitar cualquier tipo de
compromiso o divulgación de información. Esto debe tener en cuenta la disponibilidad de información
indirecta que pueda permitir deducir información confidencial a partir de información tangente. Este
problema se da en llamar problema inferencial. Evitar este tipo de conclusiones es un aspecto muy
importante para la definición de técnicas eficientes de protección de datos.
Algunos factores a tener en cuenta para implementar las soluciones que aseguren esta información
tangencial pueden ser la información geográfica, como la que recogen en forma de metainformación
algunos dispositivos al realizar fotografías, pesos muestrales (información de pertenencia a un grupo o
clasificación) o la información externa o pública.
El procedimiento seguido para realizar una inferencia puede servir de base para la implementación de otros
procedimientos y técnicas inversos que logren lo contrario, precisamente, la protección de la información.
2.1. Técnicas
Las técnicas de protección de información deben cubrir los tres aspectos de su producción, la generación, el
proceso y la difusión. Quizás, las más conocidas por el público en general, sean las que se aplican en la
fase de difusión (antivirus, cortafuegos, etc.).
Las técnicas se clasifican de forma natural, siguiendo el criterio del formato en que los datos se ponen en
producción, es decir, se publican. En general, se distinguen tres formas de difundir los datos, con ficheros,
con tablas y mediante consultas a BBDD.

195
2.1.1. Protección de ficheros
Las técnicas de protección de ficheros (de registros individuales) se orientan a proteger el compromiso de
información confidencial evitando la identificación. Por tanto, se trata de proteger atributos como puedan ser
nombres, direcciones, etc. que no suelen ser públicos. Sin embargo, otros atributos como la edad o el sexo
si suelen ser públicos. Esta información permitiría identificar el objetivo, la información sobre un individuo o
asunto dado.
Las técnicas de protección de ficheros intentan proteger la identificación de unidades candidatas en la
población y evitar la difusión de valores inusuales de variables que favorezcan dicha identificación. Disponer
de información de una muestra representativa de la población en estudio puede servir de orientación. Del
mismo modo las anomalías o registros con información singular también representan información que puede
permitir inferir datos del objetivo y suponer una medida o estimación del riesgo de compromiso. Se pueden
clasificar las técnicas en técnicas de restricción, de perturbación y de encriptación.
Técnicas de restricción. Se basan en limitar la cantidad de información publicada con medidas como la
recodificación o la supresión local. La recodificación consiste en unificar categorías en variables cualitativas
o agrupar magnitudes con valores extremos en variables cuantitativas (top-bottom coding). La supresión
local consiste en suprimir la publicación de valores sensibles que puedan generar inferencias.
Técnicas de perturbación. Se basan en modificar valores, permitiendo su publicación pero de forma que no
se permita conocer el valor exacto. Se señalan medidas como el redondeo aleatorio, la introducción de
ruido, la sustitución y la microagregación.
El redondeo aleatorio consiste en redondear el valor de ciertos registros. La introducción de ruido introduce
errores controlados en el valor de los datos. La sustitución cambia valores de los datos de forma que la
información pueda ser tratada estadísticamente (se mantiene la estructura de correlación), sin riesgo de
identificación. La microagregación consiste en agrupar valores de los datos de acuerdo a criterios de
ordenación, de forma que en cada registro el valor se cambia por medias, por ejemplo.
Técnicas de encriptación. Se basan en codificar la información de forma ininteligible a un intruso y que a la
vez su decodificación no sea sencilla. Pueden aplicarse en cualquier etapa de la vida de la información
(generación, proceso y difusión) y proporcionan una solución eficiente al problema de la delegación segura
de datos (el proceso de la información sin conocer su contenido). Asimismo, permiten el tránsito de
información entre sistemas garantizando la confidencialidad.
2.1.2. Protección de tablas
El uso de tablas para gestionar datos es extremadamente frecuente, lo que exige distinguir técnicas de
seguridad específicas intentando no mermar la eficiencia. La presentación de datos en forma agregada no
limita el riesgo de compromiso de la información. La frecuencia de valores o valores dominantes pueden dar
o permitir hacer inferencias de información sensible.
Para estimar el riesgo de compromiso, se podrán implementar medidas de sensibilidad que determinen si la
información de una celda de la tabla contiene o no información sensible. El número de celdas sensibles en
una tabla determinará el riesgo total de compromiso. Las técnicas de protección de ficheros, pueden ser
aplicadas o adaptadas a tablas.
Como en el caso de los ficheros, la recodificación agrupa categorías en variables cualitativas o cuantitativas,
de forma que el nuevo valor se considere seguro. El redondeo controlado, se aplica a celdas manteniendo
la aditividad entre filas y columnas, comprobando la consistencia con totales y subtotales.
La supresión de celdas puede no ser suficiente, ya que si existieran datos subtotales o totales podrían
permitir recalcular el valor de una celda suprimida. De esta forma, se puede hacer una supresión secundaria
de celdas que sin ser sensibles puedan hacer inferir otros datos que lo sean. Encontrar el patrón de
supresión óptimo (el que aporta seguridad con el mínimo de supresiones) no es trivial.
Por fin, la granularidad, que puede considerarse más criterio que técnica, está basada en la distribución de
celdas unitarias en la tabla. Las celdas unitarias son las que poseen valor 1 en tablas de frecuencias o
contribuciones únicas en tablas de magnitud. Si el número de celdas unitarias superan un umbral, la tabla
se considera insegura. Las técnicas de protección aplicadas a datos singulares (que se desvían de la media
o patrones) pueden aplicarse para evitar la granularidad.
2.1.3. Protección de BBDD
Las BBDD son fuente inagotable de información, y muy importante, metainformación como estadísticas de
ocurrencia de datos, sus relaciones, etc. El acceso a este tipo de información suele ser fácil, aunque a
veces laborioso, con, por ejemplo, consultas secuenciales. En estos principios se basan ataques como
pueda ser SQL Injection.

196
Por ejemplo, realizar una serie de consultas mal formadas a propósito puede generar respuestas del SGBD
que otorguen información sobre la estructura de la BBDD y permitir a un intruso realizar consultas bien
formadas, que si no están filtradas, le podrían dar acceso a la información objetivo.
Por tanto, basar la seguridad de una BBDD sólo en criterios de acceso o permisos puede no ser suficiente.
Las técnicas de protección de datos para este problema inferencial deben orientarse al control de consultas
evaluando el compromiso que suponen las respuestas para la seguridad.
En este sentido, se pueden destacar dos técnicas de seguridad en BBDD, las auditorías y el camuflaje.
Las auditorías de BBDD intentan controlar las consultas y determinar si una nueva consulta dentro de una
serie, junto con la información aportada por las demás supone un riesgo de compromiso para la
información. El camuflaje consiste en ocultar la información confidencial entre dos valores límites ofrecidos
como respuesta a una consulta.
2.2. Procedimientos
Los procedimientos para la seguridad de los datos se basan en las técnicas expuestas, que a su vez se
apoyan en algoritmos matemáticos. En general, los procedimientos a nivel conceptual, siguen una
secuencia de estudio de las vulnerabilidades de ficheros, tablas y BBDD.
En el estudio de cada soporte, se decide qué técnicas aplicar y que sean consideradas oportunas en
función del compromiso que supone la difusión de información y otros aspectos como la compatibilidad con
E/S en BBDD relacionales. Por fin, los procedimientos aplican las técnicas y transforman el sistema en otro
más seguro.
Para ello, y debido a lo complejo de las técnicas, se puede decir, que se hace imprescindible el uso de
algún tipo de sw, diseñado para esta tarea. El sw que trabaja en este campo se oriena al control de la
publicación de información. Aspectos sobre los que se trabaja pueden ser la aplicación de microagregación
en variables o el trabajo con grupos de tablas relacionadas. Existe sw especializado que implementa las
técnicas expuestas, con una eficiencia muy aceptable y otorgando compatibilidad con la evolución
tecnológica de nuevos sistemas de información y redes de comunicación.

197
BLOQUE 4. SISTEMAS DE INFORMACIÓN, APLICACIONES INFORMÁTICAS E INGENIERÍA DEL SW
Tema 45. Sistemas de información. Tipos. Características. Sistemas de información en la empresa.
Tema 46. Aplicaciones informáticas de propósito general y para la gestión empresarial. Tipos.
Funciones. Características.
Tema 47. Instalación y explotación de aplicaciones informáticas. Compartición de datos.
Tema 48. Ingeniería del software. Ciclo de desarrollo del software. Tipos de ciclos de desarrollo.
Metodologías de desarrollo. Características de las principales metodologías de desarrollo.
Tema 49. Análisis de sistemas: Modelización de tratamientos. Modelo de flujo de datos y control.
Técnicas descriptivas. Documentación.
Tema 50. Análisis de sistemas: Modelización conceptual de datos. Técnicas descriptivas.
Documentación.
Tema 51. Análisis de sistemas: Especificación funcional del sistema. Búsqueda y descripción de
requisitos funcionales. Especificación de soluciones técnicas. Análisis de viabilidad técnica y
económica.
Tema 52. Diseño lógico de funciones. Definición de funciones. Descomposición modular. Técnicas
descriptivas. Documentación.
Tema 53. Diseño lógico de datos. Transformación del modelo conceptual a modelos lógicos. Análisis
relacional de datos. Documentación.
Tema 54. Diseño de interfaces de usuario. Criterios de diseño. Descripción de interfaces.
Documentación. Herramientas para la construcción de interfaces.
Tema 55. Diseño físico de datos y funciones. Criterios de diseño. Documentación.
Tema 56. Análisis y diseño orientado a objetos.
Tema 57. Calidad del software. Factores y métricas. Estrategias de prueba.
Tema 58. Ayudas automatizadas para el desarrollo de software (herramientas CASE). Tipos.
Estructura. Prestaciones.
Tema 59. Gestión y control de proyectos informáticos. Estimación de recursos. Planificación
temporal y organizativa. Seguimiento.
Tema 60. Sistemas basados en el conocimiento. Representación del conocimiento. Componentes y
arquitectura.

BIBLIOGRAFIA
Programación estructurada y fundamentos de programación. Sánchez Chamorro y otros. McGraw Hill.
Metodología de la programación. Alcalde E y García. McGraw Hill.
Apuntes para Algoritmos y estructuras de datos I y II. Varios profesores UPV.

Recursos web:
http://www.etsit.upm.es/
http://informatica.uv.es/iiguia/TSTD/
http://es.wikipedia.org/wiki/Portada
http://www.mitecnologico.com
http://ditec.um.es
http://www.microsoft.com/downloads/en/confirmation.aspx?familyid=B996E1E7-A83A-4CAE-936B-
2A9D94B11BC5&displaylang=en

198
TEMA 45. SISTEMAS DE INFORMACIÓN. TIPOS. CARACTERÍSTICAS. SISTEMAS DE INFORMACIÓN
EN LA EMPRESA.

1. INTRODUCCIÓN
2. SISTEMAS DE INFORMACIÓN
3. TIPOS
4. CARACTERÍSTICAS
5. SISTEMAS DE INFORMACIÓN EN LA EMPRESA

199
1. INTRODUCCIÓN
Las organizaciones se dividen en unidades funcionales menores como áreas o departamentos. Cada parte
de la organización forma parte de su sistema de información, del que obtiene los datos necesarios para
realizar su trabajo y al que contribuye con el resultado del mismo.
La operativa del sistema de información implica flujos de información entre subsistemas y la descripción de
su dinámica comprende datos y su tratamiento. Los sistemas de información permiten tratar estos datos y la
documentación administrativa de forma automatizada para su explotación. La explotación del sistema
permitirá incrementar la productividad de la organización y proporcionar información adicional de la marcha
de los procesos, de forma que pueda ser usada para su mejora.
2. SISTEMAS DE INFORMACIÓN
Los sistemas de información tienen por objeto coordinar la acción de cada parte de una organización para
lograr la eficiencia del sistema conjunto. El sistema de información debe asegurar el correcto flujo de la
misma entre los subsistemas de la organización.
Imaginar actualmente un sistema de información que no se apoye en herramientas informáticas es difícil. La
información es quizás el principal activo de las organizaciones y su ingente cantidad requiere un tratamiento
automático, es decir, informática, lo que ofrecerá la potencia de cálculo necesario para su análisis.
El sistema de información de una organización puede distinguirse dispuesto en tres niveles. El primero sería
el operacional o transaccional, relativo a la operativa diaria o habitual y materializado en manuales y
procedimientos internos de trabajo. El segundo nivel sería el de información administrativa (MIS), dispuestos
para ayudar en la toma de decisiones a los responsables de nivel medio y que están apoyados en sistemas
informáticos y SGBD. Por fin, el tercer nivel estaría constituido por sistemas de soporte a la decisión, que
pretenden soportar la toma de decisiones de más alto nivel y menos estructuradas.
La explotación automática de la documentación administrativa, basada en los sistemas de información tiene
como meta deseable la implantación de un sistema de información total integrado, de forma que permita la
implantación de los tres niveles con los mismos recursos y procesos. En la práctica, la explotación de la
información se realiza con distintas aplicaciones, en mayor o menor grado de integración.
3. TIPOS
Los sistemas de información pueden clasificarse según distintos criterios. Éstos suelen ser la función que
implementan, el área funcional a que aplican, , el usuario y el tipo de implementación.
Según el tipo de función se clasifican en transaccionales y de soporte a la decisión (o recuperación de
información).
Según el área funcional a que se aplican, los sistemas de información se pueden denominar sistemas de
información financieros, contables, etc.
Según el usuario del sistema, se distinguen sistemas de información institucionales (los habituales) y
personales, configurados para uso individual.
Según su implementación, se distinguen sistemas de información manuales, interactivos, que trabajan de
forma más o menos inmediata y por lotes, en que las operaciones son diferidas en el tiempo.
4. CARACTERÍSTICAS
Casi todas las organizaciones tienen características comunes, por lo que existen similitudes en los sistemas
de información y en la forma de explotar la documentación. La estructura de un sistema de información en
una organización típica puede incluir subsistemas como el de RRHH, Clientes, Logística o Almacén.
Cada subsistema podrá dividirse a su vez en otros, como por ejemplo, si se diferenciasen en RRHH los
subsistemas de personal y nóminas. Por su parte, el mantenimiento de inventarios precisa de registros que
sean gestionados por el sistema de información para ser controlados automáticamente.
Los clientes también pueden diferenciarse en función del servicio que se le preste, por ejemplo, si se trata
de una venta simple, o un servicio técnico. Otro subsistema clásico es el de contabilidad, encargado de
controlar las transacciones financieras y que suele disponer al menos de dos subsistemas típicos, el ce
cobros y pagos. La inclusión de más subsistemas puede ser el de control de producción, logística o
personal. En éstos, la explotación de la documentación debe tener en cuenta las normas de seguridad y
protección de datos de carácter personal y evitar que usuarios no autorizados accedan a esa información.
Por su importancia según el tipo de función que realicen, conveniente enumerar las características de los
sistemas transaccionales y de soporte a la decisión.

200
Los sistemas transaccionales explotan la información de forma procesal, basados en transacciones, que
son registros que definen una acción en la organización. Informáticamente, las transacciones son entradas
que modifican ficheros o BBDD. El tratamiento habitual en BBDD se muestra en la figura.
El sistema primero comprueba que no hay errores de entrada y
pasa a otras comprobaciones, como la edición. La edición asegura
que se dispone de los datos necesarios, con el formato correcto y
que no hay campos sin información.
Otras comprobaciones aseguran la consistencia de los datos de
entrada con el resto de la BBDD y una vez realizadas, se ejecuta la
transacción.
El sistema va proporcionando respuestas parciales al usuario según avanza la transacción, informando de
errores y del resultado final. Las transacciones pueden ser entradas en modo interactivo o por lotes. El
primero las atiende según entran al sistema y el modo por lotes las agrupa y difiere en el tiempo su
ejecución. Los sistemas de transacción por lotes no producen respuesta inmediata.
Los sistemas de soporte a la decisión explotan la documentación apoyando al usuario del sistema en la
toma de decisiones complejas. La mayoría basan en un modelo dinámico que se optimiza constantemente.
Por tanto, estos sistemas poseen un carácter un tanto experimental, ya que hay que entrenarlos, es decir,
configurarlos para que respondan como se espera que lo hagan, en función de toda la información que son
capaces de manejar y relacionar.
5. SISTEMAS DE INFORMACIÓN EN LA EMPRESA
Para ejemplificar la explotación automática de documentación administrativa se presentarán dos casos
típicos de flujo de información y operativa de un sistema que explota la información de una empresa.
El primero se refiere a un subsistema característico de gestión de clientes. El modelado del sistema recibe
como entrada típica un pedido de cliente, que es verificado para asegurar su aceptación, valorando
aspectos como la disponibilidad o la forma de pago. Los posibles inconvenientes deben ser solucionados
bien en el sistema o bien negociando con el cliente.
Las comprobaciones podrán hacer uso de la información suministrada por otros subsistemas como los de
logística o contabilidad. Del mismo modo, si el pedido se acepta, se generarán transacciones que actualicen
los registros de cliente, facturación y logística, de forma que se elimine o reserven en el almacén las nuevas
cantidades disponibles al aceptar el pedido. La información generada además será entrada de esos
subsistemas que, por ejemplo, en el caso de ventas o facturación deberán generar la emisión de facturas.
Cuando el servicio se completa, el cliente realizará un pago que supondrá otra entrada administrativa en el
sistema modelada en el subsistema de facturación. Ante los inconvenientes del proceso el sistema generará
información de respuesta en aquel paso del proceso que haya generado el problema, como se ha explicado
en la parte teórica. Así, si el problema es debido a falta de existencias se genera una respuesta para el
sistema de logística, si el problema se debe al cobro, el aviso saltará en facturación. El sistema de
información debe contemplar todos los eventos posibles.
El tratamiento automático puede realizarse, como se ha expuesto, de forma interactiva o por lotes. Así, el
sistema de inventario es lógico que se compruebe de forma interactiva, pero la expedición podría ser un
proceso por lotes que agrupe y organice varios pedidos una vez que se llega a cierto umbral.
El tiempo que transcurre entre la recepción de un pedido hasta que se sirve es más largo en un sistema por
lotes que en uno interactivo, por lo que la tendencia es a trabajar de forma interactiva, o tiempo real. Los
sistemas de pedidos generalmente se integran con los de inventario y facturación. Típicamente, un pedido
generará automáticamente una factura.
El segundo caso de estudio que se describe es la explotación de documentación administrativa en un
sistema logístico con un modelo simplificado. Su objetivo puede resumirse en el control del inventario y la
coordinación con el resto de áreas de la organización como contabilidad o clientes. Un esquema resumido
podría ser el mostrado en la figura.
El subsistema de stock contendría entre otra, la
información relativa a las existencias. El de expedición
controlaría las salidas y enlaza la información a los
sistemas de contabilidad y clientes. La recepción sería el
sistema que controla la entrada de mercancía, recibiendo
los pedidos de cliente y actualizando la documentación de
contabilidad y facturación.

201
La unidad de control puede estar diferenciada o distribuida en las demás y contaría entre sus funciones las
de verificación de la corrección de los pedidos, posibilidad de entrega en plazos, necesidades de reposición
y funciones similares.
Los avisos de reposición de inventario y mercancía se configuran con umbrales mínimos de existencias,
según las necesidades y demanda de cada artículo. En ese aspecto, el sistema actúa apoyando decisiones
de nivel bajo de complejidad, pero su información es muy importante para configurar los inventarios
correctamente, ahorrar costes de almacenamiento y optimizar la gestión. El análisis de esa información será
realizada por analistas, planificadores u otros sistemas informáticos.
El sistema también mantiene la información sobre tiempos de entrega (tiempo de entrada) que garantizan la
reposición y el abastecimiento. En general se basa en el establecimiento de umbrales mínimos que al ser
superados generan un aviso o petición de material. La recepción de mercancía actualiza los registros de
existencias y emite la información necesaria a contabilidad para el pago de proveedores, tras comprobar
que el material recepcionado es correcto en estado y cantidad.
En general los sistemas de logística mezclan procesos por lotes y en tiempo real. De forma que los pedidos
es habitual tratarlos en procesos por lotes y las consultas tipo disponibilidad suelen responder en tiempo
real con información actualizada.
Algunos sistemas más avanzados pueden realizar la gestión de pedidos automáticamente, utilizando la
documentación de los sistemas de cobros, pagos y contabilidad general. Del sistema de cobros se utilizará
información sobre facturación, saldos, pagos o informes y suele estructurarse con cuentas de cliente.
Además puede registrar las ventas, emitir facturas y controlar los pagos. De esta manera, si existe una
discrepancia entre pagos y facturas o plazos de vencimiento, su localización se simplifica y se pueden
automatizar las acciones a tomar.
El sistema de pagos gestiona el seguimiento de compras y pedidos, liberando los créditos necesarios para
afrontar las facturas tras la comprobación de la recepción. Por su parte, el sistema de contabilidad general
genera la información agregada de los recursos económicos de la empresa y el desglose de su utilización.
Permite asimismo emitir los informes de cierre anuales y orientar en la presupuestación y planificación de
los periodos futuros.

202
TEMA 46. APLICACIONES INFORMÁTICAS DE PROPÓSITO GENERAL Y PARA LA GESTIÓN
EMPRESARIAL. TIPOS. FUNCIONES. CARACTERÍSTICAS.

1. INTRODUCCIÓN
2. APLICACIONES INFORMÁTICAS DE PROPÓSITO GENERAL Y PARA LA GESTIÓN EMPRESARIAL
3. TIPOS
3.1. Procesadores de texto
3.2. Hojas de cálculo
3.3. Bases de datos
3.4. Presentaciones
4. FUNCIONES
4.1. Procesadores de texto
4.2. Hojas de cálculo
4.3. Bases de datos
4.4. Presentaciones
5. CARACTERÍSTICAS
5.1. Procesadores de texto
5.2. Hojas de cálculo
5.3. Bases de datos
5.4. Presentaciones

203
1. INTRODUCCIÓN
Las aplicaciones informáticas diseñadas para un propósito general y con un fuerte carácter de aplicación en
la gestión comercial dan solución a problemas típicos o generales, por lo que se denominan de propósito
general. A la vez, estos propósitos generales representan la operativa habitual de la gestión comercial.
Esta operativa incluye tareas como el procesamiento de texto, tratamiento de hojas de cálculo, BBDD y
presentaciones comerciales como núcleo central de actividad. Las aplicaciones para la gestión comercial
que además cumplen un propósito general surgen como necesidad de abaratar los costes derivados del
desarrollo de programas específicos (verticales) para una determinada organización.
Otras aplicaciones para la gestión comercial, pero que no pueden denominarse de propósito general, serían
los ERP y similares, que realizarían otras funciones como la gestión de stocks, tratamiento de series,
seguimientos y trazabilidad y tareas del estilo, que quedan fuera de este tema.
2. APLICACIONES INFORMÁTICAS DE PROPÓSITO GENERAL Y PARA LA GESTIÓN EMPRESARIAL
De las aplicaciones informáticas de gestión comercial y propósito general pueden señalarse como centrales
o imprescindibles, los procesadores de texto, hojas de cálculo, programas de BBDD y programas para
presentaciones y diseño gráfico. Estas aplicaciones y alguna más, suelen integrarse en suites o paquetes
ofimáticos de entre los que destacan comercialmente MS Office y como solución libre OpenOffice.
3. TIPOS
Los tipos de aplicaciones informáticas de propósito general y para gestión comercial pueden agruparse en
procesadores de texto, hojas de cálculo, bases de datos y programas para realizar presentaciones, donde
se han incluido en esta presentación los de diseño gráfico.
3.1. Procesadores de texto
Los procesadores de texto son programas que trabajan con texto, diseñados para la elaboración y
tratamiento de documentos. Básicamente es trasladar la idea de un bolígrafo y un papel y su evolución, la
máquina de escribir, a su procesamiento con un equipo informático. Lógicamente, la potencia de un
ordenador ofrece una gran productividad y grandes posibilidades para el tratamiento de escritos,
pudiéndose elegir formatos, apariencias, fuentes, dibujos, etc.
Este tipo de aplicaciones permiten crear documentos bien presentados con efectos y opciones, así como
permitir automatizaciones como generar múltiples archivos con los datos de tablas, BBDD u otros, ejemplo
típico de generación de cartas con el mismo contenido dirigidas a distintos clientes.
Los documentos generados se almacenan como archivos, de forma que se puede trabajar sobre un mismo
documento en distintas sesiones sin más que abrirlo con el programa adecuado. Ejemplos de estas
aplicaciones son MS Word, OpenOffice Writer o WordPerfect.
3.2. Hojas de cálculo
Una hoja de cálculo es una aplicación informática para el tratamiento de información organizada en forma
de tabla. Del mismo modo, toda información que pueda organizarse en forma de tabla es candidata a ser
tratada con hoja de cálculo, como pueda ser información contable, financiera o estadística. La mayor parte
de operaciones de una hoja de cálculo se orientan al tratamiento de números y fechas.
Las operaciones y funciones de las hojas de cálculo suelen agruparse funcionalmente, como por ejemplo
las operaciones básicas, funciones estadísticas, trigonométricas, etc. La elección de un programa de hojas
de cálculo tendrá en cuenta este aspecto para ofrecer al usuario las mejores herramientas de trabajo.
Los datos que trata una hoja de cálculo se almacenarán en forma de tabla en una estructura de rejilla, que
representa una tabla básica. Una rejilla se compone cuadrados o celdas organizados en líneas horizontales
y verticales, dando lugar a filas y columnas. Permiten generar gráficos a partir de los datos. Ejemplos de
estos programas son MS Excel, OpenOffice Calc o Lotus 123.
3.3. Bases de datos
Una BBDD es un conjunto de datos organizados y relativos a un contexto común. Las aplicaciones para la
creación de BBDD representan la solución habitual para almacenar, representar y tratar correctamente
grandes cantidades de información.
Los sistemas gestores de BBDD, SGBD, presentados en el tema 36 permiten un acceso a los datos
estructurado y ágil. Sus aplicaciones son numerosas en la gestión comercial, pero se extienden a
prácticamente la totalidad de los campos laborales.

204
Las posibilidades de consulta y organización estudiadas en los temas precedentes suponen una gran
facilidad, sobre todo a la hora de realizar informes comerciales, en que los datos deben presentarse de
forma clara y resumida. Ejemplos de aplicaciones son MS Access, OpenOffice Base y DBase..
3.4. Presentaciones
Las aplicaciones para presentaciones permiten realizar exposiciones gráficas con texto en forma de
esquema o resumen, con la posibilidad de ser combinado con imágenes, sonido o vídeos. Es decir,
permiten crear presentaciones multimedia, de uso habitual en la gestión comercial.
En general permiten generar fácilmente trabajos relacionados con la presentación, como
pueden ser notas, documentos, transparencias o diapositivas. Ejemplos de este tipo de
aplicaciones son MS Power Point y OppenOffice Impress.
En relación con los programas de presentaciones están los de diseño gráfico, pero que
por su especificidad no podrían considerarse de propósito general. Sin embargo es
bueno, al menos conocer algunos, como pueden ser CorelDraw, PhotoShop o FreeHand.
4. FUNCIONES
4.1. Procesadores de texto
Entre las funciones con las que cuentan los principales procesadores de texto se incluyen la escritura,
corrección, tabulaciones y configuración de página, opciones de párrafo y saltos de página, etc. Toda esta
funcionalidad permite al usuario realizar documentos de todo tipo, documentos, cartas, apuntes, de manera
simple e intuitiva. Por enumerar algunos ejemplos, se detallan las siguientes funciones.
Escritura y corrección. Son funciones básicas de escritura y se añade la función de corrección ortográfica.
Los procesadores permiten borrar texto en bloque, caracteres, insertarlo o sobreescribirlo. Al escribir se
genera automáticamente el salto de línea y retorno de carro en un párrafo y SE justifica según la opción
seleccionada. Funciones básicas de escritura y corrección son la inserción y sobreescritura de texto,
borrado y movimiento dentro del texto.
Búsqueda y sustitución. Ofrece la posibilidad de buscar un texto en un documento. También se permite la
búsqueda y reemplazo para sustituir automáticamente palabras.
Estilo. Las funciones de estilo incluyen algunas como el tipo de letra, tamaño, énfasis del texto con negrita,
cursiva o subrayado y otras similares.
Tabulaciones. Son funciones de sangrado y configuración de márgenes, permitiéndose el sangrado de
párrafos completos en ambos márgenes.
Encabezados y pies de página. Son funciones que permiten incluir datos como la paginación, autores,
fechas, organización, etc. en el encabezado y pie de página de un documento.
Conversión mayúscula y minúscula. La utilidad para convertir caractéres de minúsculas a mayúsculas de
forma automática tras la pertinente selección ahorra mucho tiempo y es muy útil para definir en mayúsculas
los títulos y encabezados. La conversión de mayúscula a minúscula permite configurar en mayúscula la
primera letra tras el punto.
4.2. Hojas de cálculo
Las funciones de una hoja de cálculo se resumen en realizar operaciones con los datos mediante fórmulas.
Una fórmula es una expresión que combina operadores y datos y genera un producto o resultado que es
almacenado en una celda. Sobre esa celda se ha debido definir la fórmula del resultado que almacena.
Las fórmulas pueden ser numéricas, de texto y lógicas. Las fórmulas numéricas usan datos numéricos para
realizar operaciones aritméticas. Las de texto operan con datos alfanuméricos generando otro dato
alfanumérico y las fórmulas lógicas trabajan con expresiones de valor 1 si se verifican y 0 si son falsas.
Una fórmula se define con los datos y operaciones que requiera. Los datos pueden ser valores directos o
referencias a otras celdas, caso habitual, que aprovecha la esencia de la hoja de cálculo, ya que la
operación se define de forma simbólica, es dinámica y pesenta siempre datos actualizados si las celdas
sobre las que se opera están actualizadas.
Existen fórmulas predefinidas llamadas funciones que permiten realizar operaciones que implicarían cierto
tiempo en definirse. Las funciones se dividen en funciones básicas (matemáticas, lógicas, de texto, etc.) y
funciones avanzadas (funciones financieras, trigonométricas, estadísticas, de sistema, etc.). El formato de
una función es típico y utiliza un nombre y parámetros de entrada.
El nombre de la función indica el tipo de operación a realizar y los datos sobre los que opera se pasan como
parámetros, que como en el caso de fórmulas, pueden ser constantes o referencias a celdas. Para definir

205
una función en una celda, puede usarse el menú contextual, las opciones del menú de la barra de
herramientas o definirla directamente con un signo ´=´ o similar que utilice el programa. El resultado de una
función es un nuevo dato que se almacena en la celda en que se define la función. Las funciones pueden
ser operandos de una fórmula.
4.3. Bases de datos
Las funciones típicas que ofrecen los SGBD son la adición, edición, borrado y recuperación de registros. Es
común que las BBDD incorporen utilidades de modificación de ficheros y tablas, indexación, generación de
informes o creación de vistas. Algunos ejemplos de funciones son los siguientes.
Adición de registros. En general se realiza con un formulario o plantilla con los campos de la tabla, donde el
usuario introducirá los datos. Es lógico comprobar la compatibilidad del tipo de datos y la duplicidad de
claves. Al añadir un registro se crean sus nuevos índices. Los registros pueden añadirse en blanco, para ser
actualizados posteriormente. Se añadirán al final del fichero o insertarse en una posición relativa
Edición de registros. La función de edición suele presentar el mismo aspecto que la de añadir, con la
información actual del registro, para que el usuario la cambie según los permisos correspondientes. Los
valores modificados pasan a almacenarse directamente. También se permite la edición de bloques de
registros mediante utilidades de hojeo (browse).
Borrado de registros. El borrado o eliminación de un registro en general implica su marcado y la eliminación
física del fichero. El marcado no lo elimina inmediatamente, de forma que los datos pueden recuperarse.
Pero al eliminarse físicamente, la información se pierde.
Recuperación de registros. La recuperación de un registro puede realizarse por posición, por valor de un
campo clave o índice o por una condicion particular. Cada forma utilizará un algoritmo función diferente.
Cuando se recupera el registro, pasa a ser el activo y si no se localiza, se suele devolver “fin de fichero”.
Existen funciones para recuperar grupos de registros o la totalidad de ellos.
4.4. Presentaciones
Las funciones típicas de las aplicaciones para creación de presentaciones son las que permiten crear el
contenido del trabajo y se pueden agrupar en funciones de edición, diseño, enriquecimiento y configuración.
Edición. Son las funciones básicas de trabajo con objetos (texto, imágenes), como por ejemplo la copia,
pegado, subrayado, justificación, etc.
Diseño. En las funciones de diseño se inclurían las relativas a los objetos que se pueden crear, como
figuras, organigramas, formas y demás, así como las funciones de diseño de la apariencia de la
presentación, como por ejemplo el aspecto de las diapositivas o su orientación.
Enriquecimiento. Se refiere al contenido multimedia, como la inserción de animaciones, videos, transiciones
y efectos del estilo.
Configuración. Son las funciones que agrupan características de la presentación en sí, como por ejemplo el
tipo de avance de las diapositivas, narraciones, opciones de presentación, intervalos y aspectos similares.
5. CARACTERÍSTICAS
5.1. Procesadores de texto
Las características de los procesadores de texto se pueden agrupar en físicas, funcionales y avanzadas.
Las características físicas incluyen las que permiten trabajar con la aplicación, el entorno de trabajo, las
funcionales son las funciones que ofrece el programa y que ya han sido expuestas y las características
avanzadas estarían compuestas por las utilidades no funcionales, orientadas a mejorar las prestaciones de
la aplicación como puedan ser diccionarios, integración con correo electrónico o utilidades de gráficos.
De las características físicas el entorno de trabajo incluye el sistema de visualización, que definiría la forma
de trabajo del programa en su aspecto gráfico, tradicionalmente en modo texto, prácticamente desechado, y
en modo gráfico, que puede encontrar alguna referencia como WYSIWYG (What You See Is What You Get)
que se refiere a que lo que se visualiza en pantalla es el resultado final que se obtendrá. Es decir, la típica
representación de un folio con sus márgenes y demás características.
La pantalla de visualización suele contar con una zona de edición de texto en que se trabaja con el
documento, una barra de herramientas que contiene diversas funciones accesibles mediante clics de ratón,
opciones de menú, que presentan las mismas opciones que la barra de herramientas en modo menú y una
barra de estado con información del documento como el idioma, página actual, etc.
Un procesador de textos actual permite habitualmente seleccionar distintas opciones de impresión y
presentación, como la calidad, tamaño de papel o número de copias. La impresión puede realizarse en

206
impresora o a un archivo. Una utilidad importante es la configuración para la impresión de sobres y
etiquetas.
5.2. Hojas de cálculo
La estructura de una hoja de cálculo es la de una
retícula organizada en filas y columnas. Una columna es
un grupo de cuadrados situados uno encima de otro en
vertical. Una fila es el conjunto de cuadrados situados
en horizontal consecutivamente. La intersección de filas
y columnas se llama celda o casilla. Cada columna de
una retícula se suele identificar con letras siguiendo las
normas de numeración, es decir a partir de la columna
nombrada como Z, comenzaría la AA, AB, etc. Las filas
se identifican mediante números hasta el 65.536 como
valor típico.
De este modo, una celda puede localizarse con la coordenada de su fila y columna, coordenada que toma el
nombre de dirección. Al seleccionar una celda, se dice que esa es la celda activa. La selección puede
hacerse con el cursor, el tabulador o el ratón. Cada celda sólo contiene un dato, que se referencia con la
dirección de la celda.
Los datos podrán ser numéricos y alfanuméricos. Los primeros son números y cifras con los que realizar
operaciones aritméticas. Los datos alfanuméricos se componen de números y letras y no permiten
operaciones aritméticas. Los datos en una hoja de cálculo pueden representarse con distintos formatos,
especificando por ejemplo como codificar fechas, número de posiciones decimales o notación monetaria.
Una hoja de cálculo permite automatizar tareas sobre varias celdas simultáneamente. Un grupo de celdas
contiguas se llama bloque, que será identificado con las direcciones de la celda del extremo superior
izquierdo y la inferior derecha del bloque, expresado como coordenadas, con un separador (: o ;).
Las operaciones sobre celdas individuales o bloques poseen las mismas características, se seleccionan y
se aplica la operación, ya sea borrado, copia, modificación, etc. La copia de un bloque impone la condición
que el bloque destino y el origen posean las mismas dimensiones.
5.3. Bases de datos
Las características de las BBDD vienen marcadas por su estructura, en general, implementada con ficheros
o tablas. Las características generales de los programas de creación de BBDD pueden resumirse en:
Asistente. Los SGBD suelen incluir un asistente que permite operar con la BBDD sin conocer o escribir el
comando necesario. Las opciones del asistente se muestran mediante menús o algún método similar.
Indexación. La práctica totalidad de BBDD usan algún proceso de indexación, que utiliza meta información
para localizar los registros directamente, independizando la estructura lógica de la física. El SGBD consulta
los índices, que le permiten recuperar los registros sin importar su orden de almacenamiento. La exploración
secuencial de la BBDD requiere entonces un recorrido secuencial de los índices, no de las posiciones
físicas de memoria.
Los índices podrán ser monocampo o multicampo y mantenidos o no. Los índices mantenidos son los que
son actualizados automáticamente, de forma que al cambiar su información la BBDD se reindexa. Algunos
proveedores usan índices compactos para reducir al mínimo su tamaño e incrementar la velocidad de
búsqueda, en combinación con técnicas como IQ de Borland o Rushmore de MS.
Vistas. En BBDD relacionales el acceso del usuario puede limitarse con el uso de vistas, interfaces que
presentan la información necesaria ocultando la que no se utiliza. Una vista puede incluir campos de
diferentes tablas, de forma que el usuario lo vea como una unidad, sin más detalles de la estructura real.
Informes. De forma similar al concepto de las vistas, los usuarios sulen requerir la información de la BBDD
estructurada según sus necesidades o campo de trabajo. Por ello, los programas de BBDD suelen facilitar la
realización de informes, listados formateados para obtener la presentación de los datos de forma sencilla.
Un informe podrá ser un modelo de factura, una carta, etc. La impresión del informe ejecutará la orden
correspondiente en el SGBD y será impresa por pantalla, a un fichero, a papel, etc.
5.4. Presentaciones
La característica más destacable de los programas de creación de presentaciones, probablemente sea la
sencillez de su uso. Editar el contenido de una presentación es intuitivo y suele ofrecer opciones
automáticas de tamaño de texto y de opciones de diseño, por ejemplo. Del mismo modo, los menús que
agrupan las opciones de trabajo suelen ser muy explicativos.

207
Las aplicaciones permiten crear y editar organigramas, importar figuras de diseño, insertar contenido
multimedia, comprobar los resultados parciales con presentaciones preliminares y cambiar entre varios tipos
de vistas (diapositivas, documentos) y su posición.
Otra característica de las aplicaciones, no sólo las de generación de presentaciones, es la opción de firma
del documento y de protección con contraseña, de forma que un usuario que no la conozca, aunque pueda
examinar el contenido del archivo, no pueda modificarlo o imprimirlo.
Utilidades interesantes son las de ayuda a la presentación, de forma que se facilita la preparación de la
presentación con las pausas, intervalos, transiciones, narraciones, etc. a que da opción el programa.
Asimismo, es típica la posibilidad de mostrar la presentación en varios monitores, de forma que tanto el
público (en la pantalla destinada a él) como el presentador (en su pantalla) puedan visualizar el contenido
que se presenta, de forma que el presentador pueda estar visualizando sus propias notas, no visibles a su
público. Las opciones de presentación también incluyen una vista de todas las diapositivas en miniatura.
Las vistas normales enmendadas incluyen el texto de cada diapositiva y una vista en miniatura de sus
gráficos. También son características las opciones de herramientas de revisión y correctores ortográficos.

208
TEMA 47. INSTALACIÓN Y EXPLOTACIÓN DE APLICACIONES INFORMÁTICAS. COMPARTICIÓN DE
DATOS.

1. INTRODUCCIÓN
2. INSTALACIÓN Y EXPLOTACIÓN DE APLICACIONES INFORMÁTICAS
2.1. Instalación
2.2. Explotación
2.2.1. Procesador de textos
2.2.2. Hojas de cálculo
2.2.3. Bases de datos
3. COMPARTICIÓN DE DATOS

209
1. INTRODUCCIÓN
La instalación y explotación de una aplicación informática es una tarea compleja en la que hay que tener
muy en cuenta las indicaciones del desarrollador. En general éstas vendrán especificadas en manuales de
instalación, de usuario, de referencia y guías rápidas, que cubren los aspectos de instalación y explotación.
Al adquirir una aplicación informática, en función de su complejidad, puede ser necesario un proceso de
parametrización, para adaptarla a las particularidades de la organización que la instale. En este caso puede
ser necesario la intervención de consultores, bien del fabricante del software, bien externos que una vez
instalada la aplicación, la configuren correctamente para poder pasar a la fase de explotación.
2. INSTALACIÓN Y EXPLOTACIÓN DE APLICACIONES INFORMÁTICAS
La instalación de aplicaciones comienza con el manual de instalación, la guía que provee el fabricante y
donde se detalla cómo realizar el proceso. Para garantizar el correcto funcionamiento del programa es
recomendable seguir sus indicaciones y atender a los requisitos mínimos exigidos al sistema. La instalación
suele ser guiada gracias a la inclusión de un programa instalador, que también permite la configuración de
características de la aplicación, como su actualización.
Una vez que se instala, configura y parametriza una aplicación comienza la fase de uso o explotación, en
que los usuarios deben sacarla el mayor rendimiento posible.
2.1. Instalación
La instalación de aplicaciones informáticas debe tener en cuenta algunos factores para poder llevarse a
cabo de forma correcta, evitar errores y conseguir el mayor rendimiento. Entre estos factores se encuentran
las necesidades de equipamiento informático, la configuración correcta del SO y los programas de
aplicación relacionados que garantizan compatibilidad y la correcta ejecución del programa de instalación.
Los proveedores de aplicaciones suelen enfocar sus desarrollos a plataformas concretas, que requieren
unos requisitos mínimos de hardware y software para su funcionamiento. En un caso genérico, se
establecen tres niveles de requisitos para la instalación: el equipamiento básico, el opcional y el de red.
El equipamiento básico necesario detallará los elementos mínimos de hardware, microprocesador, memoria
RAM, exigencias de disco duro y versión del SO recomendada. El equipamiento opcional especifica
configuraciones adicionales para obtener un rendimiento mayor, mientras el equipamiento de red se refiere
a requisitos para un funcionamiento correcto de la aplicación para su trabajo en red, tales como la
configuración recomendada para los servidores y estaciones de trabajo, para el SO de red o la carga
máxima de clientes a los que dar servicio.
Una vez preparados los requisitos de equipamiento comienza el proceso de instalación, en general iniciado
con un programa instalador (install, setup, etc), que de forma automática descomprime y organiza la
estructura de la aplicación facilitando sobremanera la tarea del administrador. Aún así, para obtener un
adecuado rendimiento habrá que parametrizar el programa, para lo que suelen ofrecerse dos tipos de
instalación, la básica y la avanzada o personalizada.
La instalación básica configura valores por defecto y se orienta a instaladores con menor conocimiento,
mientras que la instalación avanzada o personalizada se orienta a instaladores más expertos, de forma que
ofrece la posibilidad de configurar los elementos de la aplicación a fin de optimizar su funcionamiento.
El proceso de instalación cubre algunos pasos comunes a todos, como son la especificación de la ubicación
de destino de la aplicación, directorios, registro de licencias o números de serie, si los hay, actualización,
parámetros de servidor si la instalación se realiza en un servidor, permisos y otros aspectos similares.
Una vez realizada la instalación, si ocurre que la configuración ha sido automática o no ha quedado como
era de esperar, se podrá redefinir el entorno de trabajo y, en principio, la aplicación se consideraría
instalada y dispuesta para su explotación. Los usuarios deben entonces comprobar que responde al
funcionamiento esperado.
2.2. Explotación
La explotación de un programa informático es su utilización adecuada para obtener el mayor rendimiento
de las funciones y utilidades que ofrece para la solución de las necesidades de usuario. La explotación
implica una planificación previa que independientemente del tipo de aplicación de que se trate, debe tener
en cuenta la programación de copias de seguridad y el intercambio de datos entre aplicaciones.
La pérdida de información en las aplicaciones puede comprometer la propia supervivencia de la empresa,
por lo que las copias de seguridad son un asunto vital. Éstas se realizan de los datos, ya que si se produce
una corrupción del programa, bastaría con volver a instalarlo. La realización de copias de seguridad no es
trivial y debe responder a ciertos parámetros de configuración, como puedan ser el intervalo a realizar la
copia, si será incremental o total, la periodicidad, localización de las copias, etc.

210
La planificación del intercambio de información entre aplicaciones debe tener en cuenta si la generada por
una aplicación será requerida por otra. Estos intercambios pueden ser directos, indirectos o dinámicos.
El intercambio directo se realiza cuando la aplicación receptora de información reconoce el formato de los
datos y no se requieren acciones adicionales. Por el contrario un intercambio indirecto requiere un proceso
de conversión de formatos de datos para llevarse a cabo, operación también conocida como exportación e
importación de datos. Si los programas trabajan en un mismo entorno, pueden utilizar herramientas de
intercambio dinámico de datos (DDE en WS), utilizando modelos cliente servidor, en el que la aplicación
servidora ofrece sus datos a otras durante la ejecución y la aplicación cliente los recibe.
En general, la explotación difiere en función del tipo de aplicación, ya que sus funciones varían. Como
ejemplos de explotación de aplicaciones informáticas se tratará el caso de los procesadores de texto, hojas
de cálculo y bases de datos, como continuación al tema anterior.
2.2.1. Procesador de textos
La explotación de un procesador de texto requiere el conocimiento de su potencial a través de sus
funciones, básicas y avanzadas. La creación de documentos funcionales pasa por la planificación previa de
los mismos, en la que habrá que definir los formatos de los documentos habituales, incluyendo el formato de
página y párrafo, el estilo del texto, documentos base de correo o la definición de macros.
La estructura de un documento suele mantener un estilo uniforme que puede establecerse en las funciones
del procesador y que suelen definirse a tres niveles, funciones básicas, correo personalizado y macros. Las
funciones básicas incluyen las de estilo y tamaño de fuente, subrayado, cursiva, etc. El correo
personalizado (mail-merge) permite combinar documentos genéricos con el contenido de una tabla o BBDD
para crear documentos personalizados. El ejemplo típico es la generación de cartas personalizadas con los
datos de los clientes almacenados en una hoja de cálculo o BBDD.
El proceso consiste en usar un modelo de escrito en el que se definen unos campos que serán leidos de la
tabla y el procesador de texto los insertará creando un documento por cada registro de la tabla. Los
procesadores más avanzados incluyen un lenguaje de programación para selección de campos según los
criterios que se definan. Otra opción es la importación de datos directamente de un programa de BBDD.
Las macros (macroinstrucciones) son una secuencia de instrucciones que pueden grabarse y obtener así
una nueva funcionalidad de carácter particular. Su utilidad radica en automatizar tareas habituales que
realice el usuario y que al agruparlas se ahorra tiempo. Ejemplos pueden ser la inserción de nombres o
fechas o macros para configuración de márgenes o tabulaciones.
2.2.2. Hojas de cálculo
La explotación de una hoja de cálculo, también implica conseguir el máximo rendimiento de sus funciones,
para lo que su planificación debe contar con una correcta definición de formatos, macros y demás aspectos.
Todas las funciones y operaciones matemáticas que
suelen ofrecer las hojas de cálculo son herramientas
muy potentes para tratar la información y optimizar
su explotación, ya que ahorran mucho tiempo y
facilitan los cálculos, de forma intuitiva. Las macros
se pueden definir del mismo modo que en el caso
de los procesadores de texto y otras aplicaciones,
que en este caso, suponen un plus adicional al
combinar su potencia con las funciones
predefinidas.
Otras herramientas muy utilizadas en hojas de cálculo son las de generación de gráficos para presentación
de resultados que resumen y organizan visualmente los datos. Gráficos típicos son los de barras y los
sectoriales, que permiten obtener una primera valoración de los datos sin estudiarlos en detalle. Sus
ventajas son la proyección visual de los datos, simplicidad de información y facilidad de interpretación.
2.2.3. Bases de datos
La explotación de un SGBD actualmente es cada vez más habitual, y a veces, el usuario no posee
conocimientos de programación, no necesarios, pero que obliga a generar un buen diseño para tener un
correcto rendimiento.
Algunas recomendaciones de diseño son la definición cuidadosa de los datos a usar. Es mejor dedicar más
tiempo al diseño que tener que modificar algo una vez que la aplicación se empieza a explotar. Asimismo, la
longitud y el tipo de datos de los registros son aspectos importantes, e incluso buenas prácticas, como
introducir la información de manera uniforme (por ejemplo todo en minúsculas) o no introducir datos
supérfluos, no simplificar demasiado los índices y utilizar macros para consultas habituales.

211
Existen problemas típicos de diseño de BBDD, que pueden mermar el rendimiento. Ejemplos de estos
problemas son las tablas con muchos campos no relacionados en el mismo contexto, numerosos registros
en blanco por no ser aplicables, o diseñar un número elevado de tablas con registros redundantes.
El primer paso en el diseño de una BBDD puede ser entonces determinar su propósito y cómo se explotará.
A veces, el uso al que se destina orienta muy bien en el diseño y estructuración de la BBDD, las tablas
necesarias y la organización de los campos y registros.
Del mismo modo, el diseño debe contar con dos aspectos aparentemente contradictorios, por una parte no
utilizar información redundante o repetida, de forma que si se puede plantear el agrupar esa información en
una tabla a parte o independiente, y por otro lado, la conveniencia de almacenar información que aunque
repetida, o en principio descartable, puede ser útil en el futuro o para obtener datos que puedan usarse para
posteriores ofertas comerciales. En ambos casos, la información a tratar será candidata a incluirse en tablas
diferentes, y su diseño dependerá de los compromisos de tamaño y rendimiento que se exijan.
3. COMPARTICIÓN DE DATOS
En una organización, la posibilidad de compartir información entre aplicaciones es una necesidad de su
sistema de información para lograr una explotación eficiente de sus recursos. En el pasado esta exigencia
era costosa debido a la falta de estándares y métodos de solución del problema, debiéndose desarrollar o
contar con métodos intermedios para el intercambio de información, que en general eran caros. Con la
aparición de los entornos gráficos y la constante integración de aplicaciones, unido a la adopción de
estándares por parte de los fabricantes de software, el problema se ha simplificado sobremanera.
Uno de los conceptos que da solución a estas situaciones es el de paquete integrado, un conjunto de
programas que agrupan las funciones básicas de aplicaciones comunes como procesadores de texto, hojas
de cálculo o BBDD. La compartición de datos entre ellos es total pudiéndo cada programa reconocer los
datos generados por los demás. Un ejemplo típico sería el de un procesador de textos que genera cartas
personalizadas con la información de una BBDD.
La popularización de SO como WS supuso la adopción de facto de protocolos de comunicación entre
aplicaciones como las tecnologías OLE (incrustación y enlace de objetos) o DDE (intercambio dinámico de
datos) y el desarrollo de paquetes integrados que permiten una integración total de la información. Los
problemas se derivan de necesidades puntuales en que se obliga a contar con programas específicos.
Los fabricantes de sw plantean soluciones como las Suites, productos sw que integran varias aplicaciones,
que en general persiguen un beneficio comercial para el cliente a cambio de la utilización de sus soluciones
en detrimento de las de la competencia. En general integran programas de amplia difusión comercial, con
otros menos vendidos. En cualquier caso, el intercambio de datos entre programas es una tarea de obligada
solución por los desarrolladores sw si desean tener éxito comercial. La integración entre aplicaciones debe
permitir la inclusión en un archivo la información generada por otros programas.
En entornos monousuario o monotarea, las aplicaciones suelen actuar de forma independiente ejecutando
un programa cada vez y requiriendo programas auxiliares para intercambiar información. Los SO multitarea
actuales permiten el intercambio de información entre varios programas a la vez. De esta forma, el SO es el
intermediario entre programas, sin necesidad de programas conversores.
Las herramientas básicas que proveen los SO para el intercambio de datos son la copia, el cortado y el
pegado. Estas herramientas no suponen protocolos de intercambio de datos propios, sino que se apoyan en
memorias intermedias para almacenar temporalmente los datos y recuperarla cuando se introduzca en las
aplicaciones destino. Suelen incluirse en los menús de Edición de la barra de menús.
El proceso de intercambio de información sería tan simple como seleccionar los datos en el archivo de la
aplicación origen, seleccionar la opción copiar o cortar del menú Edición (o típicamente Ctrl+C, Ctrl+X),
cambiar al archivo de la aplicación destino, seleccionar el lugar donde irá la información copiada y elegir la
opción pegar (o Ctrl+V) del menú edición del programa receptor. Tras esta operación, la información de
origen estaría dispuesta en la aplicación destino.
Por su parte, la tecnología DDE permite el intercambio dinámico de datos de manera que se establece una
comunicación cliente servidor entre el programa receptor de la información (cliente) y el origen (servidor). El
protocolo requiere que los programas implicados lo implementen, de forma que los cambios que realice el
servidor se registren en el archivo cliente cuando ambos se ejecuten a la vez. El intercambio se realiza de
forma automática y con todas las garantías.
La tecnología OLE (Object Linked and Embedded) establece una comunicación entre la aplicación servidor
y la cliente para efectuar el intercambio de datos apoyándose en métodos, la incrustación y la vinculación.
La incrustación dispone una copia de la información para el programa cliente, que para modificar la
información recepcionada solicita al servidor que realice los cambios. Si la modificación se realiza
directamente desde el servidor sin haber activado el cliente, las modificaciones no se efectúan en el cliente.

212
La vinculación establece un nexo entre cliente y servidor, de forma que las modificaciones en el servidor si
se refleja en el cliente aunque en ese momento no esté activo. En el archivo cliente no se instala ninguna
copia de la información, se activa un enlace a la información vinculada que permanece en la aplicación
servidora. La vinculación permite utilizar una misma información en varios archivos de programas distintos.
Las modificaciones en la información vinculada estarán disponibles en los archivos que la vinculan.
La compartición de recursos e información entre aplicaciones informáticas sigue una metodología similar en
muchos casos. Un caso de estudio representativo es el intercambio de datos entre aplicaciones ofimáticas
como procesadores de texto, hojas de cálculo o BBDD y otras aplicaciones. El comportamiento de los tres
tipos de aplicación es parecido, pudiéndose establecer procesos de importación y exportación.
La importación y exportación de documentos, hojas de cálculo o entre BBDD puede realizarse de forma
directa o indirecta, en función del tipo de programa y si los datos manejados son reconocidos por ambos. La
forma directa realiza la conversión al formato de datos de la aplicación receptora y la indirecta realiza la
conversión a un formato intermedio estándar, reconocible por la aplicación destino.
Al importar datos de un procesador de texto con conversión directa,
la aplicación receptora debe reconocer el formato de las fuentes
origen, de forma automática o manual, en que el usuario conoce el
tipo de datos origen y elige un procesador de texto compatible. Para
la conversión se debe conocer el programa origen y su versión.
Realizar la importación es similar a abrir un documento, de forma que
el procesador detecta si el formato es adecuado o no. Si no lo es,
informa de la necesidad de realizar la conversión y se suele ofrecer
una lista de formatos reconocibles para usar.
Para exportar datos de forma directa a un procesador de texto el procedimiento puede ser tan sencillo como
guardar un archivo en otro formato, siempre que se permita en el origen. Si no existe esta posibilidad o el
procesador de texto es antiguo, se precisará algún programa de utilidad que realice la conversión. Si se
trabaja con hojas de cálculo o BBDD, los procedimientos son similares. En el caso de BBDD existen
formatos que sin ser estándares, son reconocidos por la mayoría de SGBD como el formato DBF de DBase.
Si la compartición de información entre aplicaciones del mismo tipo o de tipo diferente no reconoce el
formato de los datos, la conversión se ha de realizar a un formato reconocible por la aplicación receptora, en
general, formato de texto ASCII y se habla entonces de conversión indirecta. Los formatos típicos de
grabación de información en ASCII son los delimitados y los no delimitados.
Los formatos no delimitados son líneas de texto no dividisibles en elementos de datos individuales. Este
formato se utilizará cuando el proceso de importación exportación se realiza con otro procesador de texto.
Los formatos delimitados por ´,´ y “”, separan campos con comas y los valores de texto se marcan entre
comillas y se organizan en líneas de texto. Este formato se usa al importar datos a un documento desde una
hoja de cálculo o una BBDD y para el proceso contrario de exportación.
Los formatos delimitados por comas se organizan en líneas de texto con campos separados por comas. Al
exportar datos en formato ASCII hay que generar un fichero en ese formato a partir de los datos de un texto,
lo que suele solucionarse con la opción "Exportar" que incorpora el programa y que da a elegir el tipo de
formato ASCII que desea ser grabado. La elección dependerá de la aplicación destino. Importar datos de un
fichero ASCII requiere abrir un documento nuevo o posicionarse en una zona vacía del documento activo,
debido a que los datos que se importan se superponen a los existentes.
Las hojas de cálculo suelen disponer de un pequeño SGBD para reconocer formatos de otras BBDD, de
forma que la importación es directa. Para importar o exportar datos con una BBDD no reconocida por la hoja
de cálculo tendrá que usar el método de conversión a ASCII en algún modo delimitado.
En BBDD si la importación o exportación de datos se realiza entre SGBD distintos, no suele poder realizarse
con los ficheros de índices. Para solucionarlo, el SGBD receptor debe realizar una generación de índices
(reindexación) una vez definida su composición.
Para importar gráficos en un procesador de texto u hojas de cálculo deben tenerse en cuenta los formatos
que pueden reconocer, en general mapas de bits, siendo difícil la compatibilidad con gráficos vectoriales.
Los métodos para importar y exportar gráficos de modo directo son similares a los descritos, considerando
que la conversión indirecta es diferente, ya que los gráficos no se convierten a formatos ASCII. Los formatos
de gráficos típicos suelen estar soportados por la mayoría de aplicaciones, facilitando los procesos de
importación y exportación. Si el intercambio de datos se realiza entre aplicaciones gráficas la importación y
la exportación es posible con métodos similares a los descritos, permitiéndose trabajar con gráficos
vectoriales. Uno de los formatos más usado para importar y exportar gráficos sectoriales es CGM.

213
TEMA 48. INGENIERÍA DEL SOFTWARE. CICLO DE DESARROLLO DEL SOFTWARE. TIPOS DE
CICLOS DE DESARROLLO. METODOLOGÍAS DE DESARROLLO. CARACTERÍSTICAS DE LAS
PRINCIPALES METODOLOGÍAS DE DESARROLLO.

1. INTRODUCCIÓN
2. INGENIERÍA DEL SOFTWARE
3. CICLO DE DESARROLLO SOFTWARE
4. TIPOS DE CICLOS DE DESARROLLO
4.1. Ciclo en cascada
4.2. Ciclo en V
4.3. Ciclo basado en prototipos y por etapas
4.4. Ciclo en Espiral
5. METODOLOGÍAS DE DESARROLLO
5.1. Metodologías Tradicionales
5.1.1. Análisis Estructurado
5.1.2. Proceso Unificado de Desarrollo
5.2. Metodologías Ágiles
5.2.1. SCRUM
5.2.2. Programación Extrema
6. CARACTERÍSTICAS DE LAS PRINCIPALES METODOLOGÍAS DE DESARROLLO
6.1. Merise
6.2. SSADM
6.3. Métrica v3
6.4. SIX SIGMA
6.5. CMMI

214
1. INTRODUCCIÓN
El desarrollo de aplicaciones y sistemas software en general no es trivial. Cuando la complejidad del
sistema a desarrollar sea considerable, se requiere un proyecto, con todo lo que ello implica, en cuanto a
coste, presupuesto y alcance.
La particular naturaleza del software implica tener en consideración aspectos que en un proyecto de otro
tipo no aplican. Por tanto, surge una rama de la ingeniería, que es la del software, que se encarga del
3
análisis sistemático, disciplinado y cuantificable del desarrollo software. Es la definición del IE .
2. INGENIERÍA DEL SOFTWARE
La definición de Ingeniería del Software introducida, dice que es un análisis sistemático, es decir que es
científico; disciplinado, o sea, que es metódico, como el método científico; y cuantificable, que se refiere a
los aspectos variables, el aspecto característico de un proyecto y que está en estrechísima relación con la
calidad y las aristas del negocio.
No existe un método absoluto o definitivo para desarrollar software. Muchas veces es algo cercano al arte.
Pero igual que éste, deja diferenciar etapas e integrar métodos en cada una de ellas, usar herramientas de
automatización y métricas de calidad.
La ingeniería del software puede entenderse como un sistema de tres coordenadas: la metódica, la
procedimental y la automática.
La coordenada del método marca la forma de desarrollo del software. Abarca la planificación, captura de
requisitos, diseño de estructuras de datos, codificación, pruebas y mantenimiento. Suelen incluir criterios de
calidad software. La coordenada procedimental especifica la secuencia de aplicación del método,
documentación que ha de generarse en cada etapa, sus controles y medidas de calidad y la forma de
evaluar el progreso del proyecto. La coordenada automática se refiere a las herramientas en que se soporta
el desarrollo. En general serán varias y tendrán una cierta integración entre ellas, constituyendo lo que se
conoce como entorno de desarrollo. Cada herramienta particular se caracteriza como herramientas CASE
(Computer Assisted Software Engineering).
3. CICLO DE DESARROLLO SOFTWARE
El desarrollo software distingue etapas o fases. Esto es así debido a lo complejo de su actividad. Además, la
identificación de las etapas, ayuda a marcar hitos (controles de calidad, temporización), dividir el problema
en partes más sencillas y planificar con mayor detalle. El conjunto de las fases identificadas y su relación en
el desarrollo software se le denomina ciclo de desarrollo o ciclo de vida.
El ciclo de desarrollo software, es un modelo general que comienza con la concepción del sistema y termina
con la retirada del servicio. Cada etapa implica tareas asociadas y su documentación correspondiente,
donde se incluye el código generado, en caso que sea resultado de una de ellas. Cada etapa del ciclo suele
descomponerse en tareas planificables.
Cada etapa puede estar relacionada con otras. En particular con la siguiente y la antecedente, aunque
puede estarlo con otras e incluso de forma recursiva, definiendo así una realimentación del proceso.
La realimentación es importante porque implica el replanteo de partes del proyecto, en general erróneas. La
detección precoz de errores evita incurrir en costes más altos e incluso el fracaso del proyecto. El control de
la progresión del proyecto debe especificar los objetivos, hitos. Los elementos de un ciclo de vida son:
Fase. Es un proceso que agrupa actividades relacionadas con un objetivo del proyecto. Las tareas se ponen
en contexto temporal, en intervalos dentro del proyecto. A cada fase deben asignarse recursos. Cuanto más
complejo es un proyecto, mayor detalle deben tener sus fases para hacerlas manejables.
Cada fase se define con una información de entrada (en general de fases anteriores), unas actividades y
una información como resultado del proceso (en general a utilizar en fases posteriores).
Entregables. Son los resultados de cada fase. En un proyecto software, pueden estar compuestos por
hardware o software, incluyendo la documentación. Los entregables permiten evaluar la marcha del
proyecto y marcar el desarrollo de un contrato. De esta forma, el cliente o peticionario puede comprobar si el
entregable responde a los requisitos establecidos en el proyecto y en el contrato.
4. TIPOS DE CICLOS DE DESARROLLO
Se pueden identificar distintos tipos de ciclo de vida del desarrollo software; interpretar el proceso de
desarrollo de formas diferentes. Cada tipo de ciclo de vida está marcado, en mayor o menor medida, por
algún paradigma de la ingeniería del software. La elección de un paradigma u otro depende de la naturaleza
del proyecto y su aplicación, los métodos a usar y los controles y entregas definidos.

215
Los tipos de ciclos de desarrollo se diferencian, básicamente en los siguientes criterios:
La estructura de las fases. Que se suele identificar con una figura, en cascada, en V, etc.
El alcance del ciclo. Es decir, el objetivo del proyecto. El proyecto puede limitarse a un estudio de viabilidad,
su desarrollo completo, su desarrollo y mantenimiento, o cualquier otro propósito.
Las características de cada fase. Relativas a su organización y la división del trabajo que marcan.
Se exponen a continuación los ciclos de desarrollo más comunes:
4.1. Ciclo en cascada
Es el ciclo tradicional, basado en las etapas de la gestión de
proyectos comunes a toda ingeniería. La Ingeniería del
Software surge como un tipo especial de ingeniería, y por
tanto, hereda la base de su naturaleza. El ciclo en cascada se
caracteriza por su amplitud, al cubrir toda la vida del producto.
Propone un enfoque sistemático y descendente desde el
análisis que va concretando el proyecto. La descripción de sus
fases es la siguiente:
Análisis. Es la etapa donde se estudian los aspectos que rodean el proyecto. Incluiría un estudio de
viabilidad con el alcance, requisitos y funcionalidad del sistema, así como una estimación de los recursos y
el tiempo que podría llevar implementarlo. Hay que destacar el análisis de requisitos. Cuanto más concretos
sean, mejor, para evitar malentendidos y problemas futuros. Es obligatorio que sean acordados,
documentados y revisados con el cliente o peticionario.
Diseño. Es la etapa en que se empiezan a concretar los requisitos del análisis, identificando la estructura
de datos y programas, arquitectura de aplicaciones e interfaces. El diseño permite definir la arquitectura,
funcionalidad y calidad del software antes de la codificación.
Codificación. Es la implementación del diseño con un lenguaje de programación. Representa un descenso
en el nivel de abstracción al realizar la construcción del producto a partir de sus esquemas, para obtener un
programa ejecutable.
Pruebas. Una vez codificada la versión del programa candidata a ser entregada, debe probarse. El objetivo
es asegurar que cumple sin errores con la funcionalidad para la que fue concebido.
Debido a que la idea de error está en relación directa con la idea de prueba, conviene notar que en el ciclo
en cascada, se representa una flecha indicando el paso de abstracción a concreción de una etapa superior
a una inferior y otra flecha en sentido contrario. Esta indicación se refiere, en su esencia a la corrección de
errores, es una realimentación del ciclo.
Cobra aquí sentido la importancia del buen análisis y diseño. Cuando los errores implican el retroceso en las
fases de desarrollo, se incurre en costes, que son más elevados cuanto más tarde se detecte en una etapa.
Instalación. Es la etapa en que se hace entrega del producto software al cliente o peticionario, dando
comienzo a la vida útil del mismo. Esta etapa está en relación directa con la siguiente, la de mantenimiento,
ya que la operación implica que ante posibles eventualidades deben proporcionarse soluciones.
Mantenimiento. Es la etapa que soluciona los problemas que se den durante la operación del software. Los
problemas pueden deberse a la detección de errores en el software, en algún componente del sistema
(servidores, por ejemplo) o que el programa funcione bien, pero se desee ampliar su funcionalidad o hacer
cambios por otras razones. Estos casos implican una vuelta a etapas anteriores del ciclo de vida, en función
del tipo de cambio.
4.2. Ciclo en V
Es un ciclo de desarrollo software que representa las etapas y
su relación en la vida del proyecto. Posee forma de V e indica
en su parte izquierda los aspectos de análisis y diseño y a la
derecha los relacionados con la calidad software. Se suele
identificar la V que da nombre al modelo con verificación y
validación. Conceptualmente es muy similar al ciclo en
cascada. Podría interpretarse como un modelo en cascada
doble, o dividido por la etapa de codificación.
La novedad es que las actividades de ambos lados de la V se realizan en paralelo. Esto permite prevenir
errores al ir verificando cada etapa, evitando su propagación. Como contrapartidas, el ciclo en V requiere
más recursos que el ciclo en cascada y no se adapta bien a potenciales cambios de requisitos.

216
4.3. Ciclo basado en prototipos y por etapas
El ciclo en cascada dificulta la especificación de requisitos al inicio del proyecto y no dispone una versión del
sistema hasta las fases finales, lo que dificulta la detección de errores. Para evitar estos problemas se
propuso el ciclo de vida basado en construcción de prototipos.
Es un modelo orientado a desarrollos con gran interacción con el usuario, o que usen algoritmos evolutivos.
Implica tener muy en cuenta la complejidad. Si el prototipo requiere demasiado esfuerzo, ha de plantearse
la ineficiencia del modelo para el proyecto en cuestión. Por el contrario, el cliente puede disponer de una
maqueta inicial que ayude al análisis y diseño al poder introducir cambios en los requisitos.
Un prototipo puede darse en distintas formas: esquema en
papel, una maqueta que implemente una parte del sistema
total y en un caso general, un primer programa, no completo,
que realice lo que se espera, a modo de esquema operativo.
El modelo comienza con la captura de requisitos, que no es
necesario que sea completa.
Con esta primera aproximación se diseña un prototipo rápido, centrado en la arquitectura del sistema e
interfaces. El diseño da paso a la codificación, que cuenta con herramientas muy adaptadas a esta forma de
trabajo, que en general, plantean el desarrollo de forma incremental para dar velocidad a la codificación.
Con el prototipo, se realiza una revisión con el cliente para que lo valide. Si no es satisfactorio, se prevé que
las modificaciones sean menos traumáticas que con otros modelos. Si se da el visto bueno, se realiza la
evaluación y codificación del producto final a entregar.
Suele hablarse también del ciclo de desarrollo por etapas. Es similar al prototipado ya que básicamente
consiste en ir evaluando el desarrollo con el cliente. La diferencia se da en cuanto que los requisitos no se
conocen en detalle al inicio, sino que se van concretando según avanza el proyecto. Las etapas que
identifica son similares al prototipado: especificación conceptual, análisis de requisitos, diseño inicial, diseño
detallado, codificación, depuración y liberación, que van repitiéndose a lo largo de la vida del proyecto.
4.4. Ciclo en Espiral
El ciclo en espiral pretende combinar las ventajas del ciclo en
cascada y del prototipado. Proporciona un modelo evolutivo
orientado a sistemas complejos. Como novedad, incluye el
análisis de riesgos. Los prototipos se usan para reducir el
riesgo de forma que se pueda decidir si acometer el proyecto
antes de comenzar la codificación. Las etapas que identifica el
ciclo en espiral se muestran en la figura. Están alineadas con
el análisis de riesgos.
El análisis de riesgos consiste básicamente en cuatro actividades: su identificación, estimación, evaluación y
su gestión. Es lo que se pretende diferenciar en cada etapa del ciclo.
Planificación. La etapa inicial determina el objetivo del proyecto, alternativas y restricciones. Es equivalente
al análisis y toma de requisitos de otros modelos. Se identifica el riesgo, lo que consiste en clasificarlo
(presupuestario, organizativo, técnico…).
Evaluación. Es el análisis de riesgos. El riesgo se refiere a las tres dimensiones del proyecto: el alcance, el
coste y el tiempo. Su combinación puede indicar directamente su fracaso antes incluso de comenzarlo. La
estimación es la aproximación de la probabilidad de que se materialice y el impacto que supondría.
Alternativa. Esta etapa consiste en establecer los umbrales críticos para tomar decisiones y plantear
direcciones distintas a las originales para continuar con el proyecto.
Decisión. Por fin la gestión de los riesgos es la actividad de supervisión y la definición de las acciones a
tomar en caso de concretarse los riesgos previstos. Esta actividad da como resultado la toma de una
decisión al respecto que condicionará el proyecto.
5. METODOLOGÍAS DE DESARROLLO
La RAE define método como el modo de decir o hacer con orden. Y metodología como ciencia del método o
conjunto de métodos que sigue una investigación científica o exposición doctrinal. Por tanto, una
metodología de desarrollo software es un conjunto de modos, formas o estilos de codificación ordenados.
Las metodologías se impregnan de la filosofía de los ciclos de vida del desarrollo, identificando etapas
según lo marcado en el ciclo de vida de referencia. Aunque cada institución, empresa o país puede
recomendar o usar una u otra metodología, existen aspectos comunes a todas. Y para comenzar su estudio,
se realiza una clasificación general, distinguiendo dos tipos, las tradicionales y las ágiles.

217
5.1. Metodologías Tradicionales
5.1.1. Análisis Estructurado
El análisis estructurado (DeMarco, 1979) surge como abstracción de las técnicas de programación
estructurada. Se basa en la división del problema en partes más pequeñas. Procura evitar especificaciones
textuales, dando valor al aspecto gráfico.
Sus características se resumen en la descomposición funcional del sistema (análisis descendente),
identificación del flujo de información, transformación de diagramas de flujo de datos en estructura modular
de programa y construcción de modelos de datos. Las técnicas más importantes de que hace uso son los
diagramas de flujo, diccionario de datos (lógica de almacenamiento) y diagrama de estructuras (relación
entre módulos). La metodología ha evolucionado e incorporado algunos cambios. Actualmente se usa con
adaptaciones.
5.1.2. Proceso Unificado de Desarrollo
Como necesidad de adaptación del desarrollo a la POO, surge el proceso unificado de desarrollo, más
adecuado que el análisis estructurado. Es un marco general y adaptable del que la implementación más
completa y extendida es Rational Unified Process, propiedad de IBM.
Sus características se resumen en ser un proceso dirigido por los Casos de Uso, ser un proceso iterativo e
incremental que se centra en la arquitectura. También hace uso de prototipos y como lenguaje de análisis y
diseño usa UML.
Los elementos que define son entregables, workers, y actividades distribuidas en dos dimensiones: fases y
disciplinas (principales y de apoyo). Las actividades se encadenan en una mini-cascada con un alcance
limitado por los objetivos de la iteración. En cada fase, se dedica un esfuerzo diferente a cada disciplina.

5.2. Metodologías Ágiles


Las metodologías ágiles se refieren a la filosofía de de desarrollo software basada en procesos rápidos de
codificación. Se persigue evitar la burocracia de las metodologías tradicionales potenciando el equipo de
trabajo y los resultados. Para ello, se incentiva la iteracción y reuniones en todo el ciclo de vida y la
minimización de riesgos acortando los plazos temporales del desarrollo.
El código generado en un plazo se denomina iteración y suele ser corta. Cada iteración del ciclo de vida
incluye su planificación, análisis de requisitos, diseño, codificación, revisión y documentación. Una iteración
debe ser lo más sencilla posible en funcionalidad con el objetivo de un código libre de errores. Al final de
cada iteración se reevaluan las prioridades del proyecto.
Las metodologías ágiles priorizan las reuniones de equipo sobre la documentación. Los equipos ágiles
suelen concentrarse en oficinas llamadas Plataformas de Lanzamiento o Bullpen. La crítica al método suele
referirse a la indisciplina que supone la relajación en la documentación. Las metodologías tradicionales son
más indicadas para grandes proyectos, mientras las ágiles se pueden adecuar mejor a desarrollos de menor
alcance, al reducir la sobrecarga y ser más flexibles.
Como características destacables que resuman la idea de metodología ágil se encuentran la inclusión en el
mismo equipo de desarrollo del usuario y desarrolladores, la entrega de trabajo frecuente e incremental,
orientación a software operativo sobre la documentación y simplicidad, buen diseño y calidad del código. A
continuación se exponen las metodologías ágiles más representativas.
5.2.1. SCRUM
SCRUM (Ken Schwaber, 1995) es un tipo de metodología ágil, que se adapta a proyectos con requisitos
inestables que precisan rapidez y flexibilidad, como suele ocurrir en el desarrollo software. Enfatiza el
desarrollo incremental sobre la planificación y basa la calidad del resultado en el conocimiento tácito del

218
equipo más que en los procesos. Por tanto, las fases tradicionales tan ligadas a procesos, se funden como
en una melé de rugby (de ahí el nombre SCRUM) más que dibujar un ciclo en cascada, en V, etc.
Las prácticas y roles en SCRUM definen el desarrollo de un proyecto. Los roles identifican un ScrumMaster,
que mantiene los procesos (similar a un director de proyecto), el ProductOwner (cliente o peticionario) y
el equipo de desarrolladores. Las prácticas, se marcan con lo que se conoce como sprint, un periodo de una
a cuatro semanas, en que se desarrolla un objetivo de software entregable. El objetivo del sprint lo marca el
Product Backlog, requisitos de alto nivel priorizados y establecidos en reuniones de Sprint Planning.
Durante el sprint, no se pueden cambiar requisitos, por eso no suele durar más de un mes. Condición que
no resta flexibilidad a lo que pueda solicitar el cliente, que contará con entregas de código rápidas y
respuestas a sus cambios.
Las ventajas de SCRUM reposan en la adaptación a los requisitos del cliente, anticipación de resultados,
flexibilidad, integración con el cliente, mitigación de riesgos, productividad y calidad.
5.2.2. Programación Extrema
La más representativa de las metodologías ágiles de desarrollo, es la programación extrema (eXtreme
Programming o XP, Kent Beck). Parte del hecho que los cambios de requisitos durante el desarrollo son
algo natural y por tanto hay que adaptar el método a esta realidad, basarlo en la adaptabilidad, frente a la
planificación, facilitando los cambios de requisitos en cualquier punto del proyecto.
Asimismo, XP intenta combinar lo mejor de cada metodología en función del proyecto particular que se trate
sin intentar definir todos los requisitos al comienzo para luego controlar algo que puede descartarse en el
desarrollo, con todo el ahorro que eso supone.
La programación extrema aconseja un desarrollo iterativo e incremental, basado en la inclusión progresiva
de pequeñas mejoras. Para ello, se realizan pruebas unitarias continuas, incluyendo pruebas de regresión e
incluso se aconseja definir las pruebas antes de la codificación, como por ejemplo las herramientas de
prueba JUnit orientadas a Java.
La simplicidad en el código redunda en mejor mantenibilidad y adaptabilidad ante nuevas funcionalidades,
que exigen la corrección de todos los errores antes de ser añadidas. Esta filosofía obliga a hacer entregas
frecuentes y aconseja la revisión continua del código, para conseguir más legibilidad sin modificar su
función. La reescritura de código no debe introducir errores.
Por fin, XP hace énfasis en el equipo de desarrollo. El desarrollo no se divide entre distintos grupos sino que
cada grupo puede participar en cada parte del código. Se proponen grupos ágiles de dos personas para una
misma labor, porque se espera que durante el desarrollo la pareja discuta y a la vez corrija el código, lo que
genera mayor calidad ante una posible pérdida de productividad.
También se potencia la integración con el cliente, lo que redundará en una comunicación efectiva, con
menos detalle en las reuniones, debido a que muchos aspectos ya se conocerán.
6. CARACTERÍSTICAS DE LAS PRINCIPALES METODOLOGÍAS DE DESARROLLO
6.1. Merise
Merise es una metodología de análisis y desarrollo integrado propuesto por la administración francesa a
finales de la década de los setenta. Se basa en la organización y gestión de proyectos proporcionando un
conjunto de métodos y normas rigurosas para el desarrollo software.
Se caracteriza por la identificación de etapas del proyecto, a saber, estudio preliminar, detallado, producción
y puesta en marcha. Se identifican y distinguen datos y procesamiento de los mismos. Se establece el uso
de esquemas entidad-relación y diagramas de secuencias de procedimientos.
6.2. SSADM
SSADM (Sructured System Analysis and Design Method) es una metodología de análisis y diseño de
sistemas de información que data de los años 80, desarrollada para el gobierno de Gran Bretaña y basado
en el ciclo de vida en cascada. Se divide en fases, etapas y tareas.
Distingue 3 fases (viabilidad, análisis y diseño) y 6 etapas (situación, opciones, especificación de requisitos,
técnicas, diseño lógico y diseño físico). Como principales técnicas, utiliza diagramas de flujo, esquemas
entidad-relación y modelado de eventos. La metodología ha evolucionado y aún está vigente.
La filosofía de SSADM al desarrollar un proyecto por etapas, adolece de una cierta lentitud, si se presentan
problemas o modificaciones, que suelen retrasar las entregas. La curva de aprendizaje puede ser larga y la
documentación excesiva en algunos casos. Por fin, como tónica general, para todas las metodologías de
desarrollo, debe evaluarse su adaptación idónea para su elección de cara al proyecto al que se aplicará.

219
6.3. Métrica v3
Métrica Versión 3 es una metodología del Consejo Superior de Informática de España. Se concibe para
abarcar el desarrollo completo de Sistemas de Información independientemente de su complejidad, lo que
inplica la adaptación y dimensionamiento de los recursos al proyecto en cuestión.
Los elementos de métrica 3 son procesos, interfaces,
productos, técnicas y participantes.
La metodología se alinea con los estándares de la industria
y bebe de un enfoque orientado al proceso. Tres son
principales: Planificación, Desarrollo y Mantenimiento. Se
dividen en subprocesos, y éstos en actividades y tareas.
Las interfaces son actividades de tipo organizativo que
sirven de soporte (gestión de proyectos, calidad…). Se
dividen también en actividades y tareas
Los productos son E/S de las tareas. Por ejemplo, el análisis se realiza tras el estudio de viabilidad y como
resultado se elabora el documento de diseño del sistema. Las técnicas son el conjunto de procedimientos
específicos de las tareas (DFD, diagramas UML…). Los participantes son las personas que involucra el
proyecto. Se clasifican en perfiles.
Métrica v3 sistematiza las actividades que dan soporte al ciclo de vida software, para lograr los objetivos en
términos de calidad, coste y plazos. Para cada tarea se detallan los participantes, productos de E/S y
técnicas. Con las interfaces se facilitan los procesos organizativos (gestión del proyecto, de la configuración,
etc.) y su automatización está soportada en numerosas herramientas CASE. El orden asignado a las tareas
no es su secuencia, ya que pueden realizare en paralelo. Pero, no se termina un proceso hasta que no se
terminan todas las actividades definidas para el mismo.
6.4. SIX SIGMA
Six Sigma es una metodología de mejora de procesos productivos. Su potencia deriva del uso de
herramientas estadísticas orientadas a encontrar errores o defectos, de forma que la mejora se consigue
más que por innovación, por eliminación de errores o malas prácticas.
El enfoque de la metodología se centra en el cliente. Las mejoras se derivan del incremento en los niveles
de satisfacción y creación de valor para el cliente, en función de sus requisitos y expectativas. El método
comienza identificando las métricas de calidad software, recogida de datos y análisis de los mismos con el
objetivo de localizar irregularidades y eliminarlas.
6.5. CMMI
CMMI, más que una metodología es un modelo de calidad software, que por su interés se presenta, y que
clasifica las empresas de software con criterios de madurez. El nivel que se asigna da idea de la madurez
de los procesos involucrados en la producción de software. Se crean 5 niveles: inicial, repetible, definido,
cuantitativo y optimizado, numerados de menor a mayor madurez.
Nivel 1 o Inicial. Son empresas sin procesos definidos. El control es escaso y es probable el fracaso.
Nivel 2 o Repetible. El éxito de los resultados es repetible. En este nivel se gestionan y controlan los
proyectos. El desarrollo es transparente y se puede conocer el estado del proyecto en todo momento. Los
procesos implantados incluyen la gestión de requisitos, planificación de proyectos, seguimiento y control de
proyectos, gestión de proveedores, aseguramiento de la calidad y gestión de la configuración.
Nivel 3 o Definido. Se establece una forma de desarrollo de proyectos software (gestión e ingeniería)
definida y se utilizan métricas para su medición. Se deben implantar los procesos de desarrollo de
requisitos, solución técnica, integración, verificación y validación, mejora, gestión del sistema, formación,
gestión de riesgos y toma de decisiones.
Nivel 4 o Cuantitativo. Se establecen métricas para los procesos que ayuden a alcanzar los objetivos y la
gestión de la organización. Los procesos a implantar son los de medida y mejora.
Nivel 5 u Optimizado. Los procesos se orientan a la mejora continua. Esto se consigue con diversas
herramientas como las métricas, evaluaciones, auditorias y mejoras incrementales e innovadoras. Los
procesos que hay que implantar son innovación organizacional y análisis.

220
TEMA 49. ANÁLISIS DE SISTEMAS: MODELIZACIÓN DE TRATAMIENTOS. MODELO DE FLUJO DE
DATOS Y CONTROL. TÉCNICAS DESCRIPTIVAS. DOCUMENTACIÓN.

1. INTRODUCCIÓN
2. ANÁLISIS DE SISTEMAS: MODELIZACIÓN DE TRATAMIENTOS
3. MODELO DE FLUJO DE DATOS Y CONTROL
3.1. Elementos
3.2. Control
4. TÉCNICAS DESCRIPTIVAS
5. DOCUMENTACIÓN

221
1. INTRODUCCIÓN
La evolución del software, lo ha convertido en una actividad productiva de alta complejidad. La aplicación de
los principios de la ingeniería a su desarrollo establece una serie de métodos y procedimientos que se
orientan a la planificación del proyecto.
Para acometer un proyecto debe tenerse en cuenta sus tres dimensiones, alcance, coste y duración. La
evaluación inicial de estos tres aspectos puede englobarse en lo que se da en llamar estudio de viabilidad,
en que se decide si se acometerá el proyecto. Si la respuesta es positiva, se comenzará con el análisis del
futuro sistema, que se aborda desde tres perspectivas: estática, integrada y dinámica.
La perspectiva estática estudia los objetos identificados en el modelo, sus atributos y restricciones. Se
denomina modelado de datos. La perspectiva integrada analiza datos y transformaciones de forma conjunta
y se denomina modelado de comportamiento. La perspectiva dinámica estudia las modificaciones de los
datos. Se denomina modelado de tratamientos y es el objeto de este tema.
2. ANÁLISIS DE SISTEMAS: MODELIZACIÓN DE TRATAMIENTOS
Un modelo es un esquema teórico de un sistema o una realidad compleja, que facilita su comprensión y el
estudio de su comportamiento. El desarrollo de una aplicación software debe relacionar dos universos
conceptuales, el del problema (discurso) y el de la solución (informática). El análisis de sistemas representa
es un primer nexo entre el problema y la solución que debe ir refinándose en cada fase del ciclo de vida. El
universo del usuario, o del discurso, distingue propiedades estáticas y dinámicas. Las estáticas, poseen un
carácter estable y se denominan estructuras. Las dinámicas son datos con un rango de variación amplio en
su valor y temporalmente.
Una metodología extendida es el análisis estructurado, propuesto por DeMarco a finales de los 70 con las
mejoras propuestas por autores como Yourdon. Propone el uso de métodos gráficos y la división del
problema de desarrollo software en niveles de abstracción, conceptual, lógico y físico.
Para el tratamiento conceptual del problema se proponen herramientas como el Diagrama de Flujo de
Datos, o DFD. El tratamiento lógico comienza a implementar el sistema a partir de los resultados del
tratamiento conceptual. El análisis estructurado propone dos técnicas fundamentales a este nivel, el
diagrama de estructuras y el de transición de estados. Se usan otras técnicas, no exclusivas del análisis
estructurado, como los ordinogramas, árboles y tablas de decisión, los lenguajes de definición de programas
(LDP) o los diagramas de Nasshi / Schneiderman, por citar los ejemplos más representativos.
Por fin, el tratamiento físico consiste en generar el código. Existen herramientas de desarrollo que
automatizan el proceso totalmente o en parte.
3. MODELO DE FLUJO DE DATOS Y CONTROL
Los DFD son una herramienta que representa gráficamente un sistema como red de procesos funcionales
conectados por flujos de datos o información. Sus caracteristicas son la inteligibilidad por parte del usuario,
la descripción de la función del sistema y la especificación de los distintos niveles de detalle. Existen
diferentes notaciones para los DFDs, en las que cambian los símbolos.
3.1. Elementos
Los elementos de un DFD son:
Entidad externa. Representa una realidad a quien se envía
o de quien se recibe información. Marca los límites del
sistema. No se modelan. Las relaciones entre entidades
externas no aparecen en el DFD.
Flujo de datos. Representa el movimiento de información
con una flecha indicando el sentido del flujo. Se puede dar
en doble sentido (diálogo). Se nombran los flujos y se
especifican los datos del mismo. Todo flujo debe entrar o
salir de un proceso.
Proceso. Representa una parte del sistema que transforma datos de entrada en datos de salida. Se
nombran con un identificador.
Almacenamiento. Representa el archivo de datos compartidos entre procesos. Puede coincidir o no con
almacenamiento físico (fichero / BBDD). Se recupera uno o varios bloques en un flujo. También se pueden
modificar, insertar, eliminar uno o varios bloques.
Algunas normas son que no se representan las relaciones entre entidades porque no pertenecen al sistema
que se modela. Las entidades externas no pueden acceder directamente a datos almacenados sin pasar

222
por un proceso del sistema y los datos no se mueven entre almacenes espontáneamente, siempre se hará
por mecio de un proceso del sistema
3.3. Control
El DFD no se adecua al modelaco de sistemas en los que el tiempo es crítico como los sistemas de tiempo
real. El proceso de construcción de un DFD omite la información de control. Para estos sistemas se han
propuesto ampliaciones como la de Ward y Mellor. La ampliación consiste en permitir la posibilidad de
captar flujos de información continuos en el tiempo, simbolizar información de control que se pasa, procesa
o almacena en el sistema y la posibilidad de representar multiples instancias del mismo suceso.
4. TÉCNICAS DESCRIPTIVAS
Las técnicas descriptivas para la construcción de un DFD consisten en un proceso de refinamiento en
etapas, como el propuesto.
1. Identificar entradas y salidas
2. Construción del diagrama de contexto (nivel 0). Sólo interesa qué entra y qué sale, no como se
procesa. Es un resumen del sistema en que aparecen todas las entidades externas.
3. Obtención de subsistemas principales (nivel 1). Se descompone el diagrama de nivel 0 y se
obtienen las funciones principales del sistema.
4. Explosión de procesos hasta conseguir procedimientos primitivos.
5. Especificar los procesos primitivos
6. Descripción del diccionario de datos. Se describen los datos de los flujos y almacenes
5. DOCUMENTACIÓN
Las técnicas descriptivas del análisis sirven como documentación del sistema. A nivel conceptual, se usa el
DFD. A nivel lógico deben documentarse datos y procesos. Las técnicas de descripción vistas documentan
los procesos. Para la documentación de los datos se construye un diccionario de datos.
El diccionario de datos documenta tres elementos: datos, flujos y almacenes de datos. Usa la notación
BNF: +, {}, [], *comentario*, | , =, @.
Para los datos se especifica nombre y valores (mediante comentario). Para el flujo se especifica al menos,
el nombre, significado y composición. Para el almacén de datos, al menos el nombre, significado y
composicion. Se realiza a nivel conceptual, no hace falta normalizar.
La gestión de la documentación en proyectos más o menos complejos implica una automatización. Es la
razón para usar herramientas CASE, que suelen soportan el análisis estructurado como por ejemplo, Oracle
Designer o Sybase PowerDesigner. Para entornos Linuxexisten herramientas de gráficos como DIA o TMC.

223
TEMA 50. ANÁLISIS DE SISTEMAS: MODELIZACIÓN CONCEPTUAL DE DATOS. TÉCNICAS
DESCRIPTIVAS. DOCUMENTACIÓN.

1. INTRODUCCIÓN
2. ANÁLISIS DE SISTEMAS: MODELIZACIÓN CONCEPTUAL DE DATOS
3. TÉCNICAS DESCRIPTIVAS
3.1. Componentes
3.2. Construcción
4. DOCUMENTACIÓN

224
1. INTRODUCCIÓN
Una vez que se realiza el análisis de un sistema modelizando el tratamiento de la información, su flujo y
control (perspectiva dinámica), comienza la modelización conceptual de los datos, desde lo que se da en
llamar la perspectiva estática del análisis, es decir, la definición de las entidades del modelo, sus atributos y
restricciones. Es el objeto de este tema.
2. ANÁLISIS DE SISTEMAS: MODELIZACIÓN CONCEPTUAL DE DATOS
La modelización conceptual de datos abarca varias entidades mínimas, presentes en todo sistema: objetos
o entidades, especializaciones, relaciones, restricciones y agregaciones.
Los objetos o entidades son los elementos identificados, dotados de existencia independiente de los usados
para almacenar la información.
Las especializaciones o generalizaciones, son relaciones conceptuales jerárquicas entre entidades. Las
relaciones entre entidades son conexiones lógicas entre entidades. La diferencia estriba en que la primera
es una relación jerárquica, en la que pueden darse relaciones tipo herencia. La relación es una definición de
cómo interactúan entre sí entidades, entiéndase así, sin relación de parentesco.
Las restricciones son los límites del sistema en cuanto a elementos que se pueden, o no, existir en él y las
agregaciones son uniones de dos o más entidades para formar otra entidad independiente.
3. TÉCNICAS DESCRIPTIVAS
Si el DFD era la técnica descriptiva de referencia para el análisis del tratamiento de los datos, para la
modelización de datos, la técnica a estudiar es el diagrama entidad-relación (DER).
El modelo entidad-relación fue propuesto por Chen a mediados de los años 70. Se basa en el uso de dos
elementos, entidades y relaciones entre ellas. Su naturalidad facilita la modelización. El objeto del modelo
entidad-relación es representar gráficamente el problema (universo del discurso). Aunque existen
variaciones, difieren poco de la propuesta original de Chen.
3.1. Componentes
Entidad. Es la representación de un elemento del universo del discurso. Identifica un componente básico de
un sistema, el tipo de objeto. Cada objeto concreto, perteneciente a una entidad, se le denomina ocurrencia.
Las entidades se caracterizan con atributos, que representan sus propiedades. Pueden ser simples (un
único valor), compuesto (se divide en valores más simples) o multivaluado (pueden tomar varios valores).
Especialización. Es la descomposición del tipo de una entidad en subtipos. Un subtipo compartirá atributos
(propiedades) con la entidad (clase) que lo genera. Al proceso inverso (crear una entidad como conjunto de
propiedades comunes a otras) se denomina generalización.
En función de su herencia, las especializaciones se clasifican en disjuntas y solapadas. Las disjuntas son
aquellas en que una ocurrencia sólo pertenece a una subclase y las solapadas en las que una ocurrencia
puede pertenecer a varias subclases.
Según su cobertura, las especializaciones pueden ser totales o parciales. En las totales todas las
ocurrencias deben participar en alguna subclase. En las parciales, algunas ocurrencias pueden no
pertenecer a alguna subclase (pertenecerían a la clase “padre”)
Relación. Representa la asociación entre entidades. Una relación asocia una ocurrencia de cada entidad
implicada. Sólo se modelan las relaciones relevantes. Se definen con nombre, grado (número de tipos de
entidades relacionadas) y cardinalidad (número de veces en los que cada entidad puede participar en la
relación). Se pueden dar relaciones entre entidades del mismo tipo, denominadas relaciones reflexivas.
Agregación. Se da cuando la relación que vincula dos entidades tiene características de identidad, y se
relaciona con otras entidades.
Restricción. Es el límite de lo que puede representar el modelo. En el caso E/R, los tipos de restricciones se
definen sobre atributos, relaciones u otras.
Las restricciones sobre atributos se pueden referir al dominio (límite de sus valores), a valores no nulos
(imposibilidad de no tener valor), a unicidad (cada ocurrencia de una entidad debe tomar un valor distinto de
atributo) o a la identificación (unicidad y valor no nulo: así, con el valor del atributo se puede localizar una
ocurrencia de la entidad en el sistema).
Las restricciones sobre relaciones pueden ser de cardinalidad o identificación. Las de cardinalidad limitan el
número de relaciones en las que puede participar una ocurrencia de una entidad. Se marca en las líneas
que unen entidad y relación.

225
Las restricciones de identificación son las que se dan cuando una entidad no posee atributos que la
identifiquen, se distingue por medio de las entidades con las que se relaciona (ejemplo: sucursal y cuenta).
A este tipo de entidades se les denomina entidades débiles.
Existen además otras restricciones complejas que no se representan gráficamente. El modelo E/R admite la
descripción textual, lenguaje de algebra relacional, etc. Por ejemplo: “Ningún alumno menor de 18 años
podrá cursar ciclo de grado superior“
3.2. Construcción
Para construir un DER a partir del análisis se suele seguir el siguiente método.
Identificar tipos de entidad y atributos. A cada objeto del modelo se identifica con una entidad, a que se
asocian atributos y se define el dominio de los mismos.
Identificar generalizaciones y especializaciones. En el primer caso, de forma ascendente, de concreto a
abstracto, y en el segundo, de abstracto a concreto. Se definirán las relaciones de especialización /
generalización entre entidades.
Identificar relaciones entre entidades. Definidas las entidades, se hará el de sus vínculos, modelados como
relaciones, indicando su cardinalidad.
Identificar entidades débiles. En caso de darse, se estudian a partir de las relaciones en que se identifican.
Identificar agregaciones. Si se da la necesidad de una relación a partir de otra, la segunda se definirá como
agregación.
Restricciones. Las propiedades que no hayan quedado reflejadas deben expresarse mediante algún
lenguaje formal o lenguaje natural.
Existen diferentes notaciones para representar un DER. A parte de la de Chen, la notación Martin es muy
extendida. Introduce algunas variaciones con respecto a la primera, que se concretan en no representar los
atributos (y si se hace, en el cuadro de la entidad), que las relaciones 1:N y 1:1 se representan como arcos,
las relaciones N:M se representan con un rombo inscrito en un rectángulo, las entidades débiles se
representan como un rectángulo de línea doble y para representar la cardinalidad se usa la notación
crowfoot.
4. DOCUMENTACIÓN
El grueso de la documentación del análisis conceptual de datos de un sistema es el modelo obtenido. En
general, para el análisis estructurado, será el DER, que representará fielmente el modelo.
Otra documentación del análisis puede ser la de gestión, reuniones, documentación para la trazabilidad de
requisitos, gestión de calidad, riesgos, etc. Aunque, es documentación no directamente involucarada en el
proceso creador. Es documentación de apoyo, también importante.

226
TEMA 51. ANÁLISIS DE SISTEMAS: ESPECIFICACIÓN FUNCIONAL DEL SISTEMA. BÚSQUEDA Y
DESCRIPCIÓN DE REQUISITOS FUNCIONALES. ESPECIFICACIÓN DE SOLUCIONES TÉCNICAS.
ANÁLISIS DE VIABILIDAD TÉCNICA Y ECONÓMICA.

1. INTRODUCCIÓN
2. ANÁLISIS DE SISTEMAS: ESPECIFICACIÓN FUNCIONAL DEL SISTEMA
3. BÚSQUEDA Y DESCRIPCIÓN DE REQUISITOS FUNCIONALES
4. ESPECIFICACIÓN DE SOLUCIONES TÉCNICAS
5. ANÁLISIS DE VIABILIDAD TÉCNICA Y ECONÓMICA
5.1. Viabilidad técnica
5.2. Viabilidad económica

227
1. INTRODUCCIÓN
La ingeniería del software incluye los metodos, herramientas y procesos orientados a la gestión del
desarrollo software. Su esencia, puede entenderse como la de gestión de proyectos. Y por tanto, hay que
definir el alcance y funcionalidad del sistema a proyectar, elegir entre las posibles alternativas y una vez
tomada la decisión de acomenter el proyecto, definir la arquitectura del sistema. Estas tareas no son
triviales, por lo que existen numerosas metodologías como Métrica v3, que aquí se toma como referencia.
2. ANÁLISIS DE SISTEMAS: ESPECIFICACIÓN FUNCIONAL DEL SISTEMA
El análisis del sistema engloba las primeras etapas del desarrollo software, que presentan los objetivos de
identificar las necesidades de la organización, proponer alternativas de solución, realización de un análisis
técnico y el EVS (estudio de viabilidad del sistema).
Esta etapa concluirá con el conjunto de requisitos que el sistema debiera cumplir y la especificación de la
arquitectura de la solución a implementar. Métrica v3 identifica esas etapas en el subproceso EVS en el
proceso de Desarrollo de Sistemas de Información.
3. BÚSQUEDA Y DESCRIPCIÓN DE REQUISITOS FUNCIONALES
Identificar las necesidades de un cliente o peticionario no es fácil. La descripción de los requisitos
funcionaleses un arte, la ingeniería del requisitos, que destila técnicas de captura, catalogación,
refinamiento y trazabilidad de requisitos de usuario. Se basa en procesos a realizar a lo largo del desarrollo
software para asegurar que el producto solucione las necesidades reales del usuario.
Se distinguen procesos de captura (para obtener los requisitos del usuario), de calidad (verificación de la
validez de los requisitos) y de gestión (solución de posibles conflictos con el usuario y control de cambios).
En las primeras fases no es necesario un detalle exhaustivo de requisitos, ya que se trata de intuir el
alcance del proyecto y proponer alternativas de solución. En Métrica 3, el trabajo con requisitos se engloba
en el subproceso de análisis. En la fase del EVS, los requisitos se tratan en dos subprocesos:
EVS1. Alcance del sistema. A partir de la solicitud del usuario, se obtiene el contexto del sistema, la
estructura organizativa a la que afecta, requisitos a muy alto nivel y descripción de los usuarios implicados
en el desarrollo del sistema.
EVS2. Situación actual. Se describe el sistema actual y se evalúa si se considera apropiado el nuevo. Se
identifican los usuarios del sistema.
EVS3. Definición de requisitos del sistema. Identificados los usuarios, se identifican las restricciones que la
organización impone en el desarrollo del sistema, definiendo el código de normas que cumplirá el futuro
sistema y el catalogo de requisitos refinado y priorizado.
Con el resultado de estas fases se propondrán las posibles alternativas técnicas.
4. ESPECIFICACIÓN DE SOLUCIONES TÉCNICAS
Las alternativas de solución técnica deben concretarse en una decisión. Entre las alternativas comunes
suelen estar los nuevos desarrollos, los mantenimientos (cambios menores), los desarrollos evolutivos o la
implantación de soluciones comerciales.
Cada alternativa generará documentos que permitan evaluarla con posterioridad, como la descomposición
en susbsistemas (diagramas de arquitectura), los DFD de primer nivel, DER y casos de uso. En Métrica 3 la
especificación de soluciones técnicas se identifica con la fase EVS4.
EVS4. Alternativas de solución. A partir de la priorización de requisitos se realiza una preselección de
alternativas y su consiguiente descripción.
Las alternativas cubrirán los requisitos de usuario y se recogerán en un informe de alternativas de solución
o similar. Cada alternativa se describirá con mayor detalle. Para ello se suelen usar matrices de requisitos,
descripción de procesos, entorno tecnológico, estrategia de implantación, modelo abstracto de datos y
coste. Con el informe de alternativas y su descripción, se optará por una. La especificación de la solución en
su aspecto técnico, estará sustentada en esquemas. Ejemplos representativos son los diagramas de
arquitectura o los diagramas SADT.
Un diagrama de arquitectura se representa con un rectángulo dividido en cinco espacios: interface de
usuario, proceso de entrada, de salida, operación y mantenimiento y autocomprobación. Los diagramas de
arquitectura se descomponen en niveles, al estilo de los DFD. Los diagramas SADT son una propuesta de
Métrica 3, adecuado para modelar procesos organizativos. Se estructuran en componentes organizados en
varios niveles.

228
5. ANÁLISIS DE VIABILIDAD TÉCNICA Y ECONÓMICA
Antes de comenzar un proyecto, debe estimarse si tendrá éxito, si será posible. Esto se suele denominar
Estudio de Viabilidad del Sistema (EVS), como se ha presentado y aborda dos planos, la viabilidad técnica y
la económica.
La viabilidad técnica evalúa si el alcance del proyecto será posible con la tecnología disponible. Tiene en
cuenta los recursos humanos, software y hardware. La viabilidad económica evalúa el coste del desarrollo y
lo compara con el beneficio estimado del desarrollo. Puede incluir aspectos estratégicos, como el
conocimiento que proporcionaría, o los costes de explotación, lo que hará considerar una parte de la
viabilidad como inversión. Otro aspecto del EVS es el cumplimiento de las especificaciones normativas y
legales, en que se considera la adecuación del proyecto a la ley vigente (por ejemplo, la Ley de Protección
de Datos).
5.1. Viabilidad técnica
Es el estudio de las características técnicas de la solución propuesta. Incluye el esfuerzo de desarrollo,
rendimiento esperado y mantenimiento. Se pretende estimar si será posible desarrollar el sistema con
garantía de éxito.
El EVS se apoya en el análisis de riesgos, que consiste en su identificación (probabilidad de materializarse
una amenaza) como puedan ser retrasos, impacto en el negocio, tecnología, etc. Y en la proyección de
riesgos consistente en estimar el impacto, la afección sobre la organización de la concreción de la amenaza.
Por su naturaleza, se usan modelos matemáticos de estimación
En esta fase no se realiza la gestión del riesgo, sólo su análisis, orientado a soportar la decisión sobre la
viabilidad del proyecto. En Métrica 3, estas tareas se engloban en la EVS5.
EVS5.Valoración de alternativas. En esta tarea se analiza el coste-beneficio, el análisis de riesgos, con un
estudio del impacto en la organización y el plan de trabajo de la alternativa.
5.2. Viabilidad económica
La viabilidad económica es el estudio de la valoración de costes y beneficios esperados. Se usan técnicas y
conceptos económicos entre los que cabe destacar el punto de amortización, periodo de recuperación y
retorno de la inversión.
El punto de amortización es el cruce de la curva de beneficio del nuevo sistema y la curva de costes que ha
generado. A partir de ese punto umbral, se obtienen beneficios. El periodo de recuperación, es el tiempo
que transcurre hasta que se recupera la inversión con flujo de caja neto. Cuanto menor es el periodo de
recuperación más atractiva será la inversión. El retorno de la inversión (ROI) es el rendimiento en tanto por
ciento de la inversión para un periodo dado.
En Métrica 3 se resume todo el trabajo expuesto, con la tarea EVS6, que resulta en la selección de la
alternativa más ventajosa, soportada en los estudios de viabilidad.
EVS6. Selección de la solución. Con los criterios que se establezcan se optará por una de las alternativas
presentadas. La elección, se presentará al responsable, comité de dirección u órgano que proceda, para su
visto bueno y aprobación del proyecto.

229
TEMA 52. DISEÑO LÓGICO DE FUNCIONES. DEFINICIÓN DE FUNCIONES. DESCOMPOSICIÓN
MODULAR. TÉCNICAS DESCRIPTIVAS. DOCUMENTACIÓN.

1. INTRODUCCIÓN
2. DISEÑO LÓGICO DE FUNCIONES
3. DEFINICIÓN DE FUNCIONES
4. DESCOMPOSICIÓN MODULAR
4.1. Descripción del sistema
4.2. Transfomación del modelo conceptual al lógico
4.3. Independencia funcional
4.3.1. Acoplamiento
4.3.2. Cohesión
5. TÉCNICAS DESCRIPTIVAS
6. DOCUMENTACIÓN

230
1. INTRODUCCIÓN
Tras el análisis de un SI, se desarrolla la etapa de diseño. Las técnicas son diversas, pero destacan las de
diseño estructurado por ser más didácticas. A partir de los diagramas de flujo del análisis se procede al
diseño lógico de las funciones del sistema y su descomposición modular.
2. DISEÑO LÓGICO DE FUNCIONES
El diseño lógico de funciones suele partir de un diagrama de flujo de datos y desciende a un detalle mayor
del modelo del sistema, que facilite la codificación del software. Supone el paso del modelo conceptual al
lógico de tratamiento.
Esta tarea organiza los módulos identificados en el análisis definiendo su estructura, relaciones entre ellos y
detallando las acciones a realizar por parte de cada uno de ellos usando técnicas de descripción de
módulos. La representación de la descomposición modular del sistema se suele realizar con un diagrama de
estructura. Como principios del diseño lógico de funciones se pueden identificar los siguientes:
Descomposición. Dividir un problema en problemas más sencillos.
Combinación. Se refiere a un diseño que ofrezca facilidad para reutilizar los módulos y su combinación.
Comprensibilidad. Debe buscarse la facilidad de entendimiento de la función que realiza cada módulo, en
relación a su contexto.
Adaptabilidad. Es deseable que los módulos puedan ser modificados fácilmente. Un buen diseño minimizará
el trauma del cambio si los módulos son adaptables.
Proteccion. Ha de intentarse que los errores no se propaguen, de forma que queden en el ámbito de un
módulo, en la medida de lo posible.
3. DEFINICIÓN DE FUNCIONES
La definición de funciones identifica básicamente tres criterios: abstracción, refinamiento y ocultación.
Abstraccion. Es la identificación de un ente en función de sus características diferenciales y que, por tanto,
lo definen. Esa identificación puede tener poco detalle, que irá concretándose en la fase de desarrollo.
Refinamiento y modularidad. El refinamiento sucesivo (propuesto por Wirth), es una estrategia de diseño
consistente en describir un procedimiento con un alto nivel de abstracción y poco a poco ir concretando las
acciones a realizar de forma más detallada.
Ocultación. Se refiere al diseño de las funciones de forma que la información y su proceso dentro de la
misma, permanezca transparente al resto del sistema. Lo único que se da es un interface de comunicación.
La ocultación facilita la descomposición del problema, la propagación de errores y la mantenibilidad.
Estos criterios de diseño estructurado derivan en una descomposición modular de las funciones partiendo
del DFD. La estrategia de diseño (análisis de transformaciones y transacciones), generará un diagrama de
estructura, que describa módulos y sus relaciones, y representará el modelo lógico del sistema.
4. DESCOMPOSICIÓN MODULAR
La descomposición modular en el diseño de una función es la actividad que consiste en identificar los
posibles módulos que la compongan. Un módulo es un elemento de la función que posee una funcionalidad
propia de forma que en combinación con otros módulos o procesos constituyen una unidad mayor.
Para resumir sus características se puede decir que un módulo es una caja negra con interfaz. Sería una
caja negra en cuanto que se sabe qué hace, pero no cómo lo hace. Y está dotado de un interfaz porque su
relación o combinación con otros módulos precisa que a partir de unas entradas, se obtenga un resultado.
El formato de estas E/S debe conocerse, es decir, el interfaz.
Meyer propuso tres principios de diseño para obtener una descomposición modular correcta; la descripción
del sistema, la transformación del modelo conceptual al lógico y la independencia funcional de los módulos.
4.1. Descripción del sistema
La descripción del sistema utiliza técnicas descriptivas habituales como el uso del diagrama de estructura
(DE), esquema que representa la composición interna del sistema. Suele hacerse indicando la relación
entre los módulos del programa en forma de árbol. Los componentes de un diagrama de estructura son
módulos, relaciones y tránsito de información.
Módulo. Se representan con rectángulos con el nombre del módulo. Los módulos disponibles o ya definidos,
se representan con dos líneas paralelas en su interior.
Relaciones. Se representan con líneas que unen módulos. Indican llamadas entre módulos. En general

231
suele representante el módulo llamante en un plano superior para dar idea de subordinación y se pueden
especificar llamadas alternativas o iterativas.
Tránsito de información. Se representa con círculo y flecha entre módulos con sus parámetros. La flecha
indica el sentido del tránsito. La información puede ser datos o de control (flags, banderas). En algunas
notaciones, como métrica 3, también se representan los almacenes de datos y dispositivos físicos.
Se distinguen dos ideas en los diagramas de estructura, al estilo de la electrónica digital, el fan-in y el fan-
out. El fan-in de un módulo dado, es el número de módulos que lo controlan o llaman. El fan-out es el
número de módulos controlados o llamados por él.
4.2. Transformación del modelo conceptual al lógico
La transformación de un DFD (MC, Modelo Conceptual) al DE (ML, Modelo Lógico) se basa en identificar
transacciones y transformaciones. Una transformación identifica tres tipos de procesos, los que obtenienen
la información a procesar, los que la transforman o procesan y los que presentan o almacenan los
resultados. Al conjunto se le denomina centro de transformación.
Una transacción ejecuta una operación de entre las posibles de un proceso, en función del valor de un flujo
de datos. El proceso encargado de la selección se denomina centro de transacción. El proceso para
transformar un DFD en un DE identifica los siguientes pasos:
Análisis de transacción. Si en el DFD existen transacciones se aislan y se procesa cada una por separado
Análisis de transformación. Se identifican los centros de transformación y se definen las operaciones de
entrada, proceso y salida.
Segundo nivel de factorización. Se detalla la estructura de módulos necesaria para cada rama del centro de
transformación.
Refinamiento. Estudio de mejora de la estructura de módulos obtenida.
Reconstrucción del sistema. Se reunen las transacciones que parten de un centro de transformación, para
generar un único diagrama.
4.3. Independencia funcional
La descomposición funcional inicial debe refinarse para mejorar el diseño. El objetivo son módulos con
funciones bien distinguidas e independientes lo que facilita la codificación y el mantenimiento. Para ello, hay
que tener en cuenta dos propiedades de los móculos, el acoplamiento y la cohesión.
4.3.1. Acoplamiento
El acoplamiento es una medida del grado de dependencia entre módulos. Se tenderá a que sea bajo, ya
que así, cada módulo no dependerá de las particularidades de los demás. Se identifican varios tipos de
acoplamiento: normal, global y por contenido.
El acoplamiento normal, a su vez identifica otros tres: por datos, por estampado y por control. En el primero,
todos los datos que se pasan entre módulos son elementales. Es el menor acoplamiento posible, y el más
recomendable. En el acoplamiento por estampado los módulos se pasan estructuras complejas de datos y
el acoplamiento por control es en el que un módulo pasa datos a otro para controlar su lógica interna.
El acoplamiento global o común es el que usa variables globales. Como se comparten datos, se dificulta el
control del proceso sobre esas variables. Se propagan errores.
El acoplamiento por contenido es en el que un módulo se refiere a datos internos de otro o se realizan
saltos incondicionales.No es recomendable.
4.3.2. Cohesión
La cohesión mide el grado de relación funcional entre elementos de un módulo, es decir de la claridad y
concreción de la función del módulo. Se tiende a que sea alta. Se identifican varios tipos de cohesión.
La cohesión funcional de un módulo es en la que todos los elementos contribuyen a realizar una única
función. La cohesión secuencial implica varias tareas, siendo la salida de una, la entrada de otra. La
cohesión comunicacional se da cuando el módulo comparte interface.
La cohesión procedimental se refiere a actividades que se realizan secuencialmente, sin datos relacionados
y la temporal a las actividades simultáneas y sin relación. En la cohesión lógica, un módulo realiza
actividades de la misma categoría llamadas desde fuera del módulo y en la casual se realizan actividades,
sin relación significativa entre ellas.
5. TÉCNICAS DESCRIPTIVAS

232
Realizada la descomposición modular y
refinado el diseño, se detalla cada
módulo con más profundidad con
técnicas descriptivas como son las
siguientes.
Diagrama interfaz-función. Permite
describir un módulo de forma textual,
indicando nombre, E/S y función, como
se muestra en la figura derecha.
Pseudocódigo. A veces referido como LDP (lenguaje de diseño de programas), es un lengaje informal,
similar al natural, con cuatro elementos: sintaxis fija, que permita representar construcciones estructuradas,
una sintaxis libre, para describir las características de proceso, facilidad de declaración de datos y sintaxis
de llamada a subprogramas
Ordinogramas. Son los DFD. Representan procesos con rectángulos, bifurcaciones con rombos, etc.
Diagramas de Nassi-Schneiderman.
Representan el contenido de un módulo
respetando la programación
estructurada. Se caracterizan por la
buena definición de selección y
repetición y permitir determinar con
facilidad el ámbito de las variables.
Tablas de decisión. Pretenden traducir
acciones y condiciones en una tabla.
Permite para una serie de condiciones
concretas, saber con facilidad qué
acciones deben realizarse, como en el
ejemplo del cuadro.
Actualmente, el paradigma más usado puede ser la POO (programación orientada a objetos), en la que el
diseño consiste en refinar las clases obtenidas en el análisis, no como proceso diferenciado, como ocurre
en el análisis estructurado. En el fondo, la esencia de las técnicas es similar.
6. DOCUMENTACIÓN
Al igual que en el resto de procesos, la documentación requerida a la etapa de la descomposición modular
se resume en el diagrama de estructuras, donde verdaderamente se describe la estructuración del sistema.
Asimismo, haría falta documentar cada uno de los módulos identificados. Del mismo modo, esta etapa
generará o dara motivo de modificación a otra documentación colindante, como la de gestión, riesgos,
requisitos, u otras. Como ya se indicó, aunque no sea documentación propiamente del proceso, es
documentación de apoyo, importante.

233
TEMA 53. DISEÑO LÓGICO DE DATOS. TRANSFORMACIÓN DEL MODELO CONCEPTUAL A
MODELOS LÓGICOS. ANÁLISIS RELACIONAL DE DATOS. DOCUMENTACIÓN.

1. INTRODUCCIÓN
2. DISEÑO LÓGICO DE DATOS
3. TRANSFORMACIÓN DEL MODELO CONCEPTUAL A MODELOS LÓGICOS
4. ANÁLISIS RELACIONAL DE DATOS
5. DOCUMENTACIÓN

234
1. INTRODUCCIÓN
La ingeniería del software identifica varias etapas en su desarrollo. Tanto análisis como diseño pretenden
modelar un sistema para implementar la solución, como se ha indicado, desde tres perspectivas, la estática,
la dinámica y la integrada. El objetivo de la perspectiva estática es el diseño lógico de datos. Éste
representa el paso del modelo conceptual generado en el análisis al modelo lógico, que debe ser refinado y
documentado.
2. DISEÑO LÓGICO DE DATOS
El diseño lógico de datos, más concreto y cercano a la solución final, se realiza en dos pasos, la
transformación del modelo ER a un esquema lógico (teniendo en cuenta restricciones) y el refinamiento de
la estructura para evitar redundancias (normalización). Esto obliga a la elaboración de un primer diseño
lógico estandar, adecuando el tipo de modelo lógico formal a su adaptación al modelo lógico específico del
SGBD que se utilice. Estos dos pasos se identifican como diseño lógico estándar y específico.
El diseño lógico estándar se puede basar en tres modelos: jerárquico, en red y relacional. En la práctica, el
que se usa es el relacional.
El diseño lógico específico supone la base de la adaptación del estándar a la funcionalidad más detallada
que se exija al sistema final. Para ello, se usarán extensiones o modificaciones del diseño estándar.
3. TRANSFORMACIÓN DEL MODELO CONCEPTUAL A MODELOS LÓGICOS
El caso general parte de un modelo conceptual basado en el diseño entidad-relación. Siguiendo las reglas
de diseño de Chen, se tendrá que toda entidad se convertirá en una relación, las relaciones de cardinalidad
N:M se transforman en una relación y las relaciones 1:N o propagan clave o se transforman en relación.
Además, en la transformación se tendrá en cuenta las siguientes consideraciones.
Dominios. Se representan directamente, ya que el modelo relacional admite dominios.
Entidades. Se tendrá en cuenta si son entidades fuerte no especializadas o débiles.
Restricciones. Se trata de identificar las restricciones del sistema, en cuanto a relaciones, agregación y
especialización / generalización.
Las relaciones tendrán en cuenta su cardinalidad, 1:1 (simple, con una o con dos restricciones de
existencia), 1:N (simple, con una o dos restricciones de existencia), N:N, reflexiva o ternaria. Las
especializaciones se evaluarán para encajarlas como totales y parciales o solapadas y disjuntas.
El modelo lógico tendrá en cuenta otras restricciones que imponga el modelo conceptual. El modelo
relacional admite restricciones adicionales que podrán ser especificadas en algún lenguaje formal, como
SQL. Además permite especificar comportamientos en el borrado de tuplas, como la transmisión en
cascada, puesta a nulos, inicialización y valores por defecto, etc.
4. ANÁLISIS RELACIONAL DE DATOS
Es la parte del análisis orientado a eliminar redundancias y obtener estructuras de datos que favorezcan la
integridad (anomalías de actualización, por ejemplo). Para ello, se trabaja sobre las relaciones entre los
datos identificándose diferentes niveles de normalización llamados “Formas Normales”. Se habla de 6
formas normales, en función de la relación que se establece y las restricciones que impuestas, y cada uno
enfrenta situaciones problemáticas del diseño.
Se dice que una relación está en una forma normal si satisface un conjunto de restricciones impuestas por
la regla de normalización correspondiente. La aplicación de una regla es una operación que toma como
entrada una relación y resulta en dos o más relaciones
1FN. 1ª Forma Normal. Una relación está en 1FN si y sólo si los valores que componen cada atributo de una
tupla son atómicos, es decir, cada atributo de la relación toma un único valor del dominio correspondiente, o
lo que es lo mismo no existen grupos repetitivos.
Una tabla estará en 1FN si tiene un solo valor en cada intersección de fila y columna. Un conjunto de
relaciones está en 1FN si ninguna tiene grupos repetitivos. Si una relación no tiene 1FN, deben eliminarse
grupos repetitivos, aquellos atributos o grupos de ellos con múltiples valores para cada tupla.
Para eliminar los grupos repetitivos, para cada valor del grupo, se repiten los atributos con un solo valor.
Esto introduce redundancias ya que duplica valores, pero éstas se eliminarán con el resto de formas
normales. La segunda forma de eliminar los grupos repetitivos consiste en poner cada uno de ellos en una
relación aparte, heredando la clave primaria de la relación en la que se encontraban. Por ejemplo:

235
R= @NumFactura + Fecha + IdCliente + NombreCliente + Tfno + {CodProducto + DescProducto + PVP +
Cantidad} + ImporteFactura
No estaría en 1FN porque posee grupos repetidos. Se repite la información previa en cada tupla. Podría
dividirse en dos relaciones:
R1 = @NumFactura + Fecha + IdCliente + NombreCliente + Tfno + ImporteFactura
R2 = @NumFactura + @CodProducto + DescProducto + PVP + Cantidad
2FN. 2ª Forma Normal. Una relación está en 2FN si y sólo si satisface la 1FN y cada atributo de la relación
que no está en la clave, depende funcional y completamente de la clave primaria. La 2FN se aplica a las
relaciones que tienen claves primarias compuestas por dos o más atributos. Si una relación está en 1FN y
su clave primaria es simple (un atributo), entonces también está en 2FN. Las relaciones que no están en
2FN pueden sufrir anomalías al actualizar.
Transformar una relación en 1FN a 2FN es eliminar las dependencias parciales de la clave primaria. Para
ello, se eliminan los atributos funcionalmente dependientes y se ponen en una nueva relación con una copia
de su determinante (atributos de la clave primaria de los que dependen).
Se crearán dos tablas para eliminar dependencias funcionales; una tendrá los atributos que dependen
funcionalmente de la clave, y la otra los atributos que forman parte de la clave de la que dependen. Ejemplo:
R1: NumFactura → Fecha, IdCliente, NombreCliente, TfnoCliente, ImporteFactura
IdCliente → NombreCliente, TfnoCliente
R2: CodProducto → DescProducto, ImporteProducto, Cantidad
R2, DescProducto e ImporteProducto no son plenamente dependientes de la clave. Dependen sólo de parte
de la clave. Se puede dividir la relación en la forma:
R1 = @NumFactura + Fecha + IdCliente + NombreCliente + TfnoCliente + ImporteFactura
R2.1 = @NumFactura + @CodProducto + Cantidad
R2.2 = @CodProducto + DescProducto + ImporteProducto
3FN. 3ª Forma Normal. Una entidad está en 3FN si está en 2FN y todos sus atributos no principales
dependen directamente de la clave primaria..
Para pasar una relación de 2FN a 3FN hay que eliminar las dependencias transitivas. Para ello, se eliminan
los atributos que dependen transitivamente y se ponen en una nueva relación con una copia de su
determinante (el atributo o atributos no clave de los que dependen). En el ejemplo, en R1, NumFactura
determina IdCliente y éste NombreCliente y TfnoCliente. Puede dividirse la relación en la forma:
R1.1 = @NumFactura + Fecha + IdCliente + ImporteFactura
R1.2 = @IdCliente + NombreCliente + TfnoCliente
R2.1 = @NumFactura + @CodProducto + Cantidad
R2.2 = @CodProducto + DescProducto + ImporteProducto
Estas tres formas normales se resumen como el requisito de que todos los atributos no-clave sean
dependientes en "la clave, la clave completa, y nada excepto la clave".
La Forma Normal de Boyce-Codd (FNBC) es una versión más restrictiva que la 3FN y consiste en no
permitir dependencias funcionales no triviales de atributos que no sean un conjunto de la clave candidata.
Se dice que una tabla está en FNBC si y solo si está en 3FN y cada dependencia funcional no trivial tiene
una clave candidata como determinante.
4FN. 4ª Forma Normal. Una relación está en 4FN si y solo si, está en 3FN o FNBC y no posee
dependencias multivaluadas no triviales. Una dependencia multivaluada es una relación en la que dos o
más relaciones independientes varios a varios causa redundancia, la que pretende eliminar la 4FN.
5FN. 5ª Forma Normal. Una relación está en 5FN si y solo si, está en 4FN y cada dependencia de unión es
implicada por claves candidatas. Se conoce como FNPJ, forma normal de proyección-unión y se basa en
eliminar la redundancia en tuplas multivaluadas, aislando semánticamente relaciones múltiples.
La 4FN y la 5FN se aplican a relaciones entre atributos de cardinalidad 1:N y N:N.
6FN. 6ª Forma Normal. También conocida como forma normal de dominio-clave (DKNF). Pretende
descomponer las claves candidatas de una tabla, lo que es importante cuando se trabaja con variables
temporales o datos de intervalo. No se suele usar en BBDD pequeñas porque atomiza las tablas.

236
Se basa en aplicar restricciones de dominio (valores permitidos a cada atributo) y claves (atributos que
definen una fila en una tabla). La situación ideal es que cada restricción en la relación sea consecuencia de
la definición de claves y dominios de forma que se cumplan automáticamente, evitando anomalías no
temporales. Es difícil la definición de una BBDD en esta forma.
5. DOCUMENTACIÓN
La documentación generada en el diseño lógico de datos se orienta a servir de base para el diseño físico.
Por tanto, además del esquema relacional debe incluir una estimación del tamaño y volumen de información
que se espera manejar y una primera aproximación al control de acceso, esbozando quién podrá acceder a
qué información.
Los criterios utilizados para elaborar el diseño lógico de los datos, deben quedar documentados por si en el
futuro hay que usar dicha información en desarrollos adaptativos o evolutivos. Además, la documentación
reflejará los requisitos de acceso a las relaciones (qué procesos, cuánto y con qué criterios acceden a las
relaciones) para poder definir claves e índices al desarrollar el diseño físico.

237
TEMA 54. DISEÑO DE INTERFACES DE USUARIO. CRITERIOS DE DISEÑO. DESCRIPCIÓN DE
INTERFACES. DOCUMENTACIÓN. HERRAMIENTAS PARA LA CONSTRUCCIÓN DE INTERFACES.

1. INTRODUCCIÓN
2. DISEÑO DE INTERFACES DE USUARIO
3. CRITERIOS DE DISEÑO
4. DESCRIPCIÓN DE INTERFACES
5. DOCUMENTACIÓN
6. HERRAMIENTAS PARA LA CONSTRUCCIÓN DE INTERFACES

238
1. INTRODUCCIÓN
El diseño de interfaces gráficas de usuario posee gran importancia debido a la popularización del uso del
ordenador. Efectivamente, interfaces mal diseñados llevan a situaciones de confusión, dificultad de
aprendizaje y frustración que derivan en una merma de productividad. Por el contrario si un interface se
diseña correctamente, al usuario le resultará intuitivo el uso del programa, acelerando el proceso de
aprendizaje y por tanto su rendimiento.
El diseño de un interface se relaciona con el software, de forma que oculta al usuario la implementación de
los detalles, de por ejemplo, el SO. Un buen diseño debe tener en cuenta aspectos no sólo tecnológicos,
sino también psicológicos, de interacción con el usuario, que contribuirán a la calidad global del software.
2. DISEÑO DE INTERFACES DE USUARIO
El diseño de interfaces gráficas de usuario debe tener en cuenta al menos tres factores: el tipo de usuario
que se enfrentará a la aplicación, el contexto de trabajo y los factores humanos.
Antes de comenzar el diseño hay que caracterizar al usuario. Es un proceso continuo, porque pueden
cambiar frecuentemente. La solución debe ser genérica, con independencia del nivel del usuario, ya que
algunos preferirán más potencia y otros una interacción más guiada.
La caracterización de usuarios podría distinguir entre avanzados y principiantes. Los primeros incluirían
aquellos que están acostumbrados a trabajar con aplicaciones informáticas; dominan semántica y sintaxis y
en general desean un rápido aprendizaje, evitando detalles. En este caso, el interface sería deseable que
contase con tiempos de respuesta cortos, que realizase muchas operaciones en pocos pasos y la
posibilidad de macros para tareas habituales.
Los usuarios principiantes no poseen conocimiento, o es limitado, ni hábito de trabajo con aplicaciones
informáticas. Al enfrentarse al programa, pueden tener una cierta ansiedad e intentar aplicar ideas erróneas.
Los conceptos de la aplicación (semántica) y su sintaxis en general les resultarán difíciles o engorrosos.
En este caso, el interfaz gráfico es deseable que limite el vocabulario, en particular técnico, que presente
pocas opciones y el proceso sea más guiado. Asimismo, se deberían evitar respuestas rápidas y disponer
de una buena documentación, consistencia (facilitar el reconocimiento) y protecciones frente a usos en los
que el usuario sin experiencia hace pruebas con la aplicación.
El contexto de trabajo puede ser clasificado según distintos criterios, por ejemplo, el de aplicación, que
distinguiría contextos de trabajo crítico, empresarial y doméstico.
Un contexto crítico puede ser el control de tráfico aéreo o la monitorización médica, donde las aplicaciones
deben responder en tiempo real. En estos casos, el coste es alto, a cambio de una respuesta fiable en
tiempo y forma. El diseño podría ser más grosero al permitirse períodos largos de formación y adquirirse un
dominio del sistema con el uso frecuente, en general complementado con entornos de simulación. La
satisfacción subjetiva del usuario no es tan importante como en otros contextos.
En entornos empresariales, las decisiones de diseño suelen limitarse por criterios económicos, de forma
que la fiabilidad o prestaciones no son tan importantes como en contextos críticos. La formación se
descuida algo más y se deja una parte importante a la operativa diaria, por lo que el diseño debe hacer que
el uso sea fácil o intuitivo. La satisfacción subjetiva del usuario no es demasiado importante al prevalecer el
criterio del coste. Un caso particular es aquel en que el usuario es experto en su trabajo, pero no tanto en el
manejo de la informática, situación en que el diseño debe combinar facilidad de aprendizaje y satisfacción.
Por su parte, el entorno doméstico englobaría el diseño de aplicaciones en que predomina el criterio de la
facilidad de aprendizaje, importante guiado y amplia satisfacción subjetiva.
Los factores humanos incluirían aspectos como la psicología, razonamiento y comportamiento del usuario,
en particular lo que éste espera en su interacción con el ordenador. El diseño del interface debe tener en
cuenta estos factores, evitando que el sistema sea visto como poco amigable. En un interface gráfico el
sistema visual del usuario adquiere especial importancia, porque es su puerta de entrada de la información,
que almacenará en su cerebro y procesará siguiendo un razonamiento inductivo o deductivo. La
especificación correcta de la información visual es clave en el diseño de un interface amigable.
La lectura es muy importante en los interfaces. El tamaño del texto, tipo de letra, longitud de línea, o el color
son algunos factores que influyen en la facilidad del usuario de familiarizarse con el interface y relacionarse
con la máquina. El interface del programa puede requerir que el usuario recuerde menús o pasos complejos
que el usuario debe recordar. Si el diseño abusa de la exigencia de memoria del usuario, el rendimiento
humano será menor. Por tanto, un interface debe especificarse de forma que permita al usuario desarrollar
heurísticas (experiencias y estrategias basadas en la comprensión de problemas similares), que sean
coherentes en diferentes ámbitos de interacción.

239
Otros aspectos humanos son la habilidad, personalidad o comportamiento del usuario. En general, la
personalidad de un individuo está muy ligada a su estilo cognitivo. El interface gráfico debe diseñarse
teniendo en cuenta, al menos, la personalidad típica del usuario al que se dirige la aplicación. Shneiderman
en su libro "Diseño de Interfaces de Usuario" propone escalas psicológicas del estilo acepta/evita riesgos,
reflexivo/impulsivo, ansiedad alta/baja, motivación, compulsividad, orientación del cerebro, etc. Aunque
existen pocos datos empíricos para diseñar interfaces adaptados a personalidades, se acepta que ciertos
interfaces son mejor aceptados por usuarios con cierto tipo de personalidad.
En general, un programa no permite al usuario hacer algo nuevo, sino que el sistema automatiza y mejora
tareas rutinarias, que variarán según la aplicación, pero que pueden distinguirse algunas genéricas como
las de comunicación, diálogo con el sistema o tareas de control. Para desarrollar instancias específicas de
las tareas generales, se usa la técnica de diseño llamada análisis y modelización de tareas. Podría
resumirse diciendo que el diseño del interface se orienta a dotar al usuario de un entorno fácil y natural para
realizar su trabajo.
3. CRITERIOS DE DISEÑO
Los criterios de diseño de interfaces gráficas de usuario orientan el desarrollo a interfaces eficientes y
amigables, cobrando especial importancia la experiencia del diseñador. Se pueden distinguir tres categorías
de directrices de diseño: interacción general, visualización de información y entrada de datos.
Interacción General. El diseño de la interacción general debe ser consistente, usar un formato homogéneo
de selección de menús, entrada de órdenes, etc. Debe proporcionarse realimentación visual y auditiva para
asegurar la comunicación, preguntando, por ejemplo, la verificación de cualquier acción destructiva no
trivial, con ventanas tipo “Desea continuar”. Los mensajes de error deben ser significativos.
Debe permitirse la vuelta a una situación anterior en la ejecución de la mayoría de acciones. El sistema
debe protegerse de errores de usuario que pudiesen afectar al sistema y a la misma aplicación. A esto
ayuda minimizar en lo posible la cantidad de información a memorizar entre acciones, usando verbos o
frases simples para nombrar acciones. Una orden larga es difícil reconocer y recordar.
El interface debe buscar la eficiencia en el diálogo, movimiento y pensamiento. El número de pulsaciones o
la distancia que el puntero recorre entre dos acciones debe minimizarse. También se tendrá en cuenta el
tiempo de respuesta, tanto en retardo como la variabilidad. Las acciones deben categorizarse por función y
organizar la pantalla, la esencia del menú desplegable. El diseño debe hacer hincapié en la ubicación
coherente de órdenes y acciones y por fin, ofrecer facilidades de ayuda al usuario sensibles al contexto y
que no le obliguen a abandonar el interface.
Visualización de la Información. Para generar un interface eficiente, la información a visualizar debe ser
completa, clara e inteligible. Algunas directrices de presentación son mostrar sólo información relevante en
el contexto actual. El usuario no debe buscar a través de menús u otros la información relevante en una
operación dada, ni saturarse con demasiados datos en pantalla. El formato de presentación debe facilitar la
asimilación rápida de información, intentando usar gráficos o esquemas antes que tablas.
El significado de una pantalla debe ser obvio, evitando referencias a fuentes externas de información. Al
usuario debe permitírsele mantener el contexto visual, de forma que no se pierda la posición relativa de la
imagen en tratamiento. Debe cuidarse la presentación y formato del texto ya que es importante en la
facilidad de asimilación de información del usuario y usar ventanas si es posible, para modularizarla.
El tamaño de pantalla se elegirá según el tipo de aplicación, considerando la geografía disponible. Si se
usan muchas ventanas, debe haber espacio para mostrar al menos una porción de cada una. Puede
resultar conveniente usar representaciones analógicas para mostrar información más fácil de asimilar con
este tipo de representación. Por ejemplo, un nivel, en vez de mostrar un dígito, mostrar un depósito.
Entrada de datos. Una gran parte del tiempo de trabajo se emplea en introducir datos, en general con
teclado y ratón. Directrices de diseño recomiendan minimizar el número de entradas de teclado, es decir,
favorecer el uso del ratón, desplegables predictivos, etc., así como mantener la consistencia entre la
información visualizada y los datos de entrada. Las características visuales de la pantalla (tamaño del texto,
color, situación) deben ser mantenidas a lo largo de todo el campo de adquisición.
Se debe permitir al usuario personalizar la entrada de datos. La interacción debe ser flexible ajustarse al
modo de entrada preferido por el usuario y no ofrecer acciones incoherentes en el contexto actual para
evitar acciones erróneas del usuario. Asimismo se proporcionará ayuda en la entrada de datos, eliminando
entradas innecesarias o redundantes como unidades de medida o decimales por defecto.
También debe permitirse al usuario controlar el flujo interactivo, para que pueda salir de situaciones de error
sin abandonar el programa, evitar acciones innecesarias o cambiar el orden de las acciones requeridas si es
posible en el contexto de una aplicación y por fin, permitir almacenar secuencias de órdenes de uso
frecuente (macros).

240
4. DESCRIPCIÓN DE INTERFACES
La descripción de interfaces de usuario, descansa en la estandarización de interfaces gráficas, lo que
beneficia a empresas de desarrollo y usuarios. La mayoría de interfaces hacen uso de ventanas y
dispositivos de señalización y selección, cuyo desarrollo no siempre es sencillo, por lo que se genera la
necesidad y al fin, la adopción de los estándares de interfaces de usuario.
Los estándares permiten a los diseñadores reutilizar módulos y objetos de otros interfaces ya creados, de
forma que el proceso de desarrollo de un nuevo interface es más rápido y ofrece mayor calidad. Se pueden
usar herramientas para crear prototipos, ahorrando tiempo de desarrollo. Desde el punto de vista del
usuario la presentación y el ritmo del interface es más familiar, de forma que el aprendizaje requiere menos
tiempo y resulta más intuitivo y productivo.
De los estándares de interface gráfico destaca el sistema X Window, que define una semántica y sintaxis de
diseño y proporciona herramientas para creación de pantallas, ventanas y gráficos, así como un protocolo
para manejar recursos, interacciones con dispositivos y manejo de excepciones. Existen extensiones y
variaciones del estándar que se pueden utilizar sobre PC, estaciones de trabajo, Unix y otros SO.
Otro estándar de interface importante es el de los programas basados en Microsoft WS, que ofrecen un
aspecto similar independientemente del tipo de aplicación utilizada. Además se pueden configurar diversos
aspectos del interface como el color, tamaño de ventana y otros.
A pesar de la evolución de los estándares de interfaces de usuario, el diseño y desarrollo de interfaces es
un reto para los ingenieros de software. Algunos estudios muestran que entre el 50 y el 80 % del código
generado para aplicaciones interactivas se dedica a gestión y mantenimiento del interface hombre máquina.
5. DOCUMENTACIÓN
La documentación del proceso de diseño de interfaces de usuario no sigue un criterio estándar. Se suelen
utilizar distintas notaciones para documentar el diseño, según el modelo seguido. Por tanto, lo relevante es
que se refleje en algún documento el criterio de diseño.
Por ejemplo, para el diseño de un interfaz de
navegación con ventanas, se podría seguir un
proceso de desarrollo como el indicado.

Cada fase del proceso debe dejar su huella documental. Así, el modelo de tareas y dominio dejará claras las
tareas abstractas del dominio de la aplicación, la especificación de interfaz de usuario abstracta, quedará
patente en algún documento en que se relacionen tareas abstractas con subtareas y acciones elementales
de interacción básica. Para la especificación de interfaz de usuario concreta, se concretarían los elementos
del sistema y por fin, se obtendría un documento de interface de usuario final, que podrá compartir mucho
contenido con el manual de usuario de la aplicación.
6. HERRAMIENTAS PARA LA CONSTRUCCIÓN DE INTERFACES
El proceso de diseño del interface de usuario es interactivo, ya que se debe crear un modelo de diseño, e
implementarlo como prototipo, bien hardware, bien simulado, y los usuarios deben evaluarlo de forma que
se introducirán las modificaciones que respondan a sus sugerencias. Para facilitar este proceso interactivo
de diseño, se han desarrollado herramientas de diseño y prototipo denominadas sistemas de desarrollo de
interfaces de usuario (SDIU) y proporcionan módulos u objetos que facilitan la creación de ventanas,
menús, interacción con dispositivos, mensajes de error, órdenes y otros elementos de un entorno gráfico.
Al usar paquetes de software que pueden ser aprovechados por el diseñador, por el programador y por el
interface de usuario, un SDIU proporciona mecanismos para el control de dispositivos de entrada, la
validación de entrada de datos del usuario, manejo de errores y visualización de mensajes de error,
realimentación, como los ecos de entrada, ayudas e indicaciones, manejo de ventanas y campos, etc.
Además las herramientas de diseño permiten establecer conexiones entre el software de aplicación y el
interface, aislando la aplicación de las funciones de manejo de interface. Estas funciones pueden ser
implementadas utilizando un sistema gráfico o un sistema basado en un lenguaje de interacción.
Las herramientas de diseño y desarrollo de interfaces son un conjunto de componentes de software, como
menús, botones, estructuras de ventanas, iconos, controladores de dispositivos y otros. Estos conjuntos de
herramientas están evolucionando a herramientas de desarrollo de prototipos que permiten la creación
rápida en pantalla de interfaces sofisticadas ajustadas al estándar elegido para el software.

241
TEMA 55. DISEÑO FÍSICO DE DATOS Y FUNCIONES. CRITERIOS DE DISEÑO. DOCUMENTACIÓN.

1. INTRODUCCIÓN
2. DISEÑO FÍSICO DE DATOS Y FUNCIONES
2.1. Diseño de datos
2.2. Diseño de funciones
3. CRITERIOS DE DISEÑO
3.1. De datos
3.2. De funciones
4. DOCUMENTACIÓN

242
1. INTRODUCCIÓN
El desarrollo de un sistema de información concluye su diseño con el diseño físico, es decir, la concreción o
materialización del sistema. El diseño físico resulta en un código ejecutable o una descripción concreta de
datos interpretable directamente por una máquina.
De esta forma, mientras el diseño físico de los datos establece las estructuras de almacenamiento y
representación de datos eficientes, el diseño físico de funciones obtiene el código que cumple las
especificaciones dictadas en anteriores fases del desarrollo del sistema.
2. DISEÑO FÍSICO DE DATOS Y FUNCIONES
El diseño físico representa la implementación de los modelos conceptuales del sistema, es decir, la
codificación en lenguajes de alto nivel y la creación de BBDD. El diseño físico de datos es un aspecto
fundamental en el área de BBDD mientras que el de funciones encaja mejor en áreas de programación. En
el contexto de la POO la transición del diseño a la implementación es más progresiva, gracias a las
herramientas de generación automática de código en base a prototipos como los que permite definir UML.
2.1. Diseño de datos
El diseño físico de datos parte del esquema lógico elegido y obtiene como resultado una especificación para
el sistema de almacenamiento concreto elegido al definir la arquitectura del sistema. Entre los objetivos del
diseño físico se encuentran la minimización del espacio de almacenamiento, la disminución de los tiempos
de respuesta en el acceso a los datos, evitar o minimizar reorganizaciones, optimizar la utilización de
recursos y ofrecer la máxima seguridad.
Desde el punto de vista de un SGBD relacional, el diseño físico de datos depende del sistema de
persistencia elegido. Aún así, las técnicas de optimización son específicas. Para guiar el estudio se seguirá
el modelo de tareas de Métrica v3 para el diseño de datos.
Métrica v3 distingue un proceso de Diseño del Sistema
de Información, que genere el documento DSI (Diseño
del Sistema de Información) que incluya el diseño
lógico y físico. La actividad DSI6 (diseño físico de
datos) con 4 tareas: captura de requisitos, objetivos,
características del SGDB y SO y hardware.
A partir del SGBD y las estimaciones dee volumen y uso de los datos, se determina cómo convertir las
entidades en tablas, cómo se implementarán las relaciones, clusters, los métodos de acceso, etc.
2.2. Diseño de funciones
Partiendo del diseño lógico, se realiza el diseño físico de funciones, teniendo en cuenta la descomposición
modular del sistema, en la que se especifica cada función y sus datos de entrada y salida (interface). Las
funciones se han de codificar, en general con un lenguaje de alto nivel. Los criterios habituales serán la
programación estructurada, guías de código y estilo y documentación del código y se tendrán en cuenta
métricas de calidad software.
La programación estructurada se basa en la idea de que cualquier programa puede escribirse con tres tipos
de instrucciones, secuenciales, condicionales y bucles con condición inicial. Encierra el concepto de
simplificación del flujo del programa a partir de bloques. Para ello, además de usar sólo esas estructuras de
control los programas deben cumplir dos características, que un programa o función sólo presente una
entrada y una salida, y que el flujo de entrada a salida no contenga caminos que no puedan darse y no se
den bucles infinitos.
Un diseño físico con estos criterios facilita la legibilidad de los programas al eliminar saltos incondicionales,
aclara la estructura del programa, la identificación de errores, la optimización de la ejecución y la facilidad
de documentar debido a la agrupación de código. Estos criterios son aplicables al diseño de métodos de las
clases de la POO.
3. CRITERIOS DE DISEÑO
3.1. De datos
Para optimizar el diseño de datos hay que tener en cuenta su acceso. El acceso a datos, en un 80%-90%
de las ocasiones las realiza entre el 10% y 20% de las aplicaciones. Para ello se consideran los módulos o
clases del diseño físico que sean críticos, concurrentes o realicen accesos complejos a datos
Para cada módulo, se identifican las tablas o ficheros accedidos, el orden, prioridad y una estimación del
número de accesos. Este análisis identifica accesos costosos e ineficiencias, de forma que sugiera la
creación de nuevos accesos, normalización o particiones de datos.

243
El conocimiento de los datos y su acceso, deriva en el uso de herramientas (específicas de cada SGBD)
para optimizar el rendimiento, como la selección de índices secundarios y optimización de registros físicos,
porcentaje de reserva en bloques y uso, numero de bloques de una tabla, bloqueo y compresión de datos,
budders o la asignación de conjuntos de datos a particiones y a dispositivos físicos.
De esta forma se establece dónde ubicar el SGBD y los datos en los diferentes nodos, teniendo en cuenta
la arquitectura propuesta del sistema. El resultado es la especificación del modelo físico de cada nodo, su
distribución y la asignación de datos a los nodos.
3.2. De funciones
Los criterios de la programación estructurada mejoran el diseño de funciones, pero todavía existen
diferencias. Para encontrarlas se establecen métricas de calidad software con objeto de medirlo y mejorarlo.
Un ejemplo son las métricas de complejidad ciclomática y esencial de McCabe, basadas en representar el
flujo de control estructurado como un grafo, donde los nodos son instrucciones y se conectan cuando se
ejecutan secuencialmente. Las métricas se obtienen definiendo la complejidad esencial y ciclomática.
Complejidad esencial. Indica el grado de
estructuración del código. Cuenta el número de 𝒏º 𝒔𝒂𝒍𝒕𝒐𝒔 𝒒𝒖𝒆 𝒓𝒆𝒈𝒓𝒆𝒔𝒂𝒏
veces que un camino del grafo de control realiza 𝑪𝒐𝒎𝒑𝒍𝒆𝒋𝒊𝒅𝒂𝒅 𝑬𝒔𝒆𝒏𝒄𝒊𝒂𝒍 =
𝒏º 𝒔𝒂𝒍𝒕𝒐𝒔 𝒕𝒐𝒕𝒂𝒍𝒆𝒔
un salto y no regresa al punto de partida.
En un programa perfectamente estructurado, todo salto se realiza llamando a funciones o dentro del mismo
módulo, por lo que el valor óptimo de la complejidad esencial es uno.
Complejidad ciclomática. Indica el número de caminos independientes en el grafo de
control. Se calcula como indica la fórmula, siendo e es el número de arcos y n el 𝒚(𝑮) = 𝒆−𝒏+𝟐
número de nodos
Esta métrica es muy usada porque permite calcular la complejidad ciclomática de forma automática a partir
del código, sin necesidad de construir el grafo.
4. DOCUMENTACIÓN
Uno de los objetivos de un buen diseño físico es que el código sea legible. Por ello, el código debe ser
comentado y seguir buenas prácticas de programación, como la elección del nombre de variables y
funciones, la forma de tabulación, etc. El conjunto de normas de programación se resume en lo que se
llama estilo de codificación, que viene a facilitar esa legibilidad exigida.
Las normas se suelen resumir en lo que se conoce como guías de estilo de codificación, que son aplicables
a lo largo de cada proyecto y no conviene modificar muy a menudo, para evitar problemas a los
desarrolladores.
Existen sistemas que permiten con determinada sintaxis en los comentarios, la generación automática de
documentación a partir del código fuente, lo que facilita el proceso de documentación. Como ejemplo de
sistema popular está Javadoc para programación en java.

244
TEMA 56. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS.

1. INTRODUCCIÓN
2. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
2.1. Conceptos
2.1.1. Objetos
2.1.2. Clases
2.1.3. Herencia
2.1.4. Polimorfismo
2.2. Análisis
2.3. Diseño

245
1. INTRODUCCIÓN
El paradigma de la programación orientada a objetos (POO) surge como otra forma de organizar el
desarrollo software intentando reutilizar al máximo el código e implementar de forma nativa los conceptos de
ocultación y abstracción de la programación estructurada. Se popularizó en los años 90 y su uso está muy
extendido. Como ejemplos de lenguajes con los que se puede programar con objetos se pueden citar Visual
Basic, C++, Object Pascal y Java como destacado. La práctica totalidad de lenguajes lo permite.
La visión de la orientación a objetos encierra una perspectiva completa de la ingeniería de software. La
aplicación de la programación estructurada a la orientada a objetos no será óptima, porque no encaja
perfectamente. Hay que tener en cuenta otra forma de realizar el análisis, el análisis orientado a objetos
(AOO), cambia el diseño (DOO, diseño orientado a objetos) y el desarrollo es POO. En el contexto de las
BBDD se habla de los SGBD orientados a objetos (SGBDOO).
2. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS
La metodología orientada a objetos se puede entender como una espiral evolutiva que comienza con la
definición del dominio del problema y se identifican las clases básicas, se planifican y analizan los riesgos
del proyecto y el desarrollo sigue una evolución iterativa.
Las iteraciones identificarán las clases candidatas a ser definidas como entidades, se buscarán clases que
se adapten al problema, si existieran en repositorios, desarrollar las nuevas clases identificadas, añadirlas a
los repositorios y repetir el proceso mientras sea necesario.
2.1. Conceptos
El análisis y diseño orientado a objetos integra los conceptos de dato y proceso, que en programación
estructurada se tratan de forma distinta. Un sistema se concibe como un conjunto de objetos que se
comunican entre sí. Así, la POO representa un paradigma de programación que como unidad básica usa
objetos para el desarrollo de programas, consiguiendo un alto nivel de abstracción.
Un objeto puede actuar como agente que presta un servicio, sin ofrecer detalles de su implementación, con
lo que su relación con el resto del software es a través de un interface muy definido. La POO utiliza los
conceptos de encapsulamiento, abstracción, polimorfismo y herencia.
2.1.1. Objetos
Definir un objeto sin más es complicado sin una analogía previa. Por tanto, debe pensarse primero en el
caso de la programación estructurada. En la programación estructurada existían unos tipos de datos, por
ejemplo enteros y al codificar un programa, se podía hacer uso de esos tipos de datos, definiendo variables.
Por ejemplo, podría definirse una variable llamada contador de esta forma: contador: integer;
Como primera aproximación podría decirse que un tipo de datos, en POO, se llamará clase, y una variable
de ese tipo de datos, de esa clase, será un objeto. Siguiendo con la analogía, la variable contador sería un
objeto de la clase integer.
Por tanto, en el contexto de la POO, puede definirse un objeto como una instancia dinámica de una clase.
De esta forma, y teniendo como referencia el ejemplo propuesto será más fácil entenderlo. Una clase puede
instanciarse, creando un objeto, al que se asigna un espacio en memoria.
Un objeto se comporta como una entidad independiente con datos propios, capaz de relacionarse con otros
objetos a través de un interfaz. El concepto de objeto es más amplio que el de la variable del ejemplo. De
hecho, la variable contador, de tipo entero, termina ahí su esencia. Es un entero. Un objeto es más
complejo, puede incluir funciones, procedimientos (métodos), variables, etc. Es una especie de contenedor
amplio, cuyas propiedades estarán marcadas por la clase a la que pertenezca.
Así, un objeto es una entidad identificada en el sistema. Se describe por sus atributos y operaciones
(métodos) que proporciona. El estado de un objeto lo marca el valor de sus atributos. El estado del objeto
tiene tres características: identidad, comportamiento y estado. Su identidad es el conjunto de propiedades
que posee por el hecho de definirse. El comportamiento de un objeto se refiere a las acciones que puede
llevar a cabo, que vendrán dadas por sus métodos, lo que equivaldría a los procedimientos y funciones de la
programación estructurada. Los métodos definen el comportamiento de los objetos y permiten modificar su
estado, es decir la situación en la que se encuentra (valores de sus variables, relaciones, etc.).
2.1.2. Clases
Una clase es la definición abstracta de un objeto. Por tanto, define las propiedades, funciones y forma de
uso de los objetos de su clase. En POO, el diseño de programas se realiza pensando en las entidades
lógicas que lo componen, más que en la función y subrutinas, como en los casos de programación
estructurada y modular. Se piensa en objetos, que modelan entes reales.

246
De forma similar a la inicialización de variables, un objeto, al instanciarse, debe dársele una identidad, lo
que se realiza con un método llamado constructor. Una clase puede tener varios constructores en función
de cómo se instancie. En este caso, se denomina sobrecarga y consiste en que varios métodos de una
clase puedan tener el mismo nombre pero cambien su función según los argumentos.
Para realizar operaciones con un objeto es necesario llamar a sus métodos y pasarle los parámetros
necesarios. No se aconseja tratar los atributos internos de un objeto directamente. En POO, las operaciones
sobre los datos de un objeto se realizan con métodos. Piénsese por ejemplo, en una clase automóvil, y un
objeto de esa clase llamado “micoche”. Si se desea conocer la potencia de “micoche”, se dispondrá de un
método llamado potencia() que devolverá el valor correspondiente. Para cambiar de color “micoche” habrá
otro método, que aceptará un parámetro que indique el nuevo color y actualice el atributo color de micoche.
Por tanto, es de observar, cómo una clase encapsula, oculta, los datos y los procesos que manipulan esos
datos. Esto recuce el impacto de efectos colaterales asociados a cambios y errores. Así, el encapsulamiento
se refiere a la definición de objetos como entidades aisladas, lo que les otorga independencia del programa
que los use, pudiendo además exportarse a otros programas.
Los objetos pueden tener atributos o métodos públicos y privados.
Las clases atributos estáticos que tendrán el mismo valor para todos
los objetos durante la ejecución. Los atributos estáticos serán
accedidos invocando directamente a la clase, no a través de objetos.
En POO se utilizan dos conceptos: ocultación y encapsulamiento. La
ocultación es la propiedad de los objetos por la que la
implementación de su código no puede manipularse directamente
(es privada), sino que debe hacerse uso de los métodos que define
el objeto a modo de interfaz.
La ocultación se logra mediante palabras reservadas que asigan a los atributos y métodos los permisos
correspondientes. La palabra reservada “public” permite el acceso a todos los objetos y “protected” permite
el acceso sólo a clases hijas. Antes de destruir o dejar de usar un objeto, debe liberarse la memoria que
utiliza. Para ello los objetos suelen disponer de un método destructor.
2.1.3. Herencia
Una clase puede crearse a partir de otra clase, lo que implica que la nueva clase tenga las características
de la clase padre o superclase y además pueda añadir nuevas funciones o atributos. Este es el concepto de
herencia. Su característica principal es el ahorro de código al permitir crear clases complejas a partir de
otras ya definidas.
Para definir una clase hija, hay que indicar en su código que extiende una superclase. Una clase abstracta
sólo sirve para ser heredada, no para tener instancias propias. Si a un objeto se le llama con un método que
no tiene, se consulta ese método en la clase padre. Los métodos pueden redefinirse en las clases hijas o
añadirles funciones y llamar al de la superclase.
Los lenguajes de programación incorporan clases primitivas que pueden ser extendidas o usadas por los
programadores gracias a la herencia. La herencia trata las clases de forma jerárquica, ya que todas
descienden de una superclase común. Estas clases se definen en el API. Leguajes como C ++ permiten
herencia múltiple, esto es, que una clase sea hija de varias superclases. Java sólo permite herencia simple.
Si no se desea que un método o atributo se pueda heredar, a la hora de declarar una variable o un método
se usa la palabra reservada “private”, que impide el acceso a clases hijas y objetos.
2.1.4. Polimorfismo
Un objeto que puede tener atributos de varias clases se dice polimórfico. Esta propiedad puede darse
gracias a la herencia, al instanciar el objeto como de la superclase.
Para ejemplificarlo, sea una superclase polígono, definida con un método dibuja(), que presenta en pantalla
el polígono que se le pasa. Si se definen clases hijas de polígono, como círculo o cuadrado, con sus
respectivos métodos dibuja() al ser llamados se presentará en pantalla el polígono correcto, ya sea un
círculo, un cuadrado u otro, sin ambigüedad, ya que se entenderá que el método a usar es el definido en el
polígono correspondiente. El método dibuja podrá declararse e implementarse o no en la superclase. Si no
se implementa, el método será virtual y se habla entonces de polimorfismo puro.
El polimorfismo puede ser de enlace dinámico o estático. El dinámico define el tipo de clase que tendrá el
objeto en tiempo de ejecución y el estático en tiempo de compilación. Cuando se definen métodos con el
mismo nombre, distinguidos por el tipo de argumentos que reciben, se habla de sobrecarga. En el ejemplo
anterior, habría sobrecarga si en la clase polígono se definieran dos constructores, uno que recibiera el
diámetro y la posición para construir un círculo y otro la posición de dos vértices y el lado para el cuadrado.

247
El método dibujar tendría que implementar las dos posibilidades y ejecutar la que correspondiera según el
caso. En este caso, si se añadiera un nuevo tipo de polígono no habría que recompilar la superclase como
sí ocurriría en caso de sobrecarga.
En C++, el polimorfismo se define en la superclase mediante métodos virtuales. En otro caso se considera
que hay sobrecarga de la clase hija sobre la clase padre. En caso de usar métodos virtuales se produce un
enlace dinámico, si no, será estático. Java, además, incorpora el concepto de interfaz, una clase abstracta
sin métodos, que actúa como plantilla para que el programador escriba el código necesario en cada método
definido en la interfaz. Esto permite implementar herencia múltiple y aplicar polimorfismo.
2.1. Análisis
El análisis orientado a objetos consiste en identificar las características y posibles soluciones al problema
que plantea el sistema a desarrollar con el paradigma de la orientación a objetos. Groseramente, puede
identificarse con la conceptualización del sistema a partir de la captura de requisitos, es decir intenta
describir el comportamiento del sistema como una caja negra. Esa conceptualización puede entenderse
desde tres perspectivas, la estructural, la dinámica y la funcional.
La perspectiva estructural consiste en definir a alto nivel la arquitectura del sistema. Consiste entonces en
identificar las clases y los objetos, sus asociaciones y agregaciones, atributos y criterios de herencia, entre
otras tareas. Además, deben distinguirse las rutas de acceso de las consultas habituales con el objetivo de
iterar el diseño y refinar el modelo.
La perspectiva dinámica consiste en identificar la interacción entre usuario y sistema, eventos entre objetos
y trazar las situaciones de cada escenario. Se apoya en la realización de diagramas de estados y la
verificación de la consistencia de los eventos.
La perspectiva funcional, quizás la más patente, trata de identificar las entradas y salidas, definir la función
del sistema. Se apoya en la confección de DFD que representen las dependencias entre operaciones y se
especifiquen criterios de optimización.
Las metodologías usadas para el análisis orientado a objetos, pueden agruparse en dos grupos destacados,
las orientadas a datos y las orientadas a función. Las primeras se basan en la parte estructural del objeto.
Suponen una extensión del modelado conceptual ER. Las metodologías orientadas a función se basan en
las acciones que desarrollan los objetos. Consisten básicamente en identificar las clases, sus servicios y
atributos, establecer sus interaccione y analizar su generalización y particularización.
2.2. Diseño
El diseño orientado a objetos tiene el propósito de especificar la arquitectura del sistema a alto nivel. Es un
proceso por etapas, que organiza el sistema en subsitemas, identificar qué objetos actuarán, cuál será el
enfoque del almacenamiento de datos y su control, las condiciones del entorno y las prioridades. Consta de
distintos aspectos como los siguientes.
Diseño de objetos. Es la fase en que se concreta la estrategia del diseño de sistema. Se describen los
detalles como las operaciones para las clases a partir de los otros modelos, el diseño de algoritmos para
implementar esas operaciones, optimizar el acceso a datos y su gestión o el ajuste de la estructura de
clases para incrementar la herencia.
Diseño de relaciones. Tiene por objeto el empaquetado de clases y relaciones en módulos y determinar la
representación exacta de los objetos.
Diseño de procedimientos de usuario. Define las tareas a realizar por parte de los mismos. Reflejará cómo
se obtienen los datos y constará de dos partes, una descripción general en que se anote la finalidad y
descripcion del procedimiento y la concreción de cómo llevar a cabo cada tarea. Se suelen emplear DFD.
Diseño de interfaces de usuario. Define la interacción del usuario con el sistema como el diseño de
pantallas. Las interfaces presentan varios niveles. Los superiores representan menús y los inferiores
pantallas de diálogo o funciones concretas. El propósito del interfaz es obtener datos de usuario (entrada) y
ponerla a disposición de otros ususarios (salida).
El diseño de la E/S definirá el formato de las pantallas usadas, su secuencia, menús, diálogos concretos,
etc. Los criterios de diseño de interfaces de entrada tendrán en cuenta características como la sencillez,
inteligibilidad, amigabilidad, protección frente a errores, etc. Y aspectos similares se tendrán en cuenta para
las presentaciones o interfaces de salida.

248
TEMA 57. CALIDAD DEL SOFTWARE. FACTORES Y MÉTRICAS. ESTRATEGIAS DE PRUEBA.

1. INTRODUCCIÓN
2. CALIDAD DEL SOFTWARE
3. FACTORES Y MÉTRICAS
3.1. Factores de calidad
3.2. Métricas de calidad
4. ESTRATEGIAS DE PRUEBA

249
1. INTRODUCCIÓN
La calidad en un proceso productivo, como el desarrollo software, se refiere a la búsqueda constante de la
mejora del trabajo. La concienciación en políticas de calidad, la reconocen como una herramienta de gestión
fundamental en toda organización.
La definición de calidad más aceptada es la que la identifica como el conjunto de procesos continuos
orientados a satisfacer las necesidades y expectativas que se esperan de una organización.
Las expectativas no sólo son las del cliente; incluyen a empleados, proveedores, la sociedad y, en general,
cualquier colectivo relacionado con la organización. En el caso del software, la calidad diferencia entre la
calidad del producto y la de su proceso de desarrollo, ya que sin un desarrollo de calidad es difícil obtener
un producto de calidad.
Hablar de calidad es hablar de aspectos tácitos, ya que es una filosofía de trabajo que debe estar impresa
en cada componente de la organización. Realizar el trabajo con calidad requiere la documentación de
procesos, establecimiento de procedimientos y una metodología de trabajo bien definida y estructurada.
Para ello, en el desarrollo software, la documentación del mismo es un indicador de calidad al facilitar
sobremanera el mantenimiento y la protección frente a cambios en el equipo de desarrollo.
2. CALIDAD DEL SOFTWARE
La calidad del software es un tanto diferente a lo que puede entenderse por calidad de otro tipo de producto,
ya que el software nunca está libre de errores (por definición), es un intangible que no sigue un proceso de
fabricación típico, sino un proceso, a veces, artístico. El coste del software se concentra básicamente en el
análisis, diseño y mantenimiento, no en la producción (groseramente, copiar CDs), por tanto, el proceso de
producción en si mismo, puede estar libre de errores, no así las fases de diseño.
Del mismo modo, puede decirse que el software no se deteriora con el tiempo, los problemas derivados del
mantenimiento se heredan del diseño y codificación, afectando a las copias del producto. El software con
errores no se rechaza, algunos se asumen y otros se corrigen. Estas razones muestran como la calidad del
producto software depende de las fases de su ciclo de vida.
La calidad del software suele estudiarse a nivel de empresa y de proyecto. A nivel de empresa, las
organizaciones se estructuran orientadas a conseguir la calidad de su personal y departamentos así como
fomentar la cultura de la calidad en la misma. A nivel de proyecto, la calidad consiste en poner en práctica
los procedimientos establecidos por el sistema de calidad durante todo el proceso de desarrollo.
La calidad del software a nivel de empresa diferencia los procesos de gestión de la calidad y aseguramiento
de la misma en el software. La gestión de la calidad son los aspectos relacionados con la implantación de la
política de calidad mientras que el aseguramiento de la calidad se refiere al conjunto de tareas planificadas
y sistemáticas que generan la confianza de satisfacción de requisitos exigidos al resultado final.
Según Pressman, la calidad del software es la concordancia de los requisitos funcionales con los
estándares de desarrollo y características implícitas esperadas del software desarrollado profesionalmente.
Los estándares de calidad de software son normas emitidas por organismos competentes que proveen un
marco con el que comparar si un proceso de desarrollo es o no de calidad.
Los estándares intentan coducir el desarrollo de software de calidad y consisten en documentación para
definir y mejorar las actividades de cada fase del ciclo de vida de un producto software. La experiencia
demuestra que incrementan la productividad mejorando y garantizando la calidad del producto.
La creación e implantación de estándares pretenden transferir métodos y procedimientos de desarrollo a la
industria del software con documentos generales y recomendaciones de las actividades a realizar durante el
proceso de producción de software. La dispersión de normativa ha hecho que muchas empresas generen
normas propias, por lo que la tendencia es el establecimiento de normas que homogenicen la planificación
de la calidad, gestión de la configuración del software, la documentación de pruebas y el resto de aspectos.
El proceso de creación e implantación de normas sigue varias etapas. Por ejemplo, en el IEEE se comienza
con una propuesta de cualquiera de sus miembros, que pasa al Comité de Normas de IS, que cursa una
PAP (Petición de Autorización de Proyecto) que define el objetivo, ámbito, descripción y contactos del
proyecto y se transmite a todos los grupos que hacen normas y al ANSI que se encarga de la coordinación.
El desarrollo de la norma lo realiza un grupo de trabajo y una vez terminada se concreta en un documento
(borrador o draft) que pasa varias revisiones y una votación de expertos para ser aceptardo. El tiempo de
elaboración de una norma suele rondar los tres años.
Una vez aprobada la norma, los usuarios proporcionan comentarios de su experiencia y pueden proponerse
modificaciones remitedas al IEEE que las evalúa entrando en una nueva fase del ciclo de elaboración de
normas, decidiendo si se modifica o no o si se elimina por haber sido superada por otra norma. El ciclo
completo dura unos cinco años.

250
Las normas de calidad existentes más conocidas son las ISO, agrupadas en la
serie ISO-9000, que representan un estándar de calidad para toda la industria. La
serie específica relativa al software, es la ISO-9003. Son recomendaciones a
aplicar en el marco de trabajo, ciclo de vida del proyecto y actividades de apoyo.
La acreditación de una organización, debe demostrar la aplicación de las normas
ISO mediante la evaluación de un organismo competente.
Las normas ISO son recomendaciones, por tanto adolecen de ser algo estáticas, de valor relativo, lentas y
caras. No se orientan completamente al software, pero si dan una cierta seguridad en el mercado. La
vertiente negativa sería la acreditación exclusiva por motivos comerciales, lo que no mejora la calidad.
Por fin, los marcos de trabajo son documentos que recogen objetivos y procesos comunes a cumplir por una
organización, que a diferencia de los estándares, dicen qué hacer a nivel general, no cómo. Ejemplos son
CMMI, desarrollado por el Software Engineering Institute a instancia del DoD para evaluar proveedores y así
poder comprobar la utilidad de los procesos en ciertos proyectos. CMM se comenzó a usar para medir la
capacidad de otras áreas distintas al desarrollo de software, evolucionó a la versión CMMI, más general,
que clasifica el grado de madurez de las empresas en cinco niveles. Otro ejemplo es SPCE, similar a
CMMI y propuesto por ISO que clasifica las organizaciones en seis niveles de madurez.
3. FACTORES Y MÉTRICAS
3.1. Factores de calidad
Los factores de calidad son aquellos que permiten establecer criterios de control y medición de la calidad.
Su definición, como la idea de calidad posee una parte subjetiva, originando diversas clasificaciones como
la de McCall, que distingue tres grupos, operativos, de mantenimiento y evolutivos.
Factores operativos. Son aquellos que afectan al uso del software. Distingue factores de corrección (se
cumplen las especificaciones), fiabilidad (software libre de errores), eficiencia, seguridad (acceso al software
y datos) y facilidad de uso.
Factores de mantenimiento. Aplicados a la capacidad de modificación del software. Destacan tres factores,
la flexibilidad (esfuerzo necesario para modificar un programa), la facilidad de prueba y la facilidad de
mantenimiento (esfuerzo de localización y reparación de errores).
Factores evolutivos Pretenden indicar la posibilidad de ejecutar el software en distintas plataformas
hardware o software, en relación a su eficiencia. Algunos de estos factores pueden ser la portabilidad o
facilidad de migración del sw entre entornos, la capacidad de reutilización, o medida en que el sw puede
utilizarse en otras aplicaciones y la interoperabilibdad o medida de la operación conjunta con otros sistemas.
3.2. Métricas de calidad
Las métricas de calidad software son técnicas aplicadas en la valoración cuantitativa de un factor de calidad
software. Por tanto, las métricas pueden ser variadas, en principio por estar referidas a un concepto como el
de calidad y en segundo término por los distintos factores de evaluación del software.
Sin embargo, toda métrica debe poseer al menos la propiedad de ser empírica, objetiva, simple, fácil de
calcular, independiente del lenguaje de programación y tal que proporcione información útil. Algunos
ejemplos de métricas representativas en cada fase del ciclo de vida software son las siguientes.
Análisis. El alto nivel conceptual y la dificultad de cuantificación limitan la existencia de métricas. Suelen
medir el tamaño del software a desarrollar.
Ejemplos son la métrica punto-función, usada para cuantificar la funcionalidad de un sistema a partir de su
descripción y basada en la ponderación de las entradas y salidas de usuario, peticiones, archivos e
interfaces externas. La métrica bang, propuesta por DeMarco, calcula el tamaño del software a desarrollar a
partir del modelo de análisis y la métrica de calidad de especificación, propuesta por Pressman, mide la
calidad del análisis y de la captura de requisitos. Aunque sean factores cualitativos, se intentan cuantificar,
midiendo por ejemplo el número de requisitos donde los revisores han coincidido.
Diseño. En esta fase de desarrollo, las métricas son morfológicas, es decir, suelen trabajar con parámetros
de la estructura de los programas o con medidas del grado de cohesión, acoplamiento y complejidad de los
algoritmos. Son de caja negra en el sentido que no evalúan el funcionamiento interno de los módulos.
Algunos ejemplos son la métrica de complejidad de Card y Glass, basada en la complejidad estructural
(número de módulos que controla uno dado) y de dados (variables de E/S en relación a la complejidad
estructural de un módulo), calculados para cada módulo a partir del diagrama de estructuras. La
complejidad total es la suma de la estructural y la de datos de cada módulo.
La métrica de cohesión y acoplamiento pretende cuantificar estos aspectos en módulos de programación

251
estructurada a partir de varios factores como los parámetros de E/S o las variables globales utilizadas. Las
métricas usadas en POO, se basan en clases y miden aspectos como la profundidad del árbol de herencia,
es decir la jerarquía de herencias (cuanto mayor profundidad, menor calidad), el número de clases
derivadas (más calidad cuanto menor) y el acoplamiento entre clases (cuanto mayor, menor calidad).
Codificación. En la fase de codificación las métricas intentan medir la complejidad del software programado.
Ejemplos son la medida de la complejidad ciclomática y esencial, desarrolladas por McCabe para medir la
complejidad lógica. Se basan en la representación del flujo de control como un grafo. La complejidad
ciclomática mide el número de ciclos que existen en el grafo de control mientras la esencial, mide el máximo
anidamiento de las estructuras de control. Las métricas usadas en POO se utilizan para medir parámetros
como el número de métodos de la clase, o los que pueden invocarse desde otras clases o la cohesión entre
los métodos de la clase.
Por fin, la documentación es otro parámetro de calidad difícil de medir. Lo que si es evidente y así
demuestra la experiencia es que es crucial para asegurar la calidad y el correcto dessarrollo y
mantenimiento del software. Todas las etapas del ciclo de vida deben estar correctamente documentadas.
4. ESTRATEGIAS DE PRUEBA
Las pruebas software aplican una estrategia centrífuga, desde las partes internas del código al sistema
completo. Se distinguen pruebas unitarias, de integración, de validación y de sistema.
Las pruebas unitarias se refieren a partes del código como módulos. Por tanto se puede trazar con la etapa
de codificación del modelo de vida del software. Se prueban caminos de control importantes, interfaces,
estructuras y coherencia de datos, condiciones límite y aspectos del estilo.
Las pruebas de integración se refieren al correcto funcionamiento del código en conjunto, en su totalidad, de
la arquitectura software. Se traza con la fase de diseño del ciclo de vida. Se buscan errores de interacción,
interfaces. La táctica es la integración incremental, de sólo algunos módulos e ir avanzando a la totalidad.
Las pruebas de validación se refieren al cumplimiento de los requisitos de usuario. Por tanto se trazan con
la fase de análisis del ciclo de vida. Siguen una táctica general de prueba de caja negra, que oculte la
implementación pero muestre la conformidad con los requisitos.
Se distinguen pruebas alfa y beta. Las primeras se realizan en un entorno de preproducción (maqueta) y las
segundas en un entorno de producción o que no sea controlado por el equipo de desarrollo. En esta fase
pueden realizarse otro tipo de pruebas como puedan ser pruebas de calidad o de vulnerabilidades.
Las pruebas de sistema se refieren a requisitos funcionales y están ligadas muchas veces a entornos de
operación. Se podría trazar con la petición inicial del sistema o el análisis de la viabilidad del sistema. El
objetivo es la prueba real del sistema. Algunas pruebas pueden ser las de recuperación, forzando el fallo del
software, las de seguridad, resistencia, rendimiento, etc.

252
TEMA 58. AYUDAS AUTOMATIZADAS PARA EL DESARROLLO DE SOFTWARE (HERRAMIENTAS
CASE). TIPOS. ESTRUCTURA. PRESTACIONES.

1. INTRODUCCIÓN
2. AYUDAS AUTOMATIZADAS PARA EL DESARROLLO DE SOFTWARE (HERRAMIENTAS CASE)
3. TIPOS
3.1. Integración
3.2. Metodología de programación
3.3. Etapas del ciclo de vida
3.3.1. Gestión de proyecto y requisitos
3.3.2. Análisis y diseño
3.3.3. Programación
3.3.4. Integración y pruebas
3.3.5. Soporte y mantenimiento
4. ESTRUCTURA
5. PRESTACIONES

253
1. INTRODUCCIÓN
CASE es el acrónimo de Computer Aided Software Engineering, ingeniería del software asistida por
ordenador. En contraste con el pasado, en que el software se desarrollaba manualmente, hoy día la práctica
totalidad del desarrollo se apoya en herramientas de este estilo.
2. AYUDAS AUTOMATIZADAS PARA EL DESARROLLO DE SOFTWARE (HERRAMIENTAS CASE)
Las ayudas automatizadas para el desarrollo de software, englobadas en lo que se conoce como
herramientas CASE, son el resultado de la evolución de las técnicas de programación. Si se observa este
proceso evolutivo, se puede comprobar que sigue una lógica muy marcada que ha desembocado en un
incremento de la productividad y mantenimiento del software.
En los inicios de la industria del desarrollo software, éste se realizaba basado en información textual, pero
debido a su laboriosidad, pronto surgieron técnicas de programación estructurada, que permitían definir una
metodología de desarrollo software más organizada y precisa, basándose en técnicas gráficas.
Los problemas surgían en desarrollos grandes, en que podían darse incoherencias de difícil localización y
generarse documentación abultada difícil de manejar manualmente. La necesidad de desarrollos software
de calidad, que incrementasen su mantenibilidad y el rendimiento del proceso, así como el incremento de la
capacidad del hardware, derivó en la aparición de herramientas CASE, que automatizan los paradigmas de
la ingeniería del software.
Debe tenerse en cuenta que los errores o problemas del desarollo de software no detectados en etapas
tempranas del ciclo de vida, pueden disparar el coste económico y resultar en proyectos no rentables. Del
mismo modo, análisis y diseños robustos favorecen el mantenimiento y evolución de los programas con la
consiguiente ventaja comercial.
En las primeras etapas de su evolución, las herramientas CASE se usaban mayoritariamente en la gestión
de documentación o la generación de diagramas de flujo y paulatinamente se empezaron a integrar con
herramientas que realizan comprobaciones automáticas como consistencia de tipos de datos y generalizan
los repositorios centralizados.
Con la popularización de los interfaces gráficos y la reutilización de código como filosofía incluida en
metodologías como la POO, el desarrollo se basa en la utilización de IDEs o entornos integrados de
desarrollo que conjugan diversas utilidades y complementos que vienen a solucionar distintos aspectos del
desarrollo como pueden ser la integración con repositorios, gestión de proyectos, documentación o diseño.
3. TIPOS
Se distinguen tres tipos de herramientas CASE según criterios de integración, metodología o desarrollo.
3.1. Integración
Según el tipo de integración que presente la herramienta CASE, pueden dividirse en juegos de herramientas
y bancos de trabajo.
Los juegos de herramientas (toolkits) son un grupo de utilidades independientes en que cada una realiza
una función distinta. Como ejemplo, podría pensarse en un toolkit que integrase un compilador específico
como gcc, un IDE gráfico como Eclipse y un sistema de gestión de versiones.
Un banco de trabajo es un conjunto de herramientas integradas que comparten un mismo interfaz y una
BBDD de soporte común. Los bancos de trabajo están orientados al desarrollo guiado, de forma que el
resultado de una fase del mismo sirve de entrada para la siguiente. Ejemplo de banco de trabajo es Power
Designer de Sybase
3.2. Metodología
Distinguiendo las dos grandes metodologías de programación, la estructurada y la POO, pueden
distinguirse herramientas CASE que dan soporte a una u otra. Siguiendo la propia evolución de la técnica
de desarrollo, las primeras herramientas CASE se pensaron para apoyar la programación estructurada. Son
herramientas que permiten gestionar proyectos, generar DFDs o modelos entidad relación, por ejemplo.
El soporte de las herramientas CASE a la POO se empieza a obtener en una etapa de madurez mayor de
las mismas, permitiéndose descripciones en lenguaje UML, casos de uso y similares. Aunque prácticamente
el desarrollo de software actual está copado por la POO, la validez del planteamiento estructurado hace que
sea fácil encontrar herramientas que soporten ambas metodologías.
3.3. Etapas del ciclo de vida
Aunque muchas herramientas CASE integran funcionalidades que se engloban en distintas fases del ciclo
de vida del software, también pueden clasificarse atendiendo a la etapa del desarrollo en que se aplican.

254
3.3.1. Gestión de proyecto y requisitos
Son las herramientas orientadas al apoyo de las tareas de análisis y gestión del proyecto. Englobarían
herramientas para la confección de diagramas de Gantt, PERT, gestión de recursos, etc. Este tipo de
herramientas es común que ofrezcan facilidades para realizar el seguimiento del desarrollo, gestión de la
configuración y tareas similares. Ejemplos de este tipo de herramientas lo representan MS Project y
OpenProj. Las herramientas de gestión de requisitos facilitan la captura de requisitos, asegurando su
coherencia y realizar el seguimiento de los mismos.
3.3.2. Análisis y diseño
Las herramientas CASE de apoyo al análisis y diseño de software están marcadas por la metodología de
desarrollo, de forma que las que de aplicación en programación estructurada permiten realizar tareas como
la elaboración de DFDs, descomposición modular o modelos entidad-relación. Existe asimismo una
evolución de las mismas hacia técnicas más propias de la POO. Como ejemplo de estas herramientas
podría citarse PowerDesigner, de Sybase
En el ámbito de la POO, existe una mayor integración entre diseño y programación, debido a su filosofía de
desarrollo. Las herramientas CASE suelen permitir la generación de código a partir de un modelo de clases
en varios lenguajes de programación o incluso la actualización del modelo en función de la modificación de
código. Un ejemplo de este tipo de estas herramientas sería Smart Development Environment
3.3.3. Programación
Herramientas CASE englobadas en la fase de programación suelen integrarse en entornos de desarrollo o
IDE apoyando entre otras tareas la edición, compilación y depuración del código. Se incluyen aquí
herramientas como los editores de código, generadores de interface de usuario o de consultas a BBDD,
entre otros. Ejemplos de herramientas en este apartado son MS Visual Studio o Eclipse.
3.3.4. Integración y pruebas
En la fase de integración y prueba del código, las herramientas CASE destacan en el apoyo a la adquisición
del software, realizando mediciones, simulación y pruebas del mismo, entre otras funciones. Las más
extendidas son las de POO, análisis estadístico y las de codificación de cuarta generación.
3.3.5. Soporte y mantenimiento
En este apartado se incluirían las herramientas utilizadas en la fase de soporte del código, realizando tareas
como la documentación, de software de sistemas, control de calidad, o las orientadas a BBDD y las que
facilitan las labores de mantenimiento, como la reestructuración y análisis de código o las de reingeniería e
ingeniería inversa.
Por fin, con el mismo criterio de clasificación del ciclo de vida del software, pueden encontrarse los términos
upper, medium y lower CASE, referidos a herramientas CASE que apoyan en las fases iniciales de captura
de requisitos y gestión de proyectos, análisis y diseño y pruebas, implementación y mantenimiento del
software, respectivamente.
4. ESTRUCTURA
Aunque puede variar según las soluciones comerciales, la estructura general de las herramientas CASE
puede distinguirse constituida por seis partes o módulos, gestión, modelado, prototipado, codificación,
repositorio y documentación, que no todas las herramientas del mercado incluirán necesariamente.
La parte de gestión del proyecto es el módulo de la herramienta CASE que facilita la gestión del proyecto de
desarrollo, desde su programación temporal hasta la asignación de recursos y tareas o la descripción de
información administrativa, procesos y departamentos implicados, como ejemplo.
El modelado es la parte del proyecto en que se definen los diagramas y modelos usados en el desarrollo
software y para los que existen módulos CASE que facilitan su especificación. Modelos típicos son los
diagrama de flujo de datos, modelos entidad – relación o las técnicas matriciales.
Algunas características propias de este módulo CASE son el número máximo de niveles de los modelos
para dar soporte a diseños complejos, libertad de formatos de dibujo, actualización del repositorio al
cambiar un diagrama, comparación entre gráficos de distintas versiones o inclusión de pseudocódigo.
El módulo de prototipado permite construir una idea global del aspecto que tendrá el desarrollo final, de
forma que se facilite la codificación y la redefinición del análisis y diseño, si se detectasen errores. La
herramienta será más útil, cuanto antes permita disponer del prototipo y aprovecharlo para orientar y
corregir el desarrollo. El prototipado es muy importante, ya que representa una realimentación inmediata,
que ayuda a identificar los requisitos del sistema y en general, las herramientas CASE incluyen módulos de
prototipado potentes y eficaces.

255
Codificación. Los módulos de apoyo a la generación del código presentan características como la capacidad
de generación de código portable, el tipo de lenguaje a usar, en particular si es estándar o propietario, si
sólo apoya en la definición de la estructura o en la inclusión de más código, posibilidad de generación de
ventanas o la de modificación del código generado, como ejemplos más representativos.
Repositorio. Es el módulo CASE que almacena la información que se genera a lo largo del desarrollo,
incluyendo la documentación del análisis y diseño, estructura del programa, etc. También puede ser
denominado Diccionario de Recursos de Información. La mayoría de herramientas CASE bien proveen un
módulo repositorio propio, bien utilizan uno de otro fabricante. El repositorio ayuda en la comprobación de la
integridad y consistencia del código y del desarrollo.
Las características destacables de un módulo repositorio son el tipo de información que contiene, el tipo de
controles, si incorpora facilidades de gestión de cambios o mantenimiento de versiones, la forma de
actualización del repositorio o la posibilidad de reutilización de módulos y por tanto la exportación e
importación de código.
Documentación. El módulo de documentación se apoya a su vez en el de repositorio y dada la importancia
de la documentación, en especial para el mantenimiento software, es casi obligatorio que la herramienta
CASE disponga de él. Como características a tener en cuenta han de incluirse la generación automática de
documentación, la combinación de información textual y gráfica, generación de referencias cruzadas o el
interfaz con otras herramientas como procesadores de textos, editores gráficos y demás.
5. PRESTACIONES
De las prestaciones ofrecidas por las herramientas CASE, destaca la productividad que son capaces de
generar al facilitar de manera extraordinaria la labor de analistas, diseñadores y programadores. Estos
entornos de trabajo permiten además una mayor eficacia en la comunicación con el equipo de desarrollo y
en la integración del trabajo en todo el ciclo de desarrollo.
La medida de la productividad es complicada debido a que suele realizarse a posteriori, depende de la
experiencia y hay que realizar suposiciones de tipo especulativo, como evaluar si la productividad hubiera
sido mayor si el sistema de información hubiera resuelto el problema de otra forma a la realmente utilizada.
Si puede medirse la productividad durante el ciclo de vida del desarrollo, en función del tiempo empleado
para cada tarea del proyecto y el resultado obtenido. Por tanto, desde este punto de vista, las herramientas
CASE permiten realizar una medida de la calidad y cantidad de las actividades de desarrollo.
La productividad de grupo también se ve incrementada al permitirse la cooperación ante problemas y la
coordinación de todas las etapas en que se organice el proyecto y en particular la programación. El tiempo
empleado en distribuir la información a lo largo de la organización se reduce drásticamente y se puede
disponer de ella en tiempo real. Las herramientas CASE facilitan la interacción entre los miembros del grupo
al permitir procesos de comunicación dinámicos que tienden a incrementar el rendimiento.
Las particularidades del soporte en tiempo real hace que los usuarios puedan controlar el flujos de
información y otros aspectos del sistema, detectando errores, solicitar correcciones y cambios que de otra
forma serían procesos complejos y lentos. El soporte CASE es muy importante en la mayoría de tareas del
ciclo de vida al catalizar la interacción entre sus usuarios.
La posibilidad de integración de actividades y la continuidad entre fases del desarrollo capacitan al analista
para concebirlo con una perspectiva muy útil para plantear correctamente el problema, entender el impacto
de los posibles cambios y corregir los inconvenientes que vayan surgiendo.
La automatización e integración del desarrollo facilita la realimentación entre las fases del ciclo de vida y es
especialmente apropiado cuando debe retrocederse y modificar alguna especificación, para lo que resulta
esencial la implicación de todo el equipo. Por fin, las herramientas de trabajo CASE mejoran la comprensión
global del proyecto al presentar claramente la relación entre las partes del ciclo de vida y su dependencia.

256
TEMA 59. GESTIÓN Y CONTROL DE PROYECTOS INFORMÁTICOS. ESTIMACIÓN DE RECURSOS.
PLANIFICACIÓN TEMPORAL Y ORGANIZATIVA. SEGUIMIENTO.

1. INTRODUCCIÓN
2. GESTIÓN Y CONTROL DE PROYECTOS INFORMÁTICOS
3. ESTIMACIÓN DE RECURSOS
3.1. COCOMO
3.2. Puntos función
3.3. Staffing Size
3.4. Casos de uso
4. PLANIFICACIÓN TEMPORAL Y ORGANIZATIVA
4.1. Diagramas de GANTT
4.2. Histograma de recursos
4.3. PERT
5. SEGUIMIENTO

257
1. INTRODUCCIÓN
El desarrollo de software es un proceso con una complejidad directamente proporcional al tamaño del
proyecto. La primera derivada de esta complejidad es que se hace necesaria una gestión del mismo, para
organizar, planificar y administrar los recursos materiales y humanos para poder entregar el proyecto en
fecha y forma.
Un proyecto es la planificación de un producto o servicio, para llevarlo a cabo. Cuando el objetivo de un
proyecto es software, se denomina proyecto informático y a la disciplina que estudia la organización y
control del mismo, gestión de proyectos informáticos
2. GESTIÓN Y CONTROL DE PROYECTOS INFORMÁTICOS
En general, los proyectos informáticos están sometidos a condiciones que se refieren a su alcance, tiempo y
coste. Es lo que se da en llamar Triángulo de la Gestión de Proyectos, donde cada lado representa una
restricción. Un lado del triángulo no puede ser modificado sin afectar al resto.
El alcance del proyecto se refiere a lo que debe realizarse para cumplir los objetivos marcados. A veces
interesa definir también qué no se incluye, para evitar malinterpretaciones en los contratos. Las restricciones
temporales son las que marcan el tiempo de desarrollo del proyecto y por su parte, el presupuesto limitará el
coste asignado al mismo.
Para ejecutar el proyecto cumpliendo sus condiciones se pone en marcha el proceso de gestión y control
del mismo, que suele identificar una serie de fases, que se enumeran a continuación.
Estudio de viabilidad: Es el paso inicial del proyecto, donde se establece su alcance y rentabilidad. Es
donde se decide si afrontar o no el proyecto. Se desarrolla en el tema 51
Lanzamiento: Establece el equipo inicial que va a desarrollar el proyecto, formaliza la comunicación con el
usuario y se comienzan los trabajos.
Estimación inicial: Determina el esfuerzo, plazo y riesgos del proyecto.
Organización: Define los equipos de trabajo, responsabilidades y dependencias.
Planificación: Define el marco temporal de desarrollo de tareas, indicando quién y cuándo deben realizarse,
así como el resultado esperado al final de cada una.
Ejecución: Es la fase en que se desarrolla el proyecto según lo planificado.
Seguimiento: Es una fase transversal, definida a lo largo del desarrollo del proyecto y orientada a controlar
que cada fase se desarrolla conforme a la planificación. Para conseguir un adecuado seguimiento deben
realizarse medidas y tomar las acciones correctoras necesarias, si existen desviaciones.
3. ESTIMACIÓN DE RECURSOS
La estimación de recursos es la acción consistente en realizar un primer cálculo, lo más aproximado posible,
de las necesidades materiales, humanas y económicas qué serán necesarias para realizar el proyecto. Del
resultado de la estimación se podrá obtener una primera impresión de la viabilidad del proyecto.
La estimación cobra más valor cuanto más temprana sea, dado que de otra forma, se puede perder mucho
tiempo y dinero si en fases avanzadas del desarrollo se llegase a la conclusión que la cantidad de recursos
necesarios sobrepasan la rentabilidad esperada.
Como es lógico, ese aspecto predictivo de la estimación, está sujeto a errores, que serán menos si se
apoyan en una experiencia sólida. Los errores en la estimación pueden originar graves problemas en el
desarrollo del proyecto. Por tanto, el error debe acotarse y gestionarse, para lo que se existen técnicas que
se orientan a mejorar la estimación y dar soporte a estas tareas. Algunas de ellas son las siguientes.
3.1. COCOMO
La técnica de COCOMO es un método empírico basado en el tamaño del proyecto (expresado en líneas de
código) que tiene por objetivo estimar coste y tiempo de desarrollo. En función de la complejidad del
proyecto distingue tres tipos: orgánico, medio y complejo y presenta tres modelos, básico, intermedio y
detallado, cada cual más preciso y por tanto más difícil de estimar.
A partir del tamaño, tipo de proyecto y factores de ajuste (experiencia de los programadores, empleo de
herramientas o estabilidad de requisitos, por citar algunos), se estima el coste y tiempo necesarios para
realizar el proyecto. La debilidad del modelo reside en que las líneas de código sobre las que se basan los
cálculos deben ser estimadas, en general en función de la experiencia de un analista o un grupo de ellos.
COCOMO posee una mejora, el método COCOMO II, que sigue la misma forma de trabajo, añadiendo más
factores de estimación.

258
3.2. Puntos función
La técnica de los puntos función se basa en dividir el proyecto en áreas funcionales, para estimar la
complejidad de cada una. Con la complejidad estimada, se obtiene una medida estandar de la
funcionalidad, los puntos función. A su vez, los puntos de función se estiman en una serie de factores que
se derivan del análisis original.
Algunos de estos factores incluyen las entradas externas (los datos de entrada a la aplicación y que
modifican la información interna), las salidas externas (datos que devuelve la aplicación), grupos de datos
internos, datos de interfaz o consultas externas como datos obtenidos de búsquedas, que no cambian la
información.
Con los factores elegidos son clasificados según su complejidad y se les asigna un valor, obteniendo una
primera serie de puntos función no ajustada. El siguiente paso consistiría en examinar atributos de la
aplicación a realizar y obtiener un factor de ajuste, con el que recalcular los puntos función, ahora ajustados.
El coste total se estimaría multiplicando los puntos función ajustados por el esfuerzo de desarrollo de cada
uno, en base a históricos o estándares. Un método avanzado de cálculo de puntos función lo ofrece el
método Mark2, que usa elementos elementos diferentes para el cálculo, añadiendo más factores.
3.3. Staffing Size
En el contexto de la POO, el desarrollo del código se realiza estructurado en las clases a implementar. Por
tanto, si al principio del proyecto se posee una definición fiable de las clases necesarias, éstas servirán de
base para realizar la estimación.
Para el tratamiento de clases, se distingue entre clases clave, las que aparecen al principio del análisis y
clases secundarias, que se manifiestan a lo largo del proyecto, por lo que no se conoce su número en el
momento de la estimación, pero se da un número de clases secundarias en función del tipo de interfaces.
El coste de desarrollo se estima a partir del número de clases totales, clave y secundarias, multiplicándolo
por el esfuerzo necesario para desarrollar una clase.
3.4. Casos de uso
Si los requisitos de un proyecto utilizan casos de uso, puede usarse como técnica de estimación tanto en el
contexto de POO como en el de programación estructurada.
Los factores del método son los denominados actores y casos de uso. Ambos se clasifican en simples,
medios y complejos y se le asigna un valor o peso.
Los casos de uso de los actores se suman y se aplica un factor de ajuste de complejidad técnica y otro de
ajuste de contexto (referido al grupo de personas de desarrollo), obteniendo puntos de casos de uso
ajustados. El valor ajustado es el esfuerzo de desarrollo y debe ser ampliado a las restantes fases usando
una tabla de porcentaje de esfuerzos.
4. PLANIFICACIÓN TEMPORAL Y ORGANIZATIVA
La planificación organizativa depende de cada proyecto. Debe tener en consideración sus particularidades y
las de la organización para la que se va a desarrollar. Para realizar esta planificación, se suelen identificar
una serie de figuras que desempeñan ciertas funciones.
Director. Es la persona que provee los recursos necesarios para la ejecución del proyecto y toma las
decisiones relevantes que afecten a la organización.
Jefe de proyecto. Es la persona con la responsabilidad de la ejecución del proyecto. Realiza la estimación
del esfuerzo, selecciona la estrategia de desarrollo y gestiona las incidencias de ejecución.
Analista/programador.: Figuras humanas que diseñan y construyen el sistema.
Usuario: Es el conjunto de personas que definen los requisitos del sistema adecuados y completos para su
implementación. Además validan el resultado conforme a lo proyectado.
Cada recurso está definido en cuanto a qué departamento pertenece, sus funciones, equipo de trabajo y
demás aspectos en relación con el proyecto. Esta organización del proyecto se suele representar con un
diagrama de árbol que describe los participantes, sus roles y relaciones.
La planificación temporal de un proyecto posee por objetivo detallar la programación de sus actividades,
desde el punto de vista temporal y de recursos necesarios. La planificación temporal divide el proyecto en
fases y tareas, define los recursos necesarios para su realización (con técnicas de estimación) y establece
las dependencias entre tareas. Además, establece hitos o puntos de control para realizar el seguimiento del
proyecto. Las técnicas y herramientas de planificación temporal más extendidas son que se presentan.

259
4.1. Diagramas de GANTT
Son gráficos que permiten
representar la ejecución
temporal de tareas. En el eje
vertical se representan tareas
que podrán dividirse en
subtareas y en el eje
horizontal, el tiempo de
desarrollo de la tarea, como
se muestra en la figura.
4.2. Histograma de recursos
Muestra los recursos que intervienen en cada actividad en un momento dado. Entre otras cosas, sirve par
estimar si un recurso está sobreutilizado. Un ejemplo se muestra en la figura izquierda.
4.3. PERT
Es una técnica que tiene como objetivo establecer las dependencias entre tareas para definir cómo se
encadenan en la planificación. Representa las actividades del proyecto en un grafo donde los nodos son
actividades y las flechas las dependencias entre ellas. Un ejemplo se muestra en la figura de la derecha.

A partir del PERT pueden estimarse medidas para cada tarea, como por ejemplo el comienzo más
temprano, o momento más temprano en que una actividad puede comenzar (sin contar retrasos anteriores),
fecha de finalización más temprana o la holgura, es decir, el tiempo que puede retrasarse una actividad sin
retrasar la finalización del proyecto
Una característica muy importante del uso de PERT es que permite estimar los caminos críticos del
proyecto, es decir la cadena de actividades que no deben retrasarse ya que un retraso en alguna implicaría
un retraso en la fecha de fin del proyecto entero.
5. SEGUIMIENTO
Una vez planificado el proyecto se establece una tarea transversal que se desarrolla en paralelo a lo largo
del mismo, el seguimiento.
El seguimiento de un proyecto tiene por objeto controlar la correcta ejecución y desarrollo. Del mismo modo
las alarmas que se generen en el seguimiento se utilizarán para corregir las desviaciones sobre la
planificación. Fundamentalmente se distinguen tres tipos de seguimiento: estático, dinámico y predictivo.
El seguimiento estático se basa en el esfuerzo dedicado a cada tarea. El dinámico se apoya en el avance
de los productos obtenidos en cada fase y el predictivo anticipa problemas futuros en base a variables
actuales del proyecto, como por ejemplo, la productividad.
Estos tipos de seguimiento identificados no son excluyentes. De hecho suelen complementarse en un
proceso de realimentación informativo. Es decir, en función de la información obtenida, se procede a
replanificar el proyecto o tomar las acciones correctoras necesarias para su cauce correcto.
Por último, una vez finalizado el proyecto se debe realizar el cierre del mismo. El cierre consiste en la
liberación de los recursos asignados, almacenar la información obtenida en el repositorio de proyectos (con
vistas a planificaciones futuras) y se realiza un proceso de revisión para identificar las áreas de mejora y
actualizar los estándares de la organización para futuros desarrollos. Del mismo modo, se establecerá
formalmente la conformidad del cliente y se procederá a la facturación.

260
TEMA 60. SISTEMAS BASADOS EN EL CONOCIMIENTO. REPRESENTACIÓN DEL CONOCIMIENTO.
COMPONENTES Y ARQUITECTURA.

1. INTRODUCCIÓN
2. SISTEMAS BASADOS EN EL CONOCIMIENTO
3. REPRESENTACIÓN DEL CONOCIMIENTO
3.1. Modelos de representación
3.2. Lenguajes de representación del conocimiento
4. COMPONENTES Y ARQUITECTURA

261
1. INTRODUCCIÓN
Los sistemas basados en conocimiento (SBC) surgen como una evolución de los paradigmas de
programación. Al principio, la concepción de los sistemas era la del proceso de información, es decir, un
usuario realiza una petición de entrada y el sistema generaba una salida en función de datos de entrada, o
almacenados en otro lugar, típicamente ficheros.
La evolución de ese modelo es la BBDD, que viene a abstraer la capa de almacenamiento o persistencia de
datos, sustituyendo el almacen de datos en ficheros, facilitando la gestión de la información.
Una nueva etapa en la evolución sw la representan los SBC. Se basan en pasar a un primer plano la
información, los datos o “base de conocimiento”. El código que lo trata, el “motor de inferencias” pasa a un
papel secundario. La base de conocimientos es generada por un usuario experto en el dominio (ingenieros
de conocimiento, científico de datos), que poseen un rol diferente a los desarrolladores.
2. SISTEMAS BASADOS EN EL CONOCIMIENTO
En contraste con los sistemas tradicionales, en que el usuario representa y define la interacción del
conocimiento, los sistemas basados en conocimiento (SBC), un usuario (experto), define el conocimiento y
el sistema lo integra en la aplicación.
Así, surge la ingeniería del conocimiento como variante de la ingeniería del software orientada al al diseño e
implementación de SBC. Un SBC se puede entonces definir como un sistema informático capaz de resolver
problemas de su dominio específico.
Esto supone un enfoque cognoscitivo, estructural, basado en un conocimiento específico, más que en una
capacidad intelectual. Ese sería un segundo enfoque conductista, en que se busca imitar los procesos
humanos de resolución de problemas y la adquisición de experiencia (o know-how). Esta es la diferencia
entre un SBC y lo que se da en llamar “sistemas expertos”.
Por tanto, un sistema experto sería un SBC particular que imita al experto humano. Por ejemplo, una
enciclopedia electrónica sería un SBC, pero no un sistema experto. Del mismo modo hay que distinguir un
SBC de un sistema inteligente. Un SBC es un tipo de sistema inteligente particular que está en relación con
el conocimiento y las capacidades humanas.
3. REPRESENTACIÓN DEL CONOCIMIENTO
La representación es el uso de un conjunto de convenciones para describir algo. Una representación
adecuada debe cumplir que los objetos y sus relaciones sean explícitos y en conjunto, las restricciones se
muestren sin un detalle excesivo, que sea clara, completa y concisa.
Una representación se puede dividir en cuatro aspectos, una parte léxica, que establece el conjunto de
símbolos (a veces alfabeto), una parte estructural que define la forma en que pueden combinarse los
símbolos, una parte semántica, que indica la forma de asociar el significado con las estructuras y una parte
operativa que especifica los procedimientos que permiten crear descripciones, modificarlas y responder a
preguntas utilizándolas.
De esta forma, partiendo del problema de la representación del conocimiento que usa un experto a la hora
de resolver un problema, se deriva el de representar el conocimiento para almacenarlo en un sistema
informático. Esto genera distintos modelos de representación del conocimiento.
3.1. Modelos de representación
Los modelos de representación del conocimiento se basan en los modelos de la psicología. El interés en el
estudio del conocimiento surge con los primeros conductistas como Paulov o Skinner, que tratan el
problema desde la perspectiva estímulo-respuesta. Por tanto, se trata al ser humano como una caja negra,
modelando su interfaz, de forma que ante un estímulo se producen respuestas predecibles, observables y
modificables de formas distintas.
A partir del conductismo, se desarrolla el cognitivismo, que plantea el estudio del razonamiento desde la
perspectiva de caja blanda, intentando desgranar los procesos internos de razonamiento, aprendizaje, etc.
El constructivismo defiende que el conocimiento no se adquiere de fuentes externas, sino que el individuo lo
crea en su mente. Es decir, es una creación, o una construcción del polo del sujeto, no proviene del polo del
objeto. Se asume que existen estructuras cognitivas en continuo desarrollo que activan los procesos de
construcción del conocimiento.
Otras propuestas a destacar son las de Tennyson, que expone que las estrategias de pensamiento son de
complejidad creciente, distinguiendo tres actividades de alto nivel: recordar, resolver problemas y crear. Por
su parte, Benjamin Bloom propone los objetivos del proceso de aprendizaje, indicando lo que se espera que

262
aprenda un sujeto tras un proceso de aprendizaje. Sus planteamientos se han utilizado para la definición del
modelo del conocimiento del Espacio Europeo de Educación Superior (EEES).
En los modelos de representación del conocimiento tiene gran importancia la memoria. De hecho
diferencias observadas entre el aprendizaje de monos y humanos indican esta dirección. Un primate, tras
descubrir una técnica, vuelve al cabo de un tiempo a un estado de conocimiento anterior, lo que no ocurre
en el humano, debido a su capacidad de recuerdo, o memoria.
Así, se suelen diferenciar dos tipos de memoria, la episódica y la semántica. La primera se refiere a los
recuerdos de vivencias (episodios). Se da con la experiencia. La memoria semántica se refiere a
conocimientos generales, información diversa sin referencia explícita. Surge tras un proceso de abstracción.
Por fin, Quillian propone dos modelos de representación del conocimiento, el declarativo y el procedimental.
El declarativo expone los hechos y reglas que rigen un dominio y el procedimental se refiere al método para
obtener el conocimiento.
3.2. Lenguajes de representación del conocimiento
Un lenguaje de representación del conocimiento es un sistema de comunicación integrado por un conjunto
de símbolos estructurado y sus reglas de combinación para expresar los procesos cognoscitivos de forma
que entre otros, facilite la inferencia de nuevo conocimiento.
Entre los requisitos que debe cumplir un lenguaje de este tipo, están presentar una sintaxis formal para
soportar el proceso cognitivo (motor de inferencia), poseer una semántica correctamente definida para
implementar razonamientos y, en la medida de lo posible, ser sencillo. Sulen soportarse con herramientas.
Entre los modelos de lenguajes de representación del conocimiento destacan las triplas objeto-atributo-valor
(OAV), las redes semánticas, los marcos y la lógica de predicados.
Triplas OAV. Representan el modelo básico. Han evolucionado hacia los atributos de las clases del
paradigma de la POO.
Redes semánticas. Suponen un lenguaje gráfico sencillo y útil para representar conocimiento taxonómico,
que permite agrupar las entidades en una jerarquía de clases con relación de herencia. Es fácilmente
traducible a forma simbólica y adecuada para representar el conocimiento. Ofrece una representación
estructurada del conocimiento factual y cierto conocimiento normativo. Asimismo permite expresar
fácilmente las excepciones de propiedades heredadas.
Los elementos de las redes semánticas son nodos (de objetos, clases o atributos) y arcos orientados, que
representan relaciones binarias entre objetos y clases y entre éstos y atributos.
Marcos. Son otro lenguaje de representación del conocimiento que permiten describir redes semánticas
textualmente e incluir representaciones de conocimiento procedimental.
Cada nodo correspondiente a un objeto o clase se convierte en un marco, que consta de una línea con el
nombre del marco y una sucesión de líneas denominadas ranuras o slots.
Lógica de predicados. Es el lenguaje de representación del conocimiento dado por razonamientos de tipo
deductivo, absolutos (con valor verdadero, falso) y basados en predicados de primer orden.
Entre sus ventajas se encuentra que es el modelo funcional del razonamiento humano, además posee un
alto grado de formalización y separa el conocimiento (reglas) del razonamiento (inferencia). Otros esquemas
se basan o pueden expresarse con lógica de predicados, ya que es muy expresiva en muchos dominios. Sin
embargo, a veces resulta demasiado expresiva y en casos de conocimiento impreciso o subjetivo puede no
ser adecuada.
4. COMPONENTES Y ARQUITECTURA
La arquitectura general de un SBC identifica dos componentes principales, la base de conocimiento
(conocimiento estático sobre el dominio, a largo plazo) y el motor de inferencias (encadenamiento adelante
y atrás) y tres componentes de apoyo, la memoria de trabajo, el interfaz de usuario (sistema de E/S) y el
generador de explicaciones.
Base de Conocimiento. Incorpora las reglas y hechos, es decir, el conocimiento de las estructuras de datos,
los procedimientos asociados y el conocimiento de predicados. A veces se conoce como base de hechos o
memoria de trabajo, en contraposición a la base de control, que representaría el conocimiento heurístico
(decisiones), el conocimiento de control, para implementar la estrategia de alto nivel (fases de aplicación,
bases de conocimiento a usar).
Suele basarse en el razonamiento basado en casos (CBR, case based reasoning), el uso de conocimiento
anterior para elaborar el razonamiento.

263
Motor de inferencias. Es el conjunto de algoritmos que se emplean para resolver problemas. Debe identificar
las reglas de inferencia aplicables, elegir las adecuadas (solución de conflictos), una vez seleccionadas,
aplicarlas y actualizar la base de conocimientos, iterando el proceso hasta agotar las reglas aplicables.
Las reglas de inferencia distinguen entre las reglas con encadenamiento hacia adelante (se aplican
partiendo de un estado inicial hasta obtener conclusiones) y encadenamiento hacia atrás (se aplican
partiendo del estado final para explicar el estado inicial).
Cuando se ha de tomar la decisión de aplicar una de entre varias reglas de inferencia posibles, se habla de
resolución de conflictos, lo que implica usar una estrategia de decisión, que puede estar basada en reglas,
en objetos o en estados (heurísticos).
La decisión basada en reglas, asigna prioridades explícitas, según el orden de programación, su historia, u
otros criterios. La decisión basada en objetos aplica prioridades a objetos (patrones comunes) según su
aparición reciente. La decisión basada en estados se basa en analizar los resultados en un banco de
pruebas y seleccionar la mejor regla de inferencia.
Memoria de trabajo. Se suele distinguir la memoria de trabajo como otro componente de los SBC, aunque
en realidad podría considerarse una parte de la base de conocimiento, la base de hechos. Su misión es
almacenar el conocimiento dinámico sobre el razonamiento actual, a corto plazo.
Interfaz con el usuario. Se dispone para facilitar la explotación del SBC, desde el punto de vista de la
comunicación adecuada entre el ingeniero de conocimiento y el entorno informático, en su operación. Entre
las características exigibles pueden citarse una expresión clara de instrucciones, preguntas y respuestas, la
facilidad y claridad de expresión y evaluación del experto y la sencillez de supervisión del funcionamiento.
Generador de explicaciones. Es el componente encargado de ofrecer la explicación del razonamiento del
sistema para obtener la conclusión, a partir de las preguntas formuladas al usuario.

264
BLOQUE 5. REDES
Tema 61. Redes y servicios de comunicaciones.
Tema 62. Arquitecturas de sistemas de comunicaciones. Arquitecturas basadas en niveles.
Estándares.
Tema 63. Funciones y servicios del nivel físico. Tipos y medios de transmisión. Adaptación al medio
de transmisión. Limitaciones a la transmisión. Estándares.
Tema 64. Funciones y servicios del nivel de enlace. Técnicas. Protocolos.
Tema 65. Funciones y servicios del nivel de red y del nivel de transporte. Técnicas. Protocolos.
Tema 66. Funciones y servicios en niveles sesión, presentación y aplicación. Protocolos.
Estándares.
Tema 67. Redes de área local. Componentes. Topologías. Estándares. Protocolos.
Tema 68. SW de sistemas en red. Componentes. Funciones. Estructura.
Tema 69. Integración de sistemas. Medios de interconexión. Estándares. Protocolos de acceso a
WAN
Tema 70. Diseño de sistemas en red local. Parámetros de diseño. Instalación y configuración de
sistemas en red local.
Tema 71. Explotación y administración de sistemas en LAN. Facilidades de gestión.
Tema 72. La seguridad en sistemas en red. Servicios de seguridad. Técnicas y sistemas de
protección. Estándares.
Tema 73. Evaluación y mejora de prestaciones en un sistema en red. Técnicas y procedimientos de
medidas.
Tema 74. Sistemas multimedia.

BIBLIOGRAFIA
Normas y recomendaciones UIT, ETSI, ISO
Redes de Ordenadores, Andrew S. Tanenbaum, Prentice-Hall
Computer Networking: a top-down approach. J. F. Kurose, K. W. Ross. Pearson/Addison-Wesley
Internetworking with TCP/IP: Principles, Protocols and Architecture, D. E. Comer. 4ª, Prentice.-Hall
Interconnecting Cisco Network Devices, CISCO Press
José M. Hernando Rábanos, Transmisión por radio, Ramón Areces

Recursos web:
http://www.etsit.upm.es/
http://informatica.uv.es/iiguia/TSTD/
http://es.wikipedia.org/wiki/Portada
http://www.cisco.com
http://seguridadyredes.nireblog.com
http://www.monografias.com
http://www.microsoft.com/latam/technet/productos/windows/windowsserver2003/usrdata.mspx
http://fferrer.dsic.upv.es/cursos/Windows/Avanzado/index.html
http://observatorio.cnice.mec.es/modules.php?op=modload&name=News&file=article&sid=366
http://www.mitecnologico.com
http://ditec.um.es

265
TEMA 61. REDES Y SERVICIOS DE COMUNICACIONES.

1. INTRODUCCIÓN
2. REDES Y SERVICIOS DE COMUNICACIONES
2.1. Conceptos básicos
2.2. Clasificación de Redes
2.2.1. Topología
2.2.2. Extensión
2.2.3. Servicio
2.2.4. Propósito
2.2.5. Propiedad
2.3. Componentes
2.3.1. Hardware
2.3.1.1. NIC
2.3.1.2. Cableado
2.3.1.3. Concentrador, puente, switch
2.3.2. Software
2.3.2.1. Servidores
2.3.2.2. Estaciones de Trabajo
2.3.2.3. Routers y Firewalls

266
1. INTRODUCCIÓN
Las redes de ordenadores son más cercanas gracias a la popularización de Internet y las redes domésticas.
La necesidad de conectar más de un equipo informático es la razón de ser de una red. Un ordenador
personal y una impresora conectados ya forman una red básica. El gran desarrollo de los sistemas en red
ha sido posible gracias a la evolución de estándares y recomendaciones de organizaciones y fabricantes.
Por tanto, el esquema mental al hablar de redes y servicios de comunicaciones es el de un determinado
número de computadoras alejadas, pero conectadas, que realizan un trabajo de computación.
Conviene distinguir entre red de ordenadores y sistema distribuido. En la red, el usuario determina el
servicio que requiere o con quién comunicarse. El sistema distribuido lo hace automáticamente, de forma
transparente al usuario, que percibe el sistema como un monoprocesador virtual. La diferencia por tanto,
estriba en el software que implementa uno u otro sistema.
2. REDES Y SERVICIOS DE COMUNICACIONES
Un sistema en red, es un conjunto de ordenadores y sistemas conectados para incrementar la
productividad. Materializa la simbiosis de las Tecnologías de la Informática y Comunicaciones (TIC), al
ofrecer una forma universal de acceso a recursos.
Su estudio puede dividirse en dos planos, el físico y el lógico, el hardware y software de red. En el hardware
de red, se incluirían medios físicos, cables, conectores, sus especificaciones y la electrónica de red, que
incluye equipos como switches y routers, que realizan funciones de control de la red.
El software de red, incluiye la parte lógica como lo relativo a normas de comunicación o SO de red (NOS,
Network Operating System), que gestionan usuarios, recursos y permisos y sirven de interfaz entre
usuarios, gestores de red y sus recursos.
2.1. Conceptos básicos
Todo el hardware de red se define en normas y estándares. La documentación asociada también formaría
parte del hardware, sobre el que se monta la estructura lógica, que organiza el trabajo de la red. El NOS es
un programa que gestiona todo lo relacionado con la organización y el trabajo en una red. Posee varios
aspectos importantes. El primero es la implementación de los protocolos necesarios para que la
comunicación sea posible. Otro aspecto que debe tratar el NOS es la forma de trabajo para lo que se
identifican tres entes: usuarios, recursos y permisos.
Un usuario de la red es un registro de datos que tiene acceso a la
red. Esos datos suelen referirse a una persona que usa ese
identificador para acceder a la red. Esta idea siempre será válida,
pero debe pensarse en la idea de usuario como algo más general,
por ejemplo un equipo al que se da una identidad, un usuario, para
que envíe información si se da una incidencia o una alarma.
Un usuario que accede a una red, en general lo hace para obtener
un recurso de red, que en principio, podrá definirse como cualquier
servicio, dato o elemento que la red ofrezca.
El NOS también gestionará los recursos, estableciendo su
localización, forma de acceso, estado de su operatividad, etc. Una
vez definidos usuarios y recursos, su enlace se realiza mediante
los permisos de usuario. Un permiso de usuario es una
configuración de software que define si cierto usuario tiene acceso
a un recurso de la red o no.
El administrador de red es la figura humana que utiliza el NOS para definir los aspectos administrativos y de
gestión del sistema. Otros conceptos habituales en redes son los de cliente y servidor. Un servidor es una
máquina dedicada a ofrecer información, un trabajo específico o recurso, que, en general, se denomina
servicio. Por su parte, un cliente es un elemento de red, en general un usuario o una máquina que hace uso
de un servicio.
2.2. Clasificación de Redes
Las redes pueden clasificarse atendiendo a su topología, extensión, servicio, propósito y propiedad.
2.2.1. Topología
Según la topología de la red, es decir, según la forma física que dibuja su forma de conexión un sistema en
red se clasifica en red en estrella, en bus y anillo.

267
En la red en estrella todos los elementos se conectan mediante un concentrador (hub). Es fácil de instalar y
detectar errores. Si un equipo falla sólo falla ese, pero la red queda inoperativa si falla el concentrador. Una
red en bus se conecta con un sólo cable con terminaciones. Es fácil instalarla y no existen nodos centrales.
Presenta problemas si hay una discontinuidad en el bus. Una red en anillo es una red en bus en la que se
unen los extremos. Se analiza la información recibida en cada estación. Es difícil de instalar y mantener.
Como en el bus, si se rompe el anillo la red cae.

2.2.2. Extensión
En cuanto a la extensión de la red, o el área cubierto, se pueden distinguir tres tipos:
- LAN (Local Area Network), Circunscrita a una red de oficina o un edificio, típicamente.
- MAN (Metropolitan Area Network), alcanzaría un área intermedio, del tipo de una ciudad o un campus
- WAN (Wide Area Network), que tendría una cobertura mundial.
Esta clasificación típica poco a poco va sufriendo modificaciones y hoy día prácticamente no se tiene en
consideración las redes MAN, debido al crecimiento de las LAN. Aunque las redes LAN comenzaron
refiriéndose al entorno doméstico o de oficina, una LAN actual puede abarcar varios edificios contiguos de
una misma empresa y poseer una complejidad y extensión considerable.
Del mismo modo, la tecnología de transmisión típica de LAN, Ethernet, es tan fiable y ofrece prestaciones
que su utilización se está escalando a ámbitos cada vez más extensos, como los de las redes MAN.
En la literatura pueden encontrarse términos del estilo MetroLan, o MacroLAN, dando a entender redes que
con tecnologías propias de LAN se alcanzan extensiones metropolitanas. Para ir encuadrando algunas
tecnologías de transmisión utilizadas en redes WAN y LAN, ejemplos son:
REDES LAN: Ethernet (IEEE 802.3), Token Ring, FDDI, WIFI
REDES WAN: HDLC, PPP, X.25, Frame Relay, ATM, DSL, RDSI
2.2.3. Servicio
Según el modo de dar servicio, las redes se clasifican en Cliente-Servidor y redes de Pares o Peer To Peer
(P2P). En el modelo cliente-servidor existen dos roles, un equipo ofrece un servicio, el servidor, y otro
equipo lo pide, el cliente. Los servicios que puede ofrecer un servidor son tan comunes como un sitio web,
correo electrónico, autenticación, etc. En general, siempre que se navega por Internet, se está haciendo uso
de los distintos servicios que empresas, instituciones, etc. ofrecen a los usuarios.
En el modelo de pares, peer to peer, simplificando, sólo existe un rol. Una máquina perteneciente a una red
P2P puede a la vez ser cliente y servidor de otro equipo. Es el caso típico del intercambio de ficheros en
redes como BitTorrent o Emule. Un equipo al descargar parte de un fichero está asumiendo el rol de cliente.
Pero al compartir y ofrecer otras partes de ese fichero también asume la función de servidor. Es decir, en el
modelo P2P cualquier equipo puede ser cliente y servidor a la vez y ofrecer o recibir un servicio.
2.2.4. Propósito
Según su propósito empresarial, las redes se dividen en extranets e intranets, lo que se refiere a entornos
web, a través de los que la empresa facilita aplicaciones y recursos.
Si esas facilidades en entorno web poseen un carácter interno, privado, para uso de los empleados o
clientes, se habla de intranet. Si se refiere a la parte pública, accesible a cualquier usuario, se habla de
extranet. Puede haber partes de la intranet a las que se permita acceso externo, mediante identificación.
Un ejemplo habitual de esta situación es el acceso a un banco a través de Internet: Un usuario puede
conectarse a la web, la extranet del banco. Los empleados del banco tendrán acceso a información privada
del banco, como los datos de sus clientes, acceden a la intranet del banco, la parte privada. Un cliente
podrá consultar una parte de la intranet, cuando se conecte para ver los movimientos de sus cuentas.

268
2.2.5. Propiedad
Según la propiedad de la red se distinguen tres tipos: Redes públicas, privadas y virtuales.
Una red pública es la de un operador de telecomunicaciones. El acceso a una red pública se formaliza
mediante un contrato entre usuario y operador. La red da acceso a los servicios públicos de comunicación,
como por ejemplo telefonía, Internet o televisión.
Una red privada es la de uso específico por parte de un organismo o empresa. En principio, su utilización
está restringida al dueño de la red, pero puede alquilar una parte. Un ejemplo de este tipo de red es la de
Renfe. Aprovechando el trazado de las líneas ferroviarias, Renfe instaló una red privada de fibra óptica, que
o bien utiliza para sí misma o bien alquila. Una red doméstica también sirve como ejemplo de red privada.
Una red privada virtual, VPN (Virtual Private Network) es una parte de una red pública o privada que se
asigna en exclusividad a un cliente, en general para conectar las delegaciones de la empresa.
La diferencia entre una red pública y privada virtual está en que a partir de la central del operador, los
recursos que se han contratado en el primer caso tienen una utilización pública, mientras que en el segundo
son de utilización exclusiva. En una VPN, la diferenciación entre clientes se hace por software.
Prácticamente la totalidad de empresas de tamaño mediano cuentan con una VPN. Por ejemplo, cualquier
banco tiene conectadas todas sus delegaciones con centros principales de administración, cálculo o
almacenamiento mediante una red de comunicaciones, que obviamente contratan con un operador.
2.3. Componentes
Los componentes de una red pueden dividirse en componentes hardware y software. Estos varían en
función de las características de la red y su tecnología.
2.3.1. Hardware
2.3.1.1. NIC
El primer componente hardware con que se cuenta en la red es su interfaz. Habitualmente conocida como la
tarjeta de red, o NIC, Network Interface Card. Ésta no es más que un circuito impreso con los componentes
y su programación necesaria para servir de interface, dar acceso al medio de transmisión de la red.
En la tarjeta de red se instalarán los controladores
(drivers) necesarios para gestionar a bajo nivel la
transmisión de datos. Esto significa que las señales
físicas, tensiones u ondas de radio, presentes en el
interfaz deben ser interpretadas por los chips de la
tarjeta y organizar esa información para su tratamiento
por parte de otro ente superior, en general el PC, el
servidor, o el equipo donde esté instalada.
La NIC incluye el interfaz concreto de que se trate. Debe pensarse en el conector físico. Un ejemplo sería
un conector RJ-45 típico, o una antena Wifi, como las mostradas en las figuras. Existen otros conectores
estándar, y en general, los que cada fabricante pueda proponer. En general, se tiende al establecimiento de
estándares para facilitar la compatibilidad.
Para instalar una tarjeta de red en un equipo es necesario un interfaz entre ambos. La tarjeta de red así
posee dos interfaces, uno para dar el servicio de conexión a la red, y otro, para su conexión al equipo. El
interfaz con el equipo puede ser cualquiera de los habituales, USB, PCMCIA, PCI, etc. Así una tarjeta de
red wifi dispondrá una antena para servir de interfaz con la red y un conector para un PC, por ejemplo USB.
2.3.1.2. Cableado
Para la transmisión de información, ésta se representa de alguna forma, en general, con la variación de
alguna magnitud física como la tensión eléctrica o la luz. El tipo de magnitud física utilizada para transmitir
información determinará el tipo de cableado a usar. El cableado es un medio físico por el que se propagan
las señales físicas que representan la información.
Si la transmisión se realiza mediante campos electromagnéticos radiados, el medio de transmisión sería el
aire, y no existe cableado. Los tres tipos de cableado más utilizados son: par trenzado, coaxial y fibra óptica.
El cable de par trenzado consiste en varios cables de cobre agrupados de dos en dos y trenzados entre sí,
porque esta disposición evita interferencias. La agrupación de los cables en pares responde a una razón:
para representar un nivel de tensión, se necesita una referencia, una masa.
De esta forma, en el par, un cable hace de referencia y el otro de nivel. Si con respecto a la referencia
existen 5V en su par, se interpreta un uno, si no un cero. Ejemplos de cable de par trenzado son el par

269
telefónico o el cable de red UTP. Sus ventajas son un coste bajo y fácil manejo e instalación, pero las
distancias que cubre no son demasiado largas.
El cable coaxial consta de dos conductores metálicos concéntricos y separados por un dieléctrico o material
aislante. En general, el cable central es sólido y el conductor externo suele ser una malla metálica que hace
las veces de corona. El ejemplo es el cable coaxial doméstico, típico de TV. Presenta la ventaja de tener
más ancho de banda que los pares de cobre, pero son más caros.
La fibra óptica es un cable de fibra de vidrio o similar diseñado para guiar campos electromagnéticos en
forma de luz. Se construye como dos cables concéntricos no separados, que presentan características
diferentes a la refracción de la luz. Básicamente, el conductor interior o núcleo guía la luz y el exterior o
revestimiento hace las veces de espejo, evitando que la luz salga del núcleo. Esta propiedad se consigue
haciendo que el índice de refracción de la luz del núcleo sea mayor que el del revestimiento.
El protector plástico externo se denomina cubierta. Entre las ventajas de la fibra óptica se encuentran la
capacidad de transmisión a muy larga distancia sin necesidad de repetidores o regeneradores de señal,
gran ancho de banda de transmisión, inmunidad a interferencias, ligera y libre de corrosión.
2.3.1.3. Concentrador, puente, switch
Comúnmente los dispositivos hardware de red se conocen como electrónica de red. Destacan:
- El concentrador o hub, que presenta varios puertos físicos para la conexión de los equipos de red. Su
funcionamiento es el de repetir las señales que le llegan por un puerto al resto de puertos para alcanzar su
destino. Puede entenderse como un ladrón de conexiones de red. No introduce ninguna inteligencia en la
red, simplemente retransmite la señal.
Cuando la longitud de los cables es grande, la señal que transportan puede verse atenuada, pierde potencia
y por tanto hay que amplificarla para que llegue a destino. El repetidor es el dispositivo que incrementa el
nivel de la potencia de señal recibida y la retransmite para poder cubrir la distancia hasta el destino.
- Un puente o bridge, es un adaptador entre redes de tecnología muy similar. Por ejemplo, dadas dos redes
LAN con cableados de par y coaxial, que usan tecnología Ethernet y Token Ring, pueden conectarse ambas
redes con un bridge como si fueran una única LAN. Esto es debido a que la estructura lógica de transmisión
en una red Ethernet y Token Ring es prácticamente similar. Si la tecnología fuera muy diferente habría que
recurrir a otros dispositivos como por ejemplo routers.
- Los switches o conmutadores son dispositivos de red que segmentan de forma lógica la red. Esto significa
que la red es dividida en varios dominios para conseguir objetivos de estabilidad, seguridad de red, etc.
Una primera idea es pensar en un switch como un equipo que puede configurarse como varios hubs
independientes. Los equipos que se conecten a ese hub virtual, configurado, podrán comunicarse entre sí,
formando lo que se denomina una VLAN o LAN Virtual. Los equipos que pertenezcan a otra VLAN podrán
comunicarse entre sí, pero no con los de otras VLAN.
2.3.2. Software
2.3.2.1. Servidores
Un servidor es un equipo con un software que ofrece un recurso o un servicio en el sistema en red. Suele
pensarse que un servidor debe ser un equipo potente, capaz de gestionar una gran cantidad de información.
En principio la idea es correcta para grandes organizaciones, pero debe pensarse en algo más genérico, en
un software que ofrece un servicio o recurso y no necesariamente en una máquina poderosa. Así, en una
red doméstica, puede ser instalado un servidor web para acceso de los equipos del hogar.
Generalmente, se asocia la idea de servidor con una máquina. En realidad es el software que provee el
servicio. De hecho en una misma máquina pueden instalarse varios servidores. Si un servicio requiere
muchas operaciones de proceso, entonces es lógico implementar un servidor en una máquina dedicada.
Se habla entonces de servidores dedicados o no dedicados. El dedicado será una máquina especializada
en un servicio. El no dedicado tiene un carácter más generalista que puede albergar más de un servidor. La
configuración de una máquina como servidor dedicado o no dependerá de consideraciones a evaluar por el
administrador de red, tales como el número potencial de clientes, tráfico de datos a soportar, etc. Los
servidores más comunes que deben conocerse son:
- Servidor Web: Es el software que ofrece la gestión de sitios web. A un servidor web se accederá desde
una intranet o desde Internet, según se configure. Habitualmente se utiliza un navegador web para acceder
al contenido. Navegar es ir estableciendo conexiones a diferentes servidores web.

270
- Servidor de correo electrónico. Gestiona todo lo relativo al servicio de correo electrónico, como cuentas de
correo, archivos almacenados en los buzones, contactos, etc.
- Servidor Proxy: Es un servidor que ofrece servicios ampliados de conexión a red. Se utiliza “servicios
ampliados” en la definición, porque si no, un router ADSL podría considerarse un servidor proxy, y en
principio no lo es. Un servidor proxy, además de proporcionar el acceso a una red, lo gestiona y controla.
Así, puede realizar funciones como ocultación de direcciones IP para proteger a una red de ataques
externos, almacenar información consultada habitualmente para acelerar el acceso, guardar registros de las
comunicaciones establecidas para elaborar auditorías, etc.
- Servidor de archivos. Ofrece archivos a los usuarios de la red. Un ejemplo característico de servidor de
archivos es un servidor FTP, File Transfer Protocol, o protocolo de transferencia de ficheros. Es uno de los
protocolos más comunes para el intercambio de archivos. Es normal por abuso del lenguaje, suele hablar de
servidores FTP, es decir servidores de archivos, que utilizan el protocolo FTP.
- Servidor de impresión. Gestiona las impresoras compartidas en la red entre los usuarios. Entre sus
funciones también se encuentran el acceso a las impresoras y el control de las colas de impresión.
2.3.2.2. Estaciones de Trabajo
Una estación de trabajo o workstation, es un equipo de red, un terminal, dispuesto para el trabajo y acceso
de un usuario a la red. Generalmente una estación de trabajo asume el papel de cliente de los servicios de
red. Su potencia de proceso es, en principio, menor que la de los servidores.
2.3.2.3. Routers y Firewalls
Aunque se ha introducido el router como parte de la electrónica de red, y por tanto parte hardware, un router
posee una lógica asociada que introduce inteligencia en la red. Podría hablarse de firmware de red, una
parte intermedia entre hw y sw. Se ha incluido como componente software, por ser más propio.
Un router es un equipo que conecta redes de distinta naturaleza y cuya función es dirigir la información que
recibe por la ruta óptima para alcanzar el destino. A diferencia del bridge, conecta redes de tecnologías que
pueden ser muy diferentes. Para ello dispone tantos interfaces de red como redes conecte. Un router puede
ser un dispositivo hw, como un router doméstico, o puede implementarse por software.
En un router se configuran mediante sw aspectos del tipo rutas a seguir por los datos, características de las
redes a las que da acceso, o protocolos de encaminamiento. El router, al conectar varias redes puede
cursar datos por diferentes rutas para alcanzar un destino. La decisión de la ruta a seguir la marca el
protocolo de encaminamiento y dependerá de factores como el coste de transmitir información por un
operador u otro, si una línea esta congestionada o caída, etc.
Un router como parte del software de red, con mayores o menores prestaciones, puede realizar funciones
de Firewall. Un Firewall o cortafuegos, es un dispositivo hardware (de aspecto similar al router) o software y
cuya función es el control del tráfico de red. Es un dispositivo orientado a la seguridad y su trabajo consiste
en evaluar puertos de conexión, direcciones IP, descarte de tráfico mal construido, o que intenta obtener
información de la red (escaneos de puertos) o eliminar correo electrónico basura (spam) para evitar malos
usos y ataques de red. Este último caso se implementa con otro término a conocer, las black list o listas
negras, listados de direcciones de internet generadoras de spam. Si a una red llega correo con dirección
origen una dirección incluida en la lista negra del firewall, automáticamente se filtra.
Puede entenderse la idea de firewall como una aduana. Es un punto de control del tráfico de entrada y
salida a una red. Ese control se realiza estudiando la información de control incluida en los datos de usuario.
Ejemplos de firewall implementados por software son los programas habituales de entornos domésticos
para establecer un control de las conexiones y ofrecer medidas de seguridad. Son muy conocidos los
firewalls que se integran con los SO, como el Firewall de Windows de Microsoft.
En general, los firewalls se sitúan en la frontera entre una LAN e Internet. Pero existen configuraciones más
complejas, por ejemplo para establecer controles de conexión a zonas protegidas de una red, en la que por
ejemplo, se alberguen los servidores. Este caso típico, define una DMZ o zona desmilitarizada. Los firewalls
poseen capacidad de aprendizaje, configurándolos con reglas de decisión para que ante tráfico sospechoso
se emita un aviso o deje constancia en un archivo de log o registro.

271
TEMA 62. ARQUITECTURAS DE SISTEMAS DE COMUNICACIONES. ARQUITECTURAS BASADAS EN
NIVELES. ESTÁNDARES.

1. INTRODUCCIÓN
2. ARQUITECTURA DE SISTEMAS DE COMUNICACIONES
3. ARQUITECTURAS BASADAS EN NIVELES
4. ESTÁNDARES
4.1. Modelo TCP/IP
4.2. Modelo OSI

272
1. INTRODUCCIÓN
La arquitectura de los sistemas de comunicación surge como una solución al problema de interconexión de
redes. Se busca conectar equipos de distintos fabricantes e independizar la comunicación de la tecnología
de red de transporte. La primera red experimental que implementó estos conceptos fue la red del ARPA,
ARPAnet, que unía distintas redes y por ello se dice que fue el germen de la actual Internet.
2. ARQUITECTURA DE SISTEMAS DE COMUNICACIONES
Se puede definir la arquitectura de un sistema como su organización fundamental en cuanto a sus
componentes, las relaciones entre ellos y el entorno y los principios que guían su diseño y evolución.
Por tanto, la arquitectura de un sistema de comunicación sería la estructura organizativa que presenta el
sistema para dar solución a los problemas planteados en la comunicación. Para definir la arquitectura de un
sistema de comunicación, se dividen por niveles las tareas a realizar y se definen los interfaces para el
intercambio de información entre cada nivel. Consideraciones a tener en cuenta en el diseño son:
1. Distintos procesos o programas, en ejecución en un equipo de la red, pueden establecer comunicaciones.
Piénsese en la ejecución simultánea de Mozilla Firefox y Messenger, por ejemplo. Esta situación precisa
que cada equipo este identificado y dentro del equipo, el proceso de que se trate.
2. Debe definirse si la transmisión será simplex, dúplex o semidúplex.
3. La información a transmitir puede ser extensa, por tanto debe definirse cómo segmentarla.
4. Los paquetes de datos podrán seguir distintos caminos en la red, por tanto pueden alcanzar el destino en
tiempos y orden diferentes al original, o bien, sufrir errores de transmisión. Por esta razón es necesario
definir métodos de control de errores y de ordenamiento de los datos recibidos.
5. Para evitar inestabilidades hay que adaptar la velocidad de un receptor lento que pueda colapsar ante un
emisor rápido. Se establecerán mecanismos de negociación de la tasa de transferencia.
Puede decirse que la primera arquitectura de red fue, de algún modo, el modelo TCP/IP, definido en 1973
en el RFC 675, aunque se nutrió de implementaciones de otras redes como CYCLADES o NPL.
En 1984, la Organización Internacional de Estandarización, la ISO, definió una arquitectura de red, basada
en todos los desarrollos hasta la fecha, incluyendo TCP/IP, SNA y DECnet llamado Modelo OSI, Sistema
Abierto de Interconexión, por sus siglas en inglés. Es un modelo más bien teórico, que estructura la
comunicación en siete niveles y sirve de referencia a la industria a la hora de definir estándares.
3. ARQUITECTURAS BASADAS EN NIVELES
La comunicación en las redes, en general, se organiza como una jerarquía de niveles que dan un servicio a
niveles superiores y los ocultan los detalles físicos de la comunicación.
Una capa del nivel n se comunica virtualmente con la capa n de otra máquina, siguiendo un protocolo o
conjunto de reglas, para saber que existe una comunicación entre capas homólogas o pares. Pero, es una
comunicación virtual: en realidad, la capa n de un host, se comunica con la capa n-1, la inmediatamente
inferior, del mismo equipo, hasta que en algún momento, los datos se envían y alcanzan la capa n del
equipo de destino. De este modo se establece la comunicación entre dos equipos.
Para comunicarse los niveles n y n-1 de un mismo host, se define un interface entre que especifica los
servicios que ofrece la capa n-1 a su superior. Como se ha explicado, un conjunto de capas y protocolos
constituye una arquitectura de red.
Puede entenderse la arquitectura de red como una memoria en que se explican las funciones y servicios
que ofrece cada nivel. De este modo, se enuncia el problema de la comunicación y se indica al
implementador cómo o qué hacer, para que se puedan diseñar los programas, el hardware y demás.
La lista de protocolos de un sistema, con un protocolo por nivel se denomina pila de protocolos. Los
protocolos realizan una comunicación virtual, de forma horizontal, mientras que la comunicación en los
interfaces puede entenderse como una comunicación real y vertical.
La abstracción de procesos pares es básica para todo el diseño de red. Consiste en dividir el problema en
partes más pequeñas. En las capas más bajas, los protocolos pueden ser algoritmos complejos que se
instrumenten en hardware o firmware.
Entre las consideraciones de diseño para cada nivel, deben tenerse en cuenta aspectos como la
identificación de equipos, reglas de transmisión, naturaleza del medio, canales lógicos, prioridades, etc. Los
elementos activos de cada nivel (elementos sw o hw), se llaman entidades. Las entidades homólogas en
cada host son entidades pares.

273
Como la entidad n da un servicio a la capa n+1, ésta es el usuario y la capa n el proveedor. La capa n+1
accede al servicio de la capa n a través de un punto de acceso al servicio o SAP, por sus siglas en inglés,
que se identifica con una dirección única. Sea entonces un sistema que implementa un modelo de capas o
niveles. El emisor enviará información al receptor, de forma que si los datos son extensos, algún nivel
troceará esa información en paquetes.
Cada paquete debe numerarse para que el receptor pueda identificarlos y ordenarlos cuando lleguen todos.
Esa numeración no es información pura, es información de control, de la misma forma que al escribir el
código postal en una carta se da una información de control, que no tiene relación con el mensaje.
Luego en cada nivel existen dos tipos de información, los datos y la información de control, que a partir de
ahora, se puede identificar con la palabra “cabecera”. Esto da lugar a la identificación de distintos
elementos, que pueden verse en la figura.
Los datos de un determinado nivel se denominan PDU o Unidad de
datos del protocolo. Si se está hablando del nivel N, la PDU se
denomina N-PDU y se estructura en SDU y PCI, que por tratarse del
nivel N, otra vez, se denominan N-SDU y N-PCI.
La SDU o Unidad de Datos del Servicio son datos para la entidad
homóloga del receptor y se usa para dar el servicio requerido por el
nivel superior.
La PCI o Información de Control del Protocolo es información de control del nivel. Para simplificar el
tratamiento, en general se habla de PDU. La otra entidad es la IDU o Unidad de Datos del Interface. Es la
información que el nivel superior entrega al nivel inferior. A nivel N, se denomina N-IDU. El nivel N entrega al
nivel N-1 la N-SDU y la N-ICI. La N-ICI es la Información de Control del Interface de nivel N, utilizada para el
control entre ese nivel y el inmediatamente inferior.
Estas son las definiciones de los estándares. La figura resume el proceso: un nivel trata con su IDU,
compuesta por datos, la SDU e información de control, ICI. La IDU entera se entrega al nivel inferior,
pasándose a denominar PDU, y el proceso se repite con el siguiente nivel inferior. La diferencia entre IDU y
PDU viene dada por el tratamiento de cada nivel. Puede decirse que la N-IDU es igual a la N-1-PDU.
El proceso de los datos y la adición de información de control en cada nivel se denomina encapsulamiento.
Cuando la información llega al destino, cada nivel va eliminando la información de control y entregando al
nivel superior los datos. Se realiza el proceso inverso, lo que podría llamarse desencapsulado.
4. ESTÁNDARES
4.1. Modelo TCP/IP
El modelo TCP/IP pretende solucionar la comunicación entre redes de distinta naturaleza o tecnología. Este
problema se divide a su vez en dos. El primero, el enrutamiento, obtener la ruta que debe seguir la
información para llegar al destino. El segundo, el control de la comunicación; garantizar (o no, según el
criterio) que la información llega a destino y ordenarla si se recibe desordenada. Para estos propósitos
TCP/IP propone una arquitectura de red de cuatro niveles.
El primero, el “De host a Red”, “Físico” o “Subred”, no se define en profundidad. Simplemente el modelo se
abstrae de la implementación de subred sobre la que circule la información. El objetivo es dar conectividad a
redes de diferente tecnología. En la subred, a nivel físico, existirán tecnologías como ADSL, RDSI o FR, si
la subred es una WAN o Ethernet, WIFI, etc. si es una LAN.
El segundo nivel, el de “Interred”, define cómo implementar la comunicación entre redes diferentes. Para
conectar distintas redes existirán equipos que implementen la tecnología de su subred y el protocolo de
interred, en general IP. En este punto es donde queda claro por qué Internet, se llama Internet: recibe su
nombre del protocolo de interred IP, (internet en inglés).
El tercer nivel o “De Transporte” define en detalle los aspectos de control de la comunicación, por ejemplo,
si el servicio debe confirmarse, solucionar las pérdidas de información, reordenar los datos recibidos, etc.
En esta capa se definen dos tipos de servicio: orientado a conexión o no. Ejemplo es el servicio postal y sus
dos modos de envío de una carta: correo ordinario y certificado. El primero no garantiza ni confirma que la
carta llegue a destino, pero el servicio certificado lo garantiza y confirma.
De forma análoga, en las comunicaciones electrónicas existen servicios en los que no es rentable exigir
confirmación, pero en otros sí. De forma un tanto grosera, esta es la diferencia entre el protocolo de control
de la transmisión, TCP, que ofrece un servicio orientado a conexión, y el protocolo de datagrama de
usuario, UDP, que ofrece un servicio no orientado a conexión. El cuarto nivel o “De Aplicación”, se abstrae
también de los aspectos relativos al usuario de la red. No explica cómo debe implementarse, por ejemplo un
programa o protocolo de correo electrónico.

274
4.2. Modelo OSI
El modelo OSI, al igual que TCP/IP, es un modelo abierto para la comunicación, esto quiere decir que
puede ser utilizado por todo aquel que lo desee sin tener que pagar patentes por su uso. Representa un
esfuerzo de estandarización. Esta también es una de las razones del éxito de Internet.
El modelo OSI, más que una norma, representa una serie de
recomendaciones que suponen un recurso didáctico importante y
pretende guiar los desarrollos que se realicen en el campo de las
redes. Su elegancia radica en la modularidad de la solución: se
definen claramente las funciones y servicios de cada nivel y cómo
deben ser los interfaces entre ellos. De esta forma un cambio en un
nivel, no afectaría a los contiguos si se siguen respetando los
interfaces.
Implementaciones del modelo OSI puro, probablemente no se
encuentren muchas. Su importancia estriba en la didáctica de su
arquitectura, por eso se suele hablar de modelo de referencia OSI y
modelo de referencia TCP/IP. OSI define siete niveles en los que
estructura la comunicación.
El primer nivel o “Físico” define interfaces y características eléctricas y mecánicas del medio de transmisión,
como conectores RJ-45, cables de par, etc. En esta capa un mensaje es una señal. El dispositivo de red
codifica y decodifica la señal. A este nivel se trata con bits. Equipos que trabajan a este nivel son los hubs.
El nivel 2, de “Enlace de datos”, describe el control y acceso a la subred, asegurando la transferencia fiable
de tramas entre equipos. La información binaria se transmite en un formato llamado trama que se especifica
en el protocolo de subred con que opera la NIC. Equipos que trabajan a este nivel: switches.
La capa 3, de “Red”, administra el enrutamiento de datos. Los protocolos de esta capa deben encontrar el
dispositivo destino. Ejemplos son IP, IPX y Apple Talk. La capa 3 añade información de control, la cabecera
de nivel 3, a los datos constituyendo un paquete o datagrama. Equipos de nivel 3 son los routers.
La capa 4, de “Transporte” asegura si los datos alcanzan su destino íntegros y en orden correcto, o si se
oferta un servicio no orientado a conexión, como se ha explicado. Protocolos de esta capa: TCP y UDP.
Dispositivos que trabajan en esta capa: Cortafuegos (firewalls).
La capa 5, o de “Sesión” establece y termina las conexiones. Ordena las sesiones entre dos equipos.
Ejemplos de protocolos de capa de sesión son la llamada de procedimiento remoto (RPC), el protocolo
ligero de acceso al directorio (LDAP) o NetBIOS.
El sexto nivel o capa de “Presentación” formatea los datos para presentarlos en pantalla o imprimirlos.
Ejemplos de la capa de presentación son el protocolo ligero de presentación (LPP).
El último nivel, la capa 7, o de “Aplicación”, especifica los protocolos que utilizan la red. Algunos ejemplos
de los protocolos de aplicación de red son el Simple Mail Transfer Protocol (SMTP), de correo electrónico.
La ISO especifica protocolos para cada nivel, pero su uso es arbitrario por parte del usuario. El desarrollo de
un protocolo no siempre se adapta a las capas del estándar, sino que puede cubrir partes de varias capas.
TCP/IP implementa protocolos particulares que se definen de forma general en el modelo OSI. En TCP/IP,
el nivel físico y el de aplicación, son más abstractos, mientras OSI los define con más detalle.
En la literatura técnica y abusando de lenguaje, a veces se hace referencia a niveles OSI como TCP/IP. Lo
importante es tener en cuenta el contexto, forma que si se habla de nivel físico, enlace o subred, se referirá
a lo mismo, probablemente. A continuación se trata en detalle cada nivel y con la finalidad de facilitar su
estudio se presenta por capas TCP/IP diferenciando en los niveles físico y de aplicación las capas OSI.

275
TEMA 63. FUNCIONES Y SERVICIOS DEL NIVEL FÍSICO. TIPOS Y MEDIOS DE TRANSMISIÓN.
ADAPTACIÓN AL MEDIO DE TRANSMISIÓN. LIMITACIONES A LA TRANSMISIÓN. ESTÁNDARES.

1. INTRODUCCIÓN
2. FUNCIONES Y SERVICIOS DEL NIVEL FÍSICO
3. TIPOS Y MEDIOS DE TRANSMISIÓN
3.1. Tipos de Transmisión
3.1.1. Transmisión Analógica
3.1.2. Transmisión Digital
3.2. Medios de Transmisión
3.2.1. Medios de Transmisión Guiados
3.2.1.1. Par Trenzado
3.2.1.2. Coaxial
3.2.1.3. Fibra Óptica
3.2.2. Medios de Transmisión No Guiados
3.2.2.1. Microondas
3.2.2.2. Satélite
3.2.2.3. Infrarrojos
4. ADAPTACIÓN AL MEDIO DE TRANSMISIÓN
4.1 Modulaciones analógicas
4.1.1. AM
4.1.2. FM
4.1.3. PM
4.2 Modulaciones digitales
4.2.1. ASK
4.2.2. PSK
4.2.3. FSK
5. LIMITACIONES A LA TRANSMISIÓN
5.1 Transmisión analógica
5.2 Transmisión digital
6. ESTÁNDARES

276
1. INTRODUCCIÓN
Debe conocerse el proceso de la transmisión de datos dado que es la base sobre la que descansa la
tecnología, protocolos y la comunicación en una red.
2. FUNCIONES Y SERVICIOS DEL NIVEL FÍSICO
El nivel Físico del modelo de arquitectura de comunicaciones OSI engloba la definición de aspectos de la
comunicación como los interfaces y características eléctricas y mecánicas del medio de transmisión. Por
ejemplo, los conectores RJ-45, cables de par, etc. A este nivel, un mensaje es una señal. Es decir, no se
habla de información, sino de símbolos. A este nivel se trata con bits. El dispositivo de red a nivel físico
codifica y decodifica la señal. Equipos que trabajan a este nivel son los hubs.
Las funciones del nivel físico se resumen en transmitir. Pero esto incluye la definición de los interfaces de
acceso al medio de transmisión, la codificación de canal, sincronizar y modular las señales.
En cuanto a los servicios que ofrece son la modulación, control de flujo, control de la multiplexión, modo de
transmisión o ecualización, por citar los más comunes. Debido a la diversidad de medios y topologías, las
funciones y servicios pueden variar o no aplicarse a todas las formas de comunicación.
Por tanto, lo primero es diferenciar entre la idea de transmisión y comunicación. Transmisión es el proceso
de transporte de señales de un lugar a otro. Comunicación es el transporte de información. Las señales son
entidades de naturaleza física usadas para representar información. Las habituales son electromagnéticas
como la luz o señales eléctricas (corriente, tensión). Las señales no establecen una comunicación. En un
sistema puede haber transmisión, pero no comunicación.
En la transmisión existen varios actores. El esquema fundamental de transmisión está compuesto por tres
elementos: Emisor, Medio de Transmisión y Receptor.
El emisor es el ente que origina la
información a transmitir. Como origen de
la transmisión se encarga de entregar y
adaptar la información al medio de
transmisión.
Ejemplos de emisores son cualquier terminal que ofrece el interfaz necesario para adaptar la información al
medio y transmitirla, como un PC, un teléfono, etc. El receptor es el ente que recibe las señales
transmitidas. Es el destino de las señales y de la información. Debe interpretar las señales y presentarlas de
forma legible. El medio de transmisión es el medio físico por el que se propagan las señales transmitidas. La
naturaleza del medio de transmisión debe ser tal que permita el transporte de las señales que se utilizan.
Otros dos conceptos no reflejados en la figura son la codificación de canal y el mensaje. La primera es el
convenio usado por emisor y receptor para obtener la inteligibilidad en la comunicación (el alfabeto usado).
El mensaje es la información que se transmite. El proceso de transmisión viene limitado por unas normas de
diálogo. Estas normas definen protocolos de comunicación, que tienen en cuenta y solucionan los aspectos
de la transmisión. Los códigos de redundancia en la información transmitida son información adicional que
se añade para corregir o detectar errores producidos en la transmisión para evitar retransmisiones.
Al estudiar los sistemas de transmisión, se procede a clasificarlos. El criterio de clasificación suele ser su
dirección, el soporte que ofrecen a la dirección y la técnica utilizada en la transmisión.
Dirección. En función de la dirección de la transmisión los sistemas se clasifican en dúplex, semidúplex y
símplex. Uno dúplex es el que permite la transmisión simultánea en ambos sentidos. El ejemplo típico es el
teléfono. Un sistema semidúplex permite la transmisión de forma alterna en ambos sentidos (walkie-talkie:
permite comunicación en ambos sentidos, pero no a la vez). Un sistema símplex permite la transmisión en
un único sentido. Por ejemplo la radio y la TV.
Soporte. Según el soporte a la transmisión bidireccional los sistemas se clasifican en a dos hilos, a cuatro
hilos o a cuatro hilos equivalentes. Los sistemas a dos hilos son en los que el mismo medio físico da soporte
a los dos sentidos de transmisión y ocupan el mismo rango de frecuencias. Los sistemas a cuatro hilos
poseen soportes físicos diferentes para cada sentido de transmisión, usan pares de hilos diferentes. Los
sistemas a cuatro hilos equivalentes usan el mismo soporte físico pero distinto rango de frecuencias.
Técnica. Se diferencian sistemas analógicos y digitales. Los primeros usan señales de información
analógica, las que pueden varían de forma continua. Presentan limitaciones de distorsión, ruido, diafonía y
variación de nivel. La transmisión es más complicada que en los sistemas digitales y ofrecen menor control.
Los sistemas digitales utilizan señales de información que sólo toman determinados valores discretos, como
por ejemplo 0 o 5 V. Ofrecen las ventajas de ser independientes de la fuente de información, no acumular
degradaciones (la señal puede regenerarse), presentar un adecuado tratamiento matemático y físico
(electrónica digital) y un ahorro económico elevado con respecto a sistemas analógicos.

277
3. TIPOS Y MEDIOS DE TRANSMISIÓN
El medio de transmisión es el ente físico usado para enviar señales en un sistema de comunicación. Los
medios de transmisión se pueden dividir en guiados (artificiales fabricados con algún material) y no guiados,
medios libres que permiten la propagación de las señales a transmitir. En general los medios no guiados
son más lentos que los guiados, pero presentan la ventaja de requerir una infraestructura menor.
La transmisión de datos diferencia dos tipos, en función de la técnica: la transmisión analógica y la digital.
La primera usa señales continuas y la digital señales que codifican la información con valores discretos.
La transmisión digital presenta ventajas frente a la analógica. La más importante quizá sea el apropiado
tratamiento matemático de la información y su soporte físico. El álgebra binaria ofrece una gran potencia al
poder ser implementado en circuitos de silicio que incrementan el rendimiento. Los sistemas digitales son
más robustos frente a ruido, permiten aprovechar mejor el canal entre distintos usuarios (multiplexación) e
independizan los equipos del tipo de señal que se procese.
3.1. Tipos de Transmisión
3.1.1. Transmisión Analógica
El esquema de comunicación general visto debe ampliarse para estudiar la transmisión analógica. Una red
analógica estará formada por un número, en principio grande de nodos de tránsito.
En telefonía estos nodos suelen llamarse
centrales de conmutación. El modelo es
válido para distintas tecnologías,
particularizándolo para la que se trate en
cada momento. El esquema podría ser el
presentado en la figura.
Los nodos locales proporcionan el acceso de los usuarios a la red. Los nodos de tránsito amplifican las
señales para compensar las pérdidas de potencia en transmisión. Esta función puede ser única
(amplificador) o añadir en el nodo de tránsito funciones propias del control de la comunicación.
Los sistemas de transmisión analógica están sometidos a tres tipos de degradaciones de la señal;
atenuación, retardo y perturbaciones. La atenuación es la pérdida de potencia de la señal en su
propagación. Depende del medio de transmisión. El retardo es el tiempo que emplea la señal en llegar al
receptor. Las perturbaciones son todos los factores a parte de retardo y atenuación, que contribuyen a la
degradación o modificación de la señal emitida.
3.1.2. Transmisión Digital
En transmisión digital, el esquema de
comunicación varía algo con respecto al
modelo analógico, debido a la adaptación a
realizar con las señales. El esquema quedaría
como se muestra en la figura.
Es similar al modelo analógico, variando la estructura interna de emisor, receptor y los nodos de tránsito.
Las ventajas de la transmisión digital se pagan en complejidad. Se añaden nuevos componentes:
conversores analógicos digitales (CAD) y digitales analógicos (CDA), los codificadores/decodificadores de
canal y de fuente y los moduladores/demoduladores digitales. Los CAD obtienen una señal digital a partir de
una analógica. Para ello implementan las funciones de muestreo, cuantificación y codificación. Los CDA
reconstruyen una señal analógica a partir de una digital usando módulos de interpolación, filtrado o
reconstrucción y decodificación.
Los codificadores y decodificadores de canal obtienen la señal digital y la añaden información redundante
para evitar errores de transmisión. Los moduladores digitales adaptan la señal físicamente al medio para su
transmisión y los demoduladores la recuperan para su posterior interpretación.
En los nodos de tránsito se incluyen dos funciones: Por una parte, hay una función de inteligencia de red,
que puede tratar aspectos como el enrutamiento. Y el aspecto más físico, de transmisión pura, referido a la
regeneración de la señal.
3.2. Medios de Transmisión
3.2.1. Medios de Transmisión Guiados
Los medios de transmisión guiados son aquellos que se disponen para que sirvan de vía a las señales a
transmitir. Requieren un proceso de fabricación e instalación. Las señales transmitidas viajan confinadas en
el medio, en general un cable. Se distinguen tres grandes tipos: cable de par trenzado, coaxial y fibra óptica.

278
3.2.1.1. Par Trenzado
Es el cable más usado en redes LAN. Su éxito se debe a su relativo bajo precio y altas prestaciones.
Consiste en dos cables de cobre girados sobre sí (trenzados) para disminuir el nivel de interferencias.
Los pares de cables de cobre trenzado suelen presentarse
agregados en dos o cuatro pares. Los de dos pares, cuatro
cables, se usan para telefonía mientras que los de ocho cables,
cuatro pares se utilizan para transmisión de datos.
El cable típico de red contiene ocho pares de cobre y existen dos clases: UTP y STP. UTP (Unshielded
Twisted Pair) es un par trenzado no apantallado. STP, Shielded Twisted Pair, es par trenzado apantallado.
La diferencia está en que el cable STP incluye un recubrimiento metálico que se dispone entre la cubierta
plástica externa y abraza los cuatro pares. Esto se hace para evitar perturbaciones externas, logrando un
alcance mayor a costa de un incremento del precio y una cierta complejidad en la instalación.
La longitud del trenzado se denomina paso, o paso de torsión. Cuanto menos paso, es decir más trenzado,
más material se utiliza y el cable se hace más caro, pero por resiste mejor las perturbaciones. Las
características de fabricación de los cables definen su calidad, sus propiedades y su precio. Por ello se
clasifican en distintas categorías, que se listan en la siguiente tabla.
Categoría Características
1 UTP de calidad de voz no adecuado para datos. Velocidad de transmisión inferior a 1 Mbps
2 UTP de velocidad de transmisión hasta 4 Mbps. Fue usado en redes Token Ring
3 Transmisión a 10 Mbps. Es el mínimo para redes Ethernet 10BaseT
4 Transmisión hasta 16 Mbps. Usado en redes Token Ring
5e 5 enchanced. Descrita en la norma TIA/EIA-568-B. Soporta FastEthernet y GigaEthernet
6 Norma TIA/EIA-568-B, para redes GigaEthernet y frecuencias hasta 250 MHz
7 Para redes 10 GigaEthernet y frecuencias de hasta 600 MHz
El cable más extendido es el de categoría 5e, que progresivamente va sustituyéndose por el de categoría 6.
Para el despliegue de redes GigaEthernet se recomienda el cable de categoría 6.
Las redes Ethernet distinguen tres variantes en función de la tasa de transmisión: Ethernet, hasta 10 Mbps,
FastEthernet, hasta 100 Mbps y GigaEthernet, hasta 1000 Mbps. Ethernet y FastEthernet usan sólo cuatro
de los ocho cables que componen el cable UTP. De esos cuatro, dos se usan para transmisión y dos para
recepción. GigaEthernet usa los ocho cables. Las características cuantitativas de los cables de pares
pueden resumirse en un alcance máximo del entorno de los 100 metros; máxima atenuación permitida para
un cable de categoría 5 en torno a 20 dB e impedancia característica 100 Ω.
3.2.1.2. Coaxial
Es un cable compuesto por dos conductores concéntricos separados por un dieléctrico,
un material aislante. Se suele llamar tubo al conjunto de los dos conductores y el
dieléctrico. El conjunto, como en todo cable, se recubre de una cubierta plástica para su
protección. El conductor interno suele ser sólido y la corona externa una malla metálica.
Posee el aspecto de la figura. Es el cable típico de antena utilizado en la TV doméstica.
La corona o malla metálica exterior sirve como protección frente a interferencias y para la propagación del
campo electromagnético portador de información. La distancia que puede cubrir sin amplificadores el cable
coaxial es mayor que la del par pero es más caro. El coaxial sólo se suele usar en distancias cortas debido
a que el cable de pares es más flexible y la fibra óptica presenta mucha menor atenuación.
Se puede encontrar instalado en TV, telefonía a larga distancia (cada vez menos, por lo comentado),
conexión de periféricos a corta distancia, etc. En cuanto a características físicas a tener como referencia se
citan: Diámetro interior entre 0,7 y 2,6 mm. Diámetro exterior entre 2,9 y 9,5 mm. Atenuación entre 2 y 9 dB
e impedancia característica en torno a 75 Ω.
3.2.1.3. Fibra Óptica
Es un cable realizado con sílice, fibra de vidrio o
plástico. Su estructura es la de dos dieléctricos
concéntricos, el interior llamado núcleo y el exterior,
en contacto con el núcleo, llamado revestimiento. La
fibra óptica está diseñada para conducir luz.

279
La fabricación es tal que el índice de refracción del núcleo es mayor que la del revestimiento. Esto hace que
el revestimiento actúe como espejo con relación al núcleo, confinando la luz en el núcleo. El cable se
protege con una funda externa de plástico, la cubierta. La luz transmitida no se afecta por interferencias
electromagnéticas, lo que ofrece baja atenuación y gran alcance, haciendo la fibra ideal para grandes
distancias. Otras ventajas son una baja tasa de error de transmisión, bajo peso y pequeñas dimensiones.
En general, se montan mazos o mangueras de fibras con un núcleo metálico que sirve de protección y
soporte frente a tensiones mecánicas. Entre sus desventajas se puede citar el precio y una mayor dificultad
de soldadura y conexión.
Se distinguen dos tipos de fibras ópticas: Monomodo y multimodo. Las monomodo, por fabricación y las
frecuencias de trabajo, propagan únicamente un modo, es decir un campo electromagnético, en forma de
luz, de frecuencia única. Esto se consigue haciendo una fibra con un núcleo de radio reducido y una
diferencia entre índices de refracción de núcleo y revestimiento pequeña. Las fibras monomodo consiguen
una tasa de transmisión muy elevada, del orden de los Gbps.
Las fibras multimodo propagan varios modos, campos de diferentes frecuencias. Los modos, o colores de
luz, recorren la fibra en tiempos diferentes. Esto se traduce en interferencias entre impulsos, que reduce la
tasa de transmisión, pero son más baratas que las fibras monomodo.
Parámetros ópticos de las fibras son el perfil del índice de refracción y la apertura numérica. El primero se
refiere a cómo varía el i.r. del núcleo de la fibra. Si no varía, se dice que es de salto de índice o fibra de
índice escalonado. Es decir, el i.r. del núcleo y el del revestimiento tienen una diferencia fija. Si el núcleo de
la fibra se fabrica de forma que su i.r. varía del centro hasta el revestimiento la fibra es de índice gradual,
más caras y de mayor alcance, ya que el índice gradual iguala los tiempos de propagación de los modos.
La apertura numérica de una fibra indica la cantidad de energía capaz de aceptar. Depende del ángulo de
aceptación, o máximo ángulo con que se puede iluminar la fibra para que exista transmisión. En una fibra de
índice gradual es menor a la de una fibra de salto de índice, es decir, que éstas últimas pueden transportar
más energía (aunque a menor velocidad). Resumiendo, en las fibras de salto de índice la velocidad de
propagación es constante. La dispersión modal sólo se da en fibra multimodo. Las fibras de índice gradual
sólo tienen sentido si son multimodo y reducen la dispersión modal, aumentando el ancho de banda.
La pérdida de potencia óptica en la fibra se conoce como atenuación y se debe a la naturaleza del material,
impurezas microscópicas y defectos de fabricación. Puede considerarse una atenuación constante en el
rango de trabajo, pero la atenuación varía a lo largo del espectro. Existen ciertas frecuencias de trabajo a
las que la atenuación es menor. Se habla entonces de ventanas de trabajo.
Por razones históricas se trabaja con longitudes de onda referidas al vacío, en vez de frecuencias. Se
identifican tres ventanas de trabajo para las fibras, de valores de referencia 850, 1300 y 1550 nm, para la
primera, segunda y tercera ventanas respectivamente. En la primera se usan fibras multimodo, en la
segunda multimodo y monomodo y en la tercera sólo monomodo.
Las fibras monomodo se usan para larga distancia, las multimodo de índice gradual en redes LAN y las
multimodo de salto de índice suelen usarse en distancias cortas y de bajo coste. Los emisores de luz
usados son LED, baratos y de vida media larga y emisores ILD, más caros y de mayor tasa de transmisión.
3.2.2. Medios de Transmisión No Guiados
Los medios no guiados no proveen un medio artificial para el guiado de las señales. La forma de trabajo es
la radiación de energía electromagnética con una antena emisora y otra receptora. Se distinguen dos modos
de radiación, direccional y omnidireccional. La direccional concentra más energía radiada en una dirección.
Esto implica que emisor y receptor deben alinearse. A mayor frecuencia de trabajo más fácil es la
transmisión direccional. Si la radiación es omnidireccional, la energía se emite a todas direcciones por igual.
No existen antenas puramente omnidireccionales, pero la aproximación es buena.
La transmisión de HF (onda corta), situada en el espectro entre los 3 y los 30 MHz, se usa para servicios
globales (posicionamiento marítimo, radiodifusión, etc.), ya que permite comunicaciones a grandes
distancias con relativa poca potencia. Para la comunicación de datos y sistemas en red típicos, la
transmisión suele usar bandas de frecuencia relativamente altas. Por ello, en función de sus características
e importancia pueden distinguirse tres tipos de transmisión no guiada: microondas, satélite e infrarrojos.
3.2.2.1. Microondas
3
La transmisión por microondas abarca un rango de frecuencias entre los 3 y los 300 GHz (estándar IE 100
e IEC 60050). Las bandas inferiores, del entorno de los 2.5 GHz se usan para cortas distancias y existen
bandas de uso libre. Las utilizan tecnologías como Bluetooth o WIFI. A frecuencias más elevadas, típicas de
12, 18 y 23 GHz, se habla de radioenlaces con alcances de larga distancia (40-50 km) que usan antenas
parabólicas. Estos enlaces sustituyen a los cables cuando el tendido de infraestructura es complicado.
Aplicaciones típicas son la transmisión de TV, datos y voz.

280
La transmisión por microondas se ve afectada por la atenuación, que depende de varios factores, el primero
la distancia (la señal pierde potencia con el cuadrado de la distancia), la lluvia y las interferencias con otros
sistemas, para lo que cada país establece su regulación y licencias de uso. Si se desea limitar el efecto de
la atenuación en zonas de lluvias abundantes, deben utilizarse frecuencias menores a 10 GHz.
3.2.2.2. Satélite
La transmisión satélite utiliza microondas en el rango de 2 a 50 GHz. Las diferencias entre satélite y
microondas son que el satélite ilumina una zona de la tierra y por tanto da cobertura en un área extensa y
por otro lado, las limitaciones del satélite, que para evitar interferencias, debe usar dos frecuencias una para
el enlace de subida y otra para el de bajada. El retardo de propagación de la señal, debido a la distancia,
deja de ser despreciable, obligando a establecer un control del flujo de la señal, corrección de errores, etc.
Los usos típicos del satélite son difusión de TV, redes privadas y militares, etc.
3.2.2.3. Infrarrojos
El infrarrojo es una radiación aproximando, de entre 300 GHz y 300 THz. La transmisión se realiza con láser
que puede lograr alcances de 15 km, aunque su uso más extendido es en aplicaciones de corta distancia
(~3 km) donde la instalación de cableado sea compleja. (Tasa de transmisión típica 1.5 Mbps).
Los infrarrojos son reflejados por superficies y no atraviesan cuerpos opacos. Emisor y receptor deben estar
alineados o en línea tras una trayectoria reflejada. Emisor típico para tasas de hasta 10 Mbps es el LED y
para tasas superiores diodos láser. Los receptores son fotodetectores que generan una tensión en función
de la iluminación que reciben. La utilización de infrarrojo también es libre y no son necesarias licencias.
4. ADAPTACIÓN AL MEDIO DE TRANSMISIÓN
La adaptación al medio de transmisión usa distintas técnicas que varían en función del tipo de transmisión,
analógica o digital. Consiste en usar una señal como vehículo para el transporte, la señal portadora, que es
modificada por otra señal, la información. La modificación se denomina modulación. La señal portadora
ofrece más facilidad de transmisión que la señal de información sola. La señal información viaja de manera
implícita en la portadora, variando alguna de sus propiedades.
4.1 Modulaciones analógicas
4.1.1. AM
AM significa Amplitud Modulada. Consiste en multiplicar la señal portadora
por la señal información directamente y sumar al resultado otra vez la señal
portadora. El desarrollo matemático muestra cómo la amplitud de la señal
portadora va cambiando, de forma que su envolvente va dibujando la forma
de la señal información, como en el dibujo.
La suma de la señal portadora se hace para facilitar la recepción, pero merma la eficiencia de potencia, es
decir, de toda la potencia enviada se utiliza poca para la información, que ronda el 25%. Variantes de la
modulación AM son DBL y BLU. DBL o doble banda lateral consiste en eliminar o reducir el envío de
portadora para incrementar la eficiencia de potencia. BLU, o banda lateral única consiste en enviar sólo la
información, con lo que también mejora la eficiencia. En ambos casos el receptor es más complejo.
4.1.2. FM
FM significa Frecuencia Modulada. Consiste en modificar la frecuencia de la señal portadora con la señal
información, de manera que el receptor, al detectar esos cambios en la frecuencia, identifique la señal de
información enviada. FM ofrece mayor eficiencia de potencia y espectral que AM. Se ve menos afectada por
interferencias y perturbaciones externas. Los métodos más extendidos para modulación y demodulación de
FM son los PLLs, lazos enganchados en fase, circuitos integrados que estabilizan la señal.
4.1.3. PM
PM significa Phase Modulation, por sus siglas inglesas, o modulación de fase. Es similar a FM, salvo que
ahora el parámetro que se modula es la fase de la señal portadora. PM se utiliza menos que FM por
precisar receptores más complejos.
4.2 Modulaciones digitales
4.2.1. ASK
ASK o Amplitude Shift Keying (clave en desplazamiento de amplitud), básicamente es una modulación AM
en la que la señal de información es digital. Por tanto, si se envía un bit 1, se transmitirá la señal portadora y
si se transmite un bit 0, no se transmitirá señal.

281
La modulación puede realizarse con una AM sobre NRZ (código binario de no retorno a cero) y la
demodulación, es la misma que AM o detector de envolvente. Un parámetro característico de ASK es la
relación ON/OFF, o diferencia en dBs entre la potencia emitida al enviar un 1 y un 0.
4.2.2. PSK
PSK o Phase Shift Keying (clave en desplazamiento de fase), es una modulación que utiliza una misma
frecuencia y un conjunto de valores discretos de la fase para representar los dígitos binarios. PSK puede
hacerse como una modulación DBL sobre NRZ y la demodulación ha de ser coherente. Parámetro
característico es el rechazo de portadora, o relación entre la potencia de portadora y la de señal, expresada,
generalmente en dB.
La diferencia con PM es que en PM la variación de la fase es continua y en PSK discreta. El número de
posibles valores de la fase, es el número de símbolos de la modulación. Cada símbolo puede transmitir la
información de uno o varios bits. QAM o Quadrature Amplitud Modulation puede entenderse como una
modulación PSK consistente en un conjunto de señales posibles, la constelación, diferenciadas por la fase y
amplitud empleada.
4.2.3. FSK
FSK o Frecuency Shift Keying (clave en desplazamiento de frecuencia), es una modulación que utiliza
distintas frecuencias para representar los símbolos del sistema. Si se utilizan cuatro frecuencias, existirán
cuatro símbolos en el sistema, y por tanto cada símbolo podrá representar una información de dos bits. La
primera frecuencia representará, por ejemplo, los bits 00, la segunda los bits 01, la tercera 10 y la cuarta 11.
La modulación puede hacerse con conmutadores o con FM atacado con NRZ. La demodulación puede ser
coherente o no coherente (filtro adaptado o filtro y detector).
5. LIMITACIONES A LA TRANSMISIÓN
Todo sistema de transmisión se ve sometido a limitaciones. Se distinguen tres tipos de limitaciones
consecuencia de la degradación de la señal: la atenuación, el retardo y las perturbaciones. El retardo no se
puede combatir. Se precisa un tiempo en cubrir una distancia. Los receptores lo tienen en cuenta y es
compensado trasladando la referencia temporal. La atenuación se compensa reproduciendo la señal con
más energía. Las perturbaciones son complejas de modelar y obligan a caracterizar el medio de transmisión
para compensarlas. También dependen del tipo de transmisión, analógica o digital.
5.1 Transmisión analógica
Las perturbaciones a que hacer frente en una transmisión analógica pueden clasificarse en:
Distorsión. Es producida por el sistema de transmisión. Puede ser lineal o no lineal.
Diafonía. Perturbación producida por sistemas próximos o el mismo sistema.
Interferencia. Perturbación de sistemas lejanos.
Ruido. Resto de perturbaciones aleatorias. Puede ser interno o externo.
La distorsión lineal, cuando sea caracterizable, no supone un gran problema, dado que la señal
distorsionada y la original seguirán una relación proporcional y por tanto podrá compensarse. La distorsión
no lineal es más difícil de combatir.
La diafonía es la perturbación producida por el sistema de transmisión o sistemas cercanos. Es
característico de las líneas de transmisión metálicas. Ejemplo típico en los sistemas de telefonía clásicos era
el caso en que al descolgar el teléfono se escuchaba la conversación de un vecino. Las interferencias
perturban el sistema con señales lejanas, en general artificiales. Ejemplo es la escucha de alguna emisora
de AM al descolgar el teléfono.
El ruido es cualquier señal aleatoria, que no entre en la clasificación anterior. Pueden distinguirse dos tipos,
el interno, originado por los componentes del sistema y el externo originado en el exterior. El ruido interno
se puede clasificar en ruido térmico (o Johnson), generado por el movimiento de los átomos de los
materiales al tener una temperatura distinta al cero absoluto y el ruido de granalla, generado por las
corrientes aleatorias de los electrones en el material. El ruido externo puede clasificarse según su origen en
ruido atmosférico (tormentas), galáctico (energía del sol y planetas) e industrial. La caracterización de las
perturbaciones a que se hacen frente puede expresarse con la relación señal a ruido, S/N o SNR (signal-
noise relation), que es la relación de potencias existente entre la señal transmitida y el ruido añadido en la
transmisión. Suele expresarse en dB.
5.2 Transmisión digital

282
Si en los sistemas de transmisión analógica el parámetro de calidad es la SNR, en los sistemas digitales el
parámetro utilizado es la probabilidad de error.
Otro parámetro importante en transmisión digital es la IES o Interferencia Entre Símbolos, que se puede
entender como el problema derivado de interpretar erróneamente en recepción un símbolo. Para evitarlo se
recurre a técnicas como el filtrado discreto o el envío de más potencia, lo que aumenta la diferencia de
potencia entre símbolos, de forma que el ruido necesario para que se produzca un error es mayor y por
tanto el sistema se ve menos afectado.
Al final, la transmisión digital consigue una mayor robustez frente a perturbaciones, mejor rendimiento y
flexibilidad del canal de transmisión e independiza el canal de la fuente de señal, ya que video, voz o datos,
en lo referente a transmisión se tratan de igual manera. Lógicamente se necesitará más capacidad para
gran cantidad de información como pueda ser el caso del video.
6. ESTÁNDARES
Los estándares que cubre el nivel físico son numerosos y a lo largo de los siguientes temas se irán
desgranando. Sin embargo, estos estándares si deben situarse en su contexto. Así, estándares físicos hay
de conectores, de transmisión, de red local o extensa, etc. Por citar algunos, se tendrían:
Estándares físicos de conexión: FDDI, RS-232, V.35 (líneas serie), V.92 (modems).
Estándares físicos de transmisión: RDSI, xDSL, DSL, T1, IrDA.
Estándares físicos de acceso WAN: X.25, Frame Relay, ATM, MPLS.
Estándares físicos de acceso LAN: IEEE 802.3 (Ethernet), IEEE 802.5 (Token Ring), IEEE 802.11 (WIFI).
Hay que tener en cuenta, que por ejemplo, Ethernet no es un estándar sólo referido al nivel físico. Se
nombra el estándar, entendiendo que existe una parte dedicada a la descripción de los aspectos que cubre
el nivel físico, como en el resto de estándares de referencia.

283
TEMA 64. FUNCIONES Y SERVICIOS DEL NIVEL DE ENLACE. TÉCNICAS. PROTOCOLOS.

1. INTRODUCCIÓN
2. FUNCIONES Y SERVICIOS DEL NIVEL DE ENLACE
3. TÉCNICAS
4. PROTOCOLOS

284
1. INTRODUCCIÓN
El segundo nivel del modelo OSI es el nivel de enlace o enlace de datos. También puede usarse el término
subred y separar esa idea del tercer nivel de red o interred, como se hace en el modelo TCP/IP. Su función
es proveer un servicio de comunicación fiable y eficiente entre equipos directamente conectados, es decir
que estén unidos por un cable o radioenlace.
En la exposición del nivel físico no se ha presentado el concepto de SAP, o acrónimo inglés de punto de
acceso al servicio. Se hace referencia a él en la exposición de las arquitecturas de comunicación, en la
figura de la relación entre niveles. Esto es debido a que representa un interfaz, por tanto, a nivel físico, el
interfaz es con el nivel de enlace y por eso, se introduce aquí.
El SAP es un punto conceptual, entre dos niveles de un modelo, a través del cual un nivel accede al servicio
del nivel inferior. Su implementación se hace con un identificador de SAP, que a nivel de red recibe el
nombre de NSAP, Network SAP, a nivel de transporte TSAP, etc. En función del contexto en el que se
hable, el nivel queda asumido y por tanto, en general, se habla sólo de SAP.
El SAP es fundamental para estudiar las funciones y servicios de cada nivel. En general se habla de SAP en
formas de direcciones de red, no explícitamente. Por ejemplo, el número de acceso al servicio telefónico, es
un número de teléfono habitual. Pero no se solicita el SAP telefónico, se solicita un número de teléfono.
2. FUNCIONES Y SERVICIOS DEL NIVEL DE ENLACE
A nivel de enlace, la información que se transmite se agrupa en un paquete de datos llamado trama (frame).
En principio, los bits transmitidos por la capa física llegan en orden al receptor, pero pueden darse errores
de transmisión. Para evitarlos, la capa de enlace realiza las funciones de control de la transmisión, como la
capa de transporte, pero a nivel más bajo.
Así, entre las funciones del nivel de enlace se distinguen el control de la transmisión (su inicio, identificación
y fin), la segmentación y sincronización de la información y el control de errores. El nivel de enlace además
debe descartar tramas que aparezcan duplicadas y negociar el control de flujo para compensar diferencias
de tasas de transmisión entre sistemas.
En cuanto a los servicios, la subred puede ofrecer un servicio de tres tipos: Orientado a conexión con acuse
de recibo y no orientado a conexión, con o sin acuse de recibo. Un servicio orientado a conexión establece
un procedimiento para iniciar la transmisión. Un servicio con acuse de recibo certifica que los datos han
llegado correctamente.
Si el servicio es orientado a conexión y con acuse de recibo, se necesita más proceso de datos, lo que hace
la comunicación más lenta, pero más fiable. Si el medio de transmisión posee calidad, es preferible un
servicio sin acuse de recibo, no orientado a conexión, dejando el control a capas superiores.
3. TÉCNICAS
Para implementar funciones y servicios, se programan los dispositivos, con su lógica correspondiente. Por
ejemplo, para iniciar, identificar y finalizar una transmisión, se suelen intercambiar tramas de control que al
recibirse, sirven de instrucción al dispositivo.
La segmentación de la información se da cuando el tamaño de la información a transmitir es mayor que la
máxima unidad de datos permitida por el protocolo utilizado. Las técnicas son diversas, pero también
obligan a llevar un control de la posición de la trama en el futuro mensaje reconstruido.
La sincronización es necesaria en cuanto que el receptor debe conocer a partir de qué bit empezar a
interpretar la información. Una técnica muy usada y fácil de entender es el uso de tramas de sincronismo y
campos de delimitación de trama. Para evitar la posible coincidencia en el contenido de la información con
lo que pudiera interpretarse como un campo o trama de señalización, se usan técnicas como el bit stuffing,
o inserción de bit, que consiste en la inserción de un bit, precisamente para evitar esta situación.
El control de flujo surge de la necesidad de adaptar la velocidad de transmisión entre emisor y receptor.
Aunque suele negociarse a nivel de transporte, el nivel de enlace también suele implementarlo con
mensajes de control, retroalimentación, y suele asociarse al control de errores.
La detección y corrección de errores se suele implementar añadiendo información redundante, en general
códigos CRC o códigos de redundancia cíclica y de paridad. Se basan en matemática discreta como los
códigos de Hamming o Reed-Solomon.
La detección de errores emplea técnicas en general denominadas FEC, que es el acrónimo inglés de
corrección de errores anticipada, y se orientan a indicar si se ha dado un error de transmisión en una trama.
Para ello se añade información redundante con algún criterio de cálculo, por ejemplo, si una trama contiene
un número par de unos, se inserta un 0 y si es impar, se inserta un 1. Así si se produce un error en un bit
transmitido, este criterio de paridad no se cumplirá y se sabrá que existe un error. Se habrá detectado.

285
Los códigos de redundancia cíclica (CRC), optimizan la paridad, complicando el algoritmo de cálculo de la
redundancia, de forma que se permite encontrar el error y la posición. También se llaman códigos
polinómicos, porque establecen una relación uno a uno entre un polinomio y una palabra de código.
La corrección de errores se basa en información redundante para eliminar el error. Cuanta más
redundancia, mayor número de errores se podrán corregir, a cambio de más carga de proceso. En general,
la tendencia es aligerar el proceso, ya que la fiabilidad de la transmisión cada vez es mayor.
La técnica más extendida es el uso de códigos de Hamming, usados para detectar y corregir errores. Se
basan en la distancia de Hamming, la diferencia (de bits) entre palabras de un código. Dos palabras que
disten d bits, se malinterpretarán si se dan d errores. Un código Hamming, detectará d errores si su
distancia es d+1 y podrá corregir d errores si posee distancia 2d+1.
4. PROTOCOLOS
Debe distinguirse entre protocolos del nivel de enlace y protocolos que forman parte de los mismos. Serían
una especie de subprotocolos o protocolos de función. Por ejemplo, Ethernet define un protocolo para LAN
que, prácticamente se corresponde con la norma IEEE 802.3. Sin embargo, IEEE 802.3 se refiere a una
capa llamada de acceso al medio, MAC, que casi viene a ser la capa física del modelo OSI y la norma LLC
(IEEE 802.2), sería la capa de enlace, nivel 2 o subred del modelo.
Así la cosa, la subcapa MAC LLC realiza control de enlace lógico (direcciones, protocolos de capa superior,
etc.) y puede usar otros protocolos, como por ejemplo parada y espera.
Las técnicas de control de flujo, aunque técnicas, son también protocolos, al establecer normas de proceso.
Estos protocolos, que podrían llamarse protocolos de función, para las funciones de control de flujo y
errores, suelen englobarse en lo que se da en llamar protocolos o técnicas ARQ, que es el acrónimo inglés
de respuesta-repetición automática. Se basan en el reenvío de tramas. Los protocolos más extendidos son:
Parada y espera simple. Consiste en envíar una trama y esperar asentimiento del receptor para enviar la
siguiente o retransmitirla si se produjo error.
Envío continuo y rechazo simple. Consiste en envío continuo de tramas, que el receptor va validando. Si se
produce error, se descartan todas las tramas a partir de la errónea y se solicita retransmisión.
Envío continuo y rechazo selectivo. Es transmisión continua y retransmisión sólo de tramas erróneas.
Cada nivel de la comunicación es un programa que implementa un protocolo. Cada instancia de ese
programa se denomina entidad y puede asociarse a la caja que representa ese nivel, para un proceso de
comunicación concreto. Cada entidad es proveedor de servicios a la capa inmediatamente superior.
Ejemplos de protocolos propiamente dichos del nivel de enlace son:
Protocolos de nivel de enlace de acceso WAN: PPP (Point to Point Protocol), HDLC (High-level Data Link
Control), X.25, Frame Relay, ATM, MPLS.
Protocolos de nivel de enlace de acceso LAN: IEEE 802.3 (Ethernet, en realidad 802.2, LLC, como se ha
explicado), IEEE 802.5 (Token Ring), IEEE 802.11 (WIFI), WEP o WAP.

286
TEMA 65. FUNCIONES Y SERVICIOS DEL NIVEL DE RED Y DEL NIVEL DE TRANSPORTE. TÉCNICAS.
PROTOCOLOS.

1. INTRODUCCIÓN
2. FUNCIONES Y SERVICIOS DEL NIVEL DE RED Y TRANSPORTE
2.1. Funciones y servicios del nivel de red
2.2. Funciones y servicios del nivel de transporte
3. TÉCNICAS
4. PROTOCOLOS

287
1. INTRODUCCIÓN
La función del nivel de red (modelo OSI) o interred (modelo TCP/IP) es la de enrutar la información. Sus
objetivos pueden resumirse en dos: independizar los servicios de capas superiores de la tecnología de
subred y ofrecer un plan de numeración uniforme.
La función del nivel de transporte es ofrecer un servicio de comunicación fiable y eficiente a sus usuarios,
los niveles superiores, haciendo uso de los servicios que le ofrece el nivel de red. Sus funciones pueden
resumirse en ofrecer un servicio orientado, o no, a conexión y la multiplexión de la comunicación.
2. FUNCIONES Y SERVICIOS DEL NIVEL DE RED Y TRANSPORTE
2.1. Funciones y servicios del nivel de red
Como se ha indicado, el nivel de red tiene como objetivo enrutar la información entre origen y destino. Este
objetivo se resume en la función de ocultar los detalles de subred a los protocolos de capas superiores,
proveyendo una numeración uniforme y en gestionar el servicio de comunicación.
La función del nivel de red, el enrutamiento, utiliza algoritmos que intentan buscar una ruta óptima entre
emisor y receptor. Una ruta es óptima si posee un coste mínimo. El coste, es un parámetro que representa
la dificultad de enviar datos. No se refiere exclusivamente al coste económico, puede ser un coste en
velocidad de transmisión u otros factores. La ruta óptima se elige teniendo en cuenta el mínimo coste.
Si la ruta que siguen los datos puede variar, se dice que el enrutamiento es dinámico. En algunos casos, la
ruta no cambia, por ejemplo, por no haber alternativa. Este caso se denomina enrutamiento estático.
El nivel de red está encargado además de evitar la congestión de la red. La congestión de un enlace o ruta
puede ser un parámetro de coste y en base a ese coste, decidir enviar los datos por una ruta alternativa.
Si la red ofrece servicios con calidad (QoS, Quality of Service) será el nivel de red el que reserve recursos
para cumplir las necesidades del servicio. De igual modo, si así se exige para su facturación, el nivel de red
debe contar el tráfico cursado.
Los datos tratados a nivel de red se denominan paquetes, aunque a veces, se usa la palabra paquete para
los datos de cualquier nivel. Para hablar propiamente, los datos del nivel de enlace deben denominarse
tramas, los de nivel de red, paquetes y los de nivel de transporte datagramas o segmentos.
El tamaño de los paquetes del nivel de red es variable y está en relación con la capacidad de la subred. Con
la mejora de las redes el tamaño del paquete ha ido incrementándose para obtener mayor eficiencia. En IP,
el tamaño máximo de paquete, en su versión clásica, la versión 4, es de 64 KB, pero en la versión 6 del
protocolo el tamaño se incrementa hasta los 4 GB.
Esta enorme diferencia evidencia la mejora de las nuevas redes, de forma que al incrementar el tamaño de
los datos efectivos, la relación con respecto a la información de control, es mayor, es decir, se dedica mayor
porcentaje de la capacidad de transmisión a información real, incrementando la eficiencia.
Hablar del nivel de red, es casi hablar del protocolo IP, por su esencia y valor didáctico. El protocolo IP,
versión 4, define un SAP denominado dirección IP, que consta de 32 bits agrupados en 4 bytes. Cada byte
se transforma en un número decimal. Ejemplo: 00001010.00101000.10101011.0000001 = 10.40.171.1
En principio, todas las direcciones IP de red son diferentes. Por ello se dice que una dirección IP identifica
un host o equipo de red. Todas las interfaces de los equipos que se conectan a la red tienen una dirección
IP distinta. Si un equipo tiene dos interfaces, este tendrá dos direcciones IP. Todas las direcciones IP de
una misma red tienen una característica común poseen el mismo prefijo. Así, un equipo se identifica
mediante su dirección IP y otros 32 bits llamados máscara de red, donde los n primeros son uno y los (32 –
n) restantes son cero. La máscara indica el prefijo de la red. Cada grupo de 8 bits se transforma en un
número decimal. Ejemplo: 11111111.11111111.11111110.0000000 = 255.255.254.0
Todas las direcciones IP de una red tienen la misma máscara de subred. La máscara indica en que ámbito
varían las direcciones de la red. Puede hacerse una analogía con el sistema telefónico: si se asocia la idea
de número de teléfono con una dirección IP, todos los teléfonos de una región, por ejemplo Madrid están en
una misma red, y eso se identifica con el prefijo 91, una máscara de red que sería 11-0000000. Si un
número de Madrid llama a otro, la central telefónica evaluará los dígitos que indica la máscara, en el
ejemplo los dos primeros porque la máscara posee dos unos al principio. Si el número destino empieza por
91 también, la centralita sabrá que el destino está en Madrid, en su LAN. Si los dos primeros dígitos no son
91, la llamada se enrutará a otra centralita. De manera similar funciona un router.
La información de control del protocolo, la cabecera, por tanto debe incluir varios datos. Los más
importantes son la dirección IP de origen y la de destino. Protocolos de capa de red son IP, IPX de Novell,
OSI CLNP (ConnectionLess Network Protocol), CCITT X.25 y X.75 o CCITT/ITU-T Q.931.

288
Los servicios del nivel de red se dividen en función de las prestaciones de la comunicación y distinguen dos
tipos: servicio orientado a conexión y servicio no orientado a conexión.
Un servicio orientado a conexión o CONS (Connection Oriented Network Service), requiere que se
establezca una conexión para el intercambio de datos, que al terminar, debe liberarse.
A un circuito establecido, se le denomina circuito virtual. Si es fijo se llama permanente, y si puede variar,
conmutado. Al usar un circuito virtual, todos los paquetes se transmiten por ese circuito, que tendrá un
identificador, indicado en las cabeceras. Cada router conoce los circuitos virtuales que pasan por él, y una
vez establecidos, se despreocupa del enrutamiento, con lo que el control del tráfico se facilita. El control de
errores y flujo puede ser más o menos exhaustivo, pero en general se ve favorecido por el hecho de
realizarse una transmisión secuencial de los paquetes.
Un servicio no orientado a conexión o CLNS (Connection Less Network Service) es aquel que no obliga a
establecer una conexión para el intercambio de datos. Los paquetes se lanzan a la red con la esperanza de
alcanzar el destino. Para ello, en la cabecera de control debe indicarse la dirección del receptor, pero no se
reserva ningún circuito específico, los datos pueden viajar por rutas diferentes. A este servicio también se le
conoce con el nombre de servicio de datagrama.
El control del tráfico se hace más difícil que en el servicio orientado a conexión, pero se tiene más holgura a
la hora de enfrentarse a congestión de red, porque se pueden seguir rutas alternativas. Si se realiza control
de errores y flujo, también se puede realizar con relativa facilidad.
2.2. Funciones y servicios del nivel de transporte
El nivel de transporte es el primero que presta un servicio extremo a extremo. Esto significa que es el primer
nivel al que se comunican emisor y receptor. A nivel de subred, un nodo se comunica con otro nodo de la
subred, que puede no ser el receptor final. Del mismo modo, a nivel de red, un router, se comunica con
otros routers, que, en un caso general, no son tampoco el receptor final.
El objetivo del nivel de transporte es el control (o no) de la comunicación. Por tanto los servicios que ofrece
son los de CONS o CLNS. Y son estos servicios los que obligarán a definir unas u otras funciones, como
por ejemplo el establecimiento de la comunicación o la retransmisión de segmentos.
La diferencia entre el servicio a nivel de red y a nivel de transporte se da precisamente en las funciones a
implementar. Lógicamente el servicio CONS, a nivel de red exige funciones como la reserva de recursos en
los routers. A nivel de transporte exige otras funciones, como la retransmisión.
En este punto debe verse la analogía con el nivel de subred para identificar también las diferencias. Así,
parte de las funciones del transporte también se realizan a nivel de subred (enlace). La diferencia es el
ámbito de las redes, ya que a nivel de subred, las funciones se refieren a una red homogénea. A nivel de
transporte son redes distintas, que pueden prestar servicios CONS o CLNS. Por tanto el nivel de red y
transporte definen una red encima de otras. Las funciones se repiten, pero ahora extremo a extremo. La
definición del servicio que prestará el nivel de transporte, debe ser coherente con las funciones
comprometidas en el nivel de subred.
Si el servicio es CONS, la conexión debe inicializarse, controlarse y liberarse. Estas funciones, entre otros,
las implementa el protocolo TCP (Transport Control Protocol). Si la red funciona bien y no es probable que
se produzcan errores, es lógico aligerar el protocolo confiando la comunicación a una filosofía de tipo “mejor
empeño”. Sería un servicio tipo CLNS, donde no se establece la conexión y los segmentos no se confirman.
En este caso de habla de un servicio de datagramas, que no garantiza la entrega de los datos.
En el servicio CLNS se envían datos y se espera contestación. Si no llega (se pierden datos), simplemente
se retransmite. Como ejemplo, este tipo de comunicación, se implementa en el protocolo de datagramas de
usuario o UDP, que es otro protocolo de la familia TCP/IP.
La función de multiplexión de la comunicación del nivel de transporte se refiere a la capacidad de un usuario
para ejecutar distintas aplicaciones (correo electrónico, consulta web, etc.) sobre la misma conexión de red.
Esto implica que debe existir un identificador para cada tipo de conexión, un SAP del servicio. A nivel de
transporte, el SAP se denomina puerto, que por tanto es un identificador de una conexión.
Un puerto se representa con 16 bits, lo que define un rango de 0 a 65.535. En cada puerto se puede instalar
el servicio que se desee, por ejemplo un servidor web o de Telnet. Pero, por costumbre, suelen usarse
ciertos puertos para ciertos servicios. Estos puertos se denominan puertos bien conocidos. En el caso de
los servidores web, el puerto bien conocido es el puerto 80.
Los equipos que trabajan a nivel de transporte son los firewalls, que gestionan las conexiones a los puertos.
Abrir un puerto en un router / firewall, significa permitir la conexión a ese identificador, a ese puerto, donde
existirá un servicio asociado.

289
3. TÉCNICAS
Las técnicas de implementación de las funciones y servicios a nivel de red y de transporte consisten en usar
información de control en la cabecera de los paquetes y segmentos.
Parte de esta información ya se ha adelantado. La identificación de las direcciones de red y puerto para el
origen y destino suponen los primeros datos a tener en cuenta. Pero, existe otra información como por
ejemplo el número de secuencia, para identificar el orden de un paquete segmentado, o el tamaño de la
ventana del protocolo de ventana deslizante.
Lógicamente, el protocolo TCP al ser más complejo que UDP, define una cabecera más compleja y por
tanto las técnicas se complican debido a que el servicio requiere más parámetros. En TCP los campos de
número de secuencia y confirmación, son utilizados para el control de la comunicación, para asentir la
correcta recepción de cada segmento.
4. PROTOCOLOS
En cuanto a protocolos de función, para el nivel de red, existen numerosos protocolos de enrutamiento que
implementan las funciones y servicios descritos.
Algunos ejemplos son EIGRP (Enchanced Interior Gateway Routing Protocol), OSPF (Open Shortest Path
First) o BGP (Border Gateway Protocol). En cuanto a la calidad de servicio, existen protocolos de reserva de
recursos como RSVP (Resource reSerVation Protocol), quizá el más didáctico.
A nivel de transporte, se ha dicho que en un servicio CONS, la conexión debe inicializarse, controlarse y
liberarse. Para inicializar la conexión se suele usar el protocolo llamado acuerdo de tres vias o three-way
handshake. Consiste en que antes de comenzar la comunicación, se da una fase de establecimiento de tres
pasos, en que el emisor pide la conexión, el receptor acepta o no, y por fin el emisor asiente otra vez.
El control de la comunicación, una vez establecida, consiste en ir confirmando segmentos según se van
recepcionando correctamente. Si existen errores, pérdidas, dúplicas o desórdenes en la recepción, es el
nivel de transporte el responsable de la solución, pidiendo retransmisión, ordenando o descartando
duplicidades. Suelen emplearse protocolos de ventana deslizante.
Una vez terminada la comunicación, la conexión se libera y se confirma. Si tarda demasiado la confirmación
de la liberación, se libera de igual modo. Es un protocolo de liberación de dos pasos.
En cuanto a ejemplos concretos de protocolos de nivel de red / transporte, los más conocidos pueden ser IP
/ TCP (UDP), definido por el DoD (Department of Defense, el Pentágono), IPX / SPX de Novell o ATP,
Appletalk Transaction Protocol, de la familia AppleTalk de Apple.

290
TEMA 66. FUNCIONES Y SERVICIOS EN NIVELES DE SESIÓN, PRESENTACIÓN Y APLICACIÓN.
PROTOCOLOS. ESTÁNDARES.

1. INTRODUCCIÓN
2. FUNCIONES Y SERVICIOS EN NIVELES DE SESIÓN, PRESENTACIÓN Y APLICACIÓN
2.1. Funciones y servicios del nivel de sesión
2.2. Funciones y servicios del nivel de presentación
2.3. Funciones y servicios del nivel de aplicación
3. PROTOCOLOS
4. ESTÁNDARES

291
1. INTRODUCCIÓN
Lo que queda por analizar en la arquitectura de la comunicación es definir la forma en que se usan los
servicios de la red. Es decir, los aspectos más orientados al usuario, como la codificación y formato de la
información o el interface entre los programas y el proceso que ofrece el servicio de comunicación.
Mientras estos problemas, son tratados de forma unitaria y abstracta por el modelo TCP/IP, que no entra en
profundidad, sino que se limita a especificar el interfaz entre capa de transporte y aplicación,el modelo OSI,
si describe más en detalle cómo estructurar los niveles superiores al de transporte. Lo desgrana en tres
niveles a los que denomina sesión, presentación y aplicación.
2. FUNCIONES Y SERVICIOS EN NIVELES DE SESIÓN, PRESENTACIÓN Y APLICACIÓN
2.1. Funciones y servicios del nivel de sesión
Las funciones del nivel de sesión añaden prestaciones a los servicios de la capa de transporte, al
estructurar y sincronizar los datos de forma que, por ejemplo, una comunicación cortada se pueda
restablecer a partir del punto donde se cortó. Presta servicios como la administración de interacciones y
sincronización de la sesión. Existen casos en que estos servicios pueden ser prescindibles.
El nivel de sesión permite a distintos sistemas establecer sesiones de trabajo. Una sesión permite el
transporte de datos, pero proporciona servicios avanzados como la conexión a un sistema remoto de tiempo
compartido o la transferencia de archivos.
Los servicios ofrecidos pueden resumirse en:
- Control del Diálogo: Simultáneo (full-dúplex) o por partes (half-duplex).
- Agrupamiento: El flujo de datos se puede marcar para definir grupos de datos.
- Recuperación: Procedimiento de puntos de comprobación, de forma que ante fallos entre puntos de
comprobación, la entidad de sesión retransmite desde el último punto de comprobación.
2.2. Funciones y servicios del nivel de presentación
La función del nivel de presentación es la adaptación entre formatos de representación de la información. Es
por tanto el primer nivel semántico. Sus funciones se refieren más al aspecto legible de la información. Su
desempeño consiste en establecer la correspondencia entre las representaciones de la información que
puedan hacer el origen y el destino, por ejemplo, conversiones de caracteres entre código ASCII y EBCDIC.
El nivel de presentación entrega los datos recibidos al nivel de aplicación transformándolos en el formato de
imagen, texto u otro, que solicite. También cuenta entre sus funciones, si son requeridas, el cifrado y
compresión de datos.
En principio, en el establecimiento de la comunicación los dos equipos implicados deberían negociar los
parámetros de comunicación como el formato de datos a usar. Sin embargo, en Internet, existen una serie
de formatos estándar que evitan esa negociación, por lo que la implementación de esta capa cada vez está
más difuminada.
2.3. Funciones y servicios del nivel de aplicación
El nivel de aplicación define el interface entre los protocolos de este nivel y los procesos del sistema
operativo, del usuario, etc. Representa para el usuario el punto de entrada a la red, aunque la relación entre
el usuario y el nivel de aplicación no es directa, en general se realiza con un programa interface. Ejemplos
son los navegadores web, programas de mensajería instantánea o correo electrónico.
Cada uno de estos programas implementa una serie de protocolos cuya definición es abstraída para el
usuario quien se limita a escribir un texto o pulsar un botón.
Esta es la función de la capa de aplicación, abstraer los aspectos de implementación de la comunicación al
usuario, definiendo protocolos e interfaces. A los protocolos de nivel de aplicación a veces se los denomina
servicios, por abuso del lenguaje. Así se habla del servicio web o de correo electrónico, para referirse en
realidad al protocolo. Tampoco debe confundirse con la referencia a un servidor.
3. PROTOCOLOS
Ejemplos de protocolos de nivel de sesión son NetBIOS (protocolo de Microsoft para compartir información
en red), NFS (Network File System, protocolo libre de intercambio de ficheros en red), SSL (Secure Socket
Layer, capa de conexión segura, para ofrecer seguridad en conexiones de red) o RPC (Remote Procedure
Call, o procedimiento de llamada remota, para ejecutar comandos en red).
A nivel de presentación, como su nombre indica, más que de protocolos, habría que hablar de estándares,
formatos o normas. Si se mira en conjunto podría también dirigirse a ellos como protocolos, que también

292
son normas, aunque la idea de protocolo se refiere a normas con carácter más dinámico (procesos) y las
normas o estándares a aspectos de carácter más estático.
Ejemplos de estas normas, o protocolos, a nivel de presentación son ASN.1 (Abstract Syntax Notation, que
es un estándar de representación de datos independiente de la máquina), GPX (GPS eXchange Format,
norma de intercambio de datos entre aplicaciones GPS) o las Firmas XML o XMLDsig, que es una norma de
firma digital bajo formato XML.
Por fin, ejemplos de protocolos de nivel de aplicación son HTTP (web), SMTP, POP, IMAP (correo
electrónico) o FTP y TFTP (transferencia de ficheros).
4. ESTÁNDARES
Para lograr una comunicación universal, como la que ofrece Internet, el uso de estándares y protocolos se
hace imprescindible. Por eso, como se ha explicado, es el nivel de presentación en el que los protocolos
son más bien estándares implementados.
A nivel de sesión y aplicación, los propios protocolos representan estándares, bien porque se propongan
desde instituciones con autoridad de recomendación, lo que suponen estándares de iure (de ley), bien
porque el mercado, o el público los popularicen, estándares de facto (estándares de hecho, que se imponen
o destacan por su uso extendido). Por su interés, destacan los estándares de codificación, de cifrado y
compresión de datos.
El cifrado de datos se refiere a la codificación de la información a transmitir de forma ininteligible por parte
de destinatarios ilegítimos o no autorizados. Protocolos de cifrado populares son los de clave pública, como
PGP, SSH o SSL.
La compresión de datos pretende utilizar al máximo la capacidad del medio de transmisión. Se basa en el
uso de algoritmos para reducir información redundante, como por ejemplo en la transmisión de un encuentro
de fútbol. Las imágenes que se transmiten prácticamente son la misma, salvo cada cierto tiempo en que se
mueve el balón o unos jugadores. Entonces, se puede transmitir un marco de referencia y enviar mucha
menos información, enviando sólo los cambios de una imagen a otra. Algunos estándares como ejemplo
son mp3, mp4, gif, mnp-5, mnp-7, V.42, etc.
Por fin, la codificación de datos se refiere a la traducción entre formatos o estándares distintos. Es un
servicio que se ofrece para hacer compatibles dos sistemas que usen distintos sistemas de codificación.
Sea, por ejemplo, una página web China, escrita con caracteres chinos. Si se hace una visita a ese sitio, la
información podrá verse con caracteres occidentales gracias al servicio de formateo de información.
Los estándares citados para la capa de presentación son ejemplos claros. Por su importancia, se ha dejado
para este apartado, un estándar extendido, XML, que ya se ha estudiado y que se orienta a la definición del
intercambio estructurado de información entre equipos. Sus propiedades le permiten ser utilizado en BBDD
y aplicaciones de cualquier tipo.

293
TEMA 67. REDES DE ÁREA LOCAL. COMPONENTES. TOPOLOGÍAS. ESTÁNDARES. PROTOCOLOS.

1. INTRODUCCIÓN
2. REDES DE ÁREA LOCAL
3. COMPONENTES
4. TOPOLOGIAS
4.1. Física
4.1.1. Estrella
4.1.2. Bus
4.1.3. Anillo
4.1.4. Mallada
4.2. Lógica
5. ESTÁNDARES
5.1. IEEE 802.3. Ethernet
5.2. IEEE 802.5. Token Ring
5.3. IEEE 802.11. WIFI
6. PROTOCOLOS
6.1. NetBIOS
6.2. SMB – SAMBA
6.3. NFS

294
1. INTRODUCCIÓN
Una LAN tiene un ámbito en principio reducido, que tradicionalmente se asimila a un edificio o distancias
cortas, con tecnologías de transmisión de alta tasa de transferencia y bajo coste. Esta idea cada vez es
menos precisa, ya que existen redes LAN extensas. Del mismo modo en redes que tradicionalmente se
considerarían MAN, se usan tecnologías de transmisión híbridas, muy similares a las tecnologías de
transmisión típicas de LAN. Al hablar de redes LAN, debe tenerse en cuenta la tecnología inalámbrica.
2. REDES DE ÁREA LOCAL
El desarrollo de las redes LAN y en general de las redes, ha sido paralelo al de la informática. Al principio,
los ordenadores eran caros y las redes intentaban aprovechar al máximo los recursos. Las primeras LAN se
montaban usando clientes “ligeros” o “terminales tontos”, simplificando, equipos sin disco que servían de
terminales remotos conectados a los servidores de la empresa para operar.
El desarrollo de nuevas tecnologías balanceó el proceso hacia el usuario. Los equipos y estaciones de
trabajo ya no eran tan ligeros y ofrecían inteligencia a la red. Este nuevo escenario contribuyó al desarrollo
de las redes LAN, ya que cada vez se exigía más velocidad de transmisión y prestaciones software.
La necesidad de compartir recursos requiere soluciones que ofrece perfectamente una LAN, al eliminar
redundancias, incrementar la productividad y ahorrar costes. En una red LAN deben tenerse en cuenta otros
factores como la escalabilidad (posibilidad de ampliación sin traumas). Este aspecto está muy logrado, y
cualquier ampliación de la red, suele ser transparente al resto de usuarios.
La flexibilidad, posibilidad de cambiar la configuración de red, permisos del usuario, tanto a nivel más físico
(VLANs) como a nivel lógico (dominios, por ejemplo) también se puede realizar en una LAN de forma ágil,
aunque depende del software con que se trabaje.
Los aspectos de seguridad pueden enfocarse desde un punto de vista físico o lógico. Físicamente se deben
establecer controles de acceso, protección física de los equipos, etc. En general, los administradores de la
LAN tienen en cuenta estos aspectos en la medida que obligan las leyes. Los aspectos lógicos, más
relacionados con el software están más difundidos y suelen estructurarse bien. Entre las características de
las LAN hay que identificar al menos, su topología, tecnología de transmisión, velocidad de transmisión,
escalabilidad y hardware y software.
La topología de LAN ya se ha estudiado: estrella, bus, anillo, árbol y mallada. También se ha presentado la
tecnología de transmisión LAN, bien red de difusión o broadcast, bien red de turno o token. La velocidad de
transmisión, varía en función de la tecnología. Los valores a recordar son 100 Mbps para FastEthernet,
Gbps (800Mbps) para GigaEthernet, 54 Mbps de Wifi, que en tasa efectiva se quedan en torno a la mitad y
16 Mbps de velocidad típica para Token Ring.
Los medios de transmisión típicos son el cable de par trenzado, coaxial, fibra óptica y transmisión radio. Las
LAN tienen la posibilidad de conectar una gran variedad de dispositivos diferentes y conectarse varias redes
LAN distantes a través de una WAN o Internet.
3. COMPONENTES
La parte hardware de las redes LAN ya ha sido presentada en cableado, interfaces y electrónica de red.
Sólo quedaría por describir, la conexión de los cables a los conectores en el caso del cable de par trenzado.
Para identificar cada cable en los extremos de un cable de par trenzado se usan colores. Los colores
usados son naranja, blanco-naranja, verde, blanco-verde, azul, blanco-azul, marrón y blanco-marrón. De los
ocho cables sólo se usan cuatro, en Ethernet y Fast Ethernet. En Gigabit Ethernet se usan los ocho. Los
cables se utilizan de dos en dos para transmisión y recepción porque se necesita un cable de referencia y
otro de tensión o nivel, para representar los bits.
Los cables van engastados en un conector RJ-45 macho. En los dispositivos de conmutación de red, tales
como hubs, switches o routers, existen conectores RJ-45 hembra para terminar de establecer el circuito.
Para montar un cable de par trenzado con conectores RJ-45 hace falta una crimpadora y un cúter o tijeras.
El proceso consiste en retirar parte de la cubierta externa de los pares, igualarlos e introducirlos en orden en
el conector. Una vez asegurado el orden correcto se usa la crimpadora para presionar los conectores
metálicos y sujetar la cubierta al conector. Este proceso se realiza en ambos extremos del cable.
El orden de los cables en los conectores depende de los dispositivos a conectar. Esta situación genera dos
tipos de configuración del cable: cable plano o recto y cruzado. En el cable plano los cables se disponen en
paralelo, de forma que ocupan la misma posición en ambos conectores extremos. El código de color a usar
es indiferente, lo importante es que se mantenga el orden.

295
En la configuración cruzada los cables 1 y 2 se usan para transmisión y los cables 3 y 6 para recepción
como se indica en la figura. Cualquier disposición que respete el par 1-2 para transmisión y 3-6 para
recepción sería válida. Para los cables cruzados existen normas y recomendaciones.
Una de las normas más aceptadas es la norma EIA/TIA 568B RJ45, que fija el estándar de cableado
(requerimientos mecánicos y eléctricos, y componentes). Son normas desarrolladas por la Electronics
Industry Association (EIA) y la Telecomunications Industry Association (TIA). El estándar 568B se conoce
también como AT&T y describe un orden para conexionado de los cables mostrado en la figura.

La razón de estas configuraciones es debido al funcionamiento de los equipos. Sea la conexión de varios
equipos a un hub. Un equipo transmite y el hub repite la información por el resto de sus bocas, pero
intercambia las señales de la transmisión y las pasa a recepción del resto de bocas. De esta manera lo que
el equipo emisor envió por los cables 1 y 2 se cruza a los cables 3 y 6 para que llegue a los receptores.
Equipos como los switches y hubs cruzan transmisión y recepción, por tanto usan cables rectos para
conectarse con PCs. Los PCs, routers, impresoras, cifradores, etc. no cruzan transmisión y recepción por lo
que para conectarse directamente entre si se usan cables cruzados. Muchos de los equipos comerciales
actuales detectan automáticamente la configuración de los cables de forma que cruzan o no transmisión y
recepción según corresponda para una correcta comunicación.
4. TOPOLOGÍAS
La topología de una red es la forma de disponer los equipos en la red. La topología a implementar en una
red concreta depende de factores como el coste, número de equipos en la red, tipo de acceso al medio, etc.
Se pueden diferenciar otra vez dos tipos de topologías, la física y la lógica.
La topología física se refiere a la forma que dibuja la red. La topología lógica lo hace a la forma de
organizarse la transmisión en la red. Se distinguen dos: difusión (broadcast) y token.
La difusión consiste en lanzar la información al medio de transmisión de forma que está disponible a todos
los equipos. El acceso al medio se realiza cuando se necesita. Esto puede provocar conflictos o colisiones
que habrá que resolver si dos equipos intentan transmitir a la vez. Es el caso de Ethernet o Wifi. Token o
turno consiste en la transmisión cuando llega un turno que se envía por la red. Cuando un equipo tiene el
turno, puede transmitir. Transmita o no, al terminar, cede el token a la siguiente estación. No se producen
colisiones. Es el caso de Token Ring y Token Bus.
Las topologías física y lógica están estrechamente unidas y en la mayoría de casos las referencias a la
topología son referencias a la topología física, donde prácticamente se supone que una topología en estrella
va a usar una topología lógica de difusión. Se distinguen las siguientes topologías:
4.1. Física
Según la topología de la red, es decir, según la forma física que dibuja su forma de conexión un sistema en
red se clasifica en red en estrella, en bus y anillo.
4.1.1. Estrella
Todas las estaciones se conectan a un nodo central o concentrador. Si la red es cableada, los equipos se
conectan con cables dedicados. Es una red fácil de instalar y permite detectar errores de forma simple. Si
un equipo falla sólo falla ese, pero la red queda inoperativa si falla el concentrador.
Al diseñar una red en estrella hay que contar con su complejidad y número de equipos que la formarán.
Ventajas que ofrece son aceptar terminales con tasas de transmisión diferentes, facilidad de detección de
averías y posibilidad de uso de distintos medios de transmisión.
Como inconvenientes destacan lo caro del cableado, vulnerabilidad ante caídas del concentrador y
ralentización de la red ante picos de actividad elevada. Puede encontrarse el término “topología en árbol”,
referido a una topología en estrella que se repite en alguna de sus ramas. No tendría más interés si no
fuese por algunas consideraciones:
Si se combinan varios hubs en una red tipo estrella o árbol, no pueden generarse bucles. En este caso, la
red dejaría de funcionar. Para evitar estos problemas existen algoritmos que los detectan y evitan. Un
ejemplo es el protocolo de expansión de árbol, o STP, spaning-tree protocol, que implementan los switches.

296
4.1.2. Bus
Una red en bus se conecta con un sólo cable con terminaciones. Es fácil de instalar y no existen nodos
centrales. Presenta problemas si hay una discontinuidad en el bus y pueden ser difíciles de localizar. Todos
los equipos comparten el bus y se conectan a él, en general usando conectores en T.
Al diseñar una red en bus hay que tener en cuenta su complejidad, en general da solución a pequeñas
redes con poco tráfico. Entre sus ventajas se encuentran la facilidad de crecimiento e instalación de nuevos
equipos. Desventajas son la máxima longitud de cable a usar, no permitir la conexión de redes tan grandes
como Ethernet y el sistema no reparte los recursos por igual. Suele usar tecnología Token Bus y cable
coaxial. Prácticamente han sido sustituidas por redes tipo Ethernet por ser más barata y escalable.
4.1.3. Anillo
Una red en anillo es una red en bus en la que se unen los extremos. Es difícil de instalar y mantener. Si se
rompe el anillo la red cae. Cada estación realiza funciones de repetidor, enviando la información a la
siguiente estación del anillo. Para implementar una red en anillo hay que tener en cuenta el hardware de red
y los tiempos de espera medios, que suelen ser altos.
Presentan respuestas buenas frente a picos de transmisión y es fácil ampliarla. Ventajas son la
independencia de nodos centrales, redundancia y no existir colisiones. Inconvenientes son la complicación
de la instalación y posibles problemas con los repetidores. En LAN se usan cable coaxial y tecnología Token
Ring. Prácticamente han sido desplazadas por Ethernet.
Esta topología es común en redes MAN y WAN con fibra óptica. La disposición suele ser la de un doble
anillo de fibra óptica para ofrecer redundancia y disponibilidad. Las tecnologías de transmisión con fibra
óptica en redes MAN y WAN, están pensadas para la gestión y transporte de grandes volúmenes de
información. Una de las más utilizadas es JDS, Jerarquía Digital Síncrona, o SDH por sus siglas en inglés.
4.1.4. Mallada
Una topología mallada es aquella que conecta cada equipo de la red con el resto, lo que no ofrece una
solución óptima, aunque si una alta redundancia. En un caso general no se usa un mallado total, sino que
se establecen varias conexiones de un nodo con los adyacentes. Esta disposición se suele dar en redes
WAN, en núcleos de red de operadores para proveer alta disponibilidad frente a fallos.
Pueden existir casos en que se aplique un cierto mallado en redes locales por las mismas razones. Al
permitir que la información viaje de origen a destino por distintas rutas cada paquete de datos, se trata de
forma independiente en la red. La condición de diseño de una red mallada es el compromiso entre coste y
funcionalidad, ya que para una red de pocos nodos, el número de enlaces puede no ser muy elevado, pero
una malla total implica un número de enlaces que crece con el cuadrado del número de nodos en la red.
4.2. Lógica
Según la topología lógica de las redes LAN se diferencian redes de difusión y de turno o token. Esta
diferencia intrínsecamente se refiere a la forma en que se accede al medio, es decir, al cable o al aire. En
las redes con topología de difusión, los equipos envían la información depositándola en el medio cuando
tienen que transmitir. En principio, no esperan una señal de inicio, simplemente, ante la necesidad de
transmisión arrojan los datos al medio y es el protocolo el que se encarga de conseguir que la información
llegue al destino.
La topología lógica de turno, se basa en transmitir la información, en los instantes de tiempo que se asignen
al efecto. Por tanto, si se ha de transmitir, ha de esperarse el turno. El turno se suele implementar con una
señal llamada testigo, como en las carreras de relevos, que en inglés recibe el nombre de token.
La primera derivada de esta clasificación es que en las redes de difusión puede darse la situación
denominada colisión, consistente en que dos equipos (o más) intenten transmitir al mismo tiempo. Para ello,
se establecen mecanismos para evitar y solucionar este inconveniente. Por ello, se ha dicho que, en
principio, los equipos no esperan. Sin embargo, si hay colisiones, si habrá un cierto tiempo de espera, para
que al retransmitir no se vuelva a colisionar. Estos aspectos se definen en los estándares y protocolos de
LAN que se explican a continuación.
5. ESTÁNDARES
Simplificando, en una LAN para conectar dos elementos basta con disponer de dos hilos de Tx y dos de Rx
y tarjetas de red que empleen la misma norma. También podría decirse, que serían necesarias únicamente
dos antenas que empleen la misma norma.
A continuación se presentan las tecnologías más utilizadas en redes LAN lo que ofrece una visión completa
de su funcionamiento.

297
5.1. IEEE 802.3. Ethernet
Entre las normas y recomendaciones del IEEE se encuentra la IEEE 802.3 y sus variantes, también
conocida como Ethernet. Es el estándar de redes LAN más extendido. IEEE 802.3 y Ethernet no son
especificaciones exactas, pero a efectos prácticos se tratan y se refieren como si fueran la misma norma.
Ethernet define una red de difusión con una topología típica en estrella. Los equipos acceden a la red
mediante contienda. Su especificación se llama CSMA/CD, o Acceso al Medio por Sensibilidad de Portadora
/ Detección de Colisiones. Si un equipo quiere transmitir, comienza por comprobar si hay alguna señal
presente en el cable, es decir, si hay otra estación transmitiendo (CSMA). Si hay datos, el equipo espera
para transmitir. Si el canal está libre, el equipo transmite.
Si dos equipos escuchan y no detectan actividad, pueden intentar transmitir justo a la vez. Esto produce una
colisión. Si se produce colisión, hay que retransmitir. En las primeras implementaciones del protocolo, no se
detectaba la colisión hasta el final de la transmisión. La mejora CD, Colission Detection, implementa la
detección temprana de colisiones, de forma que al detectarse la colisión, los equipos dejan de transmitir. El
protocolo está programado para que las retransmisiones no se efectúen a la vez.
De esta característica se deriva el concepto de dominio de colisión, el conjunto de todos los equipos de la
red, que al transmitir pueden generar una colisión. Esta idea se enfrenta a la de dominio de difusión, o
conjunto de equipos que pueden recibir mensajes de difusión en la red. Esto no implica que sus datos
colisionen. Una red Ethernet representa un único dominio de difusión, aunque según su estructura puede
haber varios dominios de colisión.
Para la transmisión, Ethernet utiliza
una codificación Manchester
diferencial. En la información que
se transmite va incluida la dirección
MAC origen y destino.
Los datos que se envían con el protocolo Ethernet se estructuran en paquetes, que por estar a nivel dos se
denominan tramas. El formato de trama Ethernet es:
Lo que debe
conocerse es la
estructura de tramas y
el funcionamiento de
la red.
La función de los campos de la trama Ethernet es la siguiente:
- Preámbulo: Secuencia de 7 Bytes usada para sincronizar y estabilizar el medio físico antes de iniciar la
transmisión de datos. El patrón del preámbulo es: 10101010… (En total 7 Bytes)… 10101010. Estos bits se
transmiten en orden, de izquierda a derecha y en código Manchester.
- SOF (Inicio de Trama - Start Of Frame): Campo de 1 Byte con un patrón de 1s y 0s alternados que termina
con dos 1s consecutivos. El patrón SOF es: 10101011. Indica que el siguiente bit será el más significativo
del campo de dirección MAC destino.
Aunque se detecte una colisión durante la emisión del preámbulo o del SOF, el emisor debe continuar
enviando todos los bits de ambos hasta el fin del SOF.
- Dirección destino: 6 Bytes que especifican la dirección MAC de tipo EUI-48 a la que se envía la trama.
Esta dirección de destino puede ser de una estación, de un grupo multicast o la dirección broadcast.
- Dirección origen: 6 Bytes con la dirección MAC de la máquina que genera la trama.
- Tipo: Campo de 2 Bytes que identifica el protocolo de red de alto nivel asociado a la trama o la longitud del
campo de datos. La capa de enlace de datos interpreta este campo. (En la IEEE 802.3 es el campo longitud
y debe ser menor o igual a 1526 bytes).
- Datos: Campo variable de 0 a 1500 Bytes. Es la información que se transmite. Contiene información y
cabeceras de los niveles superiores.
- Relleno: Campo de 0 a 46 bytes utilizado cuando la trama Ethernet no posee los 64 Bytes mínimos para
no presentar problemas de detección de colisiones cuando la trama es muy corta.
- FCS (Frame Check Sequence - Secuencia de Verificación de Trama): Son 4 Bytes con un CRC (Código de
Redundancia Cíclica). El emisor calcula el CRC de toda la trama, desde el campo destino al campo CRC
suponiendo que vale 0. El receptor lo recalcula, si el valor calculado es 0 la trama es válida.

298
En la Ethernet típica, cada host se conecta al concentrador con dos pares de alcance típico hasta 100 m.
Fast Ethernet tiene una tasa de 100 Mbps, destacando el 100baseT4 con cable UTP y CSMA/CD como el
10baseT. 100baseTX posee transmisión dúplex total y UTP cat. 5. GigaEthernet, logra transmisiones de
hasta 1000Mbps. El 1000baseT usa los 4 pares de UTP cat. 5 y el 1000baseCX usa 2 pares del cable STP
blindado. Si la conexión se hace con fibra óptica, FastEthernet cuenta con la norma 100baseFX y
GigaEthernet con 1000baseSX y 1000baseLX. La siguiente tabla resume el hardware y sus propiedades:
Tipo/Característica Cable Conector Tasa de Tx. Distancia Máxima
10base5 Coaxial Grueso BNC 10Mbps 500m
10base2 Coaxial BNC 10Mbps 200m
10baseT Par Trenzado RJ45 10Mbps 100m
100baseTX UTP cat5 RJ45 100Mbps 100m
100BaseT4 Par Trenzado RJ45 1Gbps 100m
1000BaseTx Par Trenzado RJ45 1Gbps 100m
100baseFX FO multimodo ST 100Mbps 400m
1000BaseFX FO multimodo ST 1Gbps 100m
5.2. IEEE 802.5. Token Ring
La norma IEEE 802.5, básicamente define las especificaciones Token Ring y muestra una topología en
anillo. Token Ring fue desarrollado por IBM en la década de los 70 y se basa en una red por turno.
Actualmente Token Ring está prácticamente obsoleto por el mayor rendimiento que ofrece Ethernet. Sin
embargo, ilustra bien la naturaleza de este tipo de tecnología.
Su funcionamiento se resume en que cada elemento habla sólo con el contiguo. Con este sistema se evitan
colisiones. Existe una trama que va circulando por toda la red constantemente aún cuando no hay
transmisión, el token o testigo. Existe el problema de que un corte en la red provoca el corte de la red
entera. El token sólo puede retenerse cierto tiempo en cada estación, típicamente no más de 10 ms.
Token Ring suele utilizarse con cable coaxial, pero puede implementarse con par trenzado. Las distancias
máximas de la red se especifican en torno a 350 m y la velocidad máxima de transmisión entre 4 y 16 Mbps,
aunque hay normas como HSTR (Token Ring de Alta Velocidad), que especifican velocidades de hasta 100
Mbps, pero no suelen estar soportadas, razón por la que Ethernet es una opción más interesante.
El formato de trama de
datos Token Ring es:
Siendo su significado:
SD: Delimitador de comienzo de trama AC: Control de Acceso
FC: Campo de Control Destino: Dirección MAC de destino
Origen: Dirección MAC origen FCS: Secuencia de verificación de trama - checksum
ED: Delimitador de fin de trama FS: Estado de trama
No se profundiza en las funciones que realiza la información de cada campo, simplemente se enumeran.
Hay que notar su gran parecido con la trama Ethernet. Esto es importante para comprender la diferencia
entre el switch y el bridge. En principio, un switch no podría conectar una red Ethernet y otra Token Ring.
Sin embargo un bridge si se diseña para esas labores de puente para la conexión de redes similares. Hoy
día, no tienen mucho sentido su utilización porque Token Ring prácticamente ha desaparecido. Lo
importante es tener una idea de su definición.
5.3. IEEE 802.11. WIFI
La norma IEEE 802.11 o Wifi define, para una red LAN, la capa de subred con una tecnología de
transmisión inalámbrica.
En la banda de 5 GHz se usan hasta 52 portadoras multiplexadas por división ortogonal de frecuencia
(OFDM) con tasa máxima de 54 Mbps y real de unos 20 Mbps. La norma 802.11g (utilizada en Wifi
doméstico) define 11 canales configurables. El acceso al medio es CSMA/CA y el despliegue puede ser en
modo infraestructura (ESS) o modo ad-hoc (BSS), ya presentados.
La asignación de canales usualmente se hace en el Access Point. En las redes “ad-hoc” los clientes
detectan automáticamente el canal. Todas las versiones de 802.11x son compatibles entre sí.

299
Para ofrecer seguridad, Wifi utiliza típicamente dos métodos de cifrado en la transmisión: WEP y WPA. WEP
(Wired Equivalent Privacy, privacidad equivalente cableada) es un método de seguridad para redes
inalámbricas que emplea el algoritmo de cifrado RC4 de RSA Data Security. No es seguro.
Para proteger la integridad de los datos (que no sean modificados por un intruso), se aplica un algoritmo
(CRC-32) al texto en claro, que genera un valor de comprobación de integridad (ICV). El ICV se añade al
texto cifrado formando una especie de firma digital y se envía. El receptor descifra el mensaje con la clave y
vuelve a recalcula la firma. Si coincide con el vector ICV recibido, se supone integridad de los datos.
WPA se define en la versión 802.11i, ofrece más seguridad que WEP y utiliza un servidor de autentificación
que distribuye claves diferentes a cada usuario. Puede utilizarse en modo de clave pre-compartida (PSK-
Pre-Shared Key). También utiliza RC4 con clave de 128 bits y un vector de inicialización de 48 bits.
La mejora con respecto a WEP es la implementación del Protocolo de Integridad de Clave Temporal o TKIP
por sus siglas en inglés, que cambia claves dinámicamente. Cuando se combina con un vector de
inicialización (IV) más grande, evita los ataques estadísticos a los que es susceptible WEP.
La autenticación y cifrado WPA mejora la integridad de la información. La comprobación de redundancia
cíclica CRC-32 usado en WEP es inseguro, ya que es posible alterar la información sin conocer la clave.
WPA implementa un MIC (Código de Integridad del Mensaje “Michael”) y protección contra ataques de
repetición. La versión WPA con PSK se denomina WPA-Personal y WPA2-Personal.
La versión con autenticación 802.1x/EAP, se la conoce como WPA-Enterprise y WPA2-Enterprise. WPA2
utiliza el algoritmo de cifrado AES (Advanced Encryption Standard) y se considera seguro de acuerdo a lo
establecido en el estándar 802.11i.
Puede realizarse una comparación entre los tipos de LAN presentados. Token Ring está prácticamente
desechado debido al mayor coste y menor velocidad que Ethernet.
La decisión de la tecnología a emplear requerirá un compromiso entre coste y prestaciones, que en general
decantarán la balanza a favor de Ethernet, a cambio de un mayor coste que Wifi. Wifi, ofrece menor coste,
pero en función del número de equipos puede perder prestaciones más rápido.
Es más cómodo, al permitir movilidad y más inseguro, lo que implica un esfuerzo adicional, pero representa
una solución adecuada para muchas aplicaciones. La siguiente tabla resume las características de las
tecnologías LAN:
Tecnología LAN Protocolo Soporte TX Modo Velocidad Topología
Ethernet CSMA/CD Cable Pares HD-HUB DC- Switch 10 Mbps Bus

Fast Ethernet CSMA/CD Par / Fibra HD / DC 100 Mbps Bus / Estrella


Giga Ethernet CSMA/CD Par / Fibra HD / DC 1 Gbps Bus / Estrella
Token Ring Token Capture Fibra HD / DC 4-16 Mbps Anillo
FDDI Token Capture Fibra HD / DC 100 Mbps Doble anillo
WIFI CSMA/CA Radio HD – HUB 54 Mbps Estrella
6. PROTOCOLOS
Los protocolos usados en LAN y el software de red que los implenta están altamente estructurados. Puede
distinguirse entre software de sistemas o aplicaciones y software de red. Estos dos niveles diferencian la
programación de las funciones más cercanas al usuario de la programación destinada a la comunicación.
Cada vez están más difuminados porque los lenguajes de programación ofrecen muchas funcionalidades de
soporte para la red.
En general, los sistemas operativos de red que trabajan en redes LAN implementan los niveles inferiores de
los modelos TCP/IP y OSI, hasta la capa de aplicación. El NOS sirve de interface entre usuario y los
programas y servicios de red. Tres aspectos deben quedar claros: los tipos de servicio, primitivas de
servicios y relación entre servicios y protocolos.
Los servicios pueden ser orientados a conexión y no orientados a conexión. En los servicios orientados a
conexión se establece la conexión, se usa y se libera. En los no orientados a conexión los paquetes pueden
seguir distintas trayectorias y recibirse en desorden.
En cuanto a su calidad, los servicios pueden ser fiables y no fiables. Los servicios fiables no pierden datos y
hacen que el receptor acuse recibo de mensaje. Esto introduce carga de proceso y retardos. Un servicio no
fiable no acusa los recibos de mensajes, no garantizan la recepción y se suelen denominar servicio de
datagrama.

300
Si no se necesita conexión explícita pero se desea fiabilidad, puede usarse un servicio de datagrama con
acuse.
Las primitivas de un servicio son el conjunto de operaciones que permiten utilizar un servicio y que por tanto
lo definen. Cada primitiva o instrucción suele dividirse en clases, que especifican qué realiza. Ejemplo: Sea
una primitiva llamada CONNECT, que indica una conexión.
La conexión posee varios aspectos y por tanto se distinguen varias operaciones de la primitiva como
CONNECT.indication, la instrucción de indicación, CONNECT.request, instrucción de respuesta, etc.
Por último, la relación entre servicio y protocolo es la siguiente: el servicio es un conjunto de primitivas que
ofrece un nivel de red a otro nivel superior. Dicho de otra forma, el conjunto de operaciones que la capa
superior puede realizar gracias al nivel inmediatamente inferior, es el servicio que se le presta. Por tanto, un
servicio se refiere a la interface entre capas, no a su implementación. Un protocolo es un conjunto de
normas que gobiernan el modo de comunicación entre entidades pares de una arquitectura. Se refiere a la
comunicación, al mismo nivel, de equipos diferentes.
En general, los protocolos definen unos servicios, que en las LAN, en general se orientan a compartir
recursos y por tanto, deben ser gestionados. Definir correctamente los usuarios, ser consciente de los
recursos que se administran y en consecuencia asignar los permisos justos a cada usuario, es una labor
delicada, responsabilidad del administrador de la red.
Para ofrecer una visión de cómo se pueden compartir recursos en una LAN, se estudian los protocolos
NetBIOS, SAMBA y NFS.
6.1. NetBIOS
NetBIOS es el acrónimo de “NETwork Basic Input Output System”. Fue diseñado por IBM en 1984.
Constituye un interfaz que provee los servicios de sesión descritos en la capa 5 del modelo OSI.
Hace uso de otros protocolos para su transporte, en general TCP/UDP, ya que no define una estructura
para la transmisión. Por esto en 1985 IBM diseñó un protocolo de transporte para NETBIOS, NetBEUI
(NETBIOS Extended User Interface), diseñado para LANs de hasta 255 equipos. Existen equivalentes para
SPX de Novell y el RFC 1001 y 1002 del IETF, que sirven de base para WS y SAMBA.
En cuanto al tipo de servicio, NetBIOS puede ofrecer una comunicación orientada a conexión o no. A
diferencia de, por ejemplo IP, que usa direcciones IP, o TCP, que usa puertos, NetBIOS usa nombres en
vez de números como puntos de acceso al servicio.
Los nombres NetBIOS en una red, son únicos. Cuando un programa necesita un servicio NetBIOS, se
ejecuta una interrupción de software que es atendida por el controlador del adaptador de red.
El interfaz NetBIOS define cómo manejar las interrupciones y sus servicios, que se identifican con el campo
NCB_COMMAND de Network Control Block, de un comando NetBIOS. Estos servicios se pueden dividir en
cuatro grupos básicos: General Services, Naming Services, Session Services y Datagram Services.
NETBIOS es un protocolo un tanto rudimentario, pero popular al ser implementado por WS. Usa los puertos
137 (Name Service), 138 (Datagram Service) y 139 (Session Service). Básicamente asigna un nombre único
a cada equipo para ser identificado en la red. Esto obliga a tener un servicio de resolución de nombres que
traduzca nombres NETBIOS a, por ejemplo, direcciones IP, de modo similar a DNS. Los mecanismos más
utilizados de resolución de nombres NetBIOS en direcciones IP son:
- Memoria caché de nombres NetBIOS: En WS se mantiene una tabla de nombres NetBIOS asociados a
sus direcciones IP. Se usa para la resolución de nombres antes de cualquier otro mecanismo. Se puede
comprobar el contenido de la caché NetBIOS con el comando nbtstat.
- WINS (WS Internet Naming Service): Es un servidor de nombres NetBIOS (NBNS). Al arrancar un equipo,
WINS registra su nombre NetBIOS y su dirección IP y lo guarda en la tabla de resolución de nombres WINS.
El cliente WINS de cada equipo WS debe conocer la dirección IP del servidor. Si un equipo NetBIOS se
comunica con WS, debe consultar al servidor WINS, que devuelve la relación nombre NetBIOS-dirección IP.
- Resolución de difusión: Es un mecanismo similar a ARP. Si no hay servidor WINS, o éste no puede
resolver el nombre NetBIOS, se envía un mensaje de difusión preguntando por ese nombre. El equipo con
el nombre NetBIOS por el que se pregunta responde con su dirección IP.
- LMHOST: Si fallan los anteriores mecanismos, se usa LMHOST, un archivo de texto, similar al archivo
HOSTS usado en la resolución de nombres en redes TCP/IP. Cada equipo tiene un archivo LMHOSTS, que
puede resolver nombres NetBIOS de servidores de otras LAN. Se gestiona de forma manual. Esto implica
su actualización al cambiar la red. En redes grandes con elevado tráfico se recomienda la utilización de
servidores WINS para aumentar la eficiencia de la red.

301
6.2. SMB – SAMBA
SMB es el acrónimo de Servidor de Mensajes en Bloque. Es un protocolo de capa de aplicación diseñado
para compartir recursos, archivos e impresoras. Es importante por ser utilizado en los sistemas operativos
de Microsoft, que implementan una variante ampliada denominada CIFS (Common Internet File System).
El entorno Linux utiliza SMB con una implementación libre llamada SAMBA, que incluye varios servicios y
protocolos de Microsoft precisamente para poder establecer compatibilidad entre sistemas tipo UNIX y WS.
En general, y por abuso del lenguaje, se suele decir que SAMBA establece compatibilidad entre el protocolo
NetBIOS y el mundo Linux, englobándose en esta referencia a NetBIOS, otros servicios como SMB o RPC.
Para recordarlo, como idea de referencia puede ser válida, teniendo en cuenta que es algo más amplio.
Al usar Samba, los recursos que se comparten en un sistema tipo Linux pueden utilizarse por máquinas WS
que los verán como carpetas de red o similar. Del mismo modo, un recurso compartido por un equipo de red
con sistema WS puede ser visible a uno Linux que tenga Samba. Cada recurso puede añadir permisos de
acceso a las protecciones del sistema de archivos usado en Linux. La configuración de Samba se logra
editando el archivo smb.conf, disponible en /etc o /etc/samba.
Samba permite administrar colas de impresión y autentificar con su propio archivo de usuarios o validarlos
haciendo las veces de Controlador Principal de Dominio, o simulando un dominio Active Directory.
6.3. NFS
NFS es el acrónimo de “Network File System”. Fue diseñado por Sun en 1984 y constituye un protocolo de
aplicación utilizado en redes LAN para la implementación de sistemas de archivos distribuidos.
NFS es una propuesta de estándar cuya definición se realiza en el RFC 1094 del IETF (NFSv2). Se diseñó
para trabajar independientemente de la plataforma en que se montase.
El sistema, permite a los usuarios autorizados acceder a archivos remotos de la LAN, como si estuvieran en
local. Se transporta sobre UDP y un puerto típico de utilización es el 2049, aunque habitualmente varía. No
ofrece demasiada seguridad, por lo que a veces, en broma, se denomina “No File Security”.
El aspecto de la seguridad con NFS no es trivial, ya que sólo utiliza una lista de control de acceso basada
en direcciones IP o nombres. Por tanto, al implementar el servicio, el administrador de la LAN debe tener en
cuenta la recomendación de situarlo tras un firewall. NFS no implementa un sistema de contraseñas para el
acceso y se recomienda la instalación de nfs-utils y portmap.
Las operaciones de NFS sobre archivos se hacen de forma síncrona, es decir, la operación de que se trate,
sólo se da por ejecutada si se han realizado todas las tareas implicadas. Esta es la forma de garantizar la
integridad de los datos. La arquitectura de NFS es típica cliente-servidor. La compartición de recursos que
ofrece NFS permite que por ejemplo, los clientes o estaciones de trabajo de la LAN utilicen menos disco
duro, y por tanto, la información a compartir esté centralizada.
Las carpetas o archivos comunes pueden ser montados en el servidor para liberar espacio en los clientes y
permitirles acceder desde cualquier terminal de la LAN. También pueden compartirse dispositivos físicos
como unidades de CD, DVD, etc.
NFS posee tres versiones ampliamente difundidas. La más antigua es la conocida como versión 2,
soportada por la práctica totalidad de SO. La versión 3, incluye mejoras como tratamiento de errores y
archivos de tamaño variable. No es totalmente compatible con la versión 2. La versión 4 añade funciones de
seguridad como Kerberos y la utilización de cortafuegos y listas de control de acceso.

302
TEMA 68. SOFTWARE DE SISTEMAS EN RED. COMPONENTES. FUNCIONES. ESTRUCTURA.

1. INTRODUCCIÓN
2. SOFTWARE DE SISTEMAS EN RED
2.1. Software Cliente
2.2. Software Servidor
2.2.1. WINDOWS
2.2.2. UNIX
3. COMPONENTES
3.1. Servidor web
3.2. Servidor de correo electrónico
3.3. Servidores DHCP y DNS
3.4. Servidor Proxy y Cortafuegos
3.5. Otros servidores
4. FUNCIONES Y ESTRUCTURA
4.1. Funciones y estructura de la comunicación
4.2. Funciones y estructura de servidores

303
1. INTRODUCCIÓN
El software que controla las funciones de red se denomina sistema operativo de red, o NOS, Network
Operating System. En general se integra en el sistema operativo de la máquina.
El software de los sistemas de red puede clasificarse en software de usuario y software de red o servidor. El
primero se refiere a aplicaciones que facilitan al usuario el acceso a servicios y el software servidor es el
diseñado para prestar un servicio concreto.
2. SOFTWARE DE SISTEMAS EN RED
2.1. Software Cliente
El software de sistemas en red de la parte cliente está orientado a proporcionar un interfaz al usuario de un
servicio. En general su funcionamiento es popular, son programas es que establecen comunicaciones a un
servidor que especifica el usuario, con las normas definidas en el protocolo del que se trate.
Las particularidades del protocolo permanecen ocultas al usuario. Puede pensarse en un navegador web.
No es necesario conocer la cabecera del protocolo HTTP para navegar, pero si se debe escribir www y el
nombre del servidor web al que conectarse en la barra de direcciones. El resto del proceso prácticamente
permanece oculto. El software cliente, suele ser bien conocido. Cabe destacar el siguiente.
- Navegador web. Es el software cliente que sirve al usuario para conectarse a un servidor web y visualizar
contenidos web. La conexión a un servidor web se puede realizar con otros programas, pero para las tareas
más habituales de consulta se utiliza el navegador.
Los navegadores son herramientas muy potentes. Pueden realizar conexiones de distintos tipos, como ftp,
hiperenlaces a documentos, etc. y ser la entrada de distintos tipos de virus, inserción de código y otros.
Un navegador puede necesitar complementos de compañías de software para visualizar ciertas web, como
ejemplo de estos complementos o “plugins” cabe citar los de java o flash. Ejemplos de navegadores web
son MS Internet Explorer, Mozilla Firefox o Safari de Apple.
- Cliente de correo electrónico. Es software que sirve para gestionar el correo electrónico desde la parte
cliente o de usuario. Funcionan conectándose a un servidor de correo, que previamente ha debido ser
configurado en el programa. El interface permite al usuario realizar las operaciones habituales de gestión de
correo: envío y recepción, archivo y clasificación, etc.
Los protocolos de correo que deben conocerse son SMTP, para envío y recepción, POP3 e IMAP, para
recepción. MIME son las Extensiones de Correo de Internet Multipropósito y representan un conjunto de
normas definidas para el intercambio a través de Internet de ficheros de cualquier tipo. Se definió porque en
un primer momento no era posible adjuntar ficheros en el correo. Ejemplos de clientes de correo electrónico
son MS Outlook y Mozilla Firebird.
- Cliente de mensajería instantánea. La mensajería instantánea es un tipo de mensajería en tiempo real,
basado en texto. La diferencia fundamental con respecto al correo electrónico es la inmediatez de la
comunicación. Lógicamente requiere que ambos interlocutores estén conectados a la vez.
El programa cliente de mensajería instantánea gestiona la comunicación, en general conectándose a un
servidor que controla la comunicación. El cliente por su parte sirve de interfaz al usuario y le informa de
aspectos como los contactos presentes en el momento actual, la posibilidad de dejar un mensaje diferido, o
la conexión con distintas cuentas de usuario simultáneamente. Ejemplos de programa cliente de mensajería
instantánea son WS LiveMessenger y Pidgin.
- Cliente FTP. FTP es un protocolo de transferencia de ficheros muy extendido. Un cliente ftp es un
programa que utilizando este protocolo, permite la conexión a un servidor ftp. Suelen integrarse también con
los navegadores web. Ejemplo de cliente ftp es Filezilla client o CuteFTP.
- Otros programas cliente. Para las tareas de comunicación de la parte cliente, el software realiza tareas que
se resumen en facilitar al usuario su trabajo con interfaces que explotan las funcionalidades de los
protocolos de forma intuitiva. Otros ejemplos de programas cliente, pueden ser los de comunicación vocal
(Skype, TeamSpeak), los de conexión remota (VNC), o los de redes P2P para compartir ficheros (Emule,
BitTorrent). En este caso, los programas implementan alguna función de servidor, por su naturaleza P2P.
2.2. Software Servidor
El software servidor es el encargado de gestionar las peticiones que se reciben de la parte cliente y devolver
el servicio requerido. Un servidor puede ser dedicado o no. El dedicado es un equipo que se configura
explícitamente para realizar las funciones de un determinado tipo de servicio. Un servidor no dedicado, es
aquel que integra varios servidores en una misma máquina.

304
Dependiendo del servicio y de consideraciones de seguridad, coste, tamaño de la empresa, etc. se tomará
la decisión más ajustada a las necesidades. Existen varias soluciones para implementar las funciones de
servidor en red. Suele ser un sistema operativo que ofrece la posibilidad de instalar distintos servidores en
la misma máquina. Las más extendidas son las soluciones Linux, con todo su abanico de distribuciones y
Windows, con su sistema operativo WS 2003 Server.
2.2.1. WINDOWS
La solución comercial de Microsoft más extendida para el software de sistemas en red es Windows Server
2003. Su nueva versión es Windows Server 2008. Destaca su interface gráfico, aunque puede usarse la
línea de comandos. Es un sistema multitarea y multiusuario que soporta usuarios locales y globales,
gestionados mediante un servicio de directorio.
En cuanto a seguridad, sus opciones se implementan con el sistema de ficheros NTFS. La mayoría de
opciones de seguridad no están disponibles con FAT. La seguridad se basa en niveles de permisos y
privilegios de usuario y grupo. Se permite la administración remota.
La organización interna del SO suele ser una estructura de archivos en árbol. Esto es así en WS y UNIX.
WS usa tres directorios principales en la unidad de instalación: Windows, Archivos de Programa y
Documents ans Settings. En Windows se guardan los archivos del sistema y la configuración para su
correcto funcionamiento, en Archivos de Programa, se almacenan los programas instalados, con sus
ejecutables y configuraciones y en Documents and Settings se tienen los detalles de los usuarios.
Para la gestión de usuarios, recursos y permisos, WS 2003 Server utiliza un servicio de directorio. En el
entorno Microsoft, se llama Active Directory. Un servicio de directorio puede definirse como una base de
datos donde se almacena toda la información relativa a la gestión de la red. Esa información se organizada
en objetos, que pueden representar cualquier cosa: una impresora, un usuario, etc.
WS 2003 Server dispone opciones de instalación de servidores que engloba bajo el menú “Administre su
Servidor”. Desde esa pantalla, el administrador de red podrá instalar los servicios que se ofrecen. Por citar
algunos, un servidor web, DNS, Terminal Server, etc.
La organización de la red en cuanto a su utilización se estratifica en una escala en la que a nivel más bajo
se sitúan los usuarios, que se agrupan en grupos, para poder gestionar más racionalmente características
comunes a todos ellos, y los dominios, que engloban varias grupos y unidades organizativas, entre otros.
Una unidad organizativa es un conjunto de elementos con alguna
característica común, a criterio del administrador, como pueda ser la
pertenencia a un mismo departamento de una empresa. WS 2003 Server
puede convertirse en un controlador de dominio, para realizar estas funciones
de gestión de usuarios y grupos globales del dominio.
Para gestionar usuarios, se precisa información relativa a ese usuario.
Esa información se estructura en lo que se conoce como “cuenta de usuario”, que puede definirse como el
objeto que contiene la información que define a ese usuario, al que en particular, se identifica con un
nombre de usuario (username o login) y contraseña (password).
En la cuenta de usuario se almacena además, los permisos de acceso a cada recurso que posee el usuario
y los grupos a los que pertenece. En WS 2003 Server, existen dos tipos de usuario: local o de dominio y
global. Los usuarios locales se almacenan en una máquina concreta del dominio y sus permisos son válidos
sólo en ese equipo. A un usuario local no se le asignan permisos sobre otro sistema del dominio. Un usuario
global es aquel cuyo ámbito de definición es el dominio. Sus datos se almacenan en el directorio y están
disponibles en cualquier equipo del dominio. Puede tener permisos sobre cualquier recurso de su dominio.
Si un usuario accede desde una máquina cualquiera al dominio, usando una cuenta de usuario global, el
equipo realizará una consulta de validación en Active Directory para permitir o no el acceso del usuario. Se
da la posibilidad de crear perfiles móviles de usuario, que permiten tener la misma configuración en
cualquier máquina de la red. Esto se consigue copiando el perfil del usuario en el servidor. Cuando el
usuario con perfil móvil se conecta desde otra máquina al dominio, se recupera su perfil del servidor y así
tiene disponible su configuración.
El concepto de grupo es el de un conjunto de cuentas de usuario con características comunes. En la
literatura a veces se refieren como grupos de seguridad. Un grupo es una unidad para facilitar la
administración de usuarios que puede ser efectiva en entornos reducidos, sin tener que mantener una
infraestructura mayor de servidores. Un usuario puede pertenecer a más de un grupo.
Los grupos en WS 2003 Server diferencian entre locales, globales y universales. Uno local sólo tiene
entidad en el dominio en que es creado y se suelen usar para administrar permisos en máquinas de ese
dominio. Los grupos globales se guardan en el directorio y pueden contener usuarios globales del dominio.

305
Son publicados a todos los dominios de la red (bosque de dominios) y se usan para clasificar a los usuarios
en función de sus tareas. Los grupos universales se definen a nivel de bosque, el conjunto de dominios que
posea la organización. Pueden contener cuentas y grupos globales o universales de cualquier dominio.
La clasificación que ofrece MS genera ámbitos de definición para gestionar usuarios y permisos. Se
recomienda asignar usuarios globales a grupos globales, según sus tareas, incluir los usuarios y grupos
globales en grupos locales, según el nivel de acceso y asignar permisos sólo a grupos locales. Algunos
grupos que se crean por defecto en el sistema son Administradores, Invitados, Duplicadores, etc. cada uno
con permisos particulares. Otra entidad representada son los equipos. Un equipo también se gestiona con
una cuenta de equipo, que es un fichero con la información relativa a esa máquina.
La información del equipo incluye su nombre, identificador, etc. El identificador, ya sea de equipo, usuario o
grupo, es un número que asigna el SO y permanece oculto, ya que se usa para gestionar permisos. Este
parámetro está dentro de lo que se conoce como “principales de seguridad” o security principals.
Por fin, las unidades organizativas son objetos de Active Directory, que funcionan como una caja comodín.
En una unidad organizativa pueden incluirse objetos como equipos, usuarios o grupos, que compartirán
ciertas características comunes de organización. Su utilización está pensada para delegar la administración
a usuarios distintos del administrador del dominio y a la vez agrupar la aplicación de directivas.
WS 2003 Server dispone de herramientas para administrar la seguridad del sistema. Las instrucciones de
seguridad que aplica el sistema se denominan directivas de seguridad. Los archivos contienen atributos de
seguridad, controlados por el identificador del usuario. Estos atributos determinan si un archivo puede ser
leído o modificado por determinado usuario y se controlan con las denominadas listas de control de acceso.
Otros aspectos a mencionar del SO son las copias de seguridad, la auditoría del sistema y la instalación de
hardware. WS ofrece su propia herramienta integrada para realizar copias de seguridad. En general se
distinguen dos tipos de copias de seguridad: las totales y las incrementales. Las primeras realizan copia de
todos los datos, o los que se indiquen. Las copias incrementales intentan ahorrar recursos, de forma que
sólo se copian aquellos datos que hayan variado desde la última copia de seguridad.
La auditoría del sistema, comprende aspectos de análisis de los sucesos relacionados con la seguridad. Se
gestiona mediante ficheros de registro, o logs, que dejan constancia de acciones llevadas a cabo por
usuarios, programas o eventos del sistema. Se utilizan para monitorizar funcionamientos anómalos del
sistema, intrusiones o fallos de seguridad.
La instalación de hardware en WS es intuitiva. En general, los dispositivos suelen ser reconocidos por el
sistema, que si cuenta con los controladores apropiados lo instala automáticamente. Si no los tuviera,
solicita al usuario el controlador o le ofrece la posibilidad de buscarlo en cierta ubicación o en Internet.
2.2.2. UNIX
Simplificando, se ha englobado bajo el epígrafe UNIX, éste SO, las distribuciones Linux y las GNU, debido a
que el funcionamiento y organización, es muy similar. El software tipo UNIX tiene gran importancia, porque
la mayoría de servidores en Internet están implementados con este tipo de servidores. Algunas soluciones
son HP-UX, SUSE, Red Hat, Fedora, Ubuntu o Debian. En general, los sistemas Linux aprovechan mejor el
hardware, a cambio quizás, de mayor complejidad.
Linux es un SO multitarea y multiusuario. Soporta varios sistemas de ficheros, de los más utilizados son
Ext3 y Ext4; también soporta FAT y NTFS. Se estructura como un conjunto de archivos organizados en
forma de árbol. La configuración del SO se realiza con ficheros en general de tipo texto, que pueden ser
editados permitiendo parametrizar los valores de configuración.
Linux posee una estructura en la que todo el sistema cuelga del directorio raíz o root, nominado con “/”. El
resto se organizan por funcionalidad. Algunos ejemplos de directorios son /bin (binaries) que almacena los
ejecutables de los programas del sistema, /dev, contiene ficheros de configuración de dispositivos (devices),
/etc contiene los ficheros de configuración del sistema o /home para la configuración de cada usuario.
Estos directorios contienen la información y ficheros de configuración del sistema. Al ser un sistema libre,
puede cambiarse su organización y por ejemplo guardar la configuración de usuario en lugar distinto a
/home, pero eso puede generar inestabilidades. Lo recomendable es seguir la estructura estándar.
La seguridad en Unix está muy implantada. Siempre se distinguen al menos dos usuarios, el usuario root, o
superusuario, con todos los privilegios sobre el sistema, y el usuario genérico, con permisos limitados. El
usuario root posee privilegios totales sobre el sistema, lo que puede generar problemas de seguridad, ya
que si un intruso consigue esa cuenta, comprometería el sistema. Por esta razón, siempre se recomienda
no utilizar la cuenta root, a no ser para realizar tareas estrictamente necesarias con ella. En Linux, toda la
información de servicios se organiza en una estructura de directorio, que no recibe un nombre específico

306
como Active Directory. Para la consulta eficiente a los datos del directorio se utiliza el protocolo LDAP o
protocolo ligero de acceso a directorio.
La seguridad en los permisos de archivos en Linux se divide en cuatro grupos, representados con 12 bits, 3
para cada grupo. Estos 3 bits indican los permisos de lectura (r), escritura (w) y ejecución (x). El primer
grupo de 3 bits se refiere a los permisos para el propietario del archivo, el segundo a los del grupo del
propietario y el tercero a los del resto de usuarios. Los tres últimos bits son los bits Sticky, Setgid y Setuid.
Estos bits indican que un ejecutable, un programa se trate como si lo ejecutase el usuario o el grupo (uid y
gid, respectivamente), cuando lo ejecuta cierto usuario. Los permisos de los archivos pueden modificarse.
La gestión de usuarios en Linux también define roles de usuario y grupo. Los conceptos son los mismos que
los ya explicados. Los usuarios se registran en el fichero /etc/passwd y /etc/shadow, que almacenan
información que incluye su username, contraseña cifrada, identificador, grupos a los que pertenece, etc. Por
defecto, a cada usuario se le asigna un grupo cuando es creado. Más adelante se podrá asignar a otros
grupos. La información de grupos se guarda en etc/group.
El concepto de dominio en Linux difiere del de WS. Lo que se generaliza en Linux es la utilización de los
servicios NIS, Network Information Service y NFS o Network File System. El primero centraliza los datos de
gestión comunes en la red, mientras NFS ofrece un acceso eficaz a ficheros compartidos en red.
Los recursos en Linux, en particular el hardware se almacena en el directorio /dev y su configuración está
disponible en /etc. También son tratados como archivos. Para acceder a un dispositivo, debe montarse, es
decir debe hacerse accesible como un directorio, en principio con la instrucción mount, aunque, este
proceso se ha automatizado en la mayoría de casos.
La administración de seguridad de Linux está muy lograda, es parte de la concepción del sistema y dispone
de sus herramientas particulares. Por ejemplo, para realizar copias de seguridad o en aspectos de auditoría
del sistema. La práctica totalidad de los eventos del sistema se registran en lo que se conoce como archivos
de log, configurables para especificar qué información se recogerá, en general como texto plano.
La definición de los ficheros de log debe hacerse de forma que no se recoja demasiada información ni dejar
aspectos importantes sin registro. Suelen guardarse en secuencia histórica o bien sobrescribirse cuando se
alcanza cierto tamaño. Por defecto suelen estar bien diseñados, pero el administrador debe definir la
información a registrar, cómo se guardarán y dónde, etc.
3. COMPONENTES
Tanto WS como UNIX en sus versiones servidor, incorporan una serie de componentes que ofrecen la
opción de instalar distintos servidores. Los componentes a conocer son, al menos, los siguientes.
3.1. Servidor web
Un servidor web es el software que gestiona peticiones web. El servidor está constantemente “escuchando”
en un puerto peticiones de contenidos web. La escucha del servidor es una espera activa. Es decir, se está
constantemente esperando a que lleguen peticiones a un determinado puerto lógico. Cuando llega una
petición, las capas inferiores entregan la información al software servidor que gestiona la petición.
En principio, el servidor puede “escuchar”, montarse, o configurarse en cualquier puerto. Ahora bien, para
un servidor web, en general se configura en el puerto 80. Es una regla de facto. Se hace por convenio no
escrito. Del mismo modo, por defecto, los navegadores web realizan sus peticiones al puerto 80.
Cuando un usuario utiliza su navegador y se conecta a un servidor web, éste recibe su petición, la procesa y
empieza a enviar al solicitante los datos que tenga configurados que debe enviar, en general, el contenido
de una página web, un fichero de hipertexto (texto que contiene otro texto o enlaces a otro contenido). Los
ficheros, están contenidos en el servidor web y se sirven al cliente que los solicita. La World Wide Web
(www) sería el conjunto o el sistema de páginas web enlazadas, a las que puede accederse en Internet.
Como idea de referencia puede decirse que es el conjunto de servidores web de Internet.
Una url o Localizador de Recursos Uniforme (estándar), es la información que debe proporcionarse para
localizar un recurso, una página web u otro. La url debe contener entre sus datos, el protocolo a utilizar, (en
el caso web sería http), la dirección IP de la máquina a la que conectarse, el puerto de conexión y la ruta del
contenido solicitado dentro de la máquina consultada. Servidores web son Internet Information Service, de
Microsoft, Apache o Cherokee.
3.2. Servidor de correo electrónico
Es el software que gestiona la transferencia de correo electrónico. Puede transferir correo electrónico entre
sistemas, a otro servidor de correo, o entre sí mismo y un cliente. El cliente de correo electrónico sólo lo
transfiere entre sí mismo y su servidor. Esta es la diferencia entre el software cliente y el servidor.

307
El cliente gestiona correo electrónico, pero sólo a nivel usuario. Los servidores de correo utilizan dos tipos
de protocolos, uno para el envío, que suele ser SMTP y otro para recepción, los más genéricos POP e
IMAP. Ejemplos de servidores de correo son Microsoft Exchange, incluido también en WS 2003 Server y en
entorno Linux Sendmail junto con otros paquetes software.
3.3. Servidores DHCP y DNS
Se han incluido en el mismo punto los servidores DHCP y DNS porque ambos se refieren a configuraciones
relacionadas con direccionamiento IP. Un servidor DHCP es software que implementa el protocolo DHCP, o
protocolo dinámico de configuración de host, que permite configurar las direcciones IP de los equipos de la
red de forma dinámica: cuando un equipo se enciende, realiza una solicitud DHCP para que el servidor le
asigne su dirección IP. Esto agiliza la gestión de la red, en particular si es grande.
El servidor tendrá configuradas una serie de direcciones para ser asignadas. A éstas se le suele llamar
“pool de direcciones”. De forma que a cada petición se va asignando una dirección del pool y ya no estará
disponible para otro equipo. Cuando la máquina se apaga, esa dirección se libera y podrá reasignarse.
En el usuario el SO incluye un cliente DHCP, dentro de la configuración de la red, de forma que se presenta
alguna opción del tipo “obtener una dirección IP automáticamente”. En una red doméstica típica, se hace
uso de servidores DHCP, implementados en los routers de conexión a Internet.
Un servidor DNS, Servidor de Nombres de Dominio, es el software que establece la identidad entre un
nombre de dominio y una dirección IP. Básicamente es una guía telefónica IP. El servidor es el encargado
de tratar las peticiones que le llegan, consultar su tabla y devolver la respuesta. Si ésta no existe en la tabla,
realizará una consulta a otro servidor DNS, y así sucesivamente hasta obtener la respuesta.
3.4. Servidor Proxy y Cortafuegos
Un servidor proxy es el software que actúa de controlador de las comunicaciones en una red. Es un equipo
intermediario. Sus aplicaciones pueden ser amplias, como el caso típico de un servidor de NAT.
NAT consiste en una traducción de direcciones IP privadas, destinadas al uso en un ámbito local y que no
pueden navegar por Internet, a direcciones IP públicas para acceder a Internet. Con un servidor proxy que
use NAT, todos los equipos de una LAN acceden a Internet con la misma dirección IP. El servidor se
encargará de identificar cada conexión de la LAN y gestionar que la correcta comunicación.
El equipo destino considera que la comunicación la ha establecido el proxy, en realidad, el intermediario,
que devuelve la información al equipo origen. Las ventajas que ofrece el proxy destacan en seguridad, ya
que puede generar registros de las conexiones para realizar, por ejemplo, auditorías de seguridad. Como
contrapartida, debe dimensionarse correctamente en función de la carga de trabajo a soportar.
La función de los puede entenderse como la de un tipo específico de proxy, ya que realiza un control
intermedio de las comunicaciones entre la red interna y la externa, filtrando las comunicaciones y ofreciendo
un nivel mayor de seguridad frente a intrusiones. Los cortafuegos evalúan el tráfico, los puertos y
direcciones IP de la comunicación, de forma que permiten el acceso o no a los recursos internos o externos
según las políticas de seguridad que se establezcan.
3.5. Otros servidores
Otros servidores comunes que se deben conocer son los servidores de archivos, que son los programados
para realizar intercambio de ficheros de forma eficiente, como los servidores FTP. En el entorno Linux son
comunes los servidores NFS que entre otras cosas permiten acceder a ficheros remotos como en local.
En WS se suelen usar servidores de nombres WINS, que identifican las máquinas de un dominio con un
nombre asignado por el administrador de red y que utilizan el protocolo NetBios de MS, utilizado para
compartir recursos en red. En WS Server, se utiliza un servidor DNS para identificar los nombres de red,
pero también permite implementar el servidor WINS. Para integrar sistemas Linux y WS en red, los Linux
recurren a servidores SAMBA, que implementan funcionalidades NetBIOS. Un sistema Linux con SAMBA
aparece en la red como si fuera otro equipo WS.
Los servidores de impresión, gestionan el acceso y uso de las impresoras en red y en particular las colas de
impresión controlando los permisos y prioridades para cada usuario.
Los servidores de bases de datos administran el servicio de acceso a BBDD. Las dos soluciones más
utilizadas a conocer son Oracle, SQL Server de Microsoft y MySQL como alternativa libre.
En sistemas WS existe un servidor muy usado para administrar equipos remotos, el “Terminal Server”, que
es un servidor que permite emular un terminal con interfaz. Los servicios de Terminal Server se ofrecen en
dos modos: servidor de aplicaciones y administración remota. El primero permite a clientes remotos acceder
simultáneamente a aplicaciones que se ejecutan en el servidor. El modo de administración remota
proporciona acceso remoto al servidor y sus herramientas gráficas para su administración.

308
4. FUNCIONES Y ESTRUCTURA
A veces se diferencia entre software de sistemas o aplicaciones y software de red. El primero se refiere a
programas de usuario que implementan distintas funciones. Aquí se englobaría el software cliente y el
servidor expuesto en los apartados anteriores, así como software P2P. El software de red se referiría a la
parte de la programación que ejecuta las acciones necesarias para el establecimiento de la comunicación.
En general, el software de aplicación integra al software de red. Piénsese, por ejemplo, en un programa de
mensajería instantánea, o un navegador web. En su programación, ya están incluidos los procedimientos,
funciones u objetos que realizan el control de la comunicación, según marcan los protocolos. Además, esta
programación tiene por misión precisamente, ocultar al usuario esos detalles. En este punto se explica
ambos aspectos del software de red, el funcionamiento de los protocolos y su estructura a nivel de sistema.
4.1. Funciones y estructura de la comunicación
La comunicación puede ser orientada a conexión o no. TCP implementa un protocolo de control de la
comunicación orientado a conexión, mientras UDP lo hace no orientado a conexión.
El protocolo TCP especifica un desarrollo de la comunicación dividido en tres partes: establecimiento,
transferencia de datos y finalización.
El establecimiento de la conexión se realiza con un acuerdo de tres vías, o three way handshake, en el que
el emisor envía una petición (SYN) con un número de secuencia, S, el receptor contesta con un
asentimiento (SYN ACK) y S más 1 y otro número de secuencia S2 que debe confirmar el emisor. En el
tercer paso, el emisor confirma el número de secuencia del receptor con S2 + 1 y S + 2. Si el proceso es
correcto, la comunicación se considera establecida y comienza la transferencia de datos.
Con los números de secuencia y una memoria temporal implementada con un protocolo denominado de
ventana deslizante, en la fase de transferencia de datos, se va recibiendo la información en el solicitante.
La ventana deslizante, puede resumirse, en una memoria que va almacenando los datos recibidos, que si
están bien, se espera la confirmación del receptor. Cuando lo confirma, se libera ese dato, y se considera
entregado. Si pasa mucho tiempo sin confirmación, la memoria se llena y no se sigue transmitiendo nueva
información, sino que se comienza a retransmitir los datos de la memoria.
Para finalizar la comunicación se utiliza un acuerdo de cuatro vías. Si uno de los extremos desea finalizar la
conexión, lo refleja con un paquete de terminación (FIN), que debe ser asentido por la otra parte (FIN ACK).
La finalización del lado que no inició la terminación serían otros dos paquetes iguales.
El software suele implementar mecanismos de seguridad para evitar el colapso de los servidores. Por
ejemplo, si la comunicación queda medio abierta o medio cerrada, es decir, si no se cierra el acuerdo
totalmente, transcurrido un tiempo se descarta el intento de comunicación.
UDP no establece la conexión, ni realiza control de flujo y no confirma la entrega de los datos como TCP
con los paquetes ACK. Esto aligera el protocolo y ofrece más velocidad a cambio de menor fiabilidad.
Algunos protocolos y aplicaciones que utilizan este tipo de comunicación son DHCP, DNS y NFS. Otros
ejemplos son Bootp para el arranque de equipos en red y RCP para la copia en remoto.
4.2. Funciones y estructura de servidores
La estructura del software de los sistemas en red posee aspectos
comunes. En la figura se muestra un cliente y un servidor con su
software soportado por sus SO, que gestionan los aspectos de
comunicación. A través de la red, será una LAN, WAN o Internet, el
cliente realiza peticiones al servidor, que las interpreta y ejecuta,
accediendo al servicio o recurso que se ha solicitado y devolviendo
la respuesta correspondiente.

En el caso de una estructura P2P, el esquema sigue siendo válido, teniendo en cuenta que cada equipo
podrá realizar las funciones de cliente o servidor. Para ilustrar el funcionamiento y estructura del software,
se describe una consulta web de forma más detallada. El proceso sería el siguiente: un usuario abre su
navegador web, y escribe en la barra de navegación una url, del estilo: www.google.es.
En realidad, se debía escribir http://www.google.es/, donde http:// es el protocolo usado. En general, no se
escribe porque el navegador ya lo supone por defecto. www.google.es representa el nombre del dominio al
cual se pretende acceder. Es decir, el nombre del servidor. Ahora bien, antes de devolver el recurso web, el
software del navegador debe resolver el nombre solicitado y traducirlo a una dirección IP. Esto lo realiza
usando un cliente DNS, que realizará la petición. El código del navegador, incluirá una función, método o
similar que indique al SO que debe utilizar un cliente DNS para realizar la consulta, o puede estar incluido
en el navegador si el lenguaje de programación en que se realizó lo permite.

309
El cliente DNS tendrá otra estructura de funcionamiento, que es transparente al usuario del navegador. Una
vez realizada la consulta, y obtenida la dirección IP del nombre de dominio, el navegador la incluirá para
realizar la consulta. Tendría que incluirse en la petición, el número de puerto, que no se incluye tampoco,
porque al ser un navegador web, por defecto utiliza el puerto 80. De este modo, la consulta del cliente
www.google.es, se transforma en http://66.249.92.104:80.
Este sería un caso mínimo. Si se accediese a un documento de texto, por ejemplo, tras el nombre de
dominio habría que incluir la ruta, en la forma /ruta/archivo.ext. Si fuera una conexión segura, el esquema
sería https://, etc. El software servidor, recibiría la petición e iría a buscar el recurso solicitado. Si no lo
encuentra devolverá un error, que puede ser configurado, y que en un caso general será del estilo típico:
Código 404: File Not Found.
La petición del cliente se realiza utilizando las primitivas del SO y por tanto, si es una conexión TCP, se
debe establecer la conexión con el acuerdo de tres vías estudiado. Todo el proceso permanece oculto al
usuario. Si el servidor encuentra el contenido lo devolverá, operación que puede involucrar a otras. Si el
contenido es estático, una fotografía, por ejemplo, la envía al cliente y se acaba la sesión. Si el contenido es
dinámico, es decir, debe actualizarse, porque se trata, por ejemplo, de una consulta a una BBDD, el servidor
debe utilizar en su programación las rutinas necesarias para atender la petición.
La estructura de un servidor web a nivel de software podría resumirse en una capa servidor y una capa de
soporte. En la capa servidora, se pueden distinguir cinco funciones: recepción, análisis de la petición,
control del acceso, gestión de recursos y registro de transacciones, que realizan las operaciones descritas.
La capa de soporte por su parte sería el interface entre el servidor y el SO e incluiría las funciones de
gestión de utilidades (funciones) y abstracción del SO, lo que permite la interacción del software servidor en
distintas tecnologías (WS - Linux).

310
TEMA 69. INTEGRACIÓN DE SISTEMAS. MEDIOS DE INTERCONEXIÓN. ESTÁNDARES.
PROTOCOLOS DE ACCESO A WAN.

1. INTRODUCCIÓN
2. INTEGRACIÓN DE SISTEMAS
2.1. Redes de Nueva Generación
2.2. Arquitectura de Red
3. MEDIOS DE INTERCONEXIÓN
4. ESTÁNDARES
4.1. Estándares de Fibra Óptica
4.2. RS-232
4.3. V.35
5. PROTOCOLOS DE ACCESO A WAN
5.1. X.25
5.2. Frame Relay
5.3. RDSI
5.4. ATM
5.5. MPLS
5.6. ADSL

311
1. INTRODUCCIÓN
La integración de sistemas, en el contexto de las redes de telecomunicaciones, es un concepto que puede
usarse como sinónimo del de convergencia, más frecuente, que debe entenderse básicamente como la
adaptación de las tecnologías de transmisión al mundo IP.
La integración ha evolucionado en el marco de las redes de conmutación de paquetes, más eficientes que
las redes de conmutación de circuitos. Los factores que motivan la integración son el ahorro de costes,
homogeneización de la tecnología, facilidad en el soporte de aplicaciones, etc. La homogeneización del
equipamiento hace aparecer medios de interconexión estándares, que deben conocerse.
2. INTEGRACIÓN DE SISTEMAS
Tradicionalmente, y debido sobre todo a las redes telefónicas, la tecnología que implementaban las redes
de comunicación era la conmutación de circuitos. Esta idea implica encontrar un circuito libre para
comunicar los dos extremos. Si no lo hay, no habrá conversación. Si el establecimiento de la comunicación
tiene lugar, comienza la transferencia de información ocupando el circuito en exclusiva, aunque no se use,
hasta que alguno de los dos extremos se desconecta. Es una forma de trabajo muy ineficiente.
En contraposición, una comunicación típica en que un ordenador doméstico tiene varias comunicaciones
simultáneas (por ejemplo, consulta web, mensajería instantánea y otras) utiliza el mismo recurso físico. La
tecnología que permite ofrecer esta simultaneidad de comunicaciones es la conmutación de paquetes. La
diferencia fundamental estriba en dividir la capacidad del canal para poder utilizarse por distintos tipos de
tráfico y usuario simultáneamente, generando un rendimiento mayor que la conmutación de circuitos.
Este es el punto de partida de la integración de sistemas. En el fondo no es otra cosa que la integración de
la tecnología, intentando realizar una transmisión de datos homogénea, tratando cualquier tipo de tráfico, ya
sea voz, datos o video de la misma manera, conmutando paquetes. La integración se orienta a la
adaptación de los datos a los protocolos de comunicación, lo que redunda en una integración de los
sistemas de red. Estos equipos ya no distinguirán, en principio, si la información transmitida son imágenes,
video, audio o datos. Simplemente despacharán tráfico, paquetes.
De este modo, la antigua centralita de voz, simplifica su gestión y administración y el mismo equipo podrá
realizar la conmutación de voz, ahora tratada como en forma de paquetes de datos. El operador también
simplifica su trabajo. Podría hablarse de una integración de gestores de red.
Así, si antes existía un operador de mantenimiento y supervisión de centralitas y otro “operador de datos”,
ahora, estas dos personas pueden ser la misma. No necesitaría una formación tan diferente como la que
supone la programación de una centralita y por otro lado la gestión de routers, sino que esas labores de
gestión, control, supervisión, etc. son más homogéneas.
Cuando el operador trate alguna anomalía en la red, o en una comunicación de tráfico sensible, como la
voz, manejará ese tipo de ajustes (prioridades), de forma similar al tratamiento de datos.
La idea que subyace en la integración de sistemas
podría resumirse en igualar el tratamiento de las
fuentes de información, homogeneizando la
estructura de la red y luego particularizar la
gestión en función de las características de cada
tipo de tráfico o usuario. Este proceso incrementa
enormemente la productividad y el ahorro de
costes y en equipamiento.
Entre las ventajas para los gestores de red se
pueden citar el disponer de una infraestructura
común de acceso y transporte, una simplificación
de tecnologías y un sistema de gestión único.
En función de la red que se trate, habrá que tener en cuenta cómo se realizará la integración del tráfico y su
naturaleza. La voz requiere retardos más o menos constantes no debiendo superar el entorno de los 200
ms, para que sea percibido con calidad pero admite cierta distorsión.
Los datos pueden transmitirse a tasas no constantes, ya que será el destino el que los ordene y presente. El
vídeo, presenta características más parecidas a la voz, pero requiere más ancho de banda.
Para solventar estas condiciones, se utilizan sistemas de codificación y multiplexión. La idea de codificación
en este caso, y referido a la voz, incluiría su digitalización, probablemente su compresión, para que ocupe
menos ancho de banda (robustez frente a retardos) y por fin la codificación propia del canal.

312
La digitalización de la voz, al organizarla en numerosos paquetes, que, en principio, serán transmitidos de
forma independiente, permite utilizar el canal cuando no se conversa. Estas técnicas, que remiten, como
idea central al concepto de voz sobre IP, permiten obtener un mayor rendimiento y aprovechar todo el
potencial que ofrecen las redes de conmutación de paquetes.
Las tecnologías de red que permiten realizarlo son numerosas, algunas de ellas ya se han presentado. Lo
que resulta de interés en la integración son los nuevos desarrollos, que pueden englobarse bajo el epígrafe
de redes de nueva generación o NGN, por sus siglas en inglés. La recomendación Y.2001 de la UIT-T,
presenta una visión general de estas redes.
2.1. Redes de Nueva Generación
Existe una idea, a nivel internacional, que se da en llamar infraestructura mundial de la información, o GII,
término acuñado por Al Gore, y que se refiere al conjunto de capacidades que ofrecen las redes de
comunicación, y el aprovechamiento de sus capacidades para conseguir un mundo mejor.
Simplemente es un término que se ha de conocer. Algunos términos como éste son vagos en su definición.
Otro término que acuñó Bill Clinton y Al Gore fue “autopistas de la información”. Hoy día puede ser un
término antiguo, pero en 1992 contribuyó, entre otros factores, a lanzar la economía estadounidense y
generar una estupenda burbuja tecnológica.
La GII, sería el conjunto de redes y tecnologías que permiten comunicaciones multimedia a nivel mundial.
Su concepto, puede variar según los países y por ello es arduo el trabajo de normalización. La autopista de
la información mundial, será el agregado de nuevas tecnologías, servicios y aplicaciones integrados en red.
Las redes de nueva generación serían subconjuntos de esa GII que, trabajando de forma transparente
permitirían la interoperabilidad entre sistemas y el soporte de aplicaciones a nivel mundial. Uno de los
objetivos del desarrollo de las NGN es servir de punto inicial para la convergencia de redes y servicios.
La ITU define una NGN como una red de paquetes que permite prestar servicios de telecomunicación, que
puede utilizar múltiples tecnologías de transporte transparentes para los servicios que prestan. Deben ser
capaces de permitir a los usuarios el acceso a redes y proveedores libremente y soportar movilidad.
El concepto de movilidad se refiere a la capacidad del usuario para acceder al servicio, independientemente
de su ubicación y del entorno técnico, salvando por ejemplo acuerdos entre operadores de red. Se incluiría
la capacidad de comunicarse con o sin continuidad de servicio.
La Comisión Europea define las redes de acceso de nueva generación como "redes de acceso cableadas
que consisten total o parcialmente en elementos ópticos y son capaces de prestar servicios de acceso de
banda ancha con características mejoradas en comparación con las redes de cobre existentes". Esta
definición está centrada en redes físicas, lo que en principio, puede dejar fuera de juego las redes radio.
Una NGN, como integradora de sistemas, debe proporcionar la capacidad de ofrecer cualquier servicio de
comunicaciones, presente o futuro, de forma independiente del medio que se utilice, con cualquier esquema
de codificación e integrando infraestructura, protocolos, etc. El desempeño de las nuevas redes y sistemas
ha de ser capaz de soportar las distintas demandas de ancho de banda de cada tipo de tráfico. Así, se hace
énfasis en la personalización de los servicios por parte de los proveedores, que darán la posibilidad de
personalizarlos para casa usuario.
Característica fundamental de una NGN es la diferenciación entre servicios y transporte. De esta forma, el
desarrollo de cada aspecto particular no afectará a otros. Por tanto, en las arquitecturas NGN existirá una
diferenciación entre funciones del plano de servicios y el plano de transporte.
Como hasta ahora se realiza en las redes clásicas, las funciones de control, servicios, seguridad o medios,
pueden ser distribuidas a lo largo de la infraestructura de red, de forma que existan canales de señalización
o control con interfaces abiertas. Esto obliga a normalizar protocolos de comunicación y los que permitan la
interoperabilidad entre operadores y las redes existentes.
Aspectos específicos, de ciertos servicios, como el vocal, deben tenerse en cuenta al integrarse en una
infraestructura de nueva generación. Deben proporcionarse los mecanismos de protección para la
comunicación segura de información sensible a través de la red, protecciones contra usos fraudulentos y
protección de la propia infraestructura. Actualmente, se ofrecen servicios similares al usuario en los accesos
fijos y en redes móviles, aunque se siguen considerando clientes diferentes, con configuraciones de servicio
distintas y sin conexión entre los diferentes servicios.
La movilidad debe ser una propiedad natural de las nuevas redes, de forma que se permita la prestación
coherente de servicios a cualquier usuario. Es decir, el usuario es considerado una entidad,
independientemente de la tecnología de acceso a la red que utilice.

313
Como objetivos de las NGN, se citan promover la justa competencia, definir la arquitectura y capacidades
que permitan cumplir la normativa, ofrecer acceso abierto a las redes asegurando la prestación y acceso
universales a los servicios, favoreciendo la igualdad de oportunidades de los ciudadanos o reconocer la
necesidad de cooperación con los países menos desarrollados.
Como características destacables de las redes de nueva generación se encuentran la transferencia basada
en conmutación de paquetes, separación de las funciones de control en capacidades de portador,
llamada/sesión, y aplicación/servicio, separación entre la prestación del servicio y transporte, definición de
interfaces abiertas, capacidades de banda ancha con QoS extremo a extremo o la convergencia de
servicios fijos y móviles.
Además, las NGN deben proporcionar capacidad de comunicaciones en caso de desastre, priorizando el
tráfico de las autoridades y dando trato preferente al tráfico de emergencia. Puede ser necesario adoptar
medidas para asegurar que se incluyan requisitos y capacidades de socorro en caso de desastre.
2.2. Arquitectura de Red
Un modelo funcional de una NGN, describiría el sistema atendiendo a su funcionamiento, identificando las
entidades que ofrecen una única función como el control, la seguridad o la gestión. Las relaciones entre las
entidades se identificarían en forma de puntos de referencia o interfaces. Por tanto, la arquitectura funcional
de una NGN debe tener en cuenta, al menos los aspectos de:
- Identificación de normas para soportar servicios en el dominio de uno o distintos operadores
- Definición de modos de interoperabilidad con terminales tradicionales
- Soporte a servicios extremo a extremo, control de llamada y movilidad en redes heterogéneas
- Definición de funcionalidades de terminales, su evolución y relación con la red.
La arquitectura de red es diferente a lo estudiado en el modelo OSI. Las nuevas redes como integradoras
de servicios y sistemas deben ser compatibles con redes antiguas, lo que implica arquitecturas diferentes.
Así, una red puede no estar estructurada en los siete niveles OSI, o las funciones de su modelo estructural
no corresponderse unívocamente con el modelo, como ocurre con Ethernet.
La arquitectura de una NGN se resume
horizontalmente en dos planos: el de servicios y el de
transporte. Este modelo trata de independizar el plano
de servicios para que su evolución y desarrollo no se
vea influido por aspectos del transporte u otros.
Además, se establece una división vertical que afecta
a ambos planos referida a los aspectos de control de
la red, gestión, seguridad, etc. Es lo que se pretende
representar en la figura.
En la división horizontal, en el plano de transporte hay que tener en cuenta que existe un conjunto de
funciones relacionadas encargadas sólo del transporte de información entre dos puntos de la red. Este nivel
de transporte puede ser cualquier tecnología de red. Puede estar formado por una tecnología que incluya
los dos o tres primeros niveles OSI u otra estructura. Debe proveer es interoperabilidad y conectividad con
las especificaciones NGN.
Entre las funciones que debe ofrecer deben encontrarse la conectividad entre usuarios, entre el usuario y el
nivel de servicios y entre plataformas de servicio.
El nivel de transporte puede implementar cualquier filosofía de red, como puedan ser la conmutación de
circuitos orientado a conexión (CO-CS, por sus siglas inglesas), conmutación de paquetes orientado a
conexión (CO-PS) o conmutación de paquetes no orientado a conexión (CL-PS). En las NGN se puede
considerar que el protocolo IP es de los más indicados para nuevos servicios y soportar los tradicionales.
En el estrato de servicios, se sitúan los servicios de usuario, como puedan ser el de telefonía, datos,
videoconferencia, etc. En este nivel pueden encontrarse las plataformas que los ofrecen y que físicamente
estarán distribuidas a lo largo de la geografía de la red.
Cada uno de los planos horizontales referidos a distintos servicios, implementará el modo concreto de su
prestación. Así, si un servicio se refiere a un servicio web, su definición constará de lo necesario para que
sea efectivo. De esta manera en esa parte del estrato de servicios podrán definirse otros planos internos
como la parte de usuario, de control, de seguridad, etc.
Cada estrato tiene sus funciones y dominios administrativos, independientes entre sí, en particular desde el
punto de vista técnico. La distinción entre servicio y transporte origina los siguientes conceptos:

314
- Estrato de Servicio: Parte de la NGN que proporciona funciones de usuario y de control y gestión de
los recursos de servicio y red. Se compone de la aplicación y servicios definidos entre entidades
pares. Cada capa en este estrato tiene sus propios planos de usuario, control y gestión.
- Estrato de Transporte: Parte de la NGN que proporciona la transferencia de datos y sus funciones
de control y gestión de los recursos de transporte. De igual modo, en el estrato de transporte se dan
sus propios planos de usuario, control y gestión.
La gestión y control de la NGN se entienden como aspectos verticales a la organización del sistema, de
forma que el plano de gestión de la NGN consta de la unión del plano de gestión del estrato de servicio y el
de transporte. Y lo mismo para el plano de control, que consiste en la unión del plano de control del estrato
de servicio y del estrato de transporte. Puede darse el caso de funciones de gestión y/o control comunes.
El análisis de los servicios y las funciones debe ser tratado de forma diferencial, para lo que sirve de guía la
recomendación UIT-T Y.110, que ayuda a distinguir entre aspectos de aplicación, medios o infraestructura.
Los servicios y funciones se relacionan, ya que las funciones exigidas marcan la definición de los servicios.
La relación función-servicio no es de uno a uno, puesto que una función puede ser utilizada por dos
servicios distintos, de ahí la necesidad de diferenciación.
Como orientación de diseño general, al menos se deben distinguir dos tipos o grupos de funciones, las de
control y las de gestión, que en la figura se representan como planos verticales. Esto facilita la definición de
interfaces en un mismo plano y con los estratos horizontales que será usada para especificar el modelo
funcional general del sistema.
Los recursos, pueden referirse a elementos hardware o software utilizados en la red o en los servicios.
Pueden distinguirse recursos de transporte, de procesamiento (BBDD) u otros considerados en el análisis.
La negociación de la calidad de servicio (QoS) entre sistemas extremos debe estar definida. Al menos habrá
que tener en cuenta la QoS extremo a extremo para telefonía en redes de conmutación de paquetes, los
mecanismos de capa inferior para obtener la QoS de capa superior para multimedia y el control de QoS de
capa inferior entre dominios y percepción del usuario extremo.
Un aspecto importante en la integración de sistemas es la separación del control y la prestación del servicio
en la subred y la extensión del control del servicio para telefonía y multimedia. El uso de interfaces por parte
de proveedores a terceros, aconseja la especificación de interfaces abiertas en las plataformas de servicio.
Las plataformas de servicio deben tener en cuenta la definición de arquitecturas de control que incluyan los
interfaces e intermediarios, soporte de servicios a través de distintas redes (itinerancia e interoperabilidad) o
el soporte a la presencia y control del usuario en servicios personalizados y la gestión de red debe
considerar la mejora de la arquitectura de gestión y definición de servicios e interfaces de red como la
gestión de incidentes, tarificación o calidad así como la posibilidad de evolución.
Los aspectos de seguridad son cruciales. Se apoyan en un gran trabajo de normalización de interfaces y
aplicaciones, para que se pueda implementar la seguridad mediante componentes específicos. La
seguridad debe referirse a las vulnerabilidades en el control, gestión, servicios o infraestructura de red.
En general, se trata de realizar el trabajo por áreas específicas, dividiendo las tareas necesarias para
implementarla. El producto final debe ser una percepción de sistema seguro extremo a extremo, que sea
aplicable a elementos de la red, aplicaciones o servicios. Los aspectos de seguridad deben orientarse hacia
la implantación de una política de seguridad operacional, definición de directrices de seguridad, protocolos e
interfaces adecuados y dotar de una arquitectura sólida y escalable de seguridad a la red.
La arquitectura de control de red debe considerar los recursos y QoS en el acceso a la red y en su núcleo,
los medios de transporte de información, controles de llamada o sesión y el control de servicio. Define
también los sectores funcionales en los puntos de referencia como pasarelas de la frontera de red y tiene en
cuenta los requisitos funcionales del acceso, en interfaces usuario-red, red-red o red-proveedor de servicio.
Las arquitecturas de red actuales también requieren una evolución para tratar adecuadamente la movilidad.
La integración de los sistemas requiere permitir comunicaciones de banda ancha transparentes de red fija a
inalámbrica y movilidad entre diversas tecnologías de acceso.
El usuario debe poder usar tecnologías de acceso que permitan cambiar entre puntos de acceso cableados
o inalámbricos de forma transparente y sin cortes. Los requisitos de movilidad incluirían la posibilidad de
acceder desde cualquier punto de acceso de red y el conocimiento por parte de la red de la disponibilidad
del usuario y el alcance. Otras capacidades deben ser el soporte de movilidad personal y de terminal.
Como resumen, la integración de sistemas debe ofrecer un acceso a red sin restricciones a los usuarios, de
forma independiente del proveedor de servicios, soportar movilidad y prestar el servicio de forma coherente.
La integración de estos sistemas puede entenderse compuesto de tres desarrollos relacionados:

315
- Núcleo de red: Evoluciona a la conmutación de paquetes, más eficiente al permitir el transporte de
distintos tráficos de forma integrada. Esto implica a los operadores a la hora de intercambiar tráfico.
- Acceso a la red (NGA): En la red fija, la “última milla”, tramo entre la central del operador y el
usuario se adapta para ofrecer acceso de banda ancha. El medio suele seguir siendo par de cobre.
La evolución es sustituirlo por fibra óptica, más indicado para soportar servicios de video.
Inconvenientes son la inversión a realizar, pero se ahorran costes de mantenimiento y operación.
- Equipamiento de usuario final: Evoluciona hacia equipos IP con mayor inteligencia. No sólo routers
domésticos o PC que desde hace tiempo superan las prestaciones de televisores y teléfonos,
también los terminales móviles son equipos muy potentes.
3. MEDIOS DE INTERCONEXIÓN
Los medios de interconexión para la integración de sistemas incluyen el cable de cobre y la fibra óptica. Ya
se han expuesto las características de los medios de interconexión estándares, incluyendo los medios no
guiados. Por tanto, lo particular de la interconexión se refiere a la forma de organizar cables, conectores e
información para lograr la comunicación. Es decir, los estándares de los medios de conexión.
4. ESTÁNDARES
Las normas y estándares existentes para la interconexión de sistemas, surgen de la necesidad de
compatibilidad entre fabricantes. Los estándares definen aspectos de la transmisión, como niveles de las
señales electromagnéticas, las dimensiones de los conectores o la lógica de comunicación.
4.1. Estándares de Fibra Óptica
La fibra óptica posee gran importancia, ya que en la integración de sistemas, la tendencia es sustituir los
medios de cobre por fibra. El despliegue es centrífugo y teniendo su origen en el núcleo de red se extiende
hasta acercarse cada vez más al usuario final. Sus ventajas con respecto al cobre son un mayor ancho de
banda, mayores secciones de regeneración o menor coste de operación y mantenimiento.
El despliegue de la infraestructura es caro y su amortización y evolución algo lento. Además existen
cuestiones legales que afectan a la regulación, normativa de autoridades, etc. Se distinguen distintos
despliegues, en función de la cercanía de la fibra al abonado. Se conocen en general como FTTx, ya que
todos comienzan por sus siglas en inglés, FTT y es la última letra la que cambia. Son:
FTTC. Fibre To The Cabinet, To The Curb, o To The Node (FTTN). Se podría traducir como fibra hasta el
bordillo, hasta la manzana o hasta el armario. Se cablea la red con fibra hasta el nodo local que aglutina a
los abonados de varios edificios. A partir del nodo, la red es de cable de cobre.
FTTB. Fibre To The Building. Fibra hasta el edificio. La red despliega fibra óptica hasta el exterior del
edificio. La distribución final sigue siendo de cobre hasta el abonado. El ancho de banda que puede
alcanzarse con este despliegue es considerable..
FTTH. Fibre To The Home. Fibra hasta el hogar. La fibra llega hasta la vivienda del usuario, lo que permite
alcanzar anchos de banda superiores. Se distingue entre FTTH-PPP (punto a punto) y FTTH-PON (red
óptica pasiva).
La diferencia estriba en que FTTH-PPP dedica una fibra a cada usuario mientras FTTH-PON usa fibra
multimodo y cada frecuencia de luz (color) transporta una señal diferente para cada usuario. Al no existir
componentes activos entre operador y usuario, la red se denomina pasiva (PON). Las diferencias se reflejan
en la capacidad, costos de despliegue y operación. La filosofía PPP o PON también es aplicable al
despliegue FTTB. En general, cuanto más cercana esté la fibra al usuario el ancho de banda será mayor.
Otro despliegue con medios estándares es el de redes HFC (Hybrid Fiber Coaxial), que combina fibra óptica
hasta el vecindario y cable coaxial hasta el usuario. Es conocido por los equipos de red y abonado,
llamados cablemodem. El desarrollo del estándar DOCSIS ha permitido a estas redes alcanzar anchos de
banda similares a los de despliegues FTTx, lo que ahorra costes. En general, la opción FTTC/VDSL es más
económica que FTTH, aunque se pierda capacidad al no tener fibra hasta el usuario.
4.2. RS-232
El estándar RS-232 (Recommended Standard 232) es uno
de los más usados en interconexión de sistemas. Define el
interfaz de comunicaciones típico entre un DTE y un DCE
por medio de un canal de transmisión de datos serie. El
estándar define las características y modos de operación del
interfaz serie, en general en comunicaciones punto a punto.
En la figura se muestran respectivamente los conectores típicos RS-232, DE-9 hembra y DB-25 macho. La

316
versión internacional de la norma se describe en las recomendaciones V.24 y V.28 del ITU-T. Se han
publicado cuatro versiones de la norma, la última la RS-232D. Las versiones A, B y C no describen las
características mecánicas, especificando que el conector en el ETD debe ser macho y en el ECD hembra.
La versión RS-232D especifica que el conector a usar debe ser el DB-25.El conector DB-25 permite
disponer de mayor flexibilidad gracias a su mayor número de pines, pero existen versiones de 15 y 9
patillas, siendo el de 9 pines uno de los más utilizados. De los 25 pines se utilizan 22, dispuestos de forma
recta (DB-25) lo que no da lugar a errores de cableado y permite trabajar en modo síncrono o asíncrono. Si
se utilizan sólo los 9 pines del conector DB-9, sólo se dará el modo asíncrono. Existen conexiones DTE-
DTE o DCE-DCE con diferentes cableado.
Las señales en un DTE y un DCE deben tener el mismo nombre. Por ejemplo, aunque el pin 2 del DTE
transmita y el pin 2 del DCE reciba, ambas señales se denominan Transmit Data. Existe un juego de
señales secundario que incluye las señales de control, para enviar información de configuración, solicitar
retransmisiones y otras funciones.
Para asegurar la fiabilidad del medio típicamente trabajan a velocidades bajas y distancias cortas. Según la
norma, el interfaz RS-232 se define para distancias de unos 15 metros y tasas de transmisión de hasta 20
Kbps. El modo de trabajo puede ser síncrono o asíncrono y en canales símplex, dúplex o semidúplex.
Asimismo la norma específica líneas de negociación para la adaptación de velocidades entre dispositivos
que trabajen a distintas tasas de transmisión.
Si se conectan las líneas RTS y CTS, se obtiene un bucle de prueba del circuito. La representación del 1 y
el 0 lógico se hace con niveles de tensión negativos y positivos respectivamente. En una comunicación
asíncrona se necesitan bits de arranque y parada. Los bits de Paridad se utilizan para verificar la integridad
de la información.
Las líneas RTS y CTS son de negociación y realizan ese control de flujo. En un principio no fueron
pensadas para estas funciones, pero su amplia utilización en esta forma, lo ha hecho casi estándar. El
dispositivo UART (Universal Asynchronous Receiver-Transmitter) implementa las normas del interfaz y entre
sus funciones se encuentran la negociación de tensiones de transmisión, control de señales o conversión
entre transmisión paralelo a serie o serie paralelo.
Para superar algunas limitaciones de RS-232, se publicó la norma RS-422 como nuevo estándar, que viene
a mejorar aspectos como la tasa de transmisión, la distancia, tensiones más acordes a las utilizadas en
transmisión o no ser una línea equilibrada, para presentar más robustez frente a interferencias.
4.3. V.35
V.35 es una norma desarrollada por el ITU, que puede considerarse incluida en la norma V.11. Define una
transmisión síncrona de datos que especifica tipo de conector, pineado (o funcionamiento y disposición de
los cables en el conector) y niveles de tensión y corriente a usar. Las señales usadas son combinación de
las especificaciones V.11 para sincronismo y datos y V.28 para señales de control. Utiliza señales
balanceadas (niveles de tensión diferencial) para transportar datos y sincronismo (alta velocidad).
Para la señalización y control (baja velocidad) se utilizan señales
desbalanceadas (niveles de tensión referidos a masa). Los relojes de
transmisión y recepción son independientes y la velocidad varía entre 56 Kbps
y 2 Mbps (puede llegar a 10 Mbps), dependiendo del equipamiento y cables
usados. Los valores típicos son Nx64 Kbps: 64 Kbps, 128 Kbps, 256 Kbps, 2
Mbps, etc. En la figura se muestra un conector V.35.
Típicamente se utiliza para transportar protocolos de nivel 2 como HDLC, X.25, SNA, PPP, etc. El conector
tradicional es el MRAC-34, estandarizado en la norma ISO 2593 también conocido como Winchester de 34
pines. Pueden usarse conectores DB-15 o de alta densidad (estándar o propietario, por ejemplo de Cisco).
Servicios típicos ofrecidos a través del interfaz V.35 son el acceso a Internet, a Frame Relay o circuitos
punto a punto para transporte multiprotocolo, por poner algunos ejemplos.
5. PROTOCOLOS DE ACCESO A WAN
Como caso general, para interconectar redes locales se precisa una red WAN. Para explicar más en detalle,
las particularidades de su implementación se presentan los protocolos más utilizados.
5.1. X.25
Es un estándar de conmutación de paquetes usado en redes WAN, definido en 1970 por el CCITT (ITU-T),
prácticamente obsoleto, pero con importancia académica. Se concibe en la red pública de conmutación de
paquetes (tasa de transmisión máxima 64 Kbps). Ofrece un servicio orientado a conexión, fiable (basado en
CV), pensado para grupos cerrados (VPN), con retardo de tránsito y paquetes de interrupción.

317
Sus protocolos permiten una comunicación muy fiable a cambio del empleo de mucho tiempo de proceso.
Se da la posibilidad de establecer una “llamada rápida”. Entre dos nodos de la red X.25 se establece un CV
permanente, pero si la línea que une el host a la red es de menor velocidad, la línea podrá ser usada por
más usuarios. En X.25 existe una conexión extremo a extremo lógica, no permanente; se establece con
cada paquete. Hay establecimiento y liberación de conexiones. Los CV pueden ser conmutados
(establecimiento, uso y liberación) o permanentes, si así se contrata con el operador.
El servicio asegura que todos los paquetes llegan en el mismo orden en se enviaron y confirma entrega y
control de flujo. X.25 supone una norma pesada en cuanto al proceso de los nodos, por eso se ha sustituido
por tecnologías más ágiles como Frame Relay o MPLS.
5.2. Frame Relay
Frame Relay se define en 1984 como una propuesta de la ITU para normalizar y diseñar un servicio basado
en circuitos permanentes de alta velocidad y capacidad. Es un servicio de red pensado para el flujo de datos
y la interconexión de LAN. Se define el servicio extremo a extremo y especifica el diálogo. Surge como una
mejora de X.25, capaz de ofrecer más velocidad y un tamaño de paquete mayor.
La conmutación en FR se refiere al encaminamiento en los nodos. El multicast cada vez iba adquiriendo
más importancia y FR se adaptó para ofrecer ese servicio. La utilización de CVP, es la tónica general, pero
existen implementaciones de FR en que no se utilizan.
FR puede describirse como un servicio para datos, no pensado en principio para transmisión multimedia,
aunque es soportado. Es un servicio multiplexado asíncrono, es decir no sujeto a un reloj de red y en
comparación con X.25 utiliza señalización fuera de banda, con escasos controles ni de flujo ni de errores.
Básicamente se ocupa de evitar la congestión global de la red.
Se usan las normas V.24 y V.35. A nivel de enlace se cuida el entramado, protección frente a errores y
multiplexión de varias conexiones. Existen directivas para el control de congestión que puede ser en ambos
sentidos de la comunicación, por lo que en la cabecera de los paquetes existen dos bits para indicarlo.
Los servicios FR se resumen en conmutación de paquetes, no fiable y con tasa media de transmisión según
contrato, que se especifica con el CIR (Conmitted Information Rate) de los CV contratados. Si el usuario no
se ajusta al CIR, puede perder información. La velocidad aumenta sobremanera con respecto a X.25.
La red también debe cumplir el CIR, para lo que se usa un bit, DE, de descarte. Si se cumple la tasa
contratada, el bit DE se le asigna el valor cero. Si el paquete es desechable, se le asigna el valor uno. A
nivel de enlace, donde se sitúa el protocolo LAP-F, se realizan funciones de nivel 2 y algún aspecto de nivel
3. A veces se le denomina nivel 2-3.
En la estructura de la trama LAP-F se reserva otro bit, el DLCI, para indicar la contratación de un servicio de
enlace fiable. Si es el caso se asignará al bit DLCI el valor cero.
5.3. RDSI
La Red Digital de Servicios Integrados, RDSI (ISDN), es una tecnología de red surgida hacia 1984, en la
que se pretendía soportar servicios de distinto tipo, como el telefónico, datos, imagen, etc.
El acceso a RDSI se realiza por medio de un bucle más elaborado que el de abonado
conectado a un PTR (Punto de Terminación de Red). El PTR en RDSI se denomina NT1
(Network Terminal) o TR1 (Terminal de Red) y consta de cuatro pares (transmisión,
recepción, alimentación y auxiliar).
Si se desea conectar periféricos no compatibles en principio con RDSI o una pequeña red
de dispositivos que compartan la conexión RDSI, se pueden usar adaptadores específicos
para cada necesidad. El interface utilizado en estos casos es el interface S.
Los tipos de canales multiplexados son los canales tipo B de 64 Kbps para datos y voz, el canal D de 16 o
64 Kbps, típicamente 16, de señalización y los canales H, que permiten tasas de transmisión superiores a
64 Kbps. Los dos tipos más extendidos son el H0 a 384 Kbps y el H10 a 1920 Kbps.
Típicamente se contratan n accesos tipo B y uno tipo D. El acceso básico se denomina BRI (Basic Rate
Interface), compuesto de dos canales B y uno D. El servicio primario suministra 30 canales B y uno D, típico
en Europa. En USA y Japón se configura con 23 canales B y uno D.
En RDSI es que se pueden producir colisiones en el acceso si dos hosts quieren acceder a la vez. La
resolución se realiza escuchando el canal “E” (eco del canal D), antes de transmitir, y sólo se transmite si se
escucha una señal indicativa de canal libre.

318
Para el acceso a Internet por medio de RDSI, se necesita un protocolo de entramado llamado PPP (Point to
Point Protocol) a nivel de enlace. A nivel de red podría montarse IP. Estos dos protocolos serían parte del
plano de usuario desde perspectiva RDSI, es decir, RDSI ofrece el recurso físico estructurado.
Si por ejemplo se desea establecer una comunicación con un equipo de red que trabaje con X.25, bastaría
con configurar en el nivel de enlace el protocolo LAP-B y un protocolo X.25 de nivel de red, consiguiendo la
comunicación con X.25 sobre RDSI. LAP-B es muy similar a LAP-D. En este sentido, un caso de estudio es
el sistema euro-ISDN, el servicio ISDN europeo. Suele distinguirse la siguiente clasificación de servicios:
Tipo de acceso BRI o PRI; servicios portadores de voz (3.1 KHz), transporte de datos (64 Kbps) y
conmutación de paquetes; Servicios suplementarios CLIP, CLIR, MSN, TP y Sub-adressing, siendo:
CLIP, la identificación de llamada entrante, CLIR la restricción de identificación de la línea llamante, MSN la
posibilidad de múltiples abonados a una misma línea, TP, la portabilidad del terminal y Sub-adressing, la
adición al terminal de un dígito para su identificación en la red.
5.4. ATM
ATM es el acrónimo de Modo de Transferencia Asíncrono. Es una tecnología de conmutación definida por el
CCITT para redes WAN. Surge como respuesta a la necesidad de mayor velocidad y ancho de banda para
transmisión de datos y en especial aplicaciones como el audio y el vídeo.
Las grandes redes de conmutación, en sus núcleos y enlaces troncales suelen emplear a nivel de
transmisión tecnología SDH, Jerarquía Digital Síncrona, también conocida como SONET, por ser muy
similar. ATM supone una concepción diferente a las tecnologías anteriores siendo empleada, entre otras, en
redes SDH y SONET para multiplexado y conmutación.
La idea principal de ATM no es conmutar circuitos o asignarlos permanentemente, sino realizar conmutación
de paquetes de datos pequeños, celdas ATM, enrutadas por trayectos y caminos virtuales, aprovechando al
máximo la capacidad del canal de transmisión. ATM está muy relacionado en su concepción con SDH, para
que su integración combine las ventajas del ancho de banda de la fibra óptica, con las técnicas de
multiplexado y conmutación, que generan retrasos pequeños en las comunicaciones extremo a extremo.
La forma de trabajo de ATM consiste en enviar sus celdas en función del flujo que genere la fuente de
información, si no hay datos, no se envía nada. Cuando se transmite, los datos se componen en la celda
ATM y se añade su cabecera correspondiente. Con la información de cabecera, los nodos de la red eligen la
ruta a seguir, que no tiene por qué ser la misma para todas las celdas de una conexión dada.
Para dar servicio a diferentes tráficos, como voz, vídeo o datos, surgió la disyuntiva de utilizar un tamaño de
celda reducido o algo mayor. Esta decisión de diseño no es trivial, ya que con un tamaño de celda pequeño
se pierde ancho de banda, el destinado a las cabeceras, y con un tamaño grande, se puede generar mucha
fragmentación, es decir capacidad desaprovechada al enviar datos pequeños. La decisión final dejó definido
el tamaño de celda en 53 bytes, de los que 5 se destinan a la cabecera, la información de control.
En ATM se diferencia entre canales y caminos virtuales, que se identifican con dos números, VCI o
Identificador de Canal Virtual y VPI o Identificador de Camino (Path) Virtual. Un camino virtual es una ruta
entre nodos ATM y pueden contener varios canales virtuales.
Cuando se transmite con un requisito de calidad de servicio, se selecciona un canal virtual de origen a
destino, por el que circularán todos los datos. Los nodos irán cambiando la cabecera de la celda para seguir
el camino virtual entre los nodos que componen ese canal. El enrutamiento puede ser estático o dinámico.
El problema de ATM es que el formato de celda es pequeño y se pierda eficacia, sobre todo en redes que
requieran altas velocidades. Sin embargo es muy usado para transporte en redes WAN de velocidades
medias como ADSL.
5.5. MPLS
La tecnología de conmutación de etiquetas de multiprotocolo o MPLS, consiste en un intento de unificación
del servicio de transporte para redes de circuitos y datagramas. Se define en el RFC 3031 del IETF y ofrece
un servicio orientado a conexión estableciendo CV en redes IP.
MPLS intenta superar los problemas de ATM heredando sus ventajas. Se basa en el etiquetado de los
paquetes de datos para agilizar su tránsito, ya que los routers que atraviesa el tráfico sólo evalúan esas
etiquetas, no las direcciones de destino. El etiquetado facilita la conmutación de paquetes e indica un CV.
MPLS permite implementar de forma natural redes privadas virtuales (VPN), realizar ingeniería de tráfico,
ofrecer calidad de servicio y protección frente a fallos y mantener CV. Además, puede montarse sobre la
mayoría de tecnologías WAN: Frame Relay, ATM, líneas punto a punto, etc.

319
La idea fundamental reside en que los paquetes a niveles inferiores no se examina, son enrutados con la
información de etiqueta, lo que independiza del protocolo de transporte. MPLS puede entenderse como un
protocolo entre los niveles 2 y 3 de OSI. Los objetivos marcados en el estándar definen que MPLS debe
soportar el envío unicast y multicast, poseer compatibilidad con la gestión de redes IP y con el modelo de
servicios integrados del IETF como RSVP y funcionar sobre cualquier tecnología de transmisión.
El funcionamiento de una red MPLS se puede resumir así: cuando un paquete de datos entra en la red, un
equipo con un interface MPLS lo etiqueta en base a los parámetros de la comunicación y según la red o el
servicio contratado, el paquete puede seguir un CVP o un CVC. Así puede trabajarse en forma más
parecida a ATM con sus identificadores de circuito virtual o camino virtual (VPI/VCI) o a FR con sus DLCI,
independientemente del nivel 2 que sirva de subred.
La ruta seguida se fija desde el origen pero en cada salto, la etiqueta del paquete puede cambiar y pueden
apilarse para conseguir un enrutamiento jerárquico. El etiquetado consigue mantener menos información de
estado, que en casos como ATM. Cuando el paquete ha llegado al extremo de la red MPLS, la etiqueta es
retirada por el equipo frontera de la red y se entrega a otra red, la que sea.
De esta forma, MPLS ofrece más rendimiento al aprovechar mejor el ancho de banda y los requisitos de
proceso en los routers, lo que deriva en menos costes. Soporta de forma nativa calidad de servicio,
introduciendo prioridades de tráfico, lo que permite integración de voz, video y datos.
MPLS es escalable y mejora la recuperación frente a incidencias estableciendo enlaces redundantes y
conexiones de respaldo que se configuran más ágilmente que en ATM o FR, que obligan a establecer CV
de backup permanentes o conmutados.
5.6. ADSL
ADSL es el acrónimo inglés de Línea de Abonado Digital Asimétrica. En realidad no se puede considerar
como una tecnología de transmisión de WAN. Es una tecnología de acceso a Internet, utilizada para la
transmisión de datos en la línea de abonado de telefonía, que se expone por su popularidad.
ADSL define una transmisión analógica de datos digitales sobre par de cobre telefónico, utilizando distintas
frecuencias para ofrecer voz y datos simultáneamente. Las frecuencias bajas se usan para la transmisión de
voz analógica. Los datos se modulan y transponen en dos intervalos con anchos de banda diferentes, el
primero usado para en enlace de subida (upstream - de 25 a 138 KHz) y el enlace de bajada (downstream
entre 138 y 1104 KHz).
Esta diferencia en los anchos de banda de los canales de subida y bajada se debe a que, en general los
datos que se envían del usuario a Internet, serán pocos, por ejemplo pulsar un enlace de descarga de un
archivo, sin embargo, el enlace de bajada si suele necesitar alta capacidad. Esta es la razón de que se
denomine línea de abonado asimétrica.
ADSL es una variedad de la tecnología DSL, basada en estos principios. Cuanto más se explota el ancho
de banda del par telefónico, más se reduce la máxima distancia alcanzable entre cliente y central. Los
valores típicos para ADSL se enmarcan entre 2 y 5 km.

320
TEMA 70. DISEÑO DE SISTEMAS EN RED LOCAL. PARÁMETROS DE DISEÑO. INSTALACIÓN Y
CONFIGURACIÓN DE SISTEMAS EN RED LOCAL.

1. INTRODUCCIÓN
2. DISEÑO DE SISTEMAS EN RED LOCAL
3. PARÁMETROS DE DISEÑO
4. INSTALACIÓN Y CONFIGURACIÓN DE SISTEMAS EN RED LOCAL
4.1. Instalación
4.1.1. Cableado
4.1.2. NIC
4.1.3. Electrónica de red
4.2 Configuración
4.2.1. Equipos
4.2.2. Electrónica de red
4.2.3. Servidores
4.3. Gestión

321
1. INTRODUCCIÓN
El análisis e implantación de un sistema en red consiste en un conjunto de actividades cuyo objetivo es
definir las instalaciones y los servicios de comunicaciones con que se va a dotar a la organización. Están
orientadas a obtener el máximo rendimiento de la inversión en tecnología. Si el análisis es viable técnica y
económicamente, se procederá al diseño del sistema. Esto representa una etapa de mayor concreción de
las soluciones a adoptar en la implantación.
2. DISEÑO DE SISTEMAS EN RED LOCAL
El análisis de un sistema en red, es el estudio estructurado de un sistema, existente o futuro, en que se
definen aspectos relacionados con su funcionalidad, estructura, impacto, etc. La implantación del sistema en
red es el conjunto de actividades que logran poner en servicio el sistema. Está sometida a un proyecto en
que se especificarán tiempos, costes y procedimientos.
La gestión de un sistema en red consiste en la monitorización constante del sistema. Por tanto es la fuente
principal de información y sirve de base para el mantenimiento de la red y futuros análisis.
La relación entre el análisis y la implantación de un sistema en red también se refiere a la fase inicial de un
proyecto de despliegue o mejora de la infraestructura. Por tanto, el primer paso en la planificación de un
sistema en red es el análisis. El análisis comienza con la definición de la funcionalidad. Las necesidades de
la organización serán las que marquen el tipo de red a implementar y los servicios que soportará.
Las necesidades se plasman en requisitos de usuario, especificaciones que exige a su red el cliente o
peticionario. La enumeración de los requisitos es un aspecto tan importante del proyecto de implantación,
que debe reflejarse muy en detalle en el proyecto; es una fase del proyecto con entidad propia.
El análisis debe tener en cuenta aspectos como la definición del problema, las funciones de los elementos
de configuración, disponibilidad, características, comportamiento del software a instalar, del sistema y la
información. La fase de análisis debe aclarar estos aspectos, porque errores o malas interpretaciones no
atajadas en fases tempranas se proyectan en costes elevados en fases más maduras.
La viabilidad posee dos vertientes, la técnica y la económica. La primera es la posibilidad real de
implementar la solución con la tecnología disponible y la viabilidad económica se refiere a la posibilidad de
sufragar la solución con los recursos económicos disponibles.
El análisis debe generar documentos que especifiquen el equipamiento con que se dotará el proyecto, el
software, recursos humanos y todos los elementos que afecten al sistema. Es necesario establecer
restricciones temporales para delimitar el impacto que tendrá sobre la organización y sobre el presupuesto.
Podría decirse que, en general, si el proyecto excede la planificación temporal, se incurre en gastos extra.
El equipo de análisis deberá definir y evaluar el rendimiento a exigir, la
calidad del servicio, el equipamiento y el personal implicado con sus roles
respectivos. Si se trata de una migración o actualización hay que tener en
cuenta los periodos en que el nuevo sistema convivirá con el existente y su
integración.La viabilidad económica especificará no sólo los costes
derivados de la ejecución del proyecto, sino los costes futuros de
mantenimiento y gestión. En general se optará por tecnologías con un
amplio soporte comercial que permitan y faciliten la evolución del sistema y
ventajas económicas como la recompra de equipos obsoletos o la
compatibilidad entre tecnologías de distintos proveedores.
Dependiendo del alcance del proyecto y el criterio del analista, pueden
considerarse en la fase de análisis requisitos de seguridad del sistema, en
cuanto a equipamiento o como parte de la operativa de red. Este punto debe
ser tenido en consideración al implantar el sistema dado que de la seguridad
puede depender la continuidad de la organización.
Realizar un documento de análisis de un sistema en red, es una tarea que puede ser compleja en función
de la dimensión y requisitos. La forma de realizar un análisis no es estándar. Como guía orientativa puede
servir el diagrama de flujo de la figura, que pretende mostrar un cierto procedimiento simple y fácil de
recordar con etapas genéricas.
Como etapa inicial, el análisis surgiría de la detección de una necesidad, que puede ser de distinto tipo,
afectar de forma parcial al sistema en red, o a su totalidad. Identificada la necesidad habría que recopilar la
información del sistema, incluyendo los requisitos de usuario. Tras esta etapa se realizarían una serie de
hipótesis o propuestas de trabajo, como el número de usuarios estimados, la carga de trabajo, etc. que
deben ser validadas con la ayuda de simulaciones, maquetas o estudios previos.

322
El cliente final será el más interesado en disponer de una maqueta o prototipo del futuro sistema. Como
resultado del proceso de validación, se procedería a la presentación de los resultados del análisis.Si no se
cumplieran las expectativas, habría que volver a redefinir la planificación del proyecto. Una vez obtenido el
análisis, sus resultados darán comienzo a la siguiente fase del proyecto de implantación del sistema, el
diseño, donde se detallarán con más profundidad los aspectos tratados en el análisis.
Los resultados se expondrán en algún tipo de documento base para el cliente y el equipo de diseño para
definir las soluciones concretas que se aplicarán en cada punto tratado. La forma de estructurar los
resultados del análisis son abiertas y cada analista las podrá presentar según su experiencia o interés en
determinado área con mayor relevancia comercial u otra razón, sin embargo en todos los análisis debe
haber puntos comunes presentados bajo los epígrafes que se consideren oportunos.
A continuación se presenta un posible modelo de análisis de la implantación de una red LAN, que puede ser
un caso típico. Hacer notar que el análisis de un sistema en red puede estar referido a la implantación de
otro tipo de red, como una WAN empresarial.
El análisis en este caso, dependiendo de la magnitud del proyecto podría contener la misma estructura
general, aunque incluyendo los aspectos particulares de la naturaleza de una red WAN. Por tanto, como
mínimo, el análisis, podría constar de dos partes: una definición, si es un proyecto de implantación o una
descripción del sistema, si ya existe, y una enumeración de requisitos.
En la definición o descripción del sistema habría que considerar su alcance y los usuarios implicados en la
operativa habitual del sistema. En la enumeración de requisitos, se describen las necesidades y parámetros
de funcionamiento del sistema. En la parte de definición del sistema se describe de forma inicial el proyecto,
el alcance del sistema y su descripción con modelos abstractos de alto nivel. Puede incluirse también la
planificación del proyecto.
El alcance del sistema describirá los objetivos para los que es concebido, tales como disponibilidad de la
información o compartición de recursos. Debe definirse el equipamiento de red necesario y los aspectos de
conexión a nivel físico y lógico garantizando la fiabilidad requerida. En los modelos de alto nivel se
especificarán las interfaces con el resto de sistemas implicados. En la identificación de los usuarios pueden
establecerse sus perfiles iniciales y responsabilidades.
La enumeración de los requisitos del sistema definirá en detalle las exigencias impuestas para establecer
criterios que demuestren que se cumplen las especificaciones de cliente y describan con mayor precisión el
sistema. Ejemplos de requisitos que pudieran establecerse en un análisis de red, serían el tipo de cableado
de la red, su topología, tasa de transferencia mínima y en general, requisitos típicos de funcionamiento de
una LAN y específicos marcados por el cliente. Mención aparte merecen las técnicas de recolección de
información.
Estas técnicas son variadas y pueden darse en distintas
formas. Las más comunes son reuniones con los
responsables de los departamentos implicados, diálogo
con los usuarios del sistema, observación directa o
consulta de la documentación del sistema, si existe.
La documentación juega un papel muy importante en cualquier sistema, ya que protege, frente a variaciones
en los puestos de responsabilidad o encargados del mantenimiento. A la vez facilita futuros análisis y sirve
de base eventualidades. Por estas razones cada vez más las empresas son sensibles a este aspecto.
El proceso de captura de información debe contribuir a la identificación de la funcionalidad del sistema, las
restricciones que ha de cumplir en cuanto a accesos, seguridad, desempeño o disponibilidad, que en el
fondo constituirán buena parte de los requisitos.
En sistemas ya implantados, para los que se realiza un análisis, la colaboración de los usuarios y
responsables es fundamental para el analista, que a partir de la información que obtenga, muchas veces
tácita, debe plasmarla en la definición del sistema.
Por fin, una vez realizado el análisis, se pasará a diseñar la solución, lo que equivale a conseguir un grado
más de detalle para el proceso de implantación de la solución.
3. PARÁMETROS DE DISEÑO
La fase de implantación de un sistema en red comienza con el diseño de la solución propuesta en el
análisis. En general, habrá que convivir con una complejidad importante, ya que suele ser común que
existan distintos medios de transmisión en entornos LAN, con un gran número de equipos y además se
requerirá la conexión con redes externas, en particular Internet. El diseño correcto de la red no sólo
garantizará su desempeño, sino que ante cambios o crecimientos futuros ahorrará tiempo y dinero.

323
El diseño de una red puede estructurarse en el diseño topológico y el diseño jerárquico. El primero explicará
que topología de red, física y lógica, será por la que se decante la solución y en el diseño jerárquico se
especificará qué tecnologías y equipamiento se utilizará en cada nivel de la arquitectura.
En el diseño topológico, en general, tanto para una WAN empresarial como para una LAN, se dará como
caso típico la topología en estrella. En una red LAN resulta casi inmediato, al utilizar tecnología Ethernet. En
una WAN pueden darse otras topologías, pero cuando al hablar de redes privadas virtuales, es común
estructurar la red con CVP con topología en estrella, donde el nodo central suele corresponder a la sede
central de la empresa y que se conectaría con cada delegación distribuida por la geografía.
En este tipo de organización de una WAN empresarial, el acceso a Internet de las delegaciones no suele
ser directo, sino que se centraliza en la sede. De esta forma si un usuario de una delegación accede a
Internet, estará estableciendo una conexión con sus servicios centrales, que lo gestionarán.
Esta centralización evita duplicar la infraestructura de acceso y seguridad en cada delegación. En un
sistema en red LAN, habrá que definir dentro de la topología la división horizontal (relativa a una misma
planta de un edificio) y vertical (relativa a la comunicación entre distintas plantas o zonas), el cableado a
utilizar, la ubicación de servidores, electrónica de red y la DMZ.
En un caso típico, el cableado vertical requerirá más capacidad por transportar más información, ya que
todo el tráfico de una planta o zona se distribuye por estos enlaces. Será conveniente por tanto la utilización
de medios tales como la fibra óptica. En el cableado horizontal se suele optar por el par trenzado. Si la LAN
fuese muy extensa, podría hablarse de una topología en árbol, uniendo varias redes en estrella con
cableado vertical de alta capacidad. La unión de las distintas LAN en estrella se podría realizar con routers.
Para la conexión a la WAN empresarial o a Internet, si sólo se requiere este acceso, en general se
contratará con un operador. La gestión de la seguridad sería responsabilidad de la empresa cliente, a no ser
que se establezcan acuerdos de mantenimiento y gestión.
En la siguiente figura se presenta un ejemplo típico de topología LAN más o menos amplia, en que existan
equipos en distintas plantas de un edificio. Se puede disponer de un cableado horizontal típicamente par de
cobre, que irá conectado a un switch. Los switches se conectan mediante cables de alta capacidad y a un
router que dará acceso a la DMZ, realizará la conmutación entre VLAN y permitirá la navegación por
Internet. El esquema se puede complicar si existen más routers o una topología más compleja.
La topología lógica, será en general, de difusión, debido a la tecnología dominante Ethernet. No tendría
mayor importancia si no fuera por la pérdida de rendimiento que se genera cuando el tráfico es intenso. Por
tanto, habría que especificar es la segmentación de la red.
En este punto se define la topología de las VLAN que se
proponen y su organización, especificando los protocolos
a utilizar como VTP (VLAN Trunk Protocol, protocolo de
enlace de VLAN) o STP (Spaning Tree Protocol,
protocolo de expansión de árbol, orientado a evitar
bucles que generen inestabilidades, entre otros).
Debe recordarse que éstas se definen en los switches y
la comunicación entre ellas requiere de un equipo de
nivel tres, un router.

El diseño jerárquico puede dividirse siguiendo la estructura marcada por la arquitectura de comunicaciones,
en que se identificarían tres niveles, de subred, de red y aplicación.
A nivel de subred, Ethernet supone el estándar de facto en redes LAN, debido a sus ventajas en cuanto a
costes y mantenimiento. La tecnología elegida debe describirse en la fase de diseño junto con las opciones
que se implementarán: tipo de cableado (100 base TX, 1000 base T, etc.), normas a seguir, tipo de
cableado vertical, tarjetas de red y en general, lo relacionado con el hardware de red.
La decisión final de la tecnología a implementar soportará las exigencias del sistema. Para ello podrán
utilizarse herramientas de simulación. Si el cableado de red va a estar canalizado junto a cableado
destinado a otras funciones como el de telefonía o video, suele integrarse en esta parte del diseño. Suele
ser habitual contar con algún tipo de acceso inalámbrico a la red. Si fuera el caso, los documentos de
diseño incluirán la tecnología a emplear, su estructura y los aspectos de seguridad.
A nivel de red se deben abordar aspectos como el
direccionamiento. Lo habitual es asignar distintos rangos a
cada VLAN y dejar holgura para posibles ampliaciones. La
asignación de direcciones a cada equipo de la red puede
hacerse de forma estática o dinámica.

324
Hacerlo de forma estática complica el mantenimiento. Los métodos dinámicos ofrecen un automatismo que
incrementa el rendimiento, porque ante un cambio, la asignación de una nueva dirección no supone ninguna
configuración nueva y ante una baja, no habría que actualizar el listado de control de direcciones libres. Del
mismo modo, para el acceso a Internet se debe definir el rango de direcciones IP públicas a usar y cómo se
realizará el acceso.
A nivel de transporte, debe definirse lo relativo a firewalls, configuración, estructura y organización, accesos
VPN, filtrado de puertos, utilización de protocolos seguros y el equipamiento. Si se utiliza un router para las
funciones de red y de firewall, este punto estaría ya incluido, pero si se instalan routers y firewalls
específicos habrá de desgranarse en el documento de diseño e implantación.
La configuración de la DMZ, listas de control de acceso, métodos de filtrado y gestión, aperturas temporales
de puertos, etc. deben ser especificadas. A su vez dibujarán otras necesidades, como servidores de
seguridad de acceso (como los RAS Servidores de Acceso Remoto) o servidores proxy.
A nivel de aplicación debe definirse, lo relativo al software de red: sistemas operativos que se implantarán,
servicios a montar, estructura, organización y recursos. La elección de uno u otro SO de red, es importante
a la hora de evaluar costes, rendimiento, disponibilidad y prestaciones.
Una vez terminado el diseño, íntimamente relacionado con la implantación, se entraría en la fase más
operativa y propia de implantación del sistema. En un plan de implantación se deben definir sus etapas y las
pruebas de aceptación del sistema. El sistema debe cumplir con las especificaciones del análisis y los
requerimientos legales que se hayan establecido en el contrato.
La implantación comienza con la instalación física de cableado y dispositivos. La documentación del
sistema: arquetas, armarios, canalizaciones, conexiones, etc. es un aspecto al que no se suele prestar
demasiada atención, pero si se realiza, ahorra mucho tiempo y dinero.
Otras tareas de la implementación física es la etiquetación de cables y equipos. No sólo los equipos de
usuario y servidores, también conmutadores, armarios y repartidores.
Una vez instalada la infraestructura, y según el plan de implantación podría realizarse en paralelo, habría
que implantar los aspectos lógicos, en su parte de red y de aplicación. En esta fase se configurarían los
equipos de red y los sistemas operativos y servidores.
Una vez que se considere el sistema instalado, deben realizarse las pruebas de aceptación, en las que el
cliente debe comprobar que el sistema funciona conforme a especificaciones. Las pruebas estarán referidas
a programas, sistemas, incidencias, carga y respuesta de la red, etc.
Es importante tener en cuenta la fase de operación una vez implantado el sistema, lo que se denomina a
veces, la puesta en producción. En esta fase, ya fuera del proyecto se especificaría todo lo relativo al
mantenimiento de la red, al funcionamiento habitual y a los aspectos de recuperación ante incidentes. Estos
campos son muy amplios y podrían incluir acciones como la formación a usuarios.
4. INSTALACIÓN Y CONFIGURACIÓN DE SISTEMAS EN RED LOCAL
Una vez elegida realizado el análisis y diseño del sistema en red, en este caso una LAN, y una vez decidida
la tecnología a implementar el siguiente paso sería su instalación y configuración, englobándose en la
instalación los aspectos físicos y en la configuración los lógicos.
4.1. Instalación
Para presentar la instalación de la parte física de la red, se ha dividido el estudio en tres partes,
correspondientes al cableado, las tarjetas de red (NIC) y la electrónica de red.
4.1.1. Cableado
El cableado de una LAN, puede decirse que la inmensa mayoría de ellas utiliza dos tipos de cable, el par
trenzado y, en menor medida, pero cada vez con mayor difusión, la fibra óptica.
El cableado de planta centralizado en el armario de comunicaciones suele ser par trenzado de categoría 5 o
6 para Fast o Gigabit Ethernet. El cableado vertical, para unir plantas de un mismo edificio o edificios
adyacentes, suele montar cable de par que soporte Gigabit Ethernet o fibra óptica.
Para la instalación del par trenzado sólo sería necesario el cable, conectores, crimpadora y alicate. La
creación del cable de par trenzado consiste en retirar la cubierta del cable (“pelarlo”), disponer los ocho
cables en orden y cortarlos para igualarlos en longitud, introducirlos en el conector RJ-45 y usar la
crimpadora para ajustarlo al conector. Una vez realizado, se comprueba su funcionamiento.

325
Se suele contar, y es bueno disponer de un comprobador de cable, como
el de la figura, que en ocasiones viene integrado en polímetros. Esta
herramienta pasa un test al cable, una vez montado, y comprueba si las
conexiones son correctas indicando con LEDs si hay continuidad en el
cable y si la conexión cable conector es correcta.
Una vez listo el cable, se dispondrá entre el equipo y el concentrador de red, o el armario correspondiente.
El cable se canaliza con canaletas o rejiband y se agrupan con bridas o similar. Es normal numerarlos e
identificarlos con algún código escrito en el propio cable con rotuladores indelebles o etiquetado al efecto.
Estos detalles pueden parecer exquisitos, pero ahorran tiempo y errores.
El cable coaxial se instala de forma parecida. Para la conexión del conector BNC y el cable no hace falta
crimpadora. Basta encajar el conductor central en su posición del conector y el conductor externo, la malla
haciendo contacto con la parte externa del conector. Es una configuración similar a la de cable de TV.
La fibra óptica cada vez adquiere más importancia. Todas las redes LAN permiten el uso de fibra multimodo
y en general se utiliza fibra de 62,5 μm, en la ventana de trabajo de 850 nm. La fibra de 50 μm ofrece 500
MHz/km (OM-2) frente a 200 MHz/km (OM-1) de la de 62,5 μm, por lo que es más favorable para
transmisión a velocidad de 1 Gigabit y 10 Gigabit. Ambos tipos de fibra no deben combinarse en la misma
instalación, por lo que se recomienda usar fibra de 50 μm en nuevas instalaciones, aunque sea más caro y
fibra de 62,5 μm en las instalaciones existentes que ya cuenten con ese tipo de fibra.
Si se usan láser emisores tipo VCSEL, su baja anchura espectral permite emplearlos indistintamente en
fibra de 50 o de 62,5 μm. La instalación de la fibra es similar a la del cable de par trenzado, pero es más
delicada en su manejo, por su menor flexibilidad y si el cable se dobla en exceso puede romperse la fibra.
Los conectores de las fibras ya han sido presentados en sus distintas formas y tipos. Para montar un cable
de fibra a un conector, se realiza lo que se da en llamar una conexión temporal (desconectable), por
oposición a una conexión permanente o empalme que se realiza entre fibras. En las conexiones, temporales
y permanentes, la alineación del núcleo de la fibra con las zonas activas de emisor y receptor, es un factor
crítico para maximizar la potencia acoplada y por tanto minimizar las pérdidas.
Las pérdidas en los empalmes y conexiones suelen deberse a desplazamientos laterales de los ejes de las
fibras, desalineamientos, malas terminaciones de los extremos, etc. Para realizar un empalme de una fibra,
se utilizan máquinas empalmadoras manuales o automáticas. Los empalmes por fusión son permanentes y
suelen ofrecer unas pérdidas típicas de 0.1 dB.
El proceso de empalmado consiste en pelar un trozo de la fibra (en torno a 5 cm), que debe ser limpiado
con alcohol isopropílico. Una vez limpias, las fibras se cortan con un cutter de hoja de diamante de 8 a 16
mm y se apoyan en el canal de la máquina empalmadora.
Cuando las fibras están ya colocadas, en la pantalla de la empalmadora se mostraría una imagen
semejante a la presentada en la figura. En ella aparecen los extremos de las fibras donde se podrá
comprobar si están alineadas. Si no lo estuvieran, la empalmadora no permite realizar el empalme. Si las
fibras están correctamente alineadas, se pulsa el botón de empalme, para lo que la empalmadora ha de
ajustarse en modo automático y así alinee los ejes X e Y acercando las puntas a la distancia más adecuada.
Una vez los extremos de las fibras están a la distancia
adecuada, la empalmadora aplica una corriente de prefusión
durante un tiempo denominado de prefusión y una corriente de
fusión durante otro intervalo de tiempo llamado tiempo de
fusión. Esto se realiza con un arco eléctrico entre dos
electrodos. Cuando las dos fibras están empalmadas, el equipo
realiza una estimación fiable del valor de la atenuación.
Por fin, la instalación del cableado en redes inalámbricas es la más fácil de todas, ya que no existen cables.
Un aspecto importante a tener en cuenta es la instalación eléctrica. No es un aspecto puro de
comunicaciones pero si importante, puesto que debe dimensionarse correctamente para la carga eléctrica
prevista que soporte la instalación.
4.1.2. NIC
La instalación de la NIC dependerá del interface concreto que posea. Si la tarjeta de red posee un interface
PCI o PCI-X, hay que abrir el PC e introducir la tarjeta en el slot elegido de forma que el puerto quede
accesible en la bahía (hueco en el chasis del equipo) correspondiente.
Si se dispone de una tarjeta de red con interface PCMCIA, por ejemplo, para portátiles, el misterio de su
instalación termina en el momento en que se introduce en la bahía PCMCIA que se elija. Si el interfaz es

326
USB, el misterio es todavía menor, debido a lo popular del USB. En la parte de equipos, la instalación no
suele ser necesaria, porque es habitual que las placas base integren interfaces Ethernet.
Los interfaces de fibra óptica se suelen instalar en los equipos que componen la electrónica de red, y su
proceso es similar: una tarjeta con un puerto para fibra óptica se instala en una bahía libre. Los interfaces
suelen ser más pequeños a los de PC, dado que un equipo, por ejemplo un router posee un tamaño más
reducido que un PC. Una vez instalada y reconocida una tarjeta de red, habría que configurarla, asignando
una dirección lógica, parámetros de transmisión o de seguridad. En los PCs, la configuración suele ser
automática y el direccionamiento asignarse mediante DHCP.
4.1.3. Electrónica de red
Con electrónica de red se suele denominar al conjunto de equipos que realizan funciones puramente de red,
como la conmutación, segmentación o enrutamiento. La instalación de la electrónica de red no tiene mayor
misterio, ya que en general, una vez elegido el lugar, un rack o armario, el equipo se fijaría al chasis y se
realizarían las conexiones de los cables a los puertos físicos.
Debe tenerse en cuenta la conexión de los cables si hubiera filtrado MAC. Es decir, un cable, que
transportase los datos de un equipo al que sólo se le da acceso a determinado puerto físico, debe
conectarse a ese puerto, puesto que de otro modo, el equipo no va a poder comunicarse. Habitualmente se
realizan las conexiones físicas y a posteriori se aplica la configuración oportuna.
4.2. Configuración
Una vez instalado el hardware de red ha de configurarse: dar de alta los servicios, instalar aplicaciones,
configurar protocolos, crear cuentas y permisos de usuario, etc. Si la instalación y configuración de la red es
debida a una actualización o ampliación debe hacerse de forma que los datos que se estén utilizando sean
compatibles o puedan seguir utilizándose. Todo el proceso de adecuación de la información a la nueva
infraestructura se conoce con el nombre de migración y uno de sus aspectos más importantes es hacer
compatibles los datos en la nueva configuración.
4.2.1. Equipos
Para garantizar la comunicación entre sistemas, éstos han de configurarse. El estudio de la configuración se
ha dividido en tres apartados, equipos, electrónica de red y los servidores.
La configuración de los equipos de usuario puede dividirse en tres aspectos: conectividad, direccionamiento
y seguridad. La conectividad se acaba de presentar. En cuanto a la seguridad, lo lógico es centralizarla, y
por tanto sería una tarea a resolver desde el plano de los sistemas y servidores. De este modo, en los
servidores de dominio se configurarían los perfiles de usuario, permisos, políticas de grupo, etc.
Por tanto, la tarea central de la configuración de usuario podría ser la configuración del direccionamiento. Si
se utiliza el protocolo IP, existen dos tipos de direcciones, públicas y privadas. En una LAN se utilizan
direcciones privadas, aquellas que no pueden utilizarse para navegar por Internet. En general, la asignación
de direcciones se realiza mediante un servidor DHCP, Dinamic Host Configuration Protocol.
La comprobación de la conectividad a nivel de red entre equipos puede realizarse ejecutando un comando
ping entre equipos. El comando ping no es un eco, de forma que se lanza hacia la dirección IP del equipo al
que se pretende alcanzar. Si éste responde, habrá comunicación a nivel de red.
4.2.2. Electrónica de red
La configuración de la electrónica de red consiste en la parametrización de los equipos de red. Se ha
distinguido este apartado debido a su importancia y que es un tanto diferente a la de los equipos de usuario
y a la de los servidores. La electrónica de red, podría denominarse también firmware de red, por representar
una parte intermedia entre el hardware puro y el software de red.
Tanto en routers como en switches, el modo de
configuración suele ser con un interfaz de línea de
comandos, aunque existen entornos gráficos con
interfaz más amigable. Algunos de los fabricantes más
conocidos de electrónica de red son CISCO, Enterasys,
Nokia o la española Teldat.
Los switches permiten configurar parámetros de red
como la definición de VLAN, filtrado MAC, protocolos de
enrutamiento o protocolos que establecen estabilidad
en la red local, por poner algunos ejemplos típicos.

327
En la captura se muestra cómo pueden visualizarse las VLANs definidas en un switch CISCO. Como se
observa, todavía no hay nada configurado, se presenta la configuración inicial, de modo que todas las
entradas al equipo, los puertos FastEthernet (Fa0/1, Fa0/2,...) pertenecen a la VLAN default, que es la que
presenta el dispositivo por defecto.
Una posible secuencia de configuración, podría ser la declaración de una VLAN y posteriormente la
asignación de los puertos que dan acceso a esa VLAN.Cada puerto físico, el conector RJ-45 que presenta
el switch debe ser configurado asociándolo a una VLAN, que previamente ha debido ser definida. La
segmentación se realiza a nivel de subred, la LAN, que aunque físicamente sea la misma, a nivel lógico, son
redes distintas. Es como si los equipos estuvieran conectados a hubs diferentes. Puede entenderse un
switch entonces como un equipo que permite la definición “virtual” de distintos hubs, lo que consigue un
mayor rendimiento e incrementa la seguridad.
Los equipos pertenecientes a distintas VLAN no se pueden comunicar entre sí a nivel de LAN. Para poder
establecer comunicación necesitan hacerlo a nivel de red, con un router. Su configuración necesitaría un
subinterface por cada VLAN y definir un tipo de encapsulamiento.
El encapsulamiento es una etiqueta que se utiliza a nivel lógico para identificar una VLAN. La configuración
de seguridad, también posee muchas opciones, como el filtrado MAC, que consiste en especificar en un
puerto físico la limitación de acceso sólo al equipo que posea determinada dirección MAC.
La configuración de los routers posee dos grandes aspectos, la configuración de LAN y la de WAN. El
problema se puede complicar tanto como se desee y habrá que tener en cuenta parámetros de seguridad,
autentificación, si es un router interior o de frontera de la red, etc.
De esta manera, en la configuración de LAN, en el interface que corresponda, se tendrá que configurar, al
menos, el direccionamiento. La forma de realizar esta configuración varía entre fabricantes, aunque suele
ser similar, ya que al final consiste en asignar una serie de parámetros al equipo.
La configuración de la WAN en el router será la que permita la salida de la LAN a destinos externos, en
general a otras redes de la propia compañía, como pueda ser una delegación central o a Internet. La
configuración de WAN comprende los parámetros necesarios para la comunicación. Algunos ejemplos, son
los que los operadores de ADSL facilitan a sus clientes para configurar en los routers de acceso, como el
encapsulado, el identificador de circuito virtual o camino virtual (VCI/VPI) u otros.
Al interface de WAN también debe asignarse un direccionamiento. El resto de parámetros dependerán de la
tecnología WAN que se utilice. También se configurarán los criterios de seguridad, organización de CV, tasa
de transmisión, etc.
4.2.3. Servidores
Los SO orientados a dar servicios de red, suelen integrar distintos servidores como los de dominio, DNS,
servidores de aplicaciones, etc. Debe existir un criterio a la hora de decidir si se destina una máquina de
forma individualizada a servidor o se implementan varios servidores en la misma máquina, aunque
dependerá de las circunstancias de cada organización.
Sin embargo, existen compromisos que recomiendan dedicar una
máquina a ciertos servicios. Por ejemplo los servidores en la
frontera de la red, como proxies, firewalls, servidores web y otros,
que además de su importancia, en general tramitan gran volumen
de tráfico. Los servidores de red suelen basarse en servicios de
directorio, es decir, una base de datos organizada jerárquicamente
y que ordena los recursos y parametrización de la red. En el
mundo WS existen dos conceptos fundamentales, el grupo de
trabajo y el dominio, aparte de presentar estructuras híbridas como
por ejemplo las unidades organizacionales (OUs).
Mientras en el mundo Linux, también existe el concepto de grupo y el de dominio se suele implementar de
forma diferente con servicios como NIS y NFS. La configuración de los servidores es diversa y dependiendo
del servidor de que se trate. Por desgranar algunas características comunes se puede decir que la
configuración en WS suele hacerse en entornos gráficos, más amigables y en Unix y Linux, la configuración
está más orientada a línea de comandos.
Esto no quiere decir que ambos métodos sean incompatibles. En muchas distribuciones Linux se ofrecen
entornos gráficos y en WS puede utilizarse la consola (símbolo de sistema). En general, los administradores
suelen preferir la línea de comandos por su potencia. Esto se debe a que el interface gráfico usa más
recursos y puede mermar el rendimiento de la máquina. La configuración sería la misma, se haga de una u
otra forma. A continuación se enumeran algunos de los parámetros de configuración típicos de
servidores.La configuración de un servidor web debe incluir su direccionamiento, rutas de acceso a los

328
documentos servidos, el tratamiento a peticiones de documentos o páginas web dinámicas, etc. Es habitual
que las consultas web precisen la consulta de BBDD y en esos casos debe especificarse la relación entre el
servidor web y la BBDD o el servidor que la contiene y cómo se realizará la consulta. En la figura se muestra
un ejemplo del interface gráfico de WS para la configuración de su servidor web IIS7.
Los parámetros necesarios para la configuración de los servidores de correo incluirían su direccionamiento,
tipo de protocolo usado para envío y recepción, las opciones que se utilizarán en los correos, filtrado de
correo, tamaño máximo de archivos adjuntos que se permitirán, configuración de seguridad, etc.
Un servidor DHCP además de asignar una dirección IP a un equipo, puede facilitarle otros parámetros como
la máscara de red, dirección de la puerta de enlace, etc. En los sistemas tipo Linux su configuración puede
realizarse en el fichero /etc/dhcpd.conf. Posee una sintaxis de configuración típica, en la que una línea de
configuración se expresa con un parámetro, unas opciones y un valor.
Los servidores DNS incluirán en su configuración las zonas de búsqueda, si existen servidores DNS donde
se reenvían las consultas, sus direcciones IP, el tiempo de espera máximo para obtener respuesta de una
consulta, actuaciones ante consultas de reenvío erróneas o peticiones de transferencia de zona.
De la configuración de un servidor proxy destaca el direccionamiento público, el servicio NAT, si es que lo
implementa y los valores que disponga el operador en relación con la tecnología de transmisión, como
pueden ser el encapsulado, circuitos virtuales, etc.
La configuración de un firewall es laboriosa. Una parte importante de su definición corresponde a las listas
de control de acceso. Las listas de control de acceso o ACLs son comandos que configuran las reglas de
filtrado de tráfico. En los firewalls de frontera se configura la denegación de tráfico de las conocidas como
Black List, o listas negras, que son listados de direcciones públicas de Internet que distribuyen software
malintencionado o correo basura, por ejemplo.
En la configuración de cada servidor, debe realizarse una configuración de seguridad específica, que proteja
contra debilidades propias de la función que cumplen. Por ejemplo, en un servidor web que utilice un
servidor de BBDD debe protegerse contra ataques de inyección SQL y en un servidor de correo electrónico
será habitual filtrar el correo basura o spam.
4.3. Gestión
La gestión de un sistema en red puede definirse como el conjunto de equipamiento físico, lógico y recursos
humanos organizados para monitorizar y analizar los recursos de la red de forma que se garantice su
correcto funcionamiento o se anticipen y eviten problemas.
El mantenimiento de cualquier sistema puede dividirse en mantenimiento correctivo, el que se da cuando
surge un problema y está encaminado a su solución, y mantenimiento preventivo, realizado antes de que se
manifiesten los problemas, y por tanto, evitar que puedan manifestarse.
La gestión de la red es una herramienta fundamental para el mantenimiento preventivo. Aunque su objetivo
es más ambicioso, ya que dispone toda una organización para intentar garantizar que el sistema siempre
esté disponible. La indisponibilidad del sistema puede suponer mucho dinero.
La gestión de red sirve como realimentación, de forma que es la base de futuros análisis, que pudieran dar
lugar a la detección de nuevas necesidades y por tanto la ampliación o implantación de nuevos sistemas.
Para mantener el óptimo rendimiento de la red debe incluirse la elaboración de informes periódicos y la
definición de los criterios y umbrales de alarma. La ISO propone cuatro vertientes de gestión:
- Gestión de configuraciones y cambios
- Gestión del desempeño
- Gestión de fallos
- Gestión de seguridad
La gestión de la configuración y los cambios pretende mantener toda la información relativa al diseño de la
red y su estado actual. Incluye la gestión del inventario, mantenimiento de los directorios con la información
del sistema y la coordinación del esquema de nombres de nodos y aplicaciones. El control de la operación
de red debe permitir el inicio o parada remoto de los componentes, lo que incluye la posibilidad de cambiar
su configuración, actualizar el firmware o software y definir los métodos de acceso a los dispositivos.
La gestión del desempeño, es la parte encargada de medir si el rendimiento de la red es el adecuado. Sus
tareas se estructuran en la recolección de los datos operacionales del sistema, realizar estadísticas de
interfaces y tráfico, tasa de errores, disponibilidad, establecimiento de umbrales y análisis de datos para
anticipar futuros escenarios, estables o no. Se miden parámetros como retardos, tiempo de respuesta o

329
tráfico, buscando cuellos de botella y debilidades. Las pruebas de rendimiento (benchmarks) intentan hacer
estimaciones de la capacidad máxima de la red.
La importancia de las estadísticas del sistema en red se materializa en la contabilidad, resolución de
problemas, estimaciones de comportamiento a largo plazo y la planificación de la capacidad. La mejora del
rendimiento puede conseguirse aumentando la capacidad de equipos y el cableado, reduciendo la carga o
segmentando la red. Algunos de los términos utilizados en el estudio del rendimiento y que al menos deben
conocerse son throughput, carga y latencia de la red.
El throughput, que puede traducirse como flujo, es el volumen de información que atraviesa un sistema en la
unidad de tiempo. Suele expresarse en unidades de información como bits, bytes o paquetes por segundo.
La carga es el número de tareas que realiza un sistema. Se refiere al número de instrucciones de un
procesador, medidas en millones de instrucciones por segundo (MIPS) o unidades semejantes. Suele
expresarse como un porcentaje de la capacidad total del sistema. La latencia es la suma de retardos en la
red, y se mide en unidades de tiempo.
La gestión de fallos es el conjunto de procedimientos orientado a detectar, diagnosticar y reparar las averías
que se presenten en el sistema en red. Comienza con la recepción de la información, en general como
mensajes de error. Una vez identificado el fallo, conseguido con el sondeo periódico de la red, debe aislarse
y diagnosticar el funcionamiento de los elementos de la red.
Comienza entonces el periodo de reacción ante el fallo, en el que se asignarán los recursos necesarios para
su solución, estableciendo las prioridades oportunas y el escalado técnico si fuera necesario para solucionar
el error. La incidencia, una vez solucionada, debe ser notificada para su posterior análisis.
En sistemas en los que la indisponibilidad no es aceptable, deben establecerse los recursos y medios de
prevención adecuados para que la incidencia no afecte al sistema. Ejemplos pueden ser líneas de respaldo,
servidores redundantes o copias de seguridad.
La gestión de seguridad engloba todo lo relacionado con la protección de la información y los recursos de
red: la seguridad lógica y física. Por citar algunos de los puntos que debe tratar, nombrar el control de
acceso físico y lógico a los recursos, distribución de certificados, autenticación de usuarios y la utilización de
herramientas de seguridad que monitoricen y registren constantemente el acceso y control de la red.
Para implementar la gestión de red, existen diversas herramientas software que suelen disponer de
funcionalidades estadísticas, definición de umbrales, posibilidad de realizar mapas topológicos, etc. En
general estas herramientas implementan el protocolo SNMP (Simple Network Management Protocol)
protocolo ligero de gestión de red, que se estructura en torno a dos entidades básicas: el gestor y el agente.
Un gestor es un programa instalado en un equipo o estación de gestión que procesa la información que
recibe de la red y sirve de interface al usuario con perfil de gestor. Se denomina NMS o Network
Management Station, estación de gestión de red.
Un agente es un sistema gestionado. Es otro programa que recoge la información del dispositivo en que se
instala y la envía al gestor. Los agentes cuentan con una MIB o base de datos de información de gestión
(Management Information Base). Un objeto es un parámetro de información que maneja un agente, como
por ejemplo el número de paquetes tramitados.
En contra de lo que pudiera parecer, el sistema gestor, funcionalmente es un programa cliente, ya que pide
información a los agentes. Desde la perspectiva de la comunicación, un agente sería un servidor, ya que
responde a las peticiones del gestor.
En el funcionamiento de los agentes se dan dos casos: El agente presenta la información al gestor cuando
éste sondea la red, o bien, si se produce un error o alarma, según su configuración, envía los datos para dar
cuenta del nuevo estado de alarma.

330
TEMA 71. EXPLOTACIÓN Y ADMINISTRACIÓN DE SISTEMAS EN LAN. FACILIDADES DE GESTIÓN.

1. INTRODUCCIÓN
2. EXPLOTACIÓN Y ADMINISTRACIÓN DE SISTEMAS EN LAN
2.1. Explotación
2.2. Administración
3. FACILIDADES DE GESTIÓN

331
1. INTRODUCCIÓN
La explotación y administración de sistemas en red comprende tareas como la gestión de usuarios, el
acceso a recursos, el mantenimiento y configuración de hardware y software, etc.
2. EXPLOTACIÓN Y ADMINISTRACIÓN DE SISTEMAS EN LAN
2.1. Explotación
La explotación de un sistema en red corresponde a la fase de funcionamiento estable del sistema,
totalmente implantado y configurado y con una carga igual a la real, es decir, cumpliendo los requerimientos
funcionales y las ventanas de servicio para las que se ha diseñado.
Debe diferenciarse entre explotación y producción. Suelen tratarse ambos términos como sinónimos, no
siendo así, a menos que el sistema sea único. La diferencia está en que el entorno de producción se refiere
al sistema en funcionamiento, y por tanto, su operativa es delicada. Sin embargo, puede asimilarse el
entorno de explotación a una maqueta, o un sistema paralelo, donde puedan realizarse pruebas de mejora,
integración, desarrollo, etc. que si generasen problemas no afectarían a la producción.
El entorno de explotación puede ser tan similar al de producción que sea prácticamente una copia, pero el
servicio real, no se verá afectado por su modificación. Del mismo modo, puede utilizarse el sistema en
explotación como respaldo en caso de que el sistema en producción sufra una eventualidad.
Clave en la explotación de una red es su gestión, que incluye todo aquello que garantiza la operación del
sistema, recursos y servicios según los objetivos marcados. Se incluirán, por tanto, los procedimientos y
recursos involucrados en producción. La gestión puede identificar los siguientes aspectos:
Gestión de red. En relación con los servicios de comunicación, recursos, infraestructuras, etc.
Gestión de sistemas. Referido a elementos de proceso y finales de usuario soportados sobre la red. Se
incluye la gestión de servidores, software de base, periféricos, usuarios y demás.
Gestión de servicios. Referido a los requisitos de mantenimiento de la operativa, como el almacenamiento
de datos, distribución de software, control de incidencias o estado del sistema, entre otros.
Gestión de aplicaciones. Orientado a las aplicaciones de producción de la organización y a asegurar el
cumplimiento de las condiciones marcadas en los objetivos.
Gestión de información. Las tareas de diseño y mantenimiento de la información corporativa que marcan las
pautas de distribución, disponibilidad y accesibilidad adecuadas.
2.2. Administración
La administración de un sistema en red consiste en el conjunto de tareas que garantizan su correcto
funcionamiento y documentación. Entre estas tareas, puede citarse, por ejemplo, la asignación del
direccionamiento, segmentación de la red y definición de VLAN, uso de servidores, administración de
usuarios y recursos o el control de los mecanismos de monitorización y gestión de la red. Los objetivos de la
administración de red persiguen la continuidad de la operatividad, resolución de incidencias, su uso
eficiente, reducción de costes, seguridad, control de cambios y gestión de la configuración entre otros.
Administrar una red precisa la información referente a su estado y subsistemas, en forma de registros,
eventos, etc. de forma que se presente a los administradores de forma legible y manejable. La información,
debe almacenarse y estar disponible para su análisis o tomar las acciones correctivas necesarias. Se
recomienda que el sistema de administración sea abierto, capaz de soportar distintos protocolos y
arquitecturas de red.
La administración de usuarios debe incluir la información de los procedimientos de uso del sistema y
documentarlo con guías de uso. La asignación de permisos para el acceso a los recursos y la definición de
grupos, dominios o unidades organizativas es responsabilidad del administrador.
En general serán necesarios servidores de consulta tipo DNS o WINS para localizar los recursos. La
administración se facilita con una definición correcta de grupos, dominios, UO, etc. Los grupos podrán tener
un perfil de seguridad, distribución, de dominio u otro. En cuanto a la administración de impresoras, suele
ser normal implementar un servidor para esas tareas. Los SO incluyen facilidades como la compartición o la
definición de prioridades y permisos. Los servidores de archivos, por su parte, agilizan la administración de
ficheros en red, en lo relativo a permisos de acceso y recuperación remota de información.
Otro de los pilares de la administración es la monitorización de red, que facilita en tiempo real el
mantenimiento del nivel de operatividad del sistema y su correcto rendimiento. La monitorización debe
incluir la redacción de informes periódicos sobre los aspectos de gestión de la red, tales como la
configuración, respuesta frente a errores o su seguridad.

332
3. FACILIDADES DE GESTIÓN
Como resumen, un esquema primario de las tareas de administración de red, podría estructurarse en los
aspectos de direccionamiento, gestión de usuarios, gestión de recursos, administración de servicios y
gestión de la red. Es decir, las facilidades de gestión de un sistema en red local.
Direccionamiento. El administrador de red debe proveer el plan de direccionamiento de la capa de red.
Como se ha visto, lo funcional es utilizar un servidor DHCP, que lógicamente debe ser configurado y
administrado, con especial atención a los aspectos de seguridad.
El direccionamiento debe tener en cuenta la segmentación
de la red, si se utilizan VLANs y la correcta aplicación del
subnetting. Para ello, la configuración de routers y switches
debe ser cuidadosa. Del mismo modo, si se utiliza, como
es habitual, direccionamiento privado en la LAN, deben
proveerse las direcciones públicas de acceso a Internet, en
general con los servicios NAT.
Otros aspectos del direccionamiento son la publicación de las direcciones de puertas de enlace, pasarelas y
servidores DNS, como casos típicos, que también suele proveer el servidor DHCP.
Gestión de usuarios. La asignación de usuarios, su agrupación en unidades superiores como grupos o
dominios y sobre todo la administración de sus permisos es una de las labores más importantes de la
administración de red. Los usuarios, entendidos como personas, no como cuentas, deben ser informados de
las normas y cambios en la operativa de trabajo y utilización del sistema, en general confeccionando guías y
recomendaciones de utilización de los sistemas y recursos.
Los SO ofrecen muchas y variadas herramientas para la administración de usuarios, destacando la gestión
de grupos, que agiliza la asignación de permisos, directivas de seguridad, aspectos de distribución, acceso
a dominios, visibilidad y características similares. Algunas de estas herramientas son las directivas de
seguridad que ofrece WS o las listas de control de acceso características en entornos tipo Unix. Además,
estas utilidades suelen presentarse en un entorno gráfico para una administración más intuitiva.
De especial importancia es la gestión de la cuenta de usuario administrador, superusuario o root. Esto es
debido a que al poseer todos los permisos sobre el sistema y sus recursos, su utilización debe ser
cuidadosa en extremo, recomendándose su utilización únicamente en labores de administración, evitando
realizar con ella tareas que pueden realizarse con cuentas de menos privilegios.
Gestión de recursos. En la gestión de recursos en red, destacan la administración de impresoras y archivos.
Las herramientas para esta labor suelen ser fáciles de utilizar, pero un tanto laboriosas. El aspecto más
importante es saber qué se está realizando con la herramienta, ya que una mala configuración puede
generar situaciones no deseadas.
Tanto los sistemas WS como los de tipo Unix permiten compartir impresoras que serán accesibles a un
grupo de trabajo o determinados usuarios, ofreciendo funcionalidades para gestionar sus propiedades, colas
de impresión, direccionamiento y administración remota entre otras.
La administración de archivos en red es un trabajo típico y delicado. Los servicios que suelen facilitar esta
gestión son los estudiados y típicos como FTP, NFS con el protocolo RPC o SSL. WS utiliza otros
protocolos y servicios como WINS y NetBIOS, ya presentados también. Por fin, la compatibilidad entre
ambos tipos de sistemas suele implementarse con herramientas como SAMBA. La gestión de archivos debe
incluir medidas de recuperación ante incidencias como la redundancia de discos y sistemas RAID.
Gestión de servicios. La administración de los servidores de red es otro de los aspectos críticos de la
administración de sistemas en red, debido a las implicaciones de seguridad y rendimiento que comportan
para las organizaciones.
Destacan además de los servicios mencionados como DHCP, DNS, los de administración de impresión y
recursos, los servicios web, cortafuegos, correo electrónico o los de BBDD, como más representativos.
Pueden utilizarse los servidores que integran los SO de red o decidir instalar otras soluciones comerciales o
libres. La recomendación general es utilizar máquinas dedicadas para cada servicio, decisión que deberá
responder a compromisos de eficiencia, carga de trabajo, etc.
El aspecto más delicado de la administración de los servidores y los servicios que implementan es su
configuración. A parte de la complejidad intrínseca que representan, las implicaciones de seguridad son
muy graves. Por tanto la configuración y sobre todo la administración y constante monitorización son
cruciales. Sin embargo las herramientas para realizar tales labores suelen ser cómodas e intuitivas.

333
Gestión de red. Por último, la administración de red, entendida como aspecto global se referiría a tareas
propias de supervisión y mantenimiento del sistema. Incluiría el conjunto de procedimientos, actividades,
informes y herramientas que permiten la monitorización y supervisión constante de los equipos y sistemas.
El objetivo de la administración del sistema en red es mantener su disponibilidad, garantizar su correcto
funcionando y establecer un principio de proactividad que adelante acciones ante comportamientos
anómalos. De esta forma, cuando existe un problema es recomendable haber establecido umbrales para
indicadores que muestren que se está en situaciones que pueden derivar en situaciones críticas.
Las herramientas que facilitan estas labores utilizan protocolos de gestión de red como el ya presentado
SNMP que permite una correcta gestión remota de los sistemas dispersos a lo largo de la red. También se
ha comentado que las máquinas dedicadas con aplicaciones de gestión de red suelen conocerse como
NMS (Network Management Station).
Las herramientas de gestión de red suelen ofrecer facilidades de gestión de configuración, guardando un
inventario del hardware y software instalado y operativo en el sistema, recogiendo periódicamente la
información del estado de los dispositivos o gestionando su actualización.
También facilitan la gestión de incidencias, siendo fundamentales en la proactividad comentada. Mediante
configuración de umbrales como operación típica se puede anticipar la detección, diagnóstico y reparación
de averías en la red. A partir de la recepción de mensajes de error o la falta de respuesta de un equipo
pueden localizarse los puntos de fallo.
Otra de las utilidades más importantes de estas herramientas es la evaluación del rendimiento de la red.
Mediante el análisis estadístico de los factores que se consideren críticos en el desempeño, como los
tiempos de respuesta o el tráfico cursado, puede estimarse el grado de eficiencia del sistema, su capacidad
máxima, proponer mejoras, ampliaciones o procedimientos de optimización.
La administración de la seguridad de la red es uno de los aspectos más amplios y comprometidos. La
protección del sistema y sobre todo de la información puede es vital para la continuidad de la organización
ante situaciones de crisis o emergencia. Herramienas para gestión de seguridad existen muchas y algunas
ya se han expuesto en el tema anterior. Incidir en la necesidad de configurar correctamente los ficheros de
registro o log, duplicidad geográfica de servidores o redundancia de discos y copias de seguridad.
Dependiendo de la entidad de la información y la organización de que se trate, la legislación obliga a
establecer algunas de estas medidas de seguridad que deben incluirse en los sistemas de red. Lógicamente
la implantación de la seguridad es algo caro y generará un compromiso entre el tipo de empresa, su
facturación y las obligaciones y responsabilidad que pueda asumir. En cualquier caso, si el compromiso se
supera, debe ser claro que la no implantación de la seguridad siempre será más caro, en el largo plazo, que
la correcta implantación de la misma.

334
TEMA 72. LA SEGURIDAD EN SISTEMAS EN RED. SERVICIOS DE SEGURIDAD. TÉCNICAS Y
SISTEMAS DE PROTECCIÓN. ESTÁNDARES.

1. INTRODUCCIÓN
2. LA SEGURIDAD EN SISTEMAS EN RED
2.1. Seguridad Física
2.1.1. Amenazas según su origen
2.1.2. Amenazas según el objetivo
2.2. Seguridad Lógica
2.2.1. Nivel Físico
2.2.2. Nivel Enlace
2.2.3. Nivel Interred
2.2.4. Nivel Transporte
2.2.5. Nivel Aplicación
2.2.6. Nivel Meta Aplicación
3. SERVICIOS DE SEGURIDAD
4. TÉCNICAS Y SISTEMAS DE PROTECCIÓN
5. ESTÁNDARES

335
1. INTRODUCCIÓN
La seguridad de los sistemas en red ha crecido de forma paralela al crecimiento de redes y organizaciones.
Una organización que no implemente seguridad de la información de su negocio puede desaparecer, como
ocurrió en los ataques a las torres gemelas.
La seguridad puede entenderse como un proceso orientado a reducir, el riesgo de sufrir un daño. La
seguridad total es imposible. Cualquier sistema debe ser considerado vulnerable. Por esto es necesario
gestionar la seguridad. Además, para evitar abusos y proteger los derechos de los ciudadanos existe una
legislación que describe los derechos y deberes de las partes.
2. SEGURIDAD DE SISTEMAS EN RED
La seguridad de los sistemas en red podría definirse como la capacidad de una red de resistir, con un nivel
de confianza, las acciones que comprometan la confidencialidad, integridad, disponibilidad y autenticidad de
la información almacenada o transmitida y de los servicios que se ofrecen.
La confidencialidad se refiere a la situación en que sólo aquellos entes autorizados tengan acceso a la
información que necesiten. Su fundamento es claro, por ejemplo en el caso de un secreto industrial.
La integridad es el aspecto de seguridad que intenta garantizar que determinada información no sea
modificada. Si un intruso, aún sin conocer la información transmitida, es capaz de modificarla puede generar
un problema grave. La disponibilidad garantiza que la información estará presente cuando se requiera.
La autenticidad, también conocida como No-Repudio, es la característica que asegura la identidad del
emisor. Ofrece la garantía para que alguien que genera una información no se retracte. El ejemplo típico es
el de una transacción en que se compran acciones en bolsa. Si las acciones bajan, debe garantizarse que el
emisor de la información no pueda negar la compra.
Existen tres componentes a proteger: el hardware, el software y
la información. El acceso a la información se realiza con
hardware, lo que implica el mundo físico y objeto de estudio de la
seguridad física y con software, eje de la seguridad lógica. Con la
protección del hardware y el software se persigue la protección
de la información y los datos manejados con esos medios.
Por realizar una clasificación de las amenazas, pueden distinguirse cuatro tipos de ataques: interrupción,
interceptación, modificación y fabricación.
Un ataque de interrupción es el que se materializa en la pérdida de una parte del sistema. Un ataque de
interceptación en el que un intruso consigue acceso a un elemento del sistema, al que no estaba autorizado.
Un ataque de modificación es el que consigue modificar un elemento del sistema y un ataque de fabricación
sería una modificación no destructiva en que se persigue que el sistema trabaje de forma similar o sin
levantar sospechas, pero habiéndose cambiado alguna parte del objeto final del mismo.
Teniendo en cuenta los activos a proteger y tipos de amenazas, se concluye que la seguridad no es un
producto que pueda comprarse e instalarse a modo de antivirus. Es un proceso continuo que requiere una
monitorización y actualización permanente. Esta filosofía desemboca en la definición de políticas de
seguridad, basadas en normas y prácticas que los responsables de seguridad deben implementar y cuidar
de su operación diaria, estableciendo los procedimientos y rutinas necesarios.
Términos implícitos en el concepto de seguridad son amenaza, vulnerabilidad y riesgo. Una amenaza es
aquello que puede causar un mal. Vulnerable es algo a lo que se puede amenazar (la información), que
puede recibir el daño de la amenaza. Un riesgo es la contingencia o proximidad de un daño.
Cuando algo es vulnerable, puede recibir un daño. Si ese daño puede producir un impacto, se habla de
riesgo. A la inversa, un activo vulnerable a una amenaza, que no cause impacto, no constituye un riesgo.
La seguridad puede entenderse como las acciones orientadas a eliminar riesgos o sus consecuencias.
Pueden establecerse tres planos de actuación: la defensa, orientada a disminuir la probabilidad de
incidentes, el aseguramiento, que pretende disminuir las consecuencias al producirse un incidente y la
denuncia o identificación de causas o causantes de los daños. La seguridad implica simplicidad, disciplina y
limitación. Se divide su estudio en seguridad física y lógica.
2.1. Seguridad Física
La seguridad física puede definirse como el conjunto de recursos orientados a la aplicación de medidas
preventivas contra amenazas de carácter físico o natural. Se refiere a los controles y sistemas de seguridad
de una organización para proteger el hardware. Los riesgos físicos pueden ser según su origen relativos a

336
entes naturales o personales, y según su objetivo pueden referirse a recursos, utilización, información
almacenada o en tránsito y reputación.
En cuanto a riesgos físicos, según su origen pueden
identificarse el suministro eléctrico, inundaciones, incendios
y personal malintencionado. Según su objetivo pueden ser
daños físicos a los equipos hardware, tales como robo o
destrucción, reducción de la disponibilidad, impacto
económico, acceso a la información, modificación, borrado
malintencionado de datos, etc.
2.1.1. Amenazas según su origen
Dentro de los riesgos físicos según su origen, los debidos a desastres, naturales o artificiales, destacan:
1. Incendio. La prevención de los riesgos de incendio debe estar documentada en el plan de prevención de
riesgos laborales, así tener establecidos los planes de evacuación con sus respectivos responsables.
La extinción de incendios suele ser enemiga de los equipos informáticos. Tanto los sistemas extintores de
agua o polvo, suelen causar un gran daño a los sistemas, que en muchos casos quedan inutilizables. Por
tanto, debe tenerse en cuenta la situación de los equipos en locales que no posean materiales combustibles
o cerca de almacenes de material inflamable o explosivo. Es habitual por instalar suelo técnico, que sirva
como aislante y puertas o paredes cortafuegos.
Como medida transversal a todos los riesgos, es imprescindible tener copias de seguridad de la información
(backups) y servidores y sistemas duplicados en localizaciones diferentes para asegurar la disponibilidad.
2. Inundación. Puede tener su causa de forma natural o artificial, como al accionarse el sistema de extinción
de incendios. Si la zona posee riesgo de inundación puede pensarse en no instalar los sistemas en sótanos
o plantas bajas, utilizar techos impermeables para prevenir inundaciones de pisos superiores, etc.
3. Desastres Naturales. Como terremotos o condiciones climáticas severas propias de ciertas zonas del
mundo. En general, suelen existir planes de contingencia y un servicio de alerta climática. La construcción
de los edificios previene estos tipos de desastres siguiendo la normativa local, como en el caso de Japón.
4. Electromagnetismo: En contingencias electromagnéticas hay que destacar tres, la alimentación eléctrica,
la protección TEMPEST y las interferencias. De las tres, la que propiamente encaja en este apartado es la
primera. La protección TEMPEST y las interferencias responderían a amenazas físicas según el objetivo,
pero se incluyen aquí por su relación.
Para prevenir problemas de alimentación eléctrica, la solución habitual es disponer de unidades de
alimentación suplementaria o ininterrumpida (UPS en inglés, SAI en castellano), que son baterías que
suministran energía durante un tiempo después de un corte para dar tiempo a solucionar la emergencia o
realizar cierres ordenados que eviten pérdidas de información o la corrupción de los sistemas.
Según la instalación a proteger, pueden existir otras fuentes de energía como grupos electrógenos, es decir,
motores que alimentados con gasóleo u otros. Habitualmente, los sistemas de protección eléctrica incluyen
etapas de filtrado para evitar picos de tensión, aunque hoy día el suministro comercial suele ser limpio.
Las protecciones TEMPEST se refieren a medidas de protección frente a fugas de información debidas a las
emisiones electromagnéticas que generan los sistemas. Estas emisiones, procedentes de, por ejemplo, un
monitor de un equipo, podrían recogerse y visualizar su actividad. Las protecciones TEMPEST no serían
necesarias en un caso general. Son protecciones a tener en cuenta en organizaciones con grandes
requisitos de seguridad, como bancos, instituciones militares o gubernamentales, etc.
Si las amenazas TEMPEST son pasivas, pues monitorizan, sin intervenir en el sistema, las interferencias
electromagnéticas provocadas se orientan a la denegación de servicio. La protección electromagnética
intenta defender el sistema frente a interferencias provocadas. Suelen ser típicas de comunicaciones radio.
Medidas de protección puede ser la emisión con salto de frecuencia y similares.
Como resumen, el entorno físico de los sistemas debe estar libre de interferencias electromagnéticas,
disponer de controles para temperatura y humedad y alimentación con UPS. Deben ubicarse en un espacio
controlado, bajo llave y accesible sólo por personal autorizado.
Los factores humanos, se refieren a amenazas causadas por personas sin un objetivo concreto. Las causas
deben buscarse en razones, como empleados descontentos o despedidos. Para evitar estas amenazas, las
medidas a implementar son las mismas que en el caso de amenazas con objetivos y se pueden resumir en
controles de acceso, establecimiento de zonas de seguridad, etc. Se estudian en el siguiente apartado.

337
Además, como también se recoge en las recomendaciones de la serie ISO 27000, puede ser conveniente
exigir a los trabajadores garantías personales de seguridad, además de informarles de las consecuencias
legales que pueden tener un sabotaje o la divulgación de información clasificada de la empresa.
2.1.2. Amenazas según el objetivo
Según el objetivo perseguido, la seguridad desde el plano físico debe proteger los recursos, su utilización, la
información y la imagen de la organización.
1. Recursos. La principal amenaza a los recursos físicos es el robo. El equipamiento de comunicación suele
ser caros y por tanto objeto de deseo. El software, por su parte es fácilmente sustraíble ya que muchas
veces, la copia de información es fácil y no deja rastro.
Contramedidas serían el establecimiento de zonas de seguridad que agrupen elementos a proteger o la
protección de los puntos de acceso físico entre zonas, con medidas de seguridad activa, como controles de
acceso de personal o seguridad pasiva como sistemas de alarma o CCTV.
Los controles de acceso requieren la capacidad de identificación, asociada a sus permisos. En los controles
podrá disponerse personal de seguridad, detectores de metales, sistemas biométricos, etc.
2. Utilización. Cuando una amenaza afecta a la utilización de los recursos de la empresa, puede pensarse
en el uso fraudulento y el sabotaje. La utilización fraudulenta de recursos, de forma que impida a la empresa
desarrollar su operativa, no suele darse, ya que los recursos suelen estar sobredimensionados, pero es
usual que los empleados usen equipos para realizar tareas no propias de la empresa (descargas, etc.). Otro
caso es el referido a redes inalámbricas, cuyo uso fraudulento por parte de un intruso podría ser perjudicial.
El sabotaje se estudia a continuación.
3. Información. La protección a la información desde el plano físico distingue entre información almacenada
y en tránsito, que suele protegerse mediante procedimientos lógicos, en general criptografía. De las
amenazas a la información almacenada destacan el borrado accidental o intencionado y el sabotaje. El
sabotaje es una de las amenazas más difíciles de proteger. Un simple ataque con imanes potentes en
dispositivos de almacenamiento físico es fácil de realizar y difícil de detectar.
Como ejemplo típico se citará el ataque de la asistenta (Maid Attack). Consiste en que alguien que desea
robar información, ofrece dinero a personal de limpieza o similar para realizar copias o robo de información.
Las medidas de prevención son las expuestas: control de acceso, garantías personales de seguridad,
CCTV, copias de seguridad, duplicidad de los sistemas, etc.
4. Imagen. Los fallos de seguridad, aunque sean bromas, como la modificación de una página web, tienen
efectos negativos en la imagen de la empresa. Una política de seguridad con planes de contingencia que
recuperen la actividad de la empresa en poco tiempo, transmite imagen de solidez y garantía. Hay casos en
que los incidentes no se conocen por no interesar ni a víctima, ni a intruso. Es el caso de la seguridad de
bancos. La pérdida de reputación podría ser más costosa que hacerse cargo del incidente.
Como característica común, en la política de seguridad y los procedimientos que la desarrollen, se debe
identificar a los responsables de instalar y trasladar los equipos, responsables de mantenimiento hardware y
de las instalaciones e intentar garantizar el acceso sólo a personal autorizado. En la ley, por ejemplo la
LOPD, puede establecerse la necesidad de designar responsables de los ficheros con datos sensibles.
2.2. Seguridad Lógica
La seguridad lógica se refiere a la protección relacionada con aspectos software. Los tipos de amenazas
son del tipo ataques de intrusos, virus, denegación de servicios, falsificación o ingeniería social.
Se conoce como hacker a la persona que realiza ataques informáticos. El nombre apropiado sería cracker.
Hacker se debe referir a personas que estudian aspectos de la tecnología con un ánimo no dañino, que sólo
persiguen el conocimiento y a veces la popularidad. Aquí se usarán los términos intruso o atacante.
Para una perspectiva más didáctica de la seguridad lógica, se realizará un estudio de las amenazas
siguiendo los niveles OSI. En la siguiente exposición, ligera por necesidad, se hablará habitualmente de
ataques, más que amenazas, de forma que, según el contexto, podrán considerarse sinónimos.
2.2.1. Nivel Físico
A este nivel, se encuadraría lo estudiado en el apartado de seguridad física. Sin embargo, hay un tipo de
ataque referido al nivel físico del modelo OSI, que se realiza con software. Es el ataque de la monitorización
del tráfico de la red. Para ello, se usan programas de análisis de tráfico de red, rastreadores o sniffers.

338
Estos programas trabajan aprovechando los protocolos
que usan un acceso al medio por difusión, como
Ethernet o Wifi. La información está en el cable o en el
aire disponible para cualquiera. En el caso habitual, un
destinatario no legítimo de la información la ignora,
pero un intruso podría analizarla configurando su
interface en modo promiscuo.
Medidas de protección contra este tipo de ataques serían la instalación de programas antisniffers y la
segmentación de LAN (creación de VLAN). Existen analizadores de red físicos, instrumentos con apariencia
similar a un polímetro, que requieren un acceso físico al cable, o al equipo de red (switch, router), por lo que
las medidas de seguridad contra estos equipos se englobarían en las de la seguridad física.
En cuanto a redes inalámbricas, poco se puede hacer a nivel físico para evitar que un intruso recoja la
radiación. Por tanto la protección debe hacerse a nivel lógico: restricción de direcciones de red, filtrado
MAC, emisión de menor potencia, etc. Sería el ejemplo típico de intercepción.
2.2.2. Nivel Enlace
La subred posee debilidades que dependen de la tecnología que implemente. El caso de estudio típico es
Ethernet. Este nivel es el primero en usar direccionamiento.
Para ilustrar el tipo de ataque a este nivel, se recurre al protocolo ARP, Address Resolution Protocol, que
consiste en las normas que rigen la forma de relacionar direcciones MAC con direcciones IP. Cuando un
equipo necesita conocer la dirección IP de destino en su subred, preguntará quién posee la dirección MAC
correspondiente a esa IP, para poder enviarle la información.
El ataque típico es el conocido como Man In The Middle (MITM), consistente en usar el protocolo ARP para
hacer corresponder direcciones IP con direcciones MAC que no son correctas, de forma que el emisor envíe
la información al intruso, que a su vez la retransmitirá al receptor legítimo. Con esto, el intruso consigue
tener acceso a la información transmitida. Sería un ejemplo típico de ataque de modificación.
La defensa en este nivel consiste en la utilización de switches, segmentación de la red, creación de tablas
ARP estáticas (solución de difícil mantenimiento), DHCP snooping o programas que detectan estos ataques.
Existen otros ataques referidos a los equipos, en particular switches, como los desbordamientos de tablas
ARP, o vulnerabilidades del protocolo STP. STP es un protocolo de “árbol de expansión”, encaminado a
evitar los problemas de bucles en el cableado de una red local. En general estas vulnerabilidades se evitan
configurando los equipos siguiendo indicaciones del fabricante.
2.2.3. Nivel Interred
Los ataques del nivel de Interred poseen un denominador común, que consiste en explotar las debilidades
de los protocolos, en particular IP. Una primera idea clasifica los ataques en: sniffing o monitorización,
spoofing o falsificación y denial of service, o denegación de servicio. A éstos últimos pertenecen un tipo
particular de ataques llamados de inundación o flooding. Por ello, para recordar mejor los ataques, puede
pensarse en tres categorías: sniffing, spoofing y flooding.
El sniffing ya ha sido explicado. Consiste en analizar el tráfico de una red. Puede parecer simple, pero son
muchas las ocasiones en que se interceptan contraseñas que comprometen la seguridad. El spoofing
consiste en la falsificación de algún parámetro. En el ataque MITM se hace uso de técnicas de spoofing, al
falsificar una dirección MAC. A nivel IP se habla de IP spoofing o falsificación de direcciones IP.
Si un intruso se hace pasar por otra máquina, utilizando la falsificación IP, puede obtener información
sensible o realizar acciones perjudiciales. Una forma de conseguir una falsificación es mediante el robo o
secuestro de una sesión (hijacking). Este ataque consiste en analizar la conversación entre dos máquinas, y
fabricar paquetes con su dirección IP falsificada y otros parámetros del protocolo que se han adivinado para
quedarse con la conversación como si se fuera el equipo legítimo.
Los ataques de denegación de servicio (DoS) pretenden evitar que una máquina ofrezca el servicio para el
que trabaja. No es necesaria inteligencia especial para “tirar” el servidor, salvo en los ataques de
denegación distribuida. Sin embargo, son efectivos, en cuanto que consiguen notoriedad, “expulsar” a una
organización de la red durante un tiempo y afectar a la reputación de la víctima. Un ejemplo notorio ha sido
el ataque distribuido dirigido hacia la SGAE.
Los ataques DoS son numerosos. Se distinguen los de fragmentación, inundación y denegación de servicio
distribuida (DDoS). Los primeros aprovechan debilidades en la programación de protocolos para que ante
paquetes mal construidos, la máquina víctima caiga. Ejemplos son el ping de la muerte y teardrop.

339
Los ataques de inundación consisten en enviar mucho tráfico inútil (espúreo o ruido), de forma que cuando
una máquina intente responder a ese tráfico se vea saturada, y por tanto un cliente legítimo no podría
obtener servicio. Ejemplos de este tipo de ataque son smurf, fraggle, echo-chargen, etc. Los dos primeros
son muy instructivos: consisten en enviar peticiones con dirección origen la víctima a una dirección
broadcast. De esta forma, todas las máquinas contestarían a la dirección víctima, saturándola.
Por su parte, los ataques DDoS se basan en el mismo concepto. Un equipo dominaría numerosos equipos,
gracias a la infección con troyanos, o por coordinación, de forma que se sincronizan y lanzan el ataque a la
vez, generando ruido contra la víctima y evitando que preste su servicio. La solución a estos ataques está
muy documentada. En general, los SO vienen programados para evitarlos. Sin embargo, los dispositivos de
red deben configurarse, por ejemplo deshabilitando el broadcast, etc.
2.2.4. Nivel Transporte
Los puertos suponen uno de los puntos de entrada más comunes de los ataques a sistemas en red. Uno
típico es el escaneo de puertos, consistente en ir realizando peticiones de conexión a los puertos de una
máquina. Si el puerto contesta, se sabe que allí existirá un servicio. Si no contesta, puede ser que o no haya
servicio o esté filtrado. Si el puerto contesta de forma diferente, podrá identificarse esa contestación como
perteneciente a cierto SO. Esta técnica es OS fingerprint, o huella del puerto.
También se aprovechan debilidades de los protocolos, como la negociación de sesión o el intercambio de
números de secuencia. Dada una conversación entre máquinas, puede escucharse e intentar adivinar los
números de secuencia que se intercambian emisor y receptor. Hay ciertos sistemas, que se sabe que
generan números de secuencia no del todo aleatorios y por tanto, puede intentarse adivinar esos números y
hacerse pasar por la víctima. Son los robos de sesión.
Otro ataque que aunque no de capa cuatro, puede incluirse aquí, por ser didáctico, son los ataques de
repetición, en los que un atacante que no tiene idea de romper una conversación o hacerse con su control,
observando el tráfico de la red podría repetir la información y generar un grave perjuicio a la víctima. El
ejemplo típico es una transferencia bancaria. Si ésta se repite cien veces, la víctima habría realizado una
transferencia de cien veces la original. Para evitar estas situaciones, el software se mejora desarrollando
parches (actualizaciones), que van tapando agujeros de programación.
A nivel cuatro, el equipo o software característico es el firewall, que realizan la función de filtro o control de
la comunicación. Implementan seguridad. La herramienta básica que usan, son las listas de control de
acceso o ACL. Una ACL es un conjunto de comandos que definen reglas de filtrado de tráfico en un interfaz
y en un sentido (entrada o salida). Un ejemplo de aplicación sería una situación de falsificación de IP, en la
que un intruso intente acceder a una red, con una dirección de la propia red. Esa acción es sospechosa,
puesto que un acceso externo debería tener direccionamiento externo. Si la configuración de una ACL sólo
permite acceso externo de direcciones externas, se evita ese tipo de tráfico.
La inclusión de firewalls en la red, da origen a la definición de una estructura
de seguridad. Habitualmente, al hablar de firewalls en la red, se suele
pensar en lo que se da en llamar la zona desmilitarizada, o DMZ, en inglés.
Una DMZ es una zona de la red de una empresa, que se define como de
seguridad. Por tanto, en esa zona, se colocan los activos más importantes:
Los servidores, es decir, la información. Allí será típico encontrar los
servidores web, de correo, de aplicaciones, etc.
La zona, se limita con al menos un firewall, de manera que el tráfico de acceso a los servidores y a la red
interna de la organización esté controlado. El firewall permite comunicar la zona interna con la DMZ y esta
con el exterior, pero no directamente.
Otra medida de seguridad no puramente de capa 4, es el establecimiento de honeypots y honeynets. Estas
estructuras se definen como anzuelos o señuelos. Consisten en exponer un equipo (honeypot, tarro de miel)
a ataques malintencionados, de forma que el análisis posterior de los ataques recibidos sirva para descubrir
patrones de ataque, métodos usados por los intrusos, etc. Se recoge información que ayude a proteger el
sistema. Una honeynet, es el mismo concepto, una red dulce, real o virtual.
2.2.5. Nivel Aplicación
El nivel de aplicación genera más problemas por la cantidad de software que incluye. Enumerar los ataques
a este nivel es difícil. Por ello se establecen tres ámbitos de seguridad: el SO, las aplicaciones e Internet.
En cuanto a los SO, en particular los servidores, deben configurarse de forma que proporcionen, al menos
una seguridad básica. Un solo equipo mal securizado puede ser el punto de entrada de graves ataques. La
definición de usuarios, recursos y permisos, debe ser correcta, limitando al máximo los permisos necesarios
para desarrollar el trabajo habitual. Esto es válido para el resto de entidades como grupos, dominios, etc.

340
En general, las políticas de filtrado deben ser restrictivas. Así, se deben filtrar todos los puertos, excepto los
estrictamente necesarios o instalar sólo los servicios necesarios, lo que debe revisarse ya que, por defecto,
puede haber SO que los implementen.
Es conveniente configurar registros (logs), archivos en que se anotan las acciones que se dan en el
sistema. Su utilidad es avisar cuando existe una acción sospechosa y ofrecer información de análisis
cuando el incidente se ha producido. Cuando se da un incidente de seguridad, su análisis, a partir de las
huellas que pueda haber dejado el intruso, se denomina análisis forense.
El SO y el software debe ser actualizado con “parches” y actualizaciones de los fabricantes, puesto que
cada actualización, además de ofrecer casi siempre una mejora de rendimiento, suele solucionar problemas
de seguridad. Como ya se dijo, medidas transversales de seguridad son las copias de seguridad o las
contraseñas fuertes en los controles de acceso.
En las aplicaciones se dan vulnerabilidades provenientes de la ejecución de programas que o bien
presentan agujeros de seguridad o bien son la vía de transmisión de programas tipo virus. Éstos son
programas usados para causar un daño. Distintos tipos de virus son bombas lógicas, troyanos y gusanos.
Las bombas lógicas son virus que se activan al darse una condición, como una fecha o una combinación de
teclas. De este tipo era el famoso “barrotes” que impedía el uso del equipo si se encendía en Nochebuena.
Los troyanos, son virus que instalan un servidor remoto en la víctima. El intruso realizará peticiones a ese
servidor que conoce, puesto que lo ha propagado él, y podrá obtener el control de esa máquina infectada.
Los gusanos son virus que se duplican utilizando procesos del SO infectado.
La propagación de virus se realiza por muchas vías. Una de las más comunes es embebidos en archivos
comunes, como archivos de texto u hojas de cálculo, de forma que al abrir el archivo infectado se instala el
virus. Otra vía, cada vez más común son los dispositivos de almacenamiento extraíbles tipo usb. Para evitar
la acción de los virus, se usan antivirus, programas que intentan detectar y eliminarlos. Su funcionamiento
consiste en comparar el posible virus con un patrón o firma que posea en su BBDD de virus. Si coincide,
muy probablemente, el candidato a virus lo es. Debido a la rapidez con la que evolucionan los virus
(genéricamente malware), es importante actualizar el antivirus a menudo.
El software que utiliza Internet o la conexión a redes no seguras, es potencial vía de infección o inseguridad.
Los servicios pueden ofrecerse con aplicaciones vulnerables, explotadas por programas o personas para
realizar una acción dañina. Los programas que aprovechan vulnerabilidades se denominan exploits.
Ejemplos de exploits son los que aprovechan debilidades NetBios para ofrecer una consola remota.
Ejemplos de debilidades del software es la inyección SQL, consistente en introducir sentencias SQL en
formularios o consultas web.
A través de los clientes de correo electrónico es común la propagación de virus, muchas veces camuflados
en archivos de bromas o juegos. Asegurar con una configuración correcta los clientes y servidores de correo
electrónico es fundamental, para evitar que intrusos usen los recursos para realizar “mail-bombing” (envío
masivo de correo) o generar spam.
Los programas P2P para compartir archivos, suelen ser vías de descarga de software dañino. Otros
programas son los keyloggers, programas que una vez instalados en una máquina capturan las pulsaciones
del teclado, lo guardan en un archivo y lo envían al atacante. Si se teclea un nombre de usuario y su
contraseña, habrán sido registrados y por tanto podrán ser usados por el intruso. También poseen versión
hardware, cuya incidencia quedaría limitada con las medidas de seguridad física.
Como resumen de medidas de protección a nivel aplicación están la configuración segura de los servidores
y SO, uso de antivirus, actualización y parcheado de aplicaciones y precaución en el uso de programas que
accedan a Internet. Además, en general, la seguridad va enfrentada a la velocidad, es decir, a mayor
seguridad, mayores chequeos y por tanto habrá que pagar un precio en el rendimiento de los sistemas.
2.2.6. Nivel Meta Aplicación
No es normal en la literatura hablar del nivel de meta aplicación. Se ha querido acuñar este término para
incluir y estructurar de algún modo aspectos algo más allá del software, del nivel de aplicación. Estas ideas
se refieren a aspectos más humanos que técnicos. Dos conceptos: ingeniería social y criptografía.
La ingeniería social puede definirse como el conjunto de técnicas basadas en relaciones humanas, que usa
un intruso para generar una situación de inseguridad. Ejemplo típico es una llamada de una persona que se
hace pasar por una autoridad y solicita a una víctima su usuario y contraseña para solucionar un problema.
La buena voluntad de la víctima hace que el intruso supere toda la seguridad con una llamada de teléfono.
Los ataques de ingeniería social se apoyan en la misma base: la interacción humana. Variante típica es el
phising, consistente en enviar un correo electrónico haciéndose pasar por una entidad bancaria e invitar a la
víctima a pulsar un enlace para confirmar unos datos, por ejemplo número de cuenta y clave de acceso. El

341
enlace que se pulsa lleva a una página web fraudulenta. La víctima introduce los datos, se indica un error y
se redirige a la página legítima. Los datos introducidos quedan grabados en la máquina delincuente.
La criptografía podría traducirse por escribir en una tumba o cripta, y probablemente sea más apropiado
hablar de cifrado. Se presenta la seguridad que ofrecen las técnicas que reescriben la información de forma
que no sea capaz de leerse fácilmente. La información se interpreta con convenios habituales en texto
plano, no cifrado. Si se usan métodos para dificultar su lectura se habla de información o texto cifrado. Estos
conceptos son verticales, afectan a toda la comunicación y pueden implementarse en una o en cada capa
de la pila OSI. Se suele hablar de dos tipos de cifrado: simétrico y asimétrico. El simétrico consiste en una
clave secreta que comparten emisor y receptor. Cuando intercambian información, el emisor cifra el
mensaje con esa clave, lo envía, y el receptor lo descifra con esa misma clave.
El cifrado asimétrico se basa en dos claves, una secreta y otra pública. Pueden visualizarse como un
candado y una llave. Cuando el emisor envía un mensaje, lo cifra con el candado del receptor, su clave
pública. Cuando el mensaje llega al receptor éste lo descifra con su clave privada, la llave del candado.
Puede parecer que si todo el mundo conoce la clave
pública, se conoce el cifrado del mensaje y no hay
seguridad. No es así, porque la clave pública, cifra, no
descifra, y conociendo la clave pública no se conoce
la privada. Esto significa que un mensaje cifrado con
clave pública, sólo se descifra con la privada. Y
obtenerla a partir de la pública es muy difícil.
Los aspectos humanos se refieren a la confianza. Para usar cifrado asimétrico se intercambian certificados
digitales de confianza, que son una clave pública, emitida por una autoridad en la que se confía, como la
FNMT. Las autoridades de certificación garantizan que alguien es quien dice ser.
El cifrado simétrico, para el mismo número de bits de la clave, es más robusto que el asimétrico y más
rápido. En general, el cifrado asimétrico se utiliza al comienzo de la comunicación para establecer una clave
secreta válida para una sesión. Estos conceptos tienen aplicación en dos ámbitos: el cifrado de las
comunicaciones y creación de redes privadas virtuales y la firma digital. Para cifrar comunicaciones a nivel
dos se utiliza cifrado simétrico preconfigurado con protocolos como PPTP, L2F o L2TP y cifrado PAP o
CHAP. A nivel 3 se utiliza IPSEC y a niveles superiores SSL o TLS.
Una VPN es una red privada virtual. Es implementada creando y cifrando una conexión virtual entre dos
equipos. Se puede crear en dos modos de trabajo, modo túnel, que crea un túnel entre dos equipos
intermedios de la red o modo extremo a extremo, que crea una conexión cifrada de emisor a receptor.
La firma digital persigue garantizar la autenticidad (no repudio) y la integridad. Un resumen es el producto
de una función que actuando sobre una entrada genera una combinación de longitud fija. Al resumir un
texto, se obtendrá una serie de varios bits y será muy difícil encontrar otro texto con el mismo resumen.
Básicamente el proceso es éste: Un emisor genera un mensaje, que es resumido. El resumen se cifra con la
clave privada del emisor. De esta manera se podrá descifrar con la clave pública del emisor. Pero qué
información se obtiene: ninguna, sólo un resumen, 256 bits. Lo que si aporta es conocer al firmante, ya que
si el resumen es correcto, el origen es correcto, porque sólo se puede descifrar con su clave pública.
Por otro lado, se envía el mensaje original, junto con la firma, cifrados con la clave pública del receptor. El
receptor descifra dos cosas: el mensaje original y la firma (el resumen cifrado). Con el mensaje descifrado,
se calcula un resumen candidato. Con la clave pública del emisor, se descifra el resumen de la firma. Si
coinciden, la comunicación es correcta, el mensaje original es íntegro y el autor, es el firmante.
3. SERVICIOS DE SEGURIDAD
Los servicios de seguridad son disposiciones orientadas a cumplir con los requisitos de seguridad,
confidencialidad, autenticidad, integridad y disponibilidad. El problema que presentan, como se ha indicado,
es el riesgo: la materialización de la amenaza y su consecuente impacto.
Por tanto, existe un componente temporal que condiciona el servicio de seguridad. Si la amenaza no se
materializa, se podría decir, muy groseramente, que tener o no tener servicio de seguridad es equivalente.
Pero, un servicio de seguridad, aún no materializándose la amenaza realiza una acción preventiva. Por
tanto, este criterio temporal puede servir para identificar a los servicios como preventivos y reactivos. Es
decir, los orientados a cubrir riesgos antes de que se produzcan y los que intentan solucionar su impacto.
Se han presentado servicios de seguridad por niveles del modelo OSI. En realidad en todos los niveles se
repiten los conceptos, adaptados a la naturaleza de la función de cada capa. Para completar la visión, ahora
se categorizan los servicios por función de seguridad que desempeñan.

342
El servicio de confidencialidad utiliza técnicas criptográficas. A cada nivel tendrán un significado. Por
ejemplo, a nivel de aplicación, se encriptará la información, y a nivel de red, se podrá cifrar un enlace. La
técnica es la misma, pero aplicada en el contexto de cada capa del modelo.
El servicio de autenticidad / no-repudio también usa técnicas criptográficas adaptadas, como el uso de clave
pública y privada, resúmenes o firmas digitales. El servicio de no-repudio se estandariza en la norma ISO-
7498-2. Asimismo para ofrecer integridad se usan técnicas de resumen, redundancia, etc. Por fin, la
disponibilidad hace uso de criterios relativos a protocolos, con técnicas como el establecimiento de
umbrales, copias de seguridad, etc.
Es fácil encontrar referencias a servicios de seguridad en la forma de servicio antivirus, servicio de respaldo
u otros. Estos servicios ofrecen las mismas funciones, pero agrupados con otros criterios. Por ejemplo, el
servicio antivirus, es un servicio preventivo contra ataques a la confidencialidad, integridad o autenticidad. Y
también hace uso de técnicas, como resúmenes o firmas de virus para identificarlos, que al final no es más
que una prueba de integridad. El servicio de respaldo (backup), sería un servicio reactivo, más que
preventivo, orientado a garantizar la disponibilidad (continuidad) de las operaciones y entre otras cosas
debe tener en cuenta las copias de seguridad de la información.
Por tanto, como referencia pueden clasificarse los servicios de seguridad en función de los criterios que se
tiende a garantizar: autenticidad, integridad, etc. Y tenerlos en cuenta cuando se haga referencia a servicios
que se clasifiquen con otros criterios.
4. TÉCNICAS Y SISTEMAS DE PROTECCIÓN
En los apartados anteriores se han ido esbozando algunas técnicas y sistemas de protección de red. Otra
vez, clasificando la defensa en función de su objeto, se pueden agrupar de la siguiente forma:
Confidencialidad. Antivirus, conexiones seguras (SSL, IPSec, SSH…), técnicas de resumen y cifrado, redes
privadas virtuales (VPN)
Disponibilidad. Sistemas de cortafuegos, antivirus, acceso remoto, redes privadas virtuales (VPN), servicios
de respaldo y recuperación, técnicas de monitorización, etc.
Autenticidad. Sistemas de gestión de dominios y usuarios, sistemas de IDS – IPS, antivirus, técnicas
biométricas, técnicas de resumen y cifrado, firma digital
Integridad. Técnicas de resumen y cifrado, firma digital
5. ESTÁNDARES
Presentar una descripción de la legislación existente en cuanto a seguridad de sistemas en red, podría ser
muy extenso, por lo que sólo se enumera la más relevante para conocer el marco legal dónde remitirse.
Protección de datos: LOPD: Ley orgánica 15/1999
Firma Electrónica: En Europa, Directiva 1999/93/CE, en España Ley 59/2003.
Recomendaciones ISO sobre seguridad informática: Familia 27000 de entre las que deben conocerse:
ISO 27001: Requisitos del sistema de gestión de seguridad de la información.
ISO 27002: Guía de buenas prácticas en cuanto a seguridad de la información.
ISO 27005: Directrices para la gestión del riesgo en la seguridad de la información.

343
TEMA 73. EVALUACIÓN Y MEJORA DE PRESTACIONES EN UN SISTEMA EN RED. TÉCNICAS Y
PROCEDIMIENTOS DE MEDIDA.

1. INTRODUCCIÓN
2. EVALUACIÓN Y MEJORA DE PRESTACIONES EN UN SISTEMA EN RED
2.1. Evaluación
2.2. Mejora
3. TÉCNICAS Y PROCEDIMIENTOS DE MEDIDAS
3.1. Teoría de Tráfico
3.2. Teoría de Colas
3.2.1. Sistema M/M/1
3.2.2. Sistema M/M/1/N
3.2.3. Sistema M/M/2
3.2.4. Sistema M/G/1
3.2.5. Redes de Colas

344
1. INTRODUCCIÓN
La evaluación y mejora del rendimiento de un sistema en red, es una tarea que comienza con su
concepción. El objetivo es disponer de una red en explotación con un rendimiento óptimo. La evaluación
debe ser objetiva para comparar el comportamiento del sistema en distintos momentos o en relación con
otros sistemas. Las mediciones indicarán los problemas y aspectos de mejora.
Para la evaluación y mejora del rendimiento, es necesaria una base teórica que explique el comportamiento
del sistema y permita establecer los compromisos entre coste, utilidad y satisfacción de los usuarios, entre
otros. Estos aspectos los estudia la teoría de tráfico, que es aplicada en la teoría de colas.
2. EVALUACIÓN Y MEJORA DEL RENDIMIENTO EN UN SISTEMAS EN RED
La evaluación del rendimiento de un sistema en red tiene como propósito obtener la información necesaria
para discernir si el sistema cumple con sus exigencias. Es un proceso orientado a la mejora, de forma que
la información obtenida será el punto de comienzo para analizar las posibles mejoras. La evaluación plantea
interrogantes bien definidos. El primero es el rendimiento. Para algún sistema puede orientarse a la
reducción de tiempos y para otro puede referirse a transacciones realizadas con seguridad, o con un coste
mínimo, por ejemplo. Existen otras variables a estudiar y medir, como la carga de la red, la fiabilidad o el
retardo. Para todas deben establecerse los criterios de medida adecuados.
Del mismo modo, debe decidirse qué técnicas de evaluación se utilizarán, tales como la monitorización, la
comparación o la simulación y poner estas técnicas en valor, comparando prestaciones y coste, estudiando
cómo se puede incrementar el rendimiento o reducirse costes. La mejora del rendimiento, debe comenzar
por establecer sus límites, ya que, en principio no es ilimitada, por lo que hay que identificar hacia dónde
dirigir los esfuerzos porque generalmente, mejorar un sistema complejo implica la optimización de los
elementos que se utilicen durante la mayor parte del tiempo.
Estos aspectos forman parte de una idea más amplia, la gestión del sistema en red, que además de generar
la información necesaria para la evaluación y mejora afronta otros aspectos como la renovación del sistema,
la reacción frente a incidencias o la seguridad de la información.
2.1. Evaluación
La evaluación de un sistema en red no es trivial. Está ligada a su propia naturaleza. Para ello, se requiere
un estudio previo, presentado en la teoría de tráfico y de colas. Puede pensarse en una red de conmutación
de paquetes, en la que todos los usuarios comparten el ancho de banda y una red conmutada en la que un
usuario acapara recursos, aunque no los utilice, durante el tiempo que se le asignan. La evaluación del
sistema diferirá y las posibles mejoras estarán adaptadas a la filosofía de trabajo.
Por tanto, las tareas que deben realizarse a la hora de evaluar una red han de consistir en definir qué se va
a evaluar (características) y cómo (parámetros a medir). A modo de orientación, un esquema de propósito
general que marque las fases de la evaluación podría ser el siguiente:
1. Objetivos. Definir los objetivos del sistema, para poder medir prestaciones de factores críticos.
2. Servicios. Definir el servicio que ofrece el sistema y sus resultados. Un sistema puede devolver un
resultado válido, inválido o no devolver resultado.
3. Parámetros a evaluar y sus métricas. Identificar los parámetros que definen las prestaciones y las
métricas y criterios de comparación. Importancia especial poseen los umbrales que se establezcan.
4. Técnicas de evaluación. Según los objetivos, podrá escogerse la técnica de evaluación más indicada a
cada caso, como por ejemplo, simulación, medidas reales o modelizado.
5. Diseño de pruebas: Creación de situaciones, reales o simuladas a las que podría enfrentarse el sistema
para comprobar su respuesta.
6. Análisis y presentación de resultados. Es el estudio e interpretación de los datos de las pruebas.
Los parámetros que definen las prestaciones de la red, indicarán valores que muestren la actividad y el
rendimiento del sistema. Cada organización definirá los parámetros a evaluar, pero como parámetros típicos
de evaluación, pueden distinguirse el ancho de banda usado, caudal, latencia o carga.
El ancho de banda se refiere a la tasa de transmisión disponible en el canal. Se mide en unidades de
información sobre tiempo, como por ejemplo, Mbps. Es un parámetro importante porque da idea del
dimensionado del canal. El objetivo es obtener un compromiso entre un servicio de calidad y el coste que
representan las líneas de comunicación (ancho de banda). Se tenderá a no sobredimensionar y dar un
margen al sistema para afrontar picos de tráfico.

345
El caudal, throughput en inglés, es el volumen de datos entregado por un nodo de red en la unidad de
tiempo. Se mide en bits por segundo, paquetes por segundo o similar. En principio, este será un dato teórico
del que habrá que evaluar su comportamiento real, que podrá verse afectado por variables como el medio
de transmisión, la carga del nodo, el protocolo utilizado, etc.
En relación con el caudal, se encuentra la latencia, que es el retardo que introduce la red. El retardo es una
suma de tiempos de proceso en los nodos, los tiempos de propagación en los medios de transmisión o
tiempos de espera por congestión o retransmisiones. Es un parámetro, que cobra importancia según la
aplicación a evaluar, de modo que aquellas en las que prime la seguridad sobre el tiempo no tendrá tanta
importancia como en aplicaciones de video o audio.
La carga de proceso en los nodos de la red es la cantidad de operaciones que se exigen a los elementos
que procesan los datos. Si se considera el caso de un router con un número moderado de paquetes a
procesar, podrá funcionar sin problemas, pero un tráfico abultado puede afectar al rendimiento. Evaluar la
carga que ha de soportar la red, es fundamental para garantizar la continuidad y disponibilidad de los
servicios que ofrece el sistema.
Las métricas a seleccionar sería el conjunto de criterios a usar en la evaluación del sistema. Pueden
hacerse depender de las prestaciones que se intentan conseguir. Una primera aproximación podría ser la
respuesta del sistema (si el sistema ha respondido correctamente, si no, o si no ha habido respuesta).
En estos tres casos, las métricas interesantes pueden variar. Si el servicio se ha completado con éxito, la
métrica a utilizar podría referirse al tiempo empleado, ancho de banda consumido o medidas del estilo. Las
medidas pueden presentarse como un agregado del sistema o particularizarse para un equipo.
Los casos de respuesta errónea y ausencia de respuesta (negación de servicio) son más delicados en su
análisis, ya que se refieren a la fiabilidad y disponibilidad. En el caso de una respuesta errónea puede
utilizarse el tiempo medio entre fallos (MTBF, Mean Time Between Failures) y en el caso de una ausencia
de respuesta el tiempo de disponibilidad, en un periodo de tiempo amplio, como por ejemplo en un año.
Esto es debido, a que se supone que el sistema va a estar operativo la práctica totalidad del tiempo, por lo
que un dato representativo será del estilo disponibilidad del 99.95% anual, que significaría que el sistema ha
estado fuera de servicio unas horas en un año. A veces esto se refiere como disponibilidad de cinco nueves
o similar. Otras veces, para los equipos se suelen usar los valores proporcionados por los fabricantes.
En general las medidas deben cumplir tres propiedades: no redundancia, completitud y sondeo. La no
redundancia implica que no haya solape o dependencia entre medidas a realizar. La completitud, está
referida a que cubran la mayor parte de las prestaciones a evaluar y el sondeo se orienta a realizar medidas
con una dispersión tal que no obligue a tomar medidas constantemente.
Las técnicas de evaluación a usar dependerán de la red. La evaluación podrá realizarse en base a medidas
directas sobre el sistema en funcionamiento o mediante simulación o modelización. Ésta se apoya en
estudios matemáticos y teoría de tráfico. La simulación consiste en usar software que describa la red y en
función de las condiciones impuestas, obtener el comportamiento estimado, en general con gráficas e
informes. Las técnicas se pueden combinar. Las técnicas de simulación representan una forma más o
menos rápida y económica de obtener información.
Las diferencias también resultan evidentes. Mientras una medición real, es un dato, en principio objetivo y
fiable, los resultados de un modelo o una simulación siempre serán estimaciones del comportamiento
esperado y que estarán sujetas a errores de diseño del sistema simulado o las condiciones impuestas.
Las mediciones que se realicen sobre la red, podrán realizarse con herramientas genéricas o propietarias.
Es común que los dispositivos de red dispongan en su firmware de utilidades o comandos de monitorización
y medida, así como la implementación de protocolos para la gestión de red, que proporcionan información y
estadísticas de comportamiento.
La información del estado de la red y mediciones de los parámetros definidos puede remitirse de dos formas
principales, mediante eventos o alarmas, que se producen cuando un parámetro supera un umbral, por
ejemplo, o mediante muestreo, en que periódicamente un equipo central interroga o recibe la información.
La condición de diseño para la toma de muestras, es que generen el menor tráfico posible, dado que
supone un consumo de recursos tanto en equipos como en el ancho de banda de la red. Del mismo modo,
el envío de la información puede realizarse en tiempo real o diferido (batch).
Para la evaluación de se puede usar la referencia del RFC 2544, "Benchmarking Methodology for Network
Interconnect Devices", publicado por el IETF y en donde se definen una serie de pruebas para comprobar el
funcionamiento de dispositivos de red. Algunas de las secuencias automáticas de pruebas definidas en ese
documento para la evaluación de la red, incluyen parámetros ya presentados. Destacan los siguientes:

346
- Throughput: Es una prueba para determinar la máxima velocidad a la que un equipo recibe y envía tramas
sin pérdidas. La prueba se puede realizar con diferentes tamaños de trama según el RFC 2544.
- Frame Loss Rate: Determina el número de tramas que el equipo pierde a diferentes velocidades. Los
resultados muestran el porcentaje de tramas perdidas para cada tamaño de trama.
- Back-to-back frames: Determina la capacidad Ethernet para soportar tráfico a ráfagas con varios tamaños
de trama. El resultado es el número de tramas en la ráfaga más larga capaz de manejar sin pérdidas.
- Latencia (Round Trip Delay): Proporciona la medida del retardo de la red con varios tamaños de trama. Se
obtiene calculando la diferencia entre las marcas de tiempo de las tramas transmitidas y recibidas.
2.2. Mejora
Una vez definida la evaluación de un sistema en red, se deben aplicar sus resultados a la mejora, que
puede entenderse como un proceso continuo en el que se analiza la información proveniente de evaluar,
monitorizar y gestionar un sistema en red para optimizar su funcionamiento.
En la monitorización o supervisión de red, se adquiere información en tiempo real del tráfico y por tanto de
la actividad que soporta. Está orientada a descubrir problemas y actividad sospechosa, como ataques a la
seguridad y disponibilidad. Esta proactividad permite diagnosticar instantáneamente el problema y
localizarlo para darle solución. Problemas típicos pueden ser la congestión (cuellos de botella de tráfico en
algún nodo), caída de elementos de red, ataques de denegación de servicio, uso indebido de los recursos
(descargas masivas) y similares.
Herramientas de supervisión comunes pueden ser los sistemas de detección de intrusos (IDS), rastreadores
de red (sniffers o analizadores de tráfico) y programas propietarios que ofrecen los fabricantes y que
además permiten realizar la gestión de la red, como configuración de enlaces o caminos alternativos ante
incidentes, o la gestión remota de elementos de red, como radios, multiplexores o routers. Aunque el
abanico de herramientas es amplio, y cada empresa suele vender sus soluciones para redondear el negocio
y cautivar al cliente, también existen estándares de gestión de red como SNMP.
3. TÉCNICAS Y PROCEDIMIENTOS DE MEDIDAS
3.1. Teoría de Tráfico
La teoría de tráfico trata el problema de la optimización de la gestión de un sistema de entrada salida al que
van llegando clientes o usuarios en instantes de tiempos arbitrarios. En una red de ordenadores se tratará
de dimensionar una red a un precio razonable. Se distinguen sistemas de pérdidas y de espera.
En un sistema de pérdidas, un cliente que llega al sistema con todos los servidores ocupados no puede
entrar al sistema, como por ejemplo, el caso de un aparcamiento. En un sistema de espera, aunque todos
los servidores estén ocupados, el cliente espera a que haya alguno libre. P. ej., una ventanilla de un banco.
En los sistemas de espera caben dos posibilidades:
- La cola puede crecer indefinidamente (capacidad de la cola indefinida)
- La cola posee un tamaño máximo. Si se llena, el cliente no entra al sistema (capacidad de cola finita).
Las principales cuestiones a que se intenta responder pueden condensarse en:
1. Dimensión de la red para dar servicio con una calidad dada, economizando la infraestructura.
2. Probabilidad de que un cliente encuentre todos los servidores ocupados.
3. En sistemas de espera, probabilidad de esperar más de cierto tiempo.
4. Una vez dimensionada la red cómo ampliarla si llegan más clientes de los previstos (sobrecarga).
Los factores a estudiar para responder a esas cuestiones pueden resumirse en:
1. Uso económico de la red: No se debe sobredimensionar la red (10.000 canales para 10.000 usuarios).
2. Proporcionar un servicio adecuado: Viene dado por la probabilidad de que un usuario llegue al sistema y
encuentre un servidor (o linea) libre. En el caso de sistemas de espera debe considerarse el tiempo medio
de espera. El servicio será mejor cuanto menor sea esa probabilidad, por ejemplo, en torno al 1%. Para
calcular esta probabilidad, en telefonía se realizan las medidas durante una hora cargada típica.
3. Demanda de servicio de los clientes: Se tienen en cuenta dos parámetros, el tiempo de servicio que se
presta al cliente (modelado como una variable aleatoria) y el promedio de llegadas al sistema, para lo que
usa el concepto de tasa de llegadas, λ, medido en llegadas/segundo.
La demanda total que se pide al sistema será proporcional al tiempo de servicio y a la tasa de llegadas. A
este concepto se le denomina tráfico y se nota con la letra A.

347
Por tanto será el producto de la tasa de llegadas por la media de tiempo de servicio. A = λ·s μ = 1/s
Denominando μ a la tasa de servicio (inverso del tiempo medio de servicio) se obtienen
A = λ/μ
las expresiones de la derecha. El tráfico A se mide en unidades denominadas Erlangs.
Para representar los sistemas de colas, en general se tendrán colas de tipo FIFO (first in, first out), también
denominadas FCFS (first come, first served), consistentes en que primero se atiende al usuario que llega
antes. Pueden existir otros criterios, como colas LIFO, en las que el último en entrar es el primero en salir, o
utilizar criterios de prioridad, urgencia o cantidad de datos a procesar.
La representación gráfica es la mostrada en la figura. Las
consideraciones a tener en cuenta son que cada evento es
independiente de los demás y equiprobables. Esa probabilidad de
que ocurra un evento (una llegada al sistema) se considera
dependiente de un cierto tiempo en el que no ha habido eventos.
Se nota con pK(T) a la probabilidad de que haya habido K eventos en el intervalo de tiempo T.P (1 evento
en ΔT) = λ·ΔT P (0 eventos en ΔT) = 1 – λ·ΔT donde λ es la tasa de llegadas.
KT K
Omitiendo el desarrollo se llega a las expresiones mostradas. Representa el pK(T) = -e- ·(λT) / K!
comportamiento del sistema como una distribución de Poisson. El valor medio de
E(K)=λT
la variable K es el número medio de eventos en un intervalo T.
Ejemplo típico es la modelización de llegada de llamadas telefónicas de forma característica como la de la
figura. Si se escogen intervalos de tiempo pequeños se puede suponer en cada intervalo una tasa de
llegadas λ constante, para poder introducir el modelo de Poisson. Existen llamadas que no son
independientes entre sí, pero se puede suponer que lo son, si representan un porcentaje despreciable con
respecto al total.
Con estas hipótesis, el modelo de Poisson es aplicable en telefonía. Para
redes de conmutación de paquetes, los eventos pueden asimilarse a la
llegada de paquetes, pero la situación no es tan buena, las medidas
reales difieren algo, (descritas mejor por procesos autosimilares o
fractales) ,no obstante se usa el modelo de Poisson por simplicidad.
Si se consideran N fuentes de eventos independientes, cada uno de ellos modelable como proceso de
Poisson, la combinación de todas las fuentes se comportará también como un proceso de Poisson cuya
tasa de llegadas agregada será la suma de las tasas de llegada de los procesos individuales. Para modelar
la distribución de eventos en cada intervalo de tiempo se utiliza una distribución exponencial. Se podría
interpretar como una distribución de Poisson con K=0. Dos son sus propiedades: cada intervalo termina con
igual probabilidad en cualquier instante y la vida residual (tiempo de observación), sin memoria, ya que la
distribución exponencial, asigna probabilidades iguales a intervalos de observación iguales.
Existen redes de conmutación de paquetes que usan un modelo exponencial para servidores. La media de
T representa el número de clientes que pueden procesarse en la unidad de tiempo. En un servicio modelado
con Poisson, las salidas vendrán descritas por una distribución tipo Poisson.
3.2. Teoría de Colas
La teoría de colas trata el estudio de sistemas de espera en función de las características del tráfico y la
gestión de colas. Para normalizar distintos modelos se utiliza la notación de Kendall, que asigna a cada
concepto de la teoría de tráfico un carácter. La notación queda del tipo A/B/C/D/E/Disciplina:
- A: Patrón de llegadas. Se utiliza una D si el proceso es determinista, una M si es un proceso de Markov,
que utilice un modelo de Poisson, y una G si es un proceso general, a definir.
- B: Tiempo de servicio, el que se tarda en atender a un usuario. Se usan las letras D, M y G como en el
caso del parámetro A.
- C: Número de servidores del sistema.
En general se usan sólo estos tres parámetros para los casos típicos de estudio, la notación de Kendall se
amplía con otros tres parámetros, para especificar más características del sistema:
- D: Tamaño del sistema (para sistemas de espera). Si no aparece, se supone infinito. Si D = N, se supone
una cola de N-1 elementos.
- E: Población del sistema, o clientes que podrían llegar. Si no aparece se supone población infinita.
- Disciplina: Indica cómo se atiende a los clientes de la cola, si la cola es de tipo LIFO, FIFO, urgente, etc.

348
3.2.1. Sistema M/M/1
Es un sistema con tasa de llegadas tipo Poisson,
tiempo de servicio exponencial y un único servidor.
Se caracteriza mediante la variable de estado n
(número de clientes en el sistema) y pn(t) será la
probabilidad de que haya n clientes en el sistema.
Un Δt pequeño para que la probabilidad de varios eventos sea despreciable, genera las ecuaciones
llamadas de Erlang. Al alcanzar el régimen estacionario, las ecuaciones de Erlang se igualan a cero.
n
De la solución resulta la distribución de probabilidades del sistema. Si λ/μ no fuese menor pn = (λ/μ) ·p0
que 1 se podrían obtener probabilidades nulas o menores a 1. Imponer la condición λ/μ<1,
(λ<μ) significa que al servidor llegan menos clientes de los que el sistema está procesando. p0 = 1-λ/μ

Si fuese λ > μ, llegarían muchos más clientes de los que el servidor podría atender y la cola crecería
indefinidamente con lo que nunca se alcanzaría el régimen permanente.
Aunque se usa la notación A, para el tráfico, también suele
usarse ρ = λ/μ para la intensidad de tráfico. Se define el
factor de utilización de un servidor como la probabilidad de
que al menos exista un cliente. La caracterización del
sistema M/M/1 puede resumirse en la tabla.
3.2.2. Sistema M/M/1/N
Cuando el sistema posee capacidad limitada, una cola de N
elementos, para el régimen permanente, las ecuaciones de
Erlang ofrecen las expresiones de la tabla. En estos
sistemas, se define el rendimiento (throughput), γ, como los
clientes por unidad de tiempo, que entran al sistema.
Cuando un cliente llega y no puede entrar al sistema porque la cola está llena, se da un bloqueo. Un buen
sistema posee una probabilidad de bloqueo baja. La probabilidad de bloqueo es la probabilidad de tener N
clientes, es decir, de ocupar toda la cola. En este caso el factor de utilización es FU = γ/μ.
Para un sistema con tasa de llegadas λ y tasa de salidas, la que sea, se define la tasa de paso (throughput),
como el número medio de clientes atendidos en la unidad de tiempo. Matemáticamente se expresa con la
fórmula de Little: E(n) = λ·E(T). En un sistema M/M/1, E(n)=ρ/(1-ρ). Si ρ es mucho menor que uno (ρ<<1), el
sistema estará descargado y no habrá que esperar en la cola. E(T) tenderá a 1/μ. Si ρ se acerca a uno, el
sistema se satura y el tiempo de espera crece. Esta es la aplicación de la fórmula de Little al sistema M/M/1,
pero podría aplicarse sólo a la cola, considerándola un sistema.
3.2.3. Sistema M/M/2
Sistema con tasas de llegadas λ, poissoniana, tiempo de servicio exponencial y dos servidores. Al ser las
llegadas poissonianas, la tasa es la misma para cualquier instante de tiempo. Si no hubiera clientes en el
sistema, nadie saldría de él. Cuando sólo existe un cliente en un servidor, la tasa de servicio será la del
servidor. Si existen dos clientes, los dos estarán en los servidores y la probabilidad de que salga uno sería
2μ. Las características del sistema se resumen en la tabla.
La fórmula de Little permite calcular el tiempo medio que
pasan los clientes en el sistema M/M/2: E(T) = 1 / μ·(1-ρ²).
Interesa ahora realizar una evaluación, comparando, de
forma cualitativa, las diferencias que surgen en un sistema
cuando se varían sus parámetros.
Si se compara el sistema M/M/1 con el M/M/2, al tener aquél un servidor, en vez de dos, se satura a mitad
de carga. Se puede comprobar en las ecuaciones de Little aplicadas a cada sistema. Podría pensarse en
otras variaciones. Por ejemplo, un sistema M/M/1 con una tasa de servicio μ, doble que la de otro sistema
M/M/2. Este podría ser el caso de tomar una decisión respecto a equipar la red con un único servidor el
doble de potente, o por el contrario, usar dos servidores de potencia mitad.
Si la carga es baja, este sistema daría mejores prestaciones porque los clientes estarían en el servidor una
media de tiempo 1/2μ. Por contra, ante caídas del sistema, el servicio se interrumpe, mientras en el sistema
M/M/2 existiría otro servidor para seguir funcionando.
Otra variación podría ser dos sistemas M/M/1, en vez de uno M/M/2. En este caso, el comportamiento es
similar, ya que el sistema no se satura hasta valores de ρ cercanos a la uno, puesto que existen dos colas.

349
3.2.4. Sistema M/G/1
Es un sistema con tasa de llegadas λ poissonianas, tiempo de servicio genérico y un único servidor. Para
caracterizarlo es preciso conocer el tiempo medio de servicio E[s]=1/μ.
Es de interés en el modelado de sistemas en los que no se puede aplicar
la distribución exponencial como en redes de paquetes. No tiene por qué
existir estacionariedad, por eso se modela mediante sus prestaciones, E(n)
y E(T). Las expresiones se conocen como fórmulas de Pollaczec-Kinchine.
El factor 1/μ·(1-ρ) corresponde al sistema M/M/1. En este sistema la varianza σ es σ² = 1/ μ², lo que
sustituido en las fórmulas puede comprobarse que son los valores presentados anteriormente. Si fuese σ² =
0, se estaría tratando un sistema determinista, como el M/D/1. Cuando ρ tiende a valores cercanos a la
unidad, el sistema tiende a congestionarse. Si por el contrario ρ es mayor que la unidad, no se llegaría a
una situación estable. El sistema M/G/1 se resumiría en la tabla. Para estudiar la salida de los usuarios,
puede suponerse que si las llegadas son poissonianas, las salidas también lo serán. En general no es así,
pero hay casos en los que el modelo es válido.
El teorema de Burke enuncia que en un sistema sin pérdidas
(infinitos servidores), si las llegadas son poissonianas, las
salidas también lo serán. El teorema no tiene validez en
sistemas de pérdidas. En un sistema de población infinita,
puede usarse el modelo de llegadas poissoniano.
Si la población es finita, como los abonados a una centralita telefónica, el modelo ya no sería de aplicación.
Un proceso de Poisson depende del intervalo de tiempo, Δt, en que no se llama. En el caso de población
finita, la suposición de llegadas como λ·Δt no se cumple cuando el usuario está hablando, porque en ese
instante no va a volver a llamar. Esto es debido a que los usuarios son tratados de forma individualizada.
Entonces, se toma la probabilidad de que un usuario realice una llamada cuando el servidor esté inactivo.
La probabilidad de un usuario inactivo, es la de recibir una llamada en el intervalo Δt, λ·Δt. Si el usuario está
activo, la probabilidad de llegada en Δt es nula. Estas premisas derivan en una distribución de probabilidad
que se conoce como distribución de Engset.
Esta distribución ayuda a interpretar mejor el modelo de Erlang-B, como caso límite, cuando se supone que
el número de usuarios M es mucho mayor que N, el número de servidores. Para los cálculos se supone
buena la aproximación cuando M es mayor o igual a diez veces N. Los modelos de Erlang, como lo es el
Erlang-B sirven de base teórica para dimensionar y evaluar las redes y sistemas de comunicaciones.
3.2.5. Redes de Colas
Son sistemas interconectados en los que existen colas para atender a los usuarios. Se distinguen dos tipos,
redes abiertas, en las que existe comunicación con el exterior, es decir hay entrada/salida y redes cerradas,
en las que los clientes dan vueltas en la red sin existencia de entrada/salida. La presentación se centra en
redes abiertas, modeladas por varios sistemas de colas individuales. Si se supone que no hay pérdidas, los
usuarios que llegan deben salir. Es la situación de equilibrio. La red puede analizarse entonces como un
sistema de nodos en la que cada nodo se caracteriza por un vector de estado.
Sea un modelo de red analizada como si fuera un nodo. La red posee M nodos y en cada uno n usuarios.
La red se describe mediante la probabilidad p(n), donde n sería un vector con los clientes a la entrada de
cada servidor n=(n1, n2,...). El modelo Jackson modela una red sin pérdidas, todos los clientes se atienden,
con llegadas poissonianas y servicio exponencial independiente entre ellas. Pero en una red, si un nodo se
modela como un sistema M/M/1, el siguiente nodo, ya no podrá ser del mismo tipo, ya que sus llegadas,
estarían muy correladas, dependen mucho del servicio del primer nodo. En general no puede suponerse la
condición Jackson de servicio exponencial independiente. Sin embargo, en redes complejas podría
aplicarse al darse varios flujos de entrada a un mismo servidor, suponiendo que se genera un efecto de
independencia. Esta se denomina suposición de independencia de Kleinrock. También se supone la tercera
condición de Jackson, que la elección del camino de salida de los paquetes es aleatoria. Omitiendo el
desarrollo, puede estimarse, generalizando para N saltos, el retardo de un camino concreto en una red, con
la expresión del cuadro.
El retardo medio E(T), entre dos puntos que se comunican por varios
caminos se podría estimar con la expresión E(T)=E(n)/γ, donde E(n) sería
el número medio de paquetes en la red y γ el tráfico cursado. La
expresión puede reescribirse como se muestra. Y se referiría a la media
del retardo para toda la red.

350
TEMA 74. SISTEMAS MULTIMEDIA.

1. INTRODUCCIÓN
2. SISTEMAS MULTIMEDIA
2.1. Hardware
2.2. Información
2.3. Aplicación

351
1. INTRODUCCIÓN
Un sistema multimedia es un sistema que trabaja con diversos medios. En el entorno de la informática y las
comunicaciones, lo que también se refiere como entorno digital, el concepto se amplía a la integración de
sistemas de video, sonido, imágenes y en general cualquier información digital.
2. SISTEMAS MULTIMEDIA
Además de la definición de sistema multimedia presentada, deben identificarse otros dos conceptos, el de
sistema multimedia interactivo, que sería el sistema multimedia que permite al usuario interactuar sobre el
contenido y por su amplitud, la idea de hipermedia, que serían medios que combinan mulmedia e hipertexto.
Los sistemas multimedia, en el contexto digital poseen características como el ser gestionados por
ordenador, aunque también se utilice en otras labores como la producción o almacenamiento; son sistemas
integrados, es decir, un mismo equipo será capaz de tratar distintos tipos de contenido y además posee la
propiedad de ser digital, lo que ofrece grandes posibilidades de proceso.
Otra propiedad que suele suponerse a los sistemas multimedia, aunque estrictamente no sería necesaria,
es la interactividad con el usuario, es decir, la participación de éste en el desarrollo, presentación o
personalización del contenido.
2.1. Hardware
Para el estudio de los dispositivos hw usados en los sistemas multimedia conviene dividirlos en dispositivos
de entrada y salida. Para ambos se distinguen dispositivos de video, audio, imagen y texto.
Como dispositivos de entrada, para vídeo pueden citarse los digitalizadores de vídeo y videocámaras. Las
tarjetas de video ofrecen el soporte para E/S de video. Para audio son de destacar micrófonos e
instrumentos MIDI o de otro tipo, y cuyo soporte de E/S realizan las tarjetas de sonido. Los conectores hw
para audio, se resumen en entradas digitales, la entrada analógica auxiliar (line in), que permite introducir la
señal de una fuente externa y los conectores MIDI (y joystick), para la conexión de este tipo de dispositivo.
El hardware de entrada de imagen está representado por el escáner, pero en general, cualquier entrada de
video sirve para procesar la entrada de imagen, ya que el video es una sucesión de imágenes. Otros
dispositivos de entrada de imagen son las tabletas gráficas, tablas planas táctiles que reconocen la posición
de un apuntador a modo de bolígrafo en su superficie. Si el apuntador puede ser la mano o los dedos,
también se llaman touchpad. Por fin, para el texto, el dispositivo de entrada representativo es el teclado. El
ratón es un dispositivo de entrada para control y con un carácter genérico.
Como dispositivos de salida de video el elemento representativo es el monitor y en general cualquier
pantalla o proyector. Para el audio se dispone de altavoces y sintetizadores de sonido. En los equipos
suelen disponerse dos salidas de sonido analógicas, una amplificada para los altavoces y una sin amplificar
(line out). El hardware de salida de imagen es el mismo que el de video y además hay que citar la
impresora, que también se utiliza para documentos de texto e información estática.
2.2. Información
La información tratada por un sistema multimedia, puede poseer distinta naturaleza, bien sea texto, imagen,
audio o vídeo, codificados en determinado formato, que seguirá un estándar. Los estándares pueden ser de
facto, impuestos por su amplia difusión sin que exista una norma o recomendación de uso y los estándares
de iure (por ley), definidos por organismos oficiales y cuyo uso es recomendado. Esto obliga, al menos a
conocer los formatos más comunes utilizados en multimedia.
En cuanto a los estándares de texto destacan ASCII y unicode, ya descritos en temas anteriores. Otros
estándares comunes son rtf (rich text format), desarrollado por MS, pdf (portable document format), un
formato de archivo universal que preserva fuentes, colores, hipervínculos, etc. de los documentos fuentes.
Fue desarrollado por Adobe y representa un estándar de facto en la distribución de documentos
electrónicos. Adobe PostScript es un lenguaje de definición también desarrollado por Adobe Systems para
describir la apariencia de una página a un dispositivo de salida.
Estándares orientados a contenidos web pueden destacarse SGML, HTML, XML y HyTime. SGML
(Standard Generalized Markup Language) fue desarrollado por ISO (ISO 8879) como estándar de lenguaje
de marcado para el intercambio y procesado de documentos en soporte electrónico. No especifica un
formato particular, sino la estructura de un documento y reglas de marcado de sus elementos, que podrán
ser interpretados de diferentes formas. HTML es un formato no propietario basado en SGML.
XML (eXtensible Markup Language) XML es otro estándar para web publicado por el W3C (www
consortium) diseñado para crear documentos electrónicos en Internet. Toda aplicación multimedia con cierto
grado de gestión de información usa documentos XML bien para la codificación, bien para el intercambio
con otro sistema multimedia.

352
HyTime (Hypermedia Time-based Structuring Language) es un estándar ISO para representar documentos
hipermedia abiertos. Es una aplicación de SGML. SMDL (Standard Music Description Language) es una
aplicación de HyTime. Un objeto de HyTime puede ser vídeo, audio o texto. HyTime proporciona asociación
de objetos dentro de documentos con hiperenlaces y su interrelación en el tiempo y el espacio.
Las imágenes y gráficos pueden codificarse siguiendo dos métodos: como mapa de bits y vectorialmente.
Las imágenes en formato vectorial se componen de objetos construidos a partir de primitivas (componentes
básicos como una línea o un cuadrado). Un mapa de bits (bitmap) define imágenes compuestas de puntos o
píxels que pueden tomar un valor de un rango. A mayor número de pixels por unidad de área, mayor
resolución. La profundidad de color la determinada la cantidad de memoria reservada a cada pixel.
Las características de los gráficos vectoriales son la independencia de los objetos que los componen, de
forma que permiten un escalado natural sin pérdida de resolución. El color se define a la hora de visualizar
el gráfico, con lo que la calidad siempre es máxima. El caso de los gráficos en tres dimensiones es un caso
particular de los gráficos vectoriales, en que el modelo se almacena de manera vectorial y el resultado una
vez realizada la generación (render) es almacenado como mapa de bits.
Formatos gráficos bitmap comunes son bmp, formato sencillo propio de plataformas WS, caracterizado por
ocupar mucha memoria, tiff (tagged image file format) para diferentes plataformas, con cualquier
profundidad de pixel y diversas opciones de compresión o gif (graphic interchange format), formato
propietario de CompuServe desarrollado para transmisión en tiempo real de gráficos y que define un
protocolo de intercambio de datos independiente del hardware de creación y visualización. Otros ejemplos
de formatos son png, ppm, ps o dxf.
Otro formato famoso es jpg (Joint Photografic Expert Group), que no es propiamente un formato, sino un
algoritmo de compresión de imágenes de color de 24 bits. Usa un formato de compresión con pérdidas y
define una familia de técnicas de compresión con pérdidas basado en una transformación sobre símbolos.
La animación puede considerarse una extensión de los gráficos. Una secuencia de imágenes se caracteriza
por su resolución, colores y número de imágenes en la unidad de tiempo (frame rate), que debe ser mayor o
igual a 25 imágenes por segundo para dar sensación de continuidad. La animación en sistemas multimedia
suele aplicarse a imágenes realizadas con gráficos. Si es en tiempo real los fotogramas se generan según
se van necesitando. Si la animación es fotograma a fotograma, se generan los fotogramas uno a uno y
posterioremente se muestran.
El audio multimedia puede diferenciar sonido vocal y no vocal. En
realidad, todo puede tratarse como sonido, pero la distinción se realiza
debido a la importancia de la voz y su tratamiento en aplicaciones como
la telefonía digital o la síntesis de voz. Formatos típicos de audio son el
popular mp3, wav, wma o MIDI.
En cuanto al video, formatos conocidos son mov (QuickTime Movie), creado por Apple y multiplataforma, avi
(Audio Video Interleaved), también multiplataforma o mpeg (Moving Pictures Experts Group), que posee
diversas especificaciones, de las cuales mpeg-4 es base de formatos como divx, xvid o H264. Otros
formatos orientados a la transmisión por Internet, que permiten visualizar vídeo sin contar con el archivo
completo son RealVideo de RealNetworks o wmv de WS.
2.3. Aplicación
La aplicación de los sistemas multimedia está presente en la práctica totalidad de medios de información y
comunicaciones, destacando en el diseño web, BBDD y documentación.
Los aspectos multimedia del diseño web deben tener en cuenta la legibilidad de las páginas, siendo
recomendable usar páginas pequeñas, para acelerar su descarga y garantizar la coherencia, para lo que se
usan plantillas y normas de estilo, iconos descriptivos y menús jerarquizados con recomendaciones del tipo
distancia de tres clics para llegar a puntos importantes.
Se debe intentar conseguir compatibilidad entre interfaces de los distintos navegadores y los de las páginas,
agrupar botones de acción homogéneamente y aunque el usuario anule la parte gráfica, debe permitírsele la
navegación. Los enlaces multimedia, deben indicar dónde encontrar las aplicaciones o plug-ins para el caso
en que el usuario no los tenga instalados. Un documento multimedia busca comunicar efectivamente su
contenido y la semántica, los conceptos subyacentes y su relación. En resumen, deben respetarse las
características de un buen interface multimedia.
Los documentos multimedia pueden ser de gran tamaño y presentar gran variedad de formatos. Por tanto,
al diseñar una BBDD multimedia el concepto de registro se ve algo modificado. El usuario trata con un
archivo que procesa información de distinta por lo que la implantación y explotación de BBDD multimedia
impone dos caracteríticas, la disponibilidad de BBDD avanzadas capaces de almacenar contenido
multimedia, en un entorno de fácil uso para el usuario y comunicación de alta velocidad.

353
En una BBDD multimedia se trabaja con datos que pueden variar espacial y temporalmente, por tanto un
documento introducido en una BBDD multimedia es una composición temporal, en la que se introducen
diferentes tipos de datos y las relaciones de configuración y temporales entre ellos. Los datos deben estar
sincronizados, controlando su estado y comportamiento.
Las aplicaciones de SGBD tradicionales ofrecían limitaciones en aspectos como el acceso complejo a
datos, la transferencia con otros sistemas o el interfaz de usuario. Las soluciones tienden a diseñar e
implementar nuevos SGBD capaces de usar los datos disponibles e integrar las aplicaciones tradicionales
de forma sencilla. Una base de información hipermedial tiene varios componentes, una base de
presentación (parámetros para mostrar la información), una base de estructura (lógica del hiperdocumento),
base de contenido (documentos integrados en el hiperdocumento) y la base de utilización (información de
comportamiento del usuario).
El modelo conceptual de una BBDD multimedia definido por ANSI/X3/SPARC), debe cumplir dos fases, la
representación del mundo real, sus entidades y relaciones y la modelización, centrado en la representación
de los objetos definidos, de forma que sean manipulables informáticamente.
Las aplicaciones que, sin cumplir los requisitos clásicos de un SGBD, generan documentos multimedia,
toman como base la información y datos contenidos en otros tipos de fichero. Los límites entre la BBDD real
y el documento multimedia generado son difíciles de establecer. Puede decirse que es posible establecer un
algoritmo que define el proceso de formateo y composición del documento, en dos niveles, la jerarquía
lógica del contenido del documento y la jerarquía física del documento formateado.
Este esquema se define en la norma ODA (Open Document Architecture) de ISO. Otros estándares como
la norma ISO que define el EDI (Electronic Document Interchange y su versión EDIFACT) y el protocolo
ANSI X.12 se orientan más a la estructura del documento que a los aspectos multimedia.
Este tipo de BBDD hace necesaria la utilización de dos niveles de organización, uno de conocimiento, de
metadatos, conceptual y otro nivel de datos, concreto y analítico. El paradigma se orienta a la aplicación de
representaciones semánticas de la información, es decir datos y acciones sobre los datos (POO).
El SGBD multimedia debe ofrecer lenguajes de descripción de documentos avanzados, permitir el diseño de
estructuras de datos flexibles y ofrecer mecanismos de búsqueda efectivos. Conectar documentos según su
contenido informativo, relacionando información de varios documentos, facilitar el acceso instantáneo a
ficheros y crear relaciones entre grupos de elementos informativos.
En los sistemas multimedia se distinguen medios continuos (animación, vídeo y audio) cuyo proceso está
limitado en el tiempo, por lo que los sistemas multimedia distribuidos deben garantizar en la comunicación
esos requisitos temporales. Esta necesidad ha generado la definición de de protocolos de comunicación
como RTP y RTCP (Real Time Protocol y Real Time Control Protocol) que montados sobre TCP/IP se
emplea en comunicaciones en tiempo real como la transmisión de audio y vídeo en Internet.
Los medios discretos (texto y gráficos) no tienen esa limitación temporal y plantean problemas como la
sincronización de texto e imagen. Normalmente se considera que una aplicación es multimedia si combina
al menos un medio continuo con al menos uno discreto.

354
-¡Bien está vuesa merced en la cuenta! –respondió Don Quijote-. Bien
parece que no sabe las entradas y salidas [contabilidad falsa] de los
impresores y las correspondencias que hay de unos y otros. Yo le prometo
que cuando se vea cargado de dos mil cuerpos de libros vea tan molido su
cuerpo, que se espante, y más si el libro es un poco avieso y nonada
picante.
-Pues ¿qué? –dijo el autor-. ¿Quiere vuesa merced que se lo dé a un librero
que me dé por el privilegio tres maravedís, y aun piensa que me hace
merced en dármelos? Yo no imprimo mis libros para alcanzar fama en el
mundo, que ya en él soy conocido por mis obras: provecho quiero, que sin
él no vale un cuatrín la buena fama.
Don Quijote de La Mancha
Miguel de Cervantes Saavedra

355

También podría gustarte