Sunteți pe pagina 1din 839

21-6-2017 Material guía para

examen
complexivo
Materias comunes

INGENIERÍA DE SISTEMAS
UNIVERSIDAD POLITÉCNICA SALESIANA – SEDE GUAYAQUIL
1

Contenido de Materias
ADMINISTRACIÓN DE PROYECTOS
Aplicaciones Distribuidas
Base de datos I
Base de Datos II
Base de datos III
Estructura de Datos
INGENIERÍA DE SOFTWARE
Programación Hypermedial
Programación II
Programación III
REDES I
REDES II
TCP/IP
SISTEMAS DE INFORMACION I
Sistemas de Informacion II
Sistemas Distribuidos
2

UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
ADMINISTRACIÓN DE PROYECTOS

Elaborado por:
Ing. Guillermo Pizarro

Revisado por:
Ing. Miguel Quiroz

[30/Junio/2017] – versión 1.0


1

Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0
2

CAPITULO 1 4
1. IDEA DE UN PROYECTO 4
1.1 Concepto e idea de proyecto 4
1.2 Fuente generadora de idea de proyecto 4
1.3 Elaboración de una idea de proyecto 5
1.4 Tipos de proyectos 6
1.5 Proceso de planificación y los proyectos de inversión 7
1.7 Los valores ambientales y los proyectos de inversión 10
CAPITULO 2 10
2. MARCO LÓGICO PARA EL DISEÑO DE PROYECTOS 10
2.1 Herramientas de diagnóstico 11
2.2 Análisis de involucrados 11
2.3 Análisis de problemas 13
2.4 Herramientas de identificación 15
2.5 Análisis de objetivos 15
2.6 Análisis de alternativas 16
2.7 La Matriz de Marco lógico MML de un proyecto 17
2.8 Resumen narrativo 19
2.9 Indicadores verificables objetivamente 19
2.10 Medios de verificación 19
2.11 Supuestos 19
2.12 La MML de un programa 19
2.13 La MML en el ciclo de proyectos 21
CAPITULO 3 22
3. ESTUDIO DE MERCADO 22
3.1 Introducción al estudio de mercado 22
3.2 El estudio de mercado de producto / servicio 22
3.3 Definición del área de mercado. 24
3.4 Demanda de mercado 24
3.5 Oferta de mercado 25
3.6 Determinación de la población muestra 27
3.7 Técnicas de investigación. 28
3.7.1. Entrevista 28
3.7.2. Encuesta 30
3

3.7.3. Focus Group 33


Existen 13 pasos principales para aplicar la técnica del Focus Group(Ver Figura): 33
3.7.4. Cliente fantasma 34
3.7.5. Observación 34
CAPITULO 4 37
4. ESTUDIO TÉCNICO 37
4.1. Estudio técnico del proyecto 37
4.3. Definición de la localización del proyecto 39
4.4. Estudio Administrativo del Proyecto. 45
4.5. Estudio de impactos 46
4.6. Identificación de medidas de mitigación 49
CAPITULO 5 49
5. ESTUDIO FINANCIERO 49
5.1. Determinación del requerimiento de inversión 49
5.2. Elaboración de un flujo de caja 50
Presupuesto de cuentas por cobrar 51

Flujo de Caja Proyectado (Presupuesto de efectivo) 51

5.3. Cálculo del TIR y VAN. 52


5.4. Determinación de las fuentes de financiamiento. (Estrategia Financiera) 56
4

CAPITULO 1

1. IDEA DE UN PROYECTO

1.1 Concepto e idea de proyecto

Idea

● Representación de algo en nuestra mente.


● Una idea (del griego ἰδέα, de eidon, ‘yo ví’) es una imagen que existe o se forma en la
mente. La capacidad humana de contemplar ideas está asociada a la capacidad de
raciocinio, autorreflexión, la creatividad y la habilidad de adquirir y aplicar el intelecto.
Las ideas dan lugar a los conceptos, los cuales son la base de cualquier tipo de
conocimiento, tanto científico como filosófico
Proyecto

● Un proyecto es, según el Instituto de Gerencia de Proyectos:

–“Un esfuerzo temporal para la creación de un producto o servicio único”

● Un proyecto es, según Silva:

–“Un conjunto de actividades temporales relacionadas en un todo, por una


organización, para lograr un producto único”

1.2 Fuente generadora de idea de proyecto1

Las ideas de negocio derivan generalmente de una o varias fuentes, entre las que tenemos:

1. Formación académica. Es natural que una persona que ha realizado estudios determinados
en una especialidad quiera ejercer su profesión. Así, un abogado desea colocar un despacho de
abogados y un dentista su consultorio.

1
https://www.entrepreneur.com/article/263396
5

2. Experiencia profesional y laboral. El conocimiento y la información de un determinado


sector, así como contar con habilidades técnicas y operativas basadas en la experiencia, pueden
ayudar a definir oportunidades de negocios

3. Cambios sociales del entorno. En nuestra sociedad donde los requerimientos y necesidades
de la población son un cambio constante, la generación de ideas innovadoras permite la
supervivencia y el origen de nuevas organizaciones.

4. Diversidad de formas de entretenimiento. La demanda de actividades de ocio, culturales


y artísticas de buena calidad, ha generado una variedad de negocios, enfocándose en un
segmento específico.

5. Desarrollo de nuevas tecnologías. Internet ha estimulado a la creación de diversas formas


de hacer negocio. Empresas que emplean la red como medio de trabajo, el comercio
electrónico, los mercados virtuales, publicidad online, etc.

6. Especialización mediante la tercerización. En la actualidad, las empresas deciden


enfocarse en lo que mejor saben hacer, por lo que ofrecen servicios especializados a otras para
cubrir áreas específicas.

7. Publicaciones especializadas. Puedes utilizar revistas, publicaciones especializadas,


secciones de negocios en los periódicos y sobre todo Internet para encontrar ideas de negocios.

1.3 Elaboración de una idea de proyecto

Primera Fase: Investigación

–Investigar un mercado insatisfecho,

–Estudiar los hábitos de las personas de un segmento específico,

–Crear un cuestionario sobre un tema de interés y entrevistar a los clientes potenciales.


6

Segunda Fase: Creación

–Creatividad.

–Diferenciación.

–Solución a un problema.

Tercera Fase: Selección de Idea

1.4 Tipos de proyectos2


Cuando se habla de proyecto siempre es necesario especificar algo más que permita en-cuadrar
el área o sector donde sus competencias se desarrollarán. Existen muchos tipos de proyectos,
pero los más comunes son:

Según el grado de dificultad que entraña su consecución:

● Proyectos simples.
● Proyectos complejos.
Según la procedencia del capital:

● Proyectos públicos.
● Proyectos privados.
● Proyectos mixtos.
Según el grado de experimentación del proyecto y sus objetivos:

● Proyectos experimentales.
● Proyectos normalizados.
Según el sector:

● Proyectos de construcción.
● Proyectos de energía.
● Proyectos de minería.
● Proyectos de transformación.
● Proyectos de medio ambiente.

2
http://www.obs-edu.com/int/blog-project-management/administracion-de-proyectos/tipos-
de-proyectos-y-sus-principales-caracteristicas
7

● Proyectos industriales.
● Proyectos de servicios.
Según el ámbito:

● Proyectos de ingeniería.
● Proyectos económicos.
● Proyectos fiscales.
● Proyectos legales.
● Proyectos médicos.
● Proyectos matemáticos.
● Proyectos artísticos.
● Proyectos literarios.
● Proyectos tecnológicos.
● Proyectos informáticos.
Según su orientación:

● Proyectos productivos.
● Proyectos educativos.
● Proyectos sociales.
● Proyectos comunitarios:
● Proyectos de investigación.
Según su área de influencia:

● Proyectos supranacionales.
● Proyectos internacionales.
● Proyectos nacionales.
● Proyectos regionales.
● Proyectos locales.

1.5 Proceso de planificación y los proyectos de inversión3

Planificación del Proyecto

3
http://agora.ceem.org.es/wp-content/uploads/documentos/proyectos/manualproyectos.pdf
8

Un buen método para planificar el proyecto y concebir sus líneas generales consiste en
convocar un grupo de trabajo que aporte las ideas, orientaciones y recomendaciones que se les
vayan ocurriendo en relación con el futuro proyecto.

Otra técnica que se utiliza en ocasiones es la llamada lluvia de ideas o brainstorming, que
consiste en tratar de escribir en un papel el mayor número posible de ideas, aunque no estén
bien desarrolladas, con objeto de poder decidir luego entre las más prometedoras. En general,
es bueno cualquier método con el que se recopile información general sobre el tema sé que va
a tratar en el proyecto y que sirva para recapacitar sobre el proyecto, para compartir
información y conocimientos con personas con experiencia.

Cuando se planifique un proyecto, se debe contestar las preguntas de la tabla. Las respuestas a
estas diez cuestiones proporcionarán los datos y la información mínima para poder tomar una
serie de decisiones que puedan ayudar a considerar y descartar propuestas.

Figura No.1 .1 Cuestiones para la planificación de un proyecto

Proyectos de Inversión4

Es un plan que si se le asigna determinado monto de capital y se le proporciona insumos de


varios tipos, podrá producir un bien o un servicio, útil al ser humano o a la sociedad en general.

4
http://catarina.udlap.mx/u_dl_a/tales/documentos/lcp/castillo_f_fi/capitulo2.pdf
9

No todos los proyectos inmobiliarios concluyen en su ejecución contando tres etapas:

● Análisis Viabilidad: Estudios preliminar y marco general del proyecto


● Estudio Prefactibilidad: A partir de una idea casi definida de lo que será el proyecto
y todas sus características.
● Estudio de Factibilidad: Es un proyecto ejecutivo de realización que incluye un
análisis a detalle del mismo

Todos los proyectos de inversión deberán realizarse con información relativa a los aspectos de
mercado, técnicos, organizacionales, financieros y de evaluación, de tal modo que los
resultados obtenidos de los análisis y evaluaciones den como resultado una toma de decisiones
adecuada para realizar o no un proyecto de inversión, o bien para darle un nuevo enfoque a su
estructura.

1.6 El desarrollo sustentable y los proyectos de inversión5

● Es difícil exagerar la importancia de las inversiones para el desarrollo sustentable. Éste


requiere cambios económicos estructurales; se sabe que el modelo actual de actividad
económica es insostenible en el sentido doble de que es ambientalmente destructivo y
no promueve suficientemente la equidad.

● Parte de la importancia de las inversiones radica en su carácter de largo plazo. Mientras


que se suele destacar la naturaleza a corto plazo de los negocios, con un acento en el
próximo informe trimestral, las inversiones se realizan sistemáticamente con una
perspectiva a largo plazo, de unos treinta años o más. Incluso en el sector dinámico de
la tecnología, las inversiones se realizan con un horizonte cronológico quinquenal.

5
http://search.iisd.org/pdf/2004/investment_invest_and_sd_es.pdf
10

● Una de las medidas comúnmente adoptadas por los gobiernos en procura de inversiones
consiste en concertar acuerdos internacionales que aclaren las normas de trato
aplicables a los inversionistas extranjeros. Esos acuerdos internacionales sobre
inversiones son en teoría una buena manera de reducir los riesgos afrontados por los
inversionistas extranjeros, gracias a lo cual éstos pueden prever un mayor rendimiento
procedente de un destino determinado.

1.7 Los valores ambientales y los proyectos de inversión6

Mediante el análisis del impacto ambiental lo que se busca es realizar un continuo proceso de
mejoramiento ambiental de toda la cadena de producción, sin obviar ningún punto, teniendo en
cuenta desde el proveedor hasta el distribuidor final que llega hasta el cliente. Quien realice la
evaluación de proyectos tendrá que estar cada vez más atento al ciclo de producción completo
que creará la inversión, teniendo en cuenta el impacto ambiental.

CAPITULO 2

2. MARCO LÓGICO PARA EL DISEÑO DE PROYECTOS


El método de análisis conocido como Marco Lógico (Logical Framework Approach) fue
creado a principios de los años setenta para la Agencia para el Desarrollo Internacional de los
Estados Unidos (USAID).

La Metodología de Marco Lógico es una herramienta analítica para la planificación y


administración de proyectos orientados a objetivos.

6
http://www.inversion-es.com/proyectos-de-inversion.html#proyectosdeinversion2
11

2.1 Herramientas de diagnóstico


Los proyectos son intervenciones de corto a mediano plazo, que esperan tener efectos (cambiar)
en la situación actual, a mediano y a largo plazo.

El Marco Lógico utiliza dos tipos de herramientas para diagnosticar la Situación Actual:

● Análisis de Involucrados,
● Análisis de Problemas.

2.2 Análisis de involucrados

El análisis de involucrados no se limita a la descripción pasiva de intereses y conflictos, sino


que promueve la confrontación, la negociación y los consensos alrededor del problema y las
soluciones.
12

Tabla No. 2.1. Formato para el análisis de involucrados.


13

Tabla No. 2.2. Ejemplo de análisis de involucrados.

2.3 Análisis de problemas

Para el análisis del problema es necesario seguir los siguientes pasos:

● Realizar un inventario ordenado de problemas (Diagnóstico General).


● Priorizar los problemas encontrados (Diagnóstico Contextual).
● Definir operativamente el Problema.

La técnica utilizada es el Árbol de Problemas o Árbol de Causas y Efectos.

Redacción del Problema.


14

En la redacción del problema se debe evitar las soluciones ausentes, es decir, iniciar la
redacción como «falta de...» por ejemplo, falta de fondos, como un problema.

El problema es lo que nos lleva a la falta de fondos; por ejemplo, desconfianza de los financistas
por malversación anterior, o interrupción abrupta de donaciones, son problemas específicos,
que sí proporcionan una solución intrínseca aunque probable en su redacción.

Construcción de un Árbol de Problemas.

Un árbol de problemas se dibuja de abajo hacia arriba.

Las causas constituyen las «raíces», el problema central el «tronco» y los efectos son las
«ramas».

Figura No. 3.1. Árbol de Problemas.


15

2.4 Herramientas de identificación


Además, el Marco Lógico utiliza dos tipos de herramientas para diagnosticar e identificar la
Situación Futura deseada:

● Análisis de Objetivos,
● Análisis de Alternativas.

2.5 Análisis de objetivos

El análisis de objetivos es complementario al análisis del problema y se construye en base a


éste. Pretende facilitar la comprensión, amplia de la solución y su formulación en términos
operativos. Transforma la situación desfavorable en situación contraria.

Además, se formulan técnicamente los resultados esperados del Proyecto que resuelven el
Problema Central.

La técnica utilizada es el Árbol de Soluciones o Árbol de Medios y Fines.

Pasos para la construcción del Árbol de Objetivos.

1. Formulación de las causas como logros, en términos favorables:


a. Describirlas apropiadamente como hechos cumplidos y observables (tangibles);
b. De cada tarjeta de causas, un logro favorable o solución (situación alcanzada ya
existente);
c. Facilidad para formular los indicadores de evaluación.
2. Formular el logro principal como una transformación del problema central:
a. Redactar el problema central como un logro alcanzado despojándose de sus
cualidades desfavorables, que resultaría de los cambios propuestos si estos
pudieran lograrse.
b. Verificar consistencia del análisis.
3. Formular las consecuencias del problema como consecuencias favorables:
16

a. Formular cada una de las consecuencias desfavorables del problema, tal como
se comportaría si este desapareciera;
b. Ayuda a formular indicadores de evaluación del proyecto.

Objetivos Generales

¿En qué va el Proyecto a contribuir a largo plazo?

2.6 Análisis de alternativas

En este Análisis identificamos diferentes estrategias alternativas (del Árbol de Objetivos) que,
si son ejecutadas, podrían contribuir a promover el cambio de la Situación Actual a la Situación
Futura “Deseada”.

La decisión sobre la estrategia a adoptar debería tomarse en base a:

1. Los intereses de los beneficiarios;

2. Los recursos financieros disponibles;

3. Los resultados de estudios económicos, financieros, sociales, ambientales e


institucionales; y,

4. Los intereses y mandatos de entidades ejecutoras potenciales.

Para aplicar el Análisis de Alternativas, se deben seguir los pasos siguientes:

– Paso 1: Identificar diferentes conjuntos de objetivos, del Árbol de Objetivos, que podrían ser
estrategias potenciales de un proyecto.
17

– Paso 2: Considerar las alternativas a la luz de los recursos disponibles, la viabilidad política,
así como los intereses de los beneficiarios, de la entidad ejecutora prevista y de las fuentes de
financiamiento.

– Paso 3: Realizar los estudios pertinentes para el tipo de operación considerado: económico,
financiero, social, ambiental, etc.

– Paso 4: Tomar una decisión sobre la estrategia o combinación de estrategias (alternativas)


más apropiada(s) para ser la del proyecto.

Las preguntas más frecuentes con relación al Análisis de Alternativas son:

– ¿Qué ocurre con las alternativas (u objetivos) que no son seleccionadas como parte de la
estrategia del proyecto? Normalmente se convierten en Supuestos de la Matriz del Marco
Lógico (MML).

Por ejemplo, en el estudio de caso de Palmira, si la Compañía Pública de Autobuses (CPA)


lleva a cabo el proyecto, no será capaz de atender el problema de caminos (construcción y
mantenimiento de caminos no están incluidos dentro de los mandatos de la CPA).

En este caso, habrá un Supuesto en relación con el mejoramiento de los caminos de Palmira
realizado por el Departamento de Obras Públicas Municipal

2.7 La Matriz de Marco lógico MML de un proyecto


La MML es una herramienta para la conceptualización, el diseño, la ejecución, el seguimiento
del desempeño y la evaluación de proyectos.
18

Su objetivo es darle estructura al proceso de planificación y comunicar la información esencial


sobre un proyecto.

La MML se presenta en forma de matriz de 4 x 4 (4 columnas y 4 filas). Las cuatro (4)


columnas contienen:

– Resumen Narrativo, de objetivos y actividades.

– Indicadores verificables objetivamente, como metas específicas a ser alcanzadas.

– Medios de Verificación, donde puede obtenerse la información sobre los indicadores;


y,

– Supuestos, factores que están fuera de control de la unidad de ejecución del proyecto
y de la entidad ejecutora, que implican riesgos.

Las cuatro (4) filas de la MML contienen información sobre Objetivos y Actividades,
Indicadores, Medios de Verificación y Supuestos, en cuatro niveles jerárquicos:

– Fin (impacto), al cual contribuirá el proyecto de manera significativa después que


éste entre en la fase de operación.

– Propósito (efecto directo), que se logra después de completar la ejecución del


proyecto.

– Componentes (productos), que se producen durante la ejecución del proyecto.

– Actividades, requeridas para producir los componentes planificados.

La MML se presenta en forma de matriz de 4 x 4 (4 columnas y 4 filas).


19

Figura No. 2.1 Matriz de Marco Lógico

2.8 Resumen narrativo


Resumen Narrativo, de objetivos y actividades.

2.9 Indicadores verificables objetivamente


Indicadores verificables objetivamente, como metas específicas a ser alcanzadas.

2.10 Medios de verificación


Medios de Verificación, donde puede obtenerse la información sobre los indicadores

2.11 Supuestos

Factores que están fuera de control de la unidad de ejecución del proyecto y de la entidad
ejecutora, que implican riesgos.

2.12 La MML de un programa

Este módulo sobre la MML de un Programa tiene dos objetivos:

● ¿CUÁNDO es apropiado usar una MML de un Programa? y,


20

● ¿CÓMO (o QUÉ) es una MML de un Programa; CUÁLES son sus características


principales, etc.?

Muchos de los préstamos del BI son para proyectos particularmente grandes o complejos. Un
proyecto grande o complejo, puede tener más de un efecto directo, o Propósito. Cuando este es
el caso, la metodología requiere más de una MML:

● “Una MML “maestra” para un “Programa”, definido en este caso como una
operación con Fin (es) y más de un Propósito, que está integrado por dos o más
Proyectos”.

Figura No. 2.1 Regla General sobre MML de Programa

El Sistema de Marco Lógico (SML):

● El Programa tiene un solo Propósito;


● El Programa está integrado por dos o más proyectos;
● El Propósito del Programa es el Fin de cada proyecto que lo integra.
21

Figura No. 2.1 Marco Lógico de un Programa

2.13 La MML en el ciclo de proyectos7


El Marco Lógico es una herramienta dinámica para la presentación de resultados finales. Se
modifica y completa durante el proceso de preparación del proyecto.

El Marco Lógico tiene el potencial de enfocar y hacer más eficiente el proceso de preparación
del proyecto, tanto en el banco como en sus entidades ejecutoras.

La MML puede contribuir en todas las etapa del ciclo de proyecto.

7
http://www.ucipfg.com/Repositorio/MIA/MIA-01/BLOQUE-
ACADEMICO/Unidad1/lecturas/BID_ML.pdf
22

Figura No. 2.1 La Matriz de Marco Lógico (MML) en el Ciclo de Proyectos

CAPITULO 3

3. ESTUDIO DE MERCADO

3.1 Introducción al estudio de mercado

La investigación de mercados es la

● identificación
● recopilación
● análisis
● difusión
● y uso sistemático y objetivo de la información

Con el propósito de mejorar la toma de decisiones relacionadas con

● la identificación y
● solución de problemas y oportunidades de marketing.

3.2 El estudio de mercado de producto / servicio

● Especifica la información necesaria para tratar estos temas.


● Administra y aplica el proceso de recopilación de datos.
● Analiza los resultados.
● Comunica los hallazgos y sus implicaciones.
● Ayuda a los gerentes a usar esta información para su toma de decisiones.

Clasificación de la investigación de mercado

Investigación para la identificación del problema

Es la investigación realizada para reconocer los problemas que, quizá, no sean evidentes a
primera vista, pero que existen o que pueden surgir en algún momento. Ejemplos: potencial
23

de mercado, participación de mercado, imagen, características del mercado, análisis de ventas,


pronósticos e investigación de tendencias.

Investigación para la solución del problema

Es la investigación que se efectúa para resolver problemas de marketing específicos. Ejemplos:


investigación de la segmentación, sobre el producto, acerca de la asignación de precios, de la
promoción y de la distribución

Figura No. 3.1. Clasificación de la investigación de mercado

Investigación del Producto


24

● Concepto de prueba
● Determina el diseño óptimo del producto
● Pruebas del empaque
● Modificación del producto
● Posicionamiento y reposicionamiento de la marca
● Marketing de prueba
● Pruebas de control en la tienda

3.3 Definición del área de mercado.

Aunque existen muchas definiciones de áreas de mercado dependiendo del enfoque adoptado
en su determinación, ya se ha expuesto que un área de mercado es la zona geográfica de
influencia de un establecimiento o conjunto de establecimientos comerciales

3.4 Demanda de mercado8


● La demanda se define como la respuesta al conjunto de mercancías o servicios,
ofrecidos a un cierto precio en una plaza determinada y que los consumidores están
dispuestos a adquirir, en esas circunstancias.

● En función del tipo de consumidor, los bienes y servicios que se demandan pueden ser
de tres tipos: los bienes de capital, los bienes intermedios y los bienes de consumo
final.

❏ Por bienes de capital se entiende las maquinarias y equipos utilizados en la


fabricación de otros bienes o servicios: Esta es la demanda de la industria y de
otras empresas.

❏ Los bienes intermedios o insumos son aquellos productos que todavía se van
a transformar y que han de servir para la producción de otros bienes o servicios.

http://segob.guanajuato.gob.mx/sil/docs/capacitacion/guiasEmpresariales/Guia
EstudioMercado.pdf
25

❏ Los bienes finales son los consumidos por el cliente quien hará uso de ellos
directamente, tal como los entrega el productor o comercializador al usuario
final.

● En el análisis de la demanda, se deben estudiar aspectos tales como los tipos de


consumidores a los que se quiere vender los productos o servicios. Esto es saber qué
niveles de ingreso tienen,para considerar sus posibilidades de consumo.

● Finalmente, la demanda, o la oferta, se debe analizar en la relación prevaleciente


respecto del comercio exterior, pues un cierto número de productos entran al mercado
nacional, en tanto que otros salen al extranjero. Por ello se habla de Consumo Nacional
Aparente que se define como la producción nacional, más las importaciones (M), menos
las exportaciones (X). Esto se expresa:

CNA = PRODUCCIÓN NACIONAL + M-X

3.5 Oferta de mercado9


● La oferta se define como la cantidad de bienes o servicios que se ponen a la disposición
del público consumidor en determinadas cantidades, precio, tiempo y lugar para que,
en función de éstos, aquél los adquiera. Así, se habla de una oferta individual, una de
mercado o una total.

● En el análisis de mercado, lo que interesa es saber cuál es la oferta existente del bien o
servicio que se desea introducir al circuito comercial, para determinar si los que se
proponen colocar en el mercado cumplen con las características deseadas por el público.

http://segob.guanajuato.gob.mx/sil/docs/capacitacion/guiasEmpresariales/GuiaEstudi
oMercado.pdf
26

● Es igualmente posible que al iniciar esta parte del trabajo, el futuro inversionista
advierta la inconveniencia de proseguir y el estudio le habrá servido para no arriesgar
en una empresa que fuera a resultar improductiva. La decisión que tome no dependerá
exclusivamente de la participación en un mercado libre, sino que puede proponerse
romper un monopolio o un oligopolio locales, lo cual tendrá su grado de dificultad, pero
puede lograrse.

● En lo relativo al estudio de la oferta, para este giro, se debe conocer quiénes están
ofreciendo ese mismo bien o servicio, aún los sustitutos en la plaza donde se desea
participar, con el objeto de determinar qué tanto se entrega al mercado, qué tanto más
puede aceptar éste, cuáles son las características de lo suministrado y el precio de venta
prevaleciente.
● Para el análisis comparativo se propone el siguiente cuadro:

Figura No. 3.2. Cuadro de análisis comparativo de la oferta en una localidad


27

3.6 Determinación de la población muestra10


La muestra es el número de elementos, elegidos o no al azar, que hay que tomar de un universo
para que los resultados puedan extrapolarse al mismo, y con la condición de que sean
representativos de la población. El tamaño de la muestra depende de tres aspectos:

● Del error permitido.


● Del nivel de confianza con el que se desea el error.
● Del carácter finito o infinito de la población.
Las fórmulas generales que permiten determinar el tamaño de la muestra son las siguientes:

● Para poblaciones infinitas (más de 100.000 habitantes):

● Para poblaciones finitas (menos de 100.000 habitantes):

Leyenda:

n = Número de elementos de la muestra.

N = Número de elementos del universo.

P/Q = Probabilidades con las que se presenta el fenómeno.

Z2 = Valor crítico correspondiente al nivel de confianza elegido; siempre se opera con valor
sigma 2, luego Z = 2.

E = Margen de error permitido (a determinar por el director del estudio).

10
http://www.marketing-xxi.com/proceso-de-la-investigacion-de-mercados-i-24.htm
28

Cuando el valor de P y de Q no se conozca, o cuando la encuesta se realice sobre diferentes


aspectos en los que estos valores pueden ser diferentes, es conveniente tomar el caso más
favorable, es decir, aquel que necesite el máximo tamaño de la muestra, lo cual ocurre para P
= Q = 50, luego, P = 50 y Q = 50. En mi larga trayectoria profesional siempre he visto los
valores P x Q como 50 x 50.

3.7 Técnicas de investigación.

3.7.1. Entrevista11

El tema de la entrevista ocupa un lugar muy destacado dentro de las técnicas aplicadas de
recogida de datos ya que es una de las más utilizadas en las investigaciones, después de la
técnica de la encuesta, técnica cuantitativa, la entrevista se diferencia de la encuesta en que es
una técnica Cualitativa.

La entrevista no se considera una conversación normal, sino una conversación formal, con una
intencionalidad, que lleva implícitos unos objetivos englobados en una Investigación

Tipos de entrevista.

La entrevista se puede clasificar de muchas maneras dependiendo del ámbito en el que se use.

Las encuestas se pueden clasificar según:

Según su estructura y diseño:

 Estructurada: El investigador planifica previamente las preguntas mediante un guión


preestablecido, secuenciado y dirigido, por lo que dejan poca o ninguna posibilidad al

11

https://www.uam.es/personal_pdi/stmaria/jmurillo/InvestigacionEE/Presentaci
ones/Curso_10/Entrevista_trabajo.pdf
29

entrevistado de réplica o de salirse del guión. Son preguntas cerradas (si, no o una
respuesta predeterminada).

 Semiestructurada: Se determina de antemano cual es la información relevante que se


quiere conseguir. Se hacen preguntas abiertas dando oportunidad a recibir más matices
de la respuesta, permite ir entrelazando temas, pero requiere de una gran atención por
parte del investigador para poder encauzar y estirar los temas. (Actitud de escucha)

 No estructuradas: Sin guión previo. El investigador tiene como referentes la


información sobre el tema. La entrevista se va construyendo a medida que avanza la
entrevista con las respuestas que se dan. Requiere gran preparación por parte de
investigador, documentándose previamente sobre todo lo que concierne a los temas que
se tratan.

Según su momento de realización

 Iniciales o exploratorias (diagnóstico): Para la identificación de aspectos relevantes


para poder formar una impresión inicial. Se usan en los primeros momentos para
familiarizarte con el contexto, permite elaborar un plan de actuación futura.

 De desarrollo o de seguimiento: Tiene dos objetivos:

❏ Describir la evolución o el proceso de una situación.


❏ Profundizar en las relaciones, forma de vida, percepciones.

 Final: Busca contrastar información, concluir aspectos.

 La entrevista en profundidad:

Según Ruiz Olabuenaga (1999)

Objetivos:
30

❏ Comprender más que explicar, maxificar el significado.


❏ Formato estímulo/respuesta, busca la respuesta subjetivamente sincera.
❏ Obtiene respuestas emocionales frente a racionales.

El entrevistador:

 Preguntas sin esquema fijo para las respuestas


 Controla el ritmo de la entrevista en relación con las respuestas recibidas
 Explica el objetivo del estudio.
 Altera el orden y características de las preguntas, e interrumpe cuando es necesario
introducir o matizar algo o reconducir el tema.
 Se explica el sentido de la pregunta tanto como sea necesario y permite crear juicios de
valor u opiniones.
 Equilibrio entre familiaridad y profesionalidad.

El entrevistado:

 Cada entrevistado recibe su conjunto de preguntas pero puede haber diferencias en el


orden o formato.

Las respuestas:

 Son abiertas y sin categorías de respuestas.

 De carácter flexible y abierto a cambios.

3.7.2. Encuesta

Una encuesta es un procedimiento dentro de los diseños de una investigación descriptiva en


el que el investigador recopila datos por medio de un cuestionario previamente diseñado, sin
modificar el entorno ni el fenómeno donde se recoge la información

Clasificación de las técnicas de encuesta


31

Figura No. 3.3. Clasificación de las técnicas de encuesta

Criterios para evaluar las técnicas de encuesta

 Flexibilidad en la recolección de datos

La flexibilidad en la recolección de datos está determinada sobre todo por el grado en el que el
participante interactúe con el entrevistador y por el cuestionario de la encuesta.

 Diversidad de las preguntas

La diversidad de las preguntas que se incluyen en una encuesta depende del grado de
interacción que tiene el encuestado con el entrevistador y el cuestionario, así también como la
posibilidad de ver las preguntas.
32

 Uso de estímulos físicos

La capacidad de usar estímulos físicos como el producto, un prototipo del producto, comerciales o
exhibiciones promocionales durante la entrevista.

 Control de la muestra

El control de la muestra es la capacidad del tipo de encuesta para llegar a las unidades especificadas
en la muestra de manera eficaz y eficiente.

 Control del ambiente de recolección de datos

El grado de control de un investigador sobre el ambiente donde el participante responde el


cuestionario.

 Control de la fuerza de campo

La capacidad de controlar a los entrevistadores y supervisores que intervienen en la recolección de


datos.

 Cantidad de datos

La capacidad de reunir grandes cantidades de datos.

 Tasa de respuesta

La tasa de respuesta de una encuesta se define, en general, como el porcentaje de las encuestas que
se completan en relación con las que se intentan.

 Anonimato percibido

El anonimato percibido se refiere a la percepción del encuestado de que el entrevistador o


investigador no conocerá su identidad.

 Deseo de aceptación social/información delicada

El deseo de aceptación social es la tendencia de los participantes a dar respuestas socialmente


aceptables, sean verdaderas o no lo sean.
33

3.7.3. Focus Group

 El Focus Group (grupo focal) es una técnica que centra su atención en la pluralidad de
respuestas obtenidas de un grupo de personas, y es definido como una técnica de la
investigación cualitativa cuyo objetivo es la obtención de datos por medio de la
percepción, los sentimientos, las actitudes y las opiniones de grupos de personas.

 Matus y Molina (2005) señalan que esta técnica cualitativa pretende aprehender los
significados que los sujetos comparten y que se expresan mediante el lenguaje.

 Por otro lado, Romo y Castillo (2007) señalan que el grupo focal tiene
predominantemente una finalidad práctica que busca recopilar la mayor cantidad de
información posible sobre un tema definido.

Existen 13 pasos principales para aplicar la técnica del Focus Group(Ver Figura):

Figura No. 3.4. Pasos para aplicar el focus group


34

3.7.4. Cliente fantasma12

Este estudio mide el Grado de Satisfacción del Cliente, realiza una Auditoría de la Calidad del
Servicio y mide la fidelización de clientes. Un cliente misterioso (incógnito) de diferentes
edades, género y nivel socioeconómico informa sobre su visita a los establecimientos de
comercio, industria y servicios a través de computadores portátiles que producen resultados al
día, para instituciones y cadenas de servicios a nivel de local, unidad, agencia, sucursal, región
y país.

El Cliente Misterioso está basado en la observación directa, por medio de “clientes misteriosos”
que evalúan objetivamente el nivel de calidad de servicio de cada visita.

Es una herramienta idónea para evaluar el nivel de satisfacción del cliente. Aplicable a
cualquier tipo de negocio sea cual sea su actividad.

Le permite:

● Conocer de primera mano las impresiones de su cliente.


● Reducir quejas y reclamos
● Fortalecer la fidelización de su empresa
● Identificar oportunidades de marketing
● Medir planes de formación de personal
● Controlar la normativa interna de la empresa
● Seguimiento de campañas y promociones
● Comprobar la evolución en el cumplimiento de los criterios de calidad a través
del tiempo

3.7.5. Observación

•En la observación estructurada, el investigador especifica con detalle lo que se va a


observar y la forma en que se registrarán las mediciones; por ejemplo, un auditor que
realiza un análisis de inventario en una tienda.

12
http://www.cedatos.com.ec/detalles_producto.php?Id=25
35

•En la observación no estructurada, el observador supervisa todos los aspectos del


fenómeno que parecen ser relevantes al problema en cuestión; por ejemplo, observar a
un grupo de niños que juegan con juguetes nuevos.

•La observación natural implica el registro de la conducta tal como ocurre en el


ambiente; por ejemplo, uno podría observar el comportamiento de los individuos que
comen en Burger King.

•En la observación artificial, la conducta de los participantes se observa en un ambiente


artificial, como una cocina de pruebas.

Figura No. 3.3. Clasificación de los tipos de observación

Observación personal

•Un investigador observa la conducta real conforme sucede.

•El observador no trata de manipular el fenómeno que observa, sino que sólo registra lo que
sucede.

•Por ejemplo, un investigador podría registrar conteos de tránsito y observar el flujo de


personas en una tienda departamental.
36

Observación Mecánica

No requiere la participación directa del encuestado.

–El audiómetro de AC Nielsen

–Torniquetes que registran el número de personas que entran o salen de un recinto.

–Cámaras fijas (de imagen en movimiento, fijas o de video)

–Escáneres ópticos en supermercados

Requiere la participación del encuestado.

–Monitores de barrido ocular

–Pupilómetros

–Psicogalvanómetros

–Analizadores del tono de voz

–Aparatos que miden la latencia de respuesta

Observación de Inventario

•El investigador reúne datos al examinar registros físicos o realizar análisis de existencias.

•El investigador reúne personalmente los datos.

•Los datos se basan en conteos, generalmente de objetos físicos.

Observación de Contenido

•La descripción objetiva, sistemática y cuantitativa del contenido manifiesto de un mensaje.

•Las unidades de análisis pueden ser palabras, personajes (individuos u objetos), temas
(proposiciones) , medidas de espacio y tiempo (longitud o duración del mensaje) o materias
(tema del mensaje).

•Se desarrollan categorías analíticas para clasificar las unidades; el mensaje se desglosa de
acuerdo con reglas establecidas.
37

CAPITULO 4

4. ESTUDIO TÉCNICO

4.1. Estudio técnico del proyecto

● –El objetivo del estudio técnico que se hace dentro de la viabilidad económica de un
proyecto es netamente financiero; es decir, se calculan los costos, inversiones y
beneficios derivados de los aspectos técnicos o de la ingeniería del proyecto.

● ––El resultado de este estudio puede tener mayor incidencia que cualquier otro en la
magnitud de los valores que se incluirán para la evaluación; por lo tanto, cualquier error
que se cometa podrá tener grandes consecuencias sobre la medición de la viabilidad
económica.

● –La conveniencia de separar la información se explica porque la gran diversidad de


activos que se podría requerir hace que muchas veces se omitan algunos que
individualmente pueden no ser significativos, pero que sumados sí lo son.

● ––Un criterio es diferenciar entre equipos de carácter productivo, de oficina, de


atención al público y de servicios (aseo, lavandería, mantenimiento o alimentación).

4.2. Determinación del tamaño del proyecto

● –El tamaño de un proyecto muestra su relación con el número de unidades a producir,


el número de consultas médicas que atender, la cantidad de empresas a las que prestar
servicios contables o el número de cursos a dictar en un periodo de tiempo.
38

● –El estudio del tamaño de un proyecto es fundamental para determinar el monto de las
inversiones y el nivel de operación que, a su vez, permitirá cuantificar los costos de
funcionamiento y los ingresos proyectados.
● –El resultado del estudio del mercado influye directamente sobre esta decisión, ya que
ahí se determinaron los niveles ofrecidos y demandados que se esperan para el futuro,
así como la participación de mercado que podría lograr el proyecto si realiza las
acciones de marketing adecuadas.
● –Las especificaciones técnicas de los equipos que cumplen con los requerimientos para
la producción pueden presentar tres características respecto del tamaño:

1. Que la cantidad demandada total sea menor que la capacidad de


producción de la tecnología más pequeña existente en el mercado.
2. Que la cantidad demandada sea similar a la capacidad de producción de
alguna tecnología.
3. Que la cantidad demandada sea mayor que la capacidad de producción
de la tecnología disponible.

● –El tamaño de un proyecto corresponde a su capacidad instalada y se expresa en número


de unidades de producción por año. Se distinguen tres tipos de capacidad instalada:
1. Capacidad de diseño: es la máxima tasa posible de producción para un
proceso, dado el diseño actual de los productos
2. Capacidad del sistema: es la mayor tasa de producción razonable que
puede lograrse.
3. Capacidad real: es la tasa de producción lograda por el proceso.

● Para evaluar un proyecto, tanto la estimación de los costos de funcionamiento como la


de los beneficios se deben calcular con base en esta última capacidad; es decir, a la
capacidad real.
39

4.3. Definición de la localización del proyecto

● La ubicación más adecuada será la que posibilite maximizar el logro del objetivo
definido para el proyecto, como cubrir la mayor cantidad de población posible o lograr
una alta rentabilidad.

● Aunque las opciones de localización pueden ser muchas, en la práctica estas se reducen
a unas pocas, por cuanto las restricciones y exigencias propias del proyecto eliminan a
la mayoría de ellas.

● –La selección de la localización del proyecto se define en dos ámbitos:


1. –El de la macrolocalización, donde se elige la región o zona, y
2. –El de la microlocalización, que determina el lugar específico donde se instalará
el proyecto.

● –Los principales factores que influyen en la ubicación del proyecto son los siguientes:

❏ Mercado que se desea atender, como por ejemplo hoteles de cinco estrellas en
sectores de altos ingresos, nuevos centros de atención pediátrica en comunas
donde la tasa de crecimiento de la población infantil se proyecta como más alta
en el futuro, cercanía a las fuentes de abastecimiento, etcétera
❏ –Transporte y accesibilidad de los usuarios; por ejemplo, es ilógico ubicar un
centro maternal para familias de escasos recursos a 12 cuadras de distancia del
paradero más cercano al transporte colectivo.
❏ –Regulaciones legales que pueden restringir la posibilidad de instalar una
empresa en una zona de exclusividad residencial o los planos reguladores
municipales que limitan la construcción en altura.

❏ –Aspectos técnicos como las condiciones topográficas, la calidad del suelo, la


disponibilidad de agua de riego, las condiciones climáticas e, incluso, la
resistencia estructural de un edificio si se quiere instalar una maquinaria pesada
en un piso alto.
40

❏ –Aspectos ambientales como restricciones a la evacuación de residuos o a la


cantidad máxima de estacionamientos permitidos por las normas de impacto
ambiental. Podría darse el caso, por ejemplo, de que la mejor de las
localizaciones, por precio, ubicación, características del terreno o accesos, se
desestime si el costo de la evacuación de residuos fuese tan alto que optar por
un terreno más caro y aparentemente menos atractivo haga más rentable al
proyecto.

❏ ––Costo y disponibilidad de terrenos o edificaciones adecuados a las


características del proyecto.

❏ –Entorno y existencia de sistemas de apoyo.

Ejemplo

–Una empresa que procesa remolacha (betarraga) para la producción de azúcar estudia la
ampliación de su planta procesadora. Si toda la producción actual de la zona donde se ubica es
vendida a ella misma y a terceros, deberá recurrir a productores más lejanos para abastecerse
de las 370 toneladas que demandará la ampliación. El mercado proveedor identificó las
siguientes fuentes alternativas.

Figura No. 4.1.Costos,Volúmenes y distancias de las fuentes de abastecimiento

–De acuerdo con esta información, se deducen los siguientes costos por ítem, costos totales,
costos marginales y costos medios por localidad.
41

Figura No. 4.2.Costos promedio y marginal de las fuentes de abastecimiento

● –Cuando existen varias localizaciones posibles, la elección de la mejor corresponderá


a la que maximice el VAN y no a la que reduzca el costo del transporte.

● –Alternativamente es posible utilizar el método de los factores ponderados de


localización, que incorpora tanto variables cuantitativas como cualitativas.

● –Aunque podría criticarse por utilizar variables de mucha subjetividad, puede ser una
herramienta importante, dado que la rentabilidad económica calculada podría verse
alterada por los efectos de estas variables cualitativas.

● –El modelo define un valor ponderado entre los factores subjetivos y el VAN calculado
para cada localización estudiada. Los factores subjetivos, a su vez, se ponderan respecto
de cada localización y entre ellos, siempre comparando a las localizaciones en parejas.

● –La cantidad de combinaciones resulta de:


42

● –Al mejor factor se le asigna un puntaje relativo mayor y, si son iguales, se da el mismo
valor a cada uno. Los valores asignados pueden tener cualquier rango en la escala de 0
a n.

Ejemplo:

● Si en un proyecto se identifican cuatro factores subjetivos (F1, F2, F3 y F4), las seis
posibles combinaciones de comparación entre parejas son:

Nc = ( 4 (4 - 1) ) / 2 = 6

● En este caso, es fácil observar que ellas son F1-F2, F1-F3, F1-F4, F2-F3, F2-F4 y F3-
F4. El rango de valores que se usará será de 0 a 2, siendo 2 el máximo valor que puede
tener el factor que se considere mejor.

Figura No. 4.3.Importancia relativa de cada factor

● Un factor determinado puede cumplir con todos los requerimientos en una zona pero
no en otra. Por eso, el siguiente paso es asignarle a un mismo factor un puntaje relativo
asociado con cada localización, nuevamente en comparaciones de dos en dos.
43

Figura No. 4.4.Importancia relativa de cada localización por factor

–Como para cada factor individual se calculó una posición relativa porcentual, se puede
ponderar este resultado por el obtenido en la anterior y así definir una importancia relativa
ponderada entre factores y las opciones de localización:

L1 = (%F1 * %F1L1) * (%F2 * %F2L1) * (%F3 * %F3L1) * (%F4 * %F4L1)

L1 = (0,4545 * 0,5000) * (0,0909 * 0,5000) * (0,0909 * 0,1429) * (0,3636 * 0,6000) = 50,38%

L2 = (0,4545 * 0,0000) * (0,0909 * 0,3333) * (0,0909 * 0,5714) * (0,3636 * 0,4000) = 22,77%

L3 = (0,4545 * 0,5000) * (0,0909 * 0,1667) * (0,0909 * 0,2857) * (0,3636 * 0,0000) = 26,85%

● Suponiendo los siguientes VAN calculados para cada una de las tres opciones, es
posible también representarlos en términos relativos como se muestra:
44

Figura No. 4.5.Importancia relativa del VAN

De acuerdo con esto, la localización que muestra mayor rentabilidad es la opción L2; sin
embargo, los factores cualitativos asignan más importancia a la L1

–Para determinar la localización de mayor preferencia, este método requiere que, incluso antes
de realizar cualquier cálculo, se haya definido la ponderación que se dará a los factores
cualitativos dentro del total.

–En este ejemplo, se supondrá que se asigna 10% a los cualitativos y, en consecuencia, 90% al
resultado del VAN. Para ponderar estos factores, se aplica la ecuación:

Donde mpLt es la medida de preferencia de cada localización t; IrsLt, la importancia relativa


de los factores subjetivos de cada localización t; Irs, la ponderación relativa de los factores
subjetivos; IrcLt, la importancia relativa de los factores cuantitativos de cada localización t,
e Irc, la ponderación relativa de los factores cuantitativos.
45

Figura No. 4.6.Medidas de preferencia de localización

4.4. Estudio Administrativo del Proyecto.13


Se refiere a la actividad ejecutiva de su administración: organización, procedimientos
administrativos, aspectos legales y reglamentos ambientales

Elementos que integran el estudio administrativo:

a)Antecedentes. Se presenta una breve reseña de los orígenes de la empresa y un esquema


tentativo de la organización que se considera necesaria para el adecuado funcionamiento
administrativo del proyecto .Se plasman los objetivos de la empresa, así como sus principales
accionistas.

b)Organización de la empresa. Se debe de presentar un organigrama de la institución, donde


se muestre su estructura, dirección y control de funciones para el correcto funcionamiento de
la entidad.

13

https://www.uaeh.edu.mx/docencia/P_Presentaciones/tepeji/administracion/documentos/tema
/Proyectos_de_Inversion.pdf
46

Los puestos creados deberán de contar con sus respectivos perfiles y análisis de puestos, para
así evitar confusiones en las tareas asignadas a cada individuo, así como detallar la
responsabilidad de cada uno de los puestos.

c) Aspecto legal. Se tienen que investigar todas las leyes que tengan injerencia directa o
indirecta en la diaria operación de la empresa, ya sea la Ley del Trabajo. La Ley del Impuesto
Sobre La Renta y demás leyes que pudieran afectar su operación.

d)Aspecto ecológico. Reglamentos en cuanto a la prevención y control de la contaminación


del agua, del aire y en materia de impacto ambiental.

e)Marco legal. Dentro de cualquier actividad en la que se quiera participar existen ciertas
normas que se deben de seguir para poder operar, las que son obligatorias y equitativas

4.5. Estudio de impactos14

La evaluación de impacto es un tipo particular de evaluación. A continuación se citan algunas


definiciones:

● Término que indica si el proyecto tuvo un efecto en su entorno en términos de factores


económicos, técnicos, socio-culturales, institucionales y medioambientales. (OCDE,
1992)

● Es un tipo de evaluación sumativa, que se realiza al final de una intervención para


determinar en qué medida se produjeron los resultados previstos. (CEPAL-ILPES,
2005)

14
http://guia.oitcinterfor.org/conceptualizacion/que-se-entiende-evaluacion-impacto
47

● Trata de determinar si hubo cambios, la magnitud que tuvieron, a qué segmentos de la


población objetivo afectaron, en qué medida y qué contribución realizaron los distintos
componentes del proyecto al logro de sus objetivos. (Cohen y Franco, 2002)

● Medición de los cambios en el bienestar de los individuos, que pueden ser atribuidos a
un programa o una política específica. (Banco Mundial, 2003)

Al abordar la evaluación de impacto es necesario destacar:

● La relación de causalidad: se trata de conocer los cambios que se producen tras un


programa o política específica -a nivel social, de la empresa o en los participantes de
las mismas- e identificar en qué medida estos cambios (efecto) son atribuibles al
programa (causa).

● La variedad de impactos que puede tener una intervención: -económicos, técnicos,


socio-culturales pueden ser previstos (definidos en los objetivos de la actuación a
evaluar) o no previstos.

● Los distintos impactos en las personas, las empresas y en la sociedad.


La evaluación de impacto se basa en el contraste entre la situación de partida y lo que
ocurre una vez que la formación ha tenido lugar. Ese contraste busca revelar los
cambios que se pueden atribuir a la intervención que se evalúa.

Como se mencionó antes, la evaluación de impacto debe dar respuesta a algunas preguntas
sobre el impacto en la sociedad, las empresas y las personas. Para medir el impacto en la
sociedad se pueden formular, entre otras:

■ ¿Se ha mejorado la calidad de los programas de formación en los que se


invierten fondos públicos?
48

■ ¿Han tenido más oportunidades de acceso a la formación las poblaciones


vulnerables al desempleo, los jóvenes, las mujeres, las personas con
discapacidad, las minorías étnicas?
■ ¿Ha permitido la formación un acceso a trabajos decentes?
■ ¿Cuál es el retorno económico del presupuesto dedicado a la formación?
■ ¿Están las políticas económicas y fiscales creando un entorno propicio
para que la formación contribuya al mejoramiento de la productividad,
el crecimiento del empleo y el desarrollo?

Las empresas pueden plantearse:

■ ¿Qué mejoras de la productividad pueden atribuirse a la acción de


formación?
■ ¿Se verifican cambios positivos en las condiciones de trabajo?
■ ¿Los procesos de trabajo son más eficientes como resultado de las
nuevas competencias desarrolladas?
■ ¿Disminuyeron los accidentes de trabajo?
■ ¿El clima laboral ha mejorado como efecto de la acción formativa?
■ ¿La proporción de productos finales rechazados ha disminuido?
■ ¿Cuánto retorna por cada unidad invertida en aprendizaje?

Las personas se pueden preguntar:

■ ¿Ha sido útil la formación para encontrar un empleo?


■ ¿Se han desarrollado competencias que se demandan en el empleo?
■ ¿Han mejorado los ingresos como resultado de las nuevas competencias
adquiridas?
■ ¿Se tiene mejor empleabilidad?
■ ¿Han mejorado las condiciones de trabajo?
■ ¿Qué cambios en el bienestar se han producido?

Los organismos que ejecutan programas de formación deben tener en cuenta todas estas
preguntas desde el diseño de sus programas, en su ejecución y en la evaluación de impacto.
49

4.6. Identificación de medidas de mitigación15

● La incorporación de medidas de mitigación en proyectos de inversión, consume


recursos financieros y técnicos. Por tal motivo, las evaluaciones de riesgo deben estimar
el daño que el proyecto pueda sufrir durante su vida útil e incluir un método para estimar
los costos y los beneficios de la mitigación. Contando con esta información, el
planificador puede comparar los costos de mitigación con el valor de las posibles
pérdidas en caso de que no se consideren los riesgos.

● La preparación de proyectos de inversión consta de seis etapas: la idea de proyecto,


perfil, análisis de prefactibilidad, análisis de factibilidad, diseño técnico y ejecución.
Algunas instituciones requieren la inclusión de la consideración de las amenazas
naturales en las últimas etapas de la preparación del proyecto, generalmente en la fase
de diseño técnico. Si bien esto es preferible a que directamente no se los considere, debe
remarcarse que cuanto antes se consideran los riesgos, más fácil es su tratamiento en el
proyecto.

CAPITULO 5

5. ESTUDIO FINANCIERO

5.1. Determinación del requerimiento de inversión

● –La mayoría de las inversiones de un proyecto se concentra en aquellas que se deben


realizar antes del inicio de la operación, aunque es importante considerar también las
que se deben realizar durante la operación del proyecto, tanto por la necesidad de
reemplazar activos como para enfrentar la ampliación proyectada del nivel de actividad.

15

http://www.oas.org/dsd/publications/unit/oea57s/ch009.htm#1.%20incorporaci%C3%B3n%2
0de%20medidas%20de%20mitigaci%C3%B3n%20de%20amenazas%20en%20proyectos
50

● –Una inversión que suele confundir es la realizada en el propio estudio de la evaluación


del proyecto. Cualquier inversión realizada en el pasado se considera un costo hundido
si no tiene opción de uso o de venta.

5.2. Elaboración de un flujo de caja16


El Flujo de Caja es un informe financiero que muestra los flujos de ingreso y egreso de efectivo
que ha obtenido una empresa.

Ejemplos de ingresos de efectivo son el cobro de facturas, cobro de préstamos, cobro de


intereses, préstamos obtenidos, cobro de alquileres, etc.

Ejemplos de egresos de efectivo son el pago de facturas, pago de impuestos, pago de sueldos,
pago de préstamos, pago de intereses, pago de servicios de agua o luz, etc.

A diferencia del Estado o la Cuenta de Resultados, el Flujo de Caja muestra lo que realmente
sale o ingresa en efectivo a “caja” como, por ejemplo, los cobros de una venta que realmente
se hicieron efectivos. En el Flujo de Caja, el término ganancia o pérdida no se utiliza.

La importancia del Flujo de Caja es que éste nos permite conocer la liquidez de la empresa, es
decir, conocer con cuánto de dinero en efectivo se cuenta, de modo que, con dicha información
podamos tomamos decisiones tales como:

● Cuánto podemos comprar de mercadería.


● Si es posible comprar al contado o es necesario o preferible solicitar crédito.
● Si es necesario o preferible cobrar al contado o es posible otorgar créditos.
● Si es posible pagar deudas a su fecha de vencimiento o es necesario pedir un
refinanciamiento o un nuevo financiamiento.
● Si tenemos un excedente de dinero suficiente como para poder invertirlo, por ejemplo,
al adquirir nueva maquinaria.
● Si es necesario aumentar el disponible, por ejemplo, para una eventual oportunidad de
inversión.

16

https://www.google.com/search?q=+Elaboraci%C3%B3n+de+un+flujo+de+caja.&ie=ut
f-8&oe=utf-8&client=firefox-b-ab&gfe_rd=cr&ei=wGorWYj1DcrI8AfRh42ABw#
51

Ejemplo

Una empresa manufacturera cuenta con los siguientes datos:

● proyecciones de ventas: enero: 85000, febrero: 88000, marzo: 90000, abril: 92000.
● proyecciones de la compra de insumos: enero: 47000, febrero: 51000, marzo: 50000,
abril: 52000.
● las ventas son 40% al contado, y 60% a 30 días.
● las compras se realizan al contado.
● se obtiene un préstamo del banco por 40000, el cual se debe pagar en cuotas de 5000
mensuales.
● los gastos de administración y ventas son el 20% de las proyecciones de ventas.
● proyecciones del pago de impuestos: enero: 3080, febrero: 2710, marzo: 3260, abril:
2870.
En primer lugar elaboramos nuestro presupuesto de cuentas por cobrar (esto debido a que el
total de las ventas no se cobran el mismo mes en que se realizan, sino que se cobran un 40% el
mes en que se realizan, y el 60% al siguiente mes, y al elaborar un Flujo de Caja, como ya
hemos mencionado, debemos registrar el efectivo que realmente ingresa o sale de la empresa):

Presupuesto de cuentas por cobrar


enero febrero marzo abril

Ventas al contado (40%) 34000 35200 36000 36800

Ventas al crédito a 30 51000 52800 54000


días(60%)

TOTAL VENTAS 34000 86200 88800 90800

Flujo de Caja Proyectado (Presupuesto de efectivo)


enero febrero marzo abril

INGRESO DE EFECTIVO

Cuentas por cobrar 34000 86200 88800 90800


52

Préstamos 40000

TOTAL INGRESO EN 74000 86200 88800 90800


EFECTIVO

EGRESO DE EFECTIVO

Cuentas por pagar 47000 51000 50000 52000

Gastos de adm. y de ventas 17000 17600 18000 18400

Pago de impuestos 3080 2710 3260 2870

TOTAL EGRESO EN 67080 71310 71260 73270


EFECTIVO

FLUJO NETO 6920 14890 17540 17530


ECONÓMICO

Servicio de la deuda 5000 5000 5000 5000

FLUJO NETO 1920 9890 12540 12530


FINANCIERO

5.3. Cálculo del TIR y VAN.

VAN

El Valor Actual Neto (VAN) es la ganancia neta del proyecto, es decir, una contribución neta
al valor de la empresa, que se da siempre y cuando los ingresos descontados son superiores a
la erogación de efectivo inicial.

––Es el flujo de tesorería descontado a una tasa apropiada (costo de oportunidad), más
cualquier flujo de efectivo inmediato, en el caso de una inversión en activos es negativo.
53

–La fórmula del Cálculo es:

Dónde:

–VAN es el Valor Actual Neto;

–Co es el total de inversión;

–Ci es el saldo del flujo neto de caja en el año i, donde i=1,2,3, … , n;

–i es el año del flujo neto en caja;

–r es el costo de oportunidad (interés);

–n el tiempo total de vida útil económica.

–Criterio de decisión

–VAN > 0, se debe aceptar, ya que los flujos de efectivos descontados son superiores al costo
inicial de la inversión, hay ganancia.

–VAN < 0, se debe rechazar ya que los flujos de efectivos descontados son inferiores al costo
inicial de la inversión, existe pérdida.

–VAN = 0, es indiferente, ya que los flujos de efectivos descontados son iguales al costo inicial
de la inversión.

–Si los proyectos evaluados (dos o más), son mutuamente excluyentes se acepta el de mayor
VAN positivo, si todos tienen VAN negativo se rechazan–;si los proyectos son independientes
se pueden aceptar todos los que tengan VAN positivo.

Cálculo del VAN


54

Inversión Inicial $20.848,00

Figura No. 5.1. Ejemplo de cálculo del VAN

–Alarcón (2014) coincide con Brealey y Myers (1993) en que el VAN es el criterio más fuerte
para la toma de decisiones de inversión, ya que es un método que emplea el concepto del valor
del dinero en el tiempo (técnicas de flujos de efectivo descontado), es decir, actualiza los flujos
de efectivo esperados, tiene en cuenta el costo de oportunidad de capital y todos los flujos de
efectivos del proyecto, tanto la erogación inicial como los ingresos futuros.

TIR

–La Tasa Interna de Rentabilidad (TIR) o tasa de retorno es un criterio que se usa para evaluar
las propuestas de inversión mediante la aplicación de la tasa de rendimiento sobre un activo, la
cual se calcula encontrando la tasa de descuento que iguala el valor actual de los flujos futuros
55

de entrada de efectivo al costo de la inversión, o lo que es lo mismo, aquella tasa que hace cero
la ecuación del VAN.

–Por lo que la tasa (TIR) es interna de la empresa (para ese proyecto), diferente al costo de
oportunidad, que es del mercado (r).

–La fórmula del Cálculo es:

Donde:

–VAN es el Valor Actual Neto;

–Co es el total de inversión;

–Ci es el saldo del flujo neto de caja en el año i, donde i=1,2,3, … , n;

–i es el año del flujo neto en caja;

–n el tiempo total de vida útil económica.

–Criterio de decisión:

–TIR > r, se debe aceptar ya que el rendimiento interno del proyecto es superior al rendimiento
de los proyectos de riesgo similar que se encuentran en el mercado.

–TIR < r, se debe rechazar ya que el rendimiento interno del proyecto es superior al
rendimiento de los proyectos de riesgo similar que se encuentran en el mercado.

–TIR = r, es indiferente, ya que al ser las dos tasas iguales la ganancia se hace cero.
56

––Donde r es el Costo de oportunidad mencionado en el VAN.

Cálculo del TIR

Inversión Inicial $20.848,00

Figura No. 5.2. Ejemplo de cálculo del TIR

5.4. Determinación de las fuentes de financiamiento. (Estrategia


Financiera) 17

Es importante mencionar que las fuentes de financiamiento están definidas desde el punto de
vista de la empresa. Así tenemos que las fuentes de financiamiento se clasifican según su
procedencia en:

1. Fuentes internas

17

http://www.fcca.umich.mx/descargas/apuntes/academia%20de%20finanzas/finanzas%20ii%2
0mauricio%20a.%20chagolla%20farias/administracion%20financiera%20capitulo%206.pdf
57

2. Fuentes externas

Fuentes internas

Las fuentes internas de financiamiento. Son fuentes generadas dentro de la misma empresa,
como resultado de sus operaciones y promoción, dentro de las cuales están:

Fuentes Externas

Por otro lado existen fuentes externas de financiamiento, y son aquellas otorgadas

por terceras personas tales como:

En términos financieros al uso de las fuentes externas de financiamiento se le denomina


"Apalancamiento Financiero". A mayor apalancamiento, mayor deuda, por el contrario, un
menor apalancamiento, implicaría menos responsabilidad crediticia.
58

UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Aplicaciones Distribuidas

Elaborado por:
Mg. Vanessa Jurado

Revisado por:
Mg. Miguel Quiroz

[30/Septiembre/2016] – versión 1.0


Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
Aplicaciones Distribuidas 3
Capítulo I: ARQUITECTURA DE APLICACIONES DISTRIBUIDAS ............................... 3
INTRODUCCIÓN ....................................................................................................... 3
¿Qué es una arquitectura? ......................................................................................... 3
¿Qué es una aplicación distribuida? ........................................................................... 3
¿A qué se refiere la distribución? ............................................................................... 3
¿Qué es una arquitectura en ambiente distribuido? ................................................... 3
CAPA DE INTERFAZ DE USUARIO .......................................................................... 4
CAPA DE INTERFAZ DE USUARIO ........................... ¡Error! Marcador no definido.
CAPA DE MANEJO DE DATOS (NEGOCIO) ............................................................. 5
CAPA DE PROCESAMIENTO DE DATOS ................................................................ 5
Servicios..................................................................................................................... 5
Servicios de base de datos......................................................................................... 5
INTEGRACIÓN DE SISTEMAS HEREDADOS .......................................................... 6
DISTRIBUCIÓN DE ELEMENTOS DE UNA APLICACIÓN ........................................ 7
Capítulo II: Java Enterprise Edition .............................................................................. 10
Definición ................................................................................................................. 10
Características ......................................................................................................... 10
Arquitectura - Capas................................................................................................. 11
Componentes de la arquitectura Java EE................................................................. 11
Clasificación de Frameworks: ................................................................................... 13
Enterprise JavaBeans (EJB)..................................................................................... 14
Java Persistence API (JPA)...................................................................................... 16
JavaServer Faces (JSF) ........................................................................................... 16
Java Servlet ............................................................................................................. 17
JavaServer Pages (JSP) .......................................................................................... 18
Java Naming and Directory Interface (JNDI) ............................................................ 19
Java Remote Method Invocation .............................................................................. 20
Capítulo III: Integración de Aplicaciones ...................................................................... 22
APLICACIONES DE ESCRITORIO .......................................................................... 22
APLICACIONES CON SOCKETS ............................................................................ 23
RMI .......................................................................................................................... 27
Capítulo IV: Web Services ........................................................................................... 29

2
Aplicaciones Distribuidas
[Talleres de preparación para examen complexivo]

Capítulo I: ARQUITECTURA DE APLICACIONES DISTRIBUIDAS

INTRODUCCIÓN

El avance en las tecnologías de redes comenzó a dibujar un horizonte en el que las aplicaciones
se comunicarían entre sí y en el que los procesos de una aplicación se distribuirían entre
diferentes equipos, cada uno con características que les permitirán aumentar la eficacia y la
disponibilidad de la aplicación. Se comenzó a separar la lógica de las aplicaciones para situarla
en el nivel más conveniente y conceptos como “cliente” y “servidor” fueron cobrando cada vez
más sentido.

¿Qué es una arquitectura?

Es un nivel de diseño que hace foco en aspectos más allá de los algoritmos y estructuras de
datos de la computación, el diseño y especificaciones de la estructura global del sistema es un
nuevo tipo de problema, la forma que se considera para formar algo.

¿Qué es una aplicación distribuida?

Es una aplicación con distintos componentes que se ejecutan separados, normalmente en


diferentes plataformas conectadas.

¿A qué se refiere la distribución?

La distribución se refiere a la construcción de software por partes, a las cuales le son asignadas
un conjunto específico de responsabilidades dentro de un sistema.
Esta distribución habla de que las partes o componentes se encuentran en entornos separados,
sin embargo, para realizar esta separación física primero debe tenerse clara la separación lógica
de las partes de una aplicación.

¿Qué es una arquitectura en ambiente distribuido?

Describe la estructura y la organización de los componentes del software, sus propiedades y la


conexión entre ellos para formar el sistema; la cantidad y la granularidad de comunicación que
se necesita para la interacción y los protocolos de interfaz usada por la comunicación.
En una aplicación distribuida en n-capas los diferentes elementos que integran la aplicación se
agrupan de forma lógica según la funcionalidad que reciben o suministran al o desde el resto
de los elementos. Así, algunos elementos se limitarán a recibir peticiones de datos mientras que
otros interactuarán con el usuario y su función será principalmente la de solicitar a otros
elementos la información que el usuario está pidiendo.

3
CAPA DE INTERFAZ DE USUARIO

La capa de presentación o interfaz de usuario se refiere al mecanismo de interacción del usuario


con el sistema.

Es la que ve el usuario (también se la denomina "capa de usuario"), presenta el sistema al


usuario, le comunica la información y captura la información del usuario en un mínimo de
proceso (realiza un filtrado previo para comprobar que no hay errores de formato).

También es conocida como interfaz gráfica y debe tener la característica de ser "amigable"
(entendible y fácil de usar) para el usuario. Esta capa se comunica únicamente con la capa de
negocio.

Está formada por los formularios y los controles que se encuentran en los formularios, capa
con la que interactúan el usuario y es responsable de obtener datos de la capa siguiente,
mostrarlos, validar entradas de datos, enviarlas a la siguiente capa donde pueden dividirse en:
presentación, código de interfaz de usuario.

La capa de presentación o interface de usuario la constituye el software con el que el usuario


interactúa para operar con la aplicación. Es probablemente la parte más trabajosa de la misma,
ya que es muy frecuente que aplicaciones cuyas reglas de negocio sean relativamente sencillas
tengan en cambio un interfaz de usuario complejo y vistoso que le proporcione al usuario una
experiencia de manejo fácil y agradable

En la creación de reglas de negocio normalmente sólo interviene un tipo de programación,


preferentemente basada en lenguajes, en la preparación del interfaz de usuario suelen mezclarse
varias disciplinas, como el diseño o la usabilidad

Un error frecuente en la creación de los interfaces de usuario consiste en olvidar que las reglas
de negocio no se hallan en el interfaz, sino en los objetos subyacentes que residen en las capas
inferiores de la solución. La capa de presentación no es más que un sistema de presentación y
manejo de datos que se obtienen y se actualizan con los objetos de negocio comunes para todas
las aplicaciones que los usan.

Una regla de oro a observar en toda aplicación distribuida es que la capa de presentación ha de
ser completamente independiente de las reglas de negocio, y su función se limitará a la
presentación y manejo de los datos de la aplicación, que obtendrá mediante el uso de los objetos
de la capa de negocios

Esto convierte a la capa de presentación en una mera fachada de los procesos que son
gestionados por la capa de negocios. Las capas de presentación suelen ser “delgadas”, es decir,
contienen pocas líneas de código, ya que su función principal está cubierta por las
características de los elementos “visuales” que las componen. Una tendencia creciente es la
separación entre diseño y código, ya existente, por ejemplo, en las aplicaciones web dinámicas.

4
CAPA DE MANEJO DE DATOS (NEGOCIO)

Es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se
envían las respuestas tras el proceso.

Es aquí donde se establecen todas las reglas del negocio que deben cumplirse.

Por lo general la capa de negocios suele dividirse en dos tipos de elementos, atendiendo a la
función que desempeñan en la capa.

Lógica de negocios: Los elementos de la lógica de negocios ya no se conectan a los orígenes


de datos ni representan a las entidades de datos subyacentes, sino que utilizan los objetos de
acceso a datos y las entidades de negocio, siendo pues una especie de “cliente” de la lógica de
acceso a datos.

Lógica de acceso a datos: La lógica de acceso a datos incluye los elementos necesarios para
que la aplicación se conecte a orígenes de datos y recupere estructuras de datos que serán
utilizadas por el resto de la aplicación

Encapsular la lógica de acceso a datos permite que la aplicación sea agnóstica respecto al origen
de datos, es decir, puede realizar sus tareas sin tener la necesidad de saber en qué SGBD
concreto residen los datos, ni en qué punto de la red se halla el servidor, lo que facilita la
configuración del sistema.

CAPA DE PROCESAMIENTO DE DATOS

Es donde residen los datos y es la encargada de acceder a los mismos. Está formada por uno o
más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben
solicitudes de almacenamiento o recuperación de información desde la capa de negocio

Servicios

Los servicios son procesos que se ejecutan en los equipos servidores y que se mantienen a la
escucha esperando que los procesos cliente les soliciten funcionalidad o datos. Por lo general
los servicios residen en equipos dedicados cuya configuración y características físicas están
especialmente diseñadas para realizar esta función.

Servicios de base de datos

Los servicios de base de datos son los más frecuentes en las aplicaciones distribuidas.

Una de las características más importantes de los SGBD es que nos permiten crear reglas de
negocio. Estas reglas pueden invocarse remotamente desde los clientes y se escriben en
lenguajes propios del SGBD (Transact-SQL en el caso de SQL Server, por ejemplo).

Componentes de datos
5
INTEGRACIÓN DE SISTEMAS HEREDADOS

Un sistema heredado (o sistema legacy) es un sistema informático(equipos informáticos o


aplicaciones) que ha quedado anticuado pero continúa siendo utilizado por el usuario
(típicamente una organización o empresa) y no se quiere o no se puede reemplazar o actualizar
de forma sencilla.

Los sistemas heredados no son sólo sistemas de software de aplicación. Son sistemas socio-
técnicos, por lo que incluyen procesos de negocio, software de aplicación, software de apoyo
y sistema hardware.

Riesgos de la migración de un sistema heredado

Los sistemas heredados son considerados potencialmente problemáticos por numerosos


ingenieros de software por diversos motivos. Dichos sistemas a menudo operan en ordenadores
obsoletos y lentos, cuyo mantenimiento tiene elevados costes y son difíciles de actualizar por
falta de componentes adecuados o de mantenimiento.

Costes de mantenimiento de un sistema heredado

Seguir utilizando los sistemas heredados evita los mencionados riesgos del reemplazo, pero
hacer cambios al sistema existente en vez de cambiarlo por uno más moderno puede ser más
costoso puesto que éste es cada vez más viejo

Alternativas

Los negocios que tienen sistemas informáticos anticuados se enfrentan a un dilema


fundamental. Si continúan utilizando los sistemas heredados y realizan los cambios requeridos,
sus costos se incrementarán de forma inevitable. Si deciden reemplazar sus sistemas heredados
con nuevos sistemas, esto tendrá un coste y puede ocurrir que los nuevos sistemas no provean
apoyo efectivo al negocio como lo hacen los sistemas heredados.
6
¿Qué es la integración de sistemas heredados?

La integración de sistemas heredados puede definirse como la reutilización de sistemas y


aplicaciones heredadas existentes, que se logra mediante la integración con aplicaciones
corporativas desarrolladas recientemente.

La integración de sistemas heredados permite que las organizaciones aprovechen estas ventajas
(Seguridad, Escalabilidad, Ahorros en costos) y las integren con tecnologías actuales.

DISTRIBUCIÓN DE ELEMENTOS DE UNA APLICACIÓN

Se refiere a la construcción de software por partes, a las cuales les son asignadas un conjunto
específico de responsabilidades dentro de un sistema.

Una aplicación distribuida es una aplicación con distintos componentes que se ejecutan en
entornos separados, normalmente en diferentes plataformas conectadas a través de una red.

Hay componentes de diferentes tipos: Ejecutables páginas web, librerías, controles,


Procedimientos almacenados servicios web…Ejemplo: Paquetería de office, Corel,
Reproductor Windows etc.

INTEGRACIÓN DE TECNOLOGÍAS HETEROGÉNEAS Y HOMOGÉNEAS.


Existen diferentes motivos para la heterogeneidad y homogeneidad. Una razón son los cambios
tecnológicos que siempre se dan en un periodo de tiempo corto. En este contexto, dichos
cambios se refieren a mejor calidad, mejor desempeño, costos más económicos, seguridad,
entre otras características que se toman en cuenta.

HOMOGENEO
En los sistemas homogéneos, todos los sitios emplean idéntico software de gestión de base de
datos, son conscientes de la existencia de los demás sitios y acuerdan cooperar en el
procesamiento de las solicitudes de los usuarios.

Un sistema distribuido homogéneo tiene múltiples conexiones de datos; integra múltiples


recursos de datos. Los sistemas homogéneos se parecen a un sistema
centralizado, pero en lugar de almacenar todos los datos en un solo lugar los datos se
distribuyen en varios sitios comunicados.

HETEROGENEO
Las tecnologías Heterogéneas son aquellas donde Sitios diferentes utilizan diferentes DBMS,
siendo cada uno esencialmente autónomo. Es posible que algunos sitios no sean conscientes de
la existencia de los demás y quizás proporcionen facilidades limitadas para la cooperación en
el procesamiento de transacciones. La heterogeneidad se debe a que los datos de cada BD son
de diferentes tipos o formatos. El enfoque heterogéneo es más complejo que el enfoque
homogéneo.

SERVICIOS DE LA ARQUITECTURA
7
SERVICIO WEB

Es un conjunto de protocolos y estándares que sirven para intercambiar datos entre


aplicaciones.
Distintas aplicaciones de software desarrolladas en lenguajes de programación diferente y
ejecutada sobre cualquier plataforma pueden utilizar los servicios web para intercambiar datos
en redes de ordenadores como internet.

Protocolos utilizados:

* XML: Es el formato estándar para los datos que se vayan a intercambiar.


* SOAP o XML-RPC: Protocolos sobre los que se establece el intercambio.
* HTTP, FTP, o SMTP: los datos en XML también pueden enviarse de una aplicación a otra
mediante protocolos normales ya bien conocidos.
* WSDL: Es el lenguaje de la interfaz pública para los servicios Web.
* UDDI: Protocolo para publicar la información de los servicios Web.
* WS-Security: Protocolo de seguridad aceptado como estándar por OASIS.

SERVICIO EMAIL

Aplicaciones para envío y recepción de emails

BASE DE DATOS

Conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente


para su posterior uso. Un servidor de base de datos es un programa que provee servicios de
base de datos a otros programas u otras computadoras, como es definido por el modelo cliente-
servidor. También puede hacer referencia a aquellas computadoras (servidores) dedicadas a
ejecutar esos programas, prestando el servicio.

APLICACIONES

Programa informáticos que permiten a un usuario utilizar una computadora con un fin
especifico. Son parte del software de una computadora y suelen ejecutarse sobre el sistema
operativo.

TRANSACCIONES

Una transacción es una interacción con una estructura de datos compleja compuesta por
varios procesos que se han de aplicar uno después del otro.

FIREWALL

8
Es una parte de un sistema o una red que esta diseñada para bloquear el acceso no autorizado
permitiendo al mismo tiempo comunicaciones autorizadas cortafuegos, mecanismo de
seguridad en internet frente a acceso no autorizados.

9
Capítulo II: Java Enterprise Edition

Definición

Java EE (Java Enterprise Edition): Plataforma Java para el desarrollo de aplicaciones


empresariales, Java EE se desarrolla utilizando la Java Community Process , con las
aportaciones de expertos de la industria, organizaciones comerciales y de código abierto, Java
User Group, y un sinnúmero de personas. Es un conjunto de especificaciones de APIs Java,
describe el conjunto de paquetes, interfaces y clases Java que debe de ofrecer un framework
Java EE.

Java EE se asienta sobre Java SE (Java Standard Edition); Java SE provee la infraestructura
de ejecución (Java Virtual Machine + APIs básicas) y de compilación (javac, rmic,...)

La versión actual es Java EE 6.0, a partir de Java EE 5.0 cambios importantes respecto a
versiones previas, su objetivo es la simplificación del modelo de desarrollo.

Ofrece un framework para el desarrollo de aplicaciones distribuidas multicapa (3tier, n-tier)


basadas en Web.

Características
● Define una infraestructura común básica para el acceso a bases de datos, gestión de la
persistencia, control de seguridad, gestión de transacciones

● Separación clara entre presentación (interfaz), modelo (lógica) de negocio y datos

● Plataforma basada en componentes

● Entes (objetos) intercambiables que residen en un servidor de aplicaciones y son


gestionados por él

10
Arquitectura - Capas

● La capa del cliente (Client-tier) que es la capa destinada a mostrar la interfaz gráfica
de usuario. Las aplicaciones Java EE pueden ser una aplicación Java Swing normal, o
una aplicación Web renderizada en un navegador. Esta capa se ejecuta en el ordenador
cliente.

● La capa de la lógica de negocio (Business-tier) y la capa de la lógica de presentación


(Web-tier). Estas capas se ejecutan en el servidor de aplicaciones.

● La capa de los datos (Data-tier) que es la capa destinada a la gestión de los datos.
Esta capa puede separarse a su vez en una o más capas.

Componentes de la arquitectura Java EE

Tipos de componentes - Clientes de la aplicación

● Clientes web [navegador]

● Clientes de escritorio Java [swing, awt]

● Clientes de escritorio no Java

Componentes Web: servelts, páginas JSP (Java Server Pages), JSF (Java Server Faces). Se
ejecutan en el contenedor Web, son responsables de componer la presentación de datos en
formato HTML y suelen apoyarse en el uso de componentes Java Beans

11
Componentes de negocio: EBJ (Enterprise Java Beans) y entidades JPA (Java Persistence
API).

Se ejecutan en el contenedor de EBJs , componentes (objetos Java), son responsables de


implementar la lógica de la aplicación.

EBJ gestionan interacciones con los clientes e implementan reglas de negocio

Entidades Java: objetos persistentes que representan los datos de la capa EIS

Capa EIS (Enterprise Information Systems)

● Capa de datos gestiona la información permanente del sistema ● Bases de datos o


aplicaciones empresariales ”heredadas” (legacy systems) que actúan como almacenes de datos

Nota: se entiende por componente un objeto Java con restricciones especiales que se ensambla
y ejecuta dentro de un servidor de aplicaciones Java EE (contenedor)

Contenedores Java EE

Ofrecen servicios a los componentes, actuando como interfaz entre un componente y los
aspectos de bajo nivel de cada plataforma, simplifican el desarrollo de los componentes
ocultando los detalles complejos y sus tareas concretas dependen de la capa a la que
pertenezcan. Adicionalmente brinda, seguridad, gestión de transacciones, consulta de
directorios de nombres (JNDI), etc.

12
Tipos de contenedores en la plataforma Java EE

● Servidor de Aplicaciones Java EE: entorno de ejecución de aplicaciones JEE,


proporciona el contenedor Web y/o el contenedor de EBJs

● Contenedor EBJ (Enterprise Java Beans): gestiona la ejecución (ciclo de vida) de


los EJBs, da soporte a los componentes que implementan la capa de lógica de negocio,
ofrece servicios de control de acceso y seguridad, control de transacciones y ejecución
concurrente, etc...

● Contenedor Web: gestiona la ejecución de los servlets y páginas JSP, da soporte a


los componentes que implementan la capa Web, API de Servlets, APIs JSP, JSTL,
Framework JSF, JavaBeans, ejemplos libres: Tomcat,

Jetty, ...

● Contenedor aplicación cliente: ofrece la infraestructura necesaria para la ejecución


del cliente.

Clasificación de Frameworks:

De aplicación:

• Persistencia o Hibernate o Toplink

• Web service o Axis o CXF

• Aspectos o AspectJ

• Plantilla o Tiles o FreeMarker o Velocity

Arquitectónicos:

• Spring

• Oracle ADF

• Jboss Seam

Tecnologías de la plataforma Java EE

• Enterprise JavaBeans (EJB).

• Java Servlet

• JavaServer Page (JSP)

• JavaServer Pages Standard Tag Library (JSTL).

13
• JavaServer Faces (JSF) ● Java Message Service (JMS).

• Java Transaction API (JTA).

• JavaMail API y JavaBeans Activation Framework (JAF).

• Tecnologías XML (JAXP, JAX-RPC, JAX-WS, JAXB, SAAJ, JAXR)

• JPA, JDBC API

• Java Naming and Directory Interface (JNDI)

• Java Authentication and Authorization Service (JAAS)

Enterprise JavaBeans (EJB)

Las Enterprise JavaBeans (también conocidas por sus siglas EJB) son una de las interfaces
de programación de aplicaciones (API) que forman parte del estándar de construcción de
aplicaciones empresariales J2EE (ahora JEE) de Oracle Corporation (inicialmente
desarrollado por Sun Microsystems).

Su especificación detalla cómo los servidores de aplicaciones proveen objetos desde el lado
del servidor, que son precisamente los EJB:

• Comunicación remota utilizando CORBA.

• Transacciones.

• Control de la concurrencia.

• Eventos utilizando JMS (Java Messaging Service).

• Servicios de nombres y de directorio.

• Seguridad.

• Ubicación de componentes en un servidor de aplicaciones.

La especificación de EJB define los papeles jugados por el contenedor de EJB y los EJB,
además de disponer los EJB en un contenedor.

Los EJB proporcionan un modelo de componentes distribuido estándar del lado del servidor.
El objetivo de los EJB es dotar al programador de un modelo que le permita abstraerse de los
problemas generales de una aplicación empresarial (concurrencia, transacciones, persistencia,
seguridad, etc.) para centrarse en el desarrollo de la lógica de negocio en sí. El hecho de estar
basado en componentes permite que éstos sean flexibles y sobre todo reutilizables.

14
No hay que confundir los Enterprise JavaBeans con los JavaBeans. Los JavaBeans también
son un modelo de componentes creado por Oracle - Sun Microsystems para la construcción
de aplicaciones, pero no pueden utilizarse en entornos de objetos distribuidos al no soportar
nativamente la invocación remota (RMI).

Existen tres tipos de EJB:

1. EJB de Entidad (Entity EJB): su objetivo es encapsular los objetos del lado del
servidor que almacena los datos. Los EJB de entidad presentan la característica
fundamental de la persistencia: (nota: en la documentación de Java para JEE 5.0, los
entity beans desaparecen, porque son remplazados por Java Persistence API o JPA)

○ Persistencia gestionada por el contenedor (CMP): el contenedor se encarga


de almacenar y recuperar los datos del objeto de entidad mediante el mapeo o
vinculación de las columnas de una tabla de la base de datos con los atributos
del objeto.

○ Persistencia gestionada por el bean (BMP): el propio objeto entidad se


encarga, mediante una base de datos u otro mecanismo, de almacenar y
recuperar los datos a los que se refiere, por lo cual la responsabilidad de
implementar los mecanismos de persistencia es del programador.

2. EJB de Sesión (Session EJB): gestionan el flujo de la información en el servidor.


Generalmente sirven a los clientes como una fachada de los servicios proporcionados
por otros componentes disponibles en el servidor. Puede haber dos tipos:

○ Con estado (stateful): en un bean de sesión con estado, las variables de


instancia del bean almacenan datos específicos obtenidos durante la conexión
con el cliente. Cada bean de sesión con estado, por tanto, almacena el estado
conversacional de un cliente que interactúa con el bean. Este estado
conversacional se modifica conforme el cliente va realizando llamadas a los
métodos de negocio del bean. El estado conversacional no se guarda cuando el
cliente termina la sesión.

○ Sin estado (stateless): los beans de sesión sin estado son objetos distribuidos
que carecen de estado asociado permitiendo por tanto que se los acceda
concurrentemente. No se garantiza que los contenidos de las variables de
instancia se conserven entre llamadas al método.

3. EJB Dirigidos por Mensajes (Message-driven EJB): son los únicos beans con
funcionamiento asíncrono. Usando el Java Messaging System (JMS), se suscriben a
un tema (topic) o a una cola (queue) y se activan al recibir un mensaje dirigido a dicho
tema o cola. No requieren de su instanciación por parte del cliente.

15
Java Persistence API (JPA)

Java Persistence API, más conocida por sus siglas JPA, es la API de persistencia desarrollada
para la plataforma Java EE

Es un framework del lenguaje de programación Java que maneja datos relacionales en


aplicaciones usando la Plataforma Java en sus ediciones Standard (Java SE) y Enterprise (Java
EE).

Persistencia en este contexto cubre tres áreas:

• La API en sí misma, definida en el paquete javax.persistence

• El lenguaje de consulta Java Persistence Query Language (JPQL).

• Metadatos objeto/relacional.

El objetivo que persigue el diseño de esta API es no perder las ventajas de la orientación a
objetos al interactuar con una base de datos (siguiendo el patrón de mapeo objeto-relacional),
como sí pasaba con EJB2, y permitir usar objetos regulares (conocidos como POJOs).

Entidades (Entities)

Una entidad de persistencia (entity) es una clase de Java ligera, cuyo estado es persistido de
manera asociada a una tabla en una base de datos relacional. Las instancias de estas entidades
corresponden a un registro (conjunto de datos representados en una fila) en la tabla.
Normalmente las entidades están relacionadas a otras entidades, y estas relaciones son
expresadas a través de meta datos objeto/relacional. Los meta datos del objeto/relacional
pueden ser especificados directamente en el fichero de la clase, usando las anotaciones de
Java (annotations), o en un documento descriptivo XML, el cual es distribuido junto con la
aplicación.

JavaServer Faces (JSF)

JavaServer Faces (JSF) es una tecnología y framework para aplicaciones Java basadas en web
que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa
JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas, pero
también se puede acomodar a otras tecnologías como XUL (acrónimo de XML-based User-
interface Language, lenguaje basado en XML para la interfaz de usuario)

JSF incluye:

• Un conjunto de APIs para representar componentes de una interfaz de usuario y


administrar su estado, manejar eventos, validar entrada, definir un esquema de
navegación de las páginas y dar soporte para internacionalización y accesibilidad.

• Un conjunto por defecto de componentes para la interfaz de usuario.


16
• Dos bibliotecas de etiquetas personalizadas para JavaServer Pages que permiten
expresar una interfaz JavaServer Faces dentro de una página JSP.

• Un modelo de eventos en el lado del servidor.

• Administración de estados.

• Beans administrados.

Estos objetivos de diseño representan el foco de desarrollo de JSF:

1. Definir un conjunto simple de clases base de Java para componentes de la interfaz


de usuario, estado de los componentes y eventos de entrada. Estas clases tratarán los
aspectos del ciclo de vida de la interfaz de usuario, controlando el estado de un
componente durante el ciclo de vida de su página.

2. Proporcionar un conjunto de componentes para la interfaz de usuario, incluyendo los


elementos estándares de HTML para representar un formulario. Estos componentes
se obtendrán de un conjunto básico de clases base que se pueden utilizar para definir
componentes nuevos.

3. Proporcionar un modelo de JavaBeans para enviar eventos desde los controles de la


interfaz de usuario del lado del cliente a la aplicación del servidor.

4. Definir APIs para la validación de entrada, incluyendo soporte para la validación en


el lado del cliente.

5. Especificar un modelo para la internacionalización y localización de la interfaz de


usuario.

6. Automatizar la generación de salidas apropiadas para el objetivo del cliente, teniendo


en cuenta todos los datos de configuración disponibles del cliente, como versión del
navegador.

Java Servlet

El servlet es una clase en el lenguaje de programación Java, utilizada para ampliar las
capacidades de un servidor. Aunque los servlets pueden responder a cualquier tipo de
solicitudes, éstos son utilizados comúnmente para extender las aplicaciones alojadas por
servidores web, de tal manera que pueden ser vistos como applets de Java que se ejecutan en
servidores en vez de navegadores web. Este tipo de servlets son la contraparte Java de otras
tecnologías de contenido dinámico Web, como PHP y ASP.NET.

La palabra servlet deriva de otra anterior, applet, que se refiere a pequeños programas que se
ejecutan en el contexto de un navegador web.

17
El uso más común de los servlets es generar páginas web de forma dinámica a partir de los
parámetros de la petición que envíe el navegador web.

Ciclo de Vida

1. Inicializar el servlet: Cuando un servidor carga un servlet, ejecuta el método “init”


del servlet. El proceso de inicialización debe completarse antes de poder manejar
peticiones de los clientes, y antes de que el servlet sea destruido. Aunque
muchos servlets se ejecutan en servidores multi-thread, los servlets no tienen
problemas de concurrencia durante su inicialización. El servidor llama sólo una vez
al método “init” al crear la instancia del servlet, y no lo llamará de nuevo a menos
que vuelva a recargar el servlet. El servidor no puede recargar un servlet sin primero
haber destruido el servlet llamando al método “destroy”.

2. Interactuar con los clientes: Después de la inicialización, el servlet puede dar


servicio a las peticiones de los clientes. Estas peticiones serán atendidas por la
misma instancia del servlet, por lo que hay que tener cuidado al acceder a variables
compartidas, ya que podrían darse problemas de sincronización entre
requerimientos simultáneos.

3. Destruir el servlet: Los servlets se ejecutan hasta que el servidor los destruye, por
cierre del servidor o bien a petición del administrador del sistema. Cuando un
servidor destruye un servlet, ejecuta el método “destroy” del propio servlet. Este
método sólo se ejecuta una vez y puede ser llamado cuando aún queden respuestas
en proceso, por lo que hay que tener la atención de esperarlas. El servidor no
ejecutará de nuevo el servlet hasta haberlo cargado e inicializado de nuevo.

JavaServer Pages (JSP)

JavaServer Pages (JSP) es una tecnología que ayuda a los desarrolladores de software a crear
páginas web dinámicas basadas en HTML, XML, entre otros tipos de documentos. JSP es
similar a PHP, pero usa el lenguaje de programación Java.

Para desplegar y correr JavaServer Pages, se requiere un servidor web compatible con
contenedores servlet como Apache Tomcat o Jetty.

El rendimiento de una página JSP es el mismo que tendría el servlet equivalente, ya que el
código es compilado como cualquier otra clase Java. A su vez, la máquina virtual compilará
dinámicamente a código de máquina las partes de la aplicación que lo requieran. Esto hace que
JSP tenga un buen desempeño y sea más eficiente que otras tecnologías web que ejecutan el
código de una manera puramente interpretada.

La principal ventaja de JSP frente a otros lenguajes es que el lenguaje Java es un lenguaje de
propósito general que excede el mundo web y que es apto para crear clases que manejen lógica
de negocio y acceso a datos de una manera prolija. Esto permite separar en niveles las

18
aplicaciones web, dejando la parte encargada de generar el documento HTML en el archivo
JSP.

Otra ventaja es que JSP hereda la portabilidad de Java, y es posible ejecutar las aplicaciones
en múltiples plataformas sin cambios. Es común incluso que los desarrolladores trabajen en
una plataforma y que la aplicación termine siendo ejecutada en otra.

Los servlets y Java Server Pages (JSPs) son dos métodos de creación de páginas web dinámicas
en servidor usando el lenguaje Java. En ese sentido son similares a otros métodos o lenguajes
tales como el PHP, ASP o los CGIs, programas que generan páginas web en el servidor. Sin
embargo, se diferencian de ellos en otras cosas.

Para empezar, los JSPs y servlets se ejecutan en una máquina virtual Java, lo cual permite que,
en principio, se puedan usar en cualquier tipo de ordenador, siempre que exista una máquina
virtual Java para él. Cada servlet (o JSP, a partir de ahora lo usaremos de forma indistinta) se
ejecuta en su propio hilo, es decir, en su propio contexto; pero no se comienza a ejecutar cada
vez que recibe una petición, sino que persiste de una petición a la siguiente, de forma que no
se pierde tiempo en invocarlo (cargar programa + intérprete). Su persistencia le permite
también hacer una serie de cosas de forma más eficiente: conexión a bases de datos y manejo
de sesiones, por ejemplo.

Las JSPs son en realidad una forma alternativa de crear servlets ya que el código JSP se traduce
a código de servlet Java la primera vez que se le invoca y en adelante es el código del nuevo
servlet el que se ejecuta produciendo como salida el código HTML que compone la página web
de respuesta.

Java Naming and Directory Interface (JNDI)

La Interfaz de Nombrado y Directorio Java (Java Naming and Directory Interface) es una
Interfaz de Programación de Aplicaciones (API) de Java para servicios de directorio. Permite
a los clientes descubrir y buscar objetos y datos a través de un nombre. Como todas las APIs
de Java que hacen de interfaz con sistemas host, es independiente de la implementación
subyacente. Adicionalmente, especifica una interfaz de proveedor de servicio (SPI) que permite
que las implementaciones del servicio de directorio sean integradas en el framework. Las
implementaciones pueden hacer uso de un servidor, un fichero, o una base de datos; la elección
depende del desarrollador.

La API JNDI es usada por Java RMI y las APIs de Java EE para buscar objetos en una red.
Jini tiene su propio servicio de búsqueda y no usa la API JNDI.

La API suministra:

• un mecanismo para asociar(bind) un objeto a un nombre;

• una interfaz de búsqueda de directorio que permite consultas generales;

19
• una interfaz de eventos que permite a los clientes determinar cuándo las entradas
de directorio han sido modificadas;

• extensiones LDAP para soportar las capacidades adicionales de un servicio LDAP.

La porción SPI permite el soporte de prácticamente cualquier tipo de servicio de directorio o


nombrado incluyendo:

• LDAP

• DNS

• Network Information Service

• RMI

• servicio de nombres CORBA

• Sistema de ficheros

Java Remote Method Invocation

RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar un
método de manera remota. Forma parte del entorno estándar de ejecución de Java y
proporciona un mecanismo simple para la comunicación de servidores en aplicaciones
distribuidas basadas exclusivamente en Java. Si se requiere comunicación entre otras
tecnologías debe utilizarse CORBA o SOAP en lugar de RMI.

RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente


diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP),
recolección de basura distribuida (Garbage Collector distribuido) y paso de tipos arbitrarios
(funcionalidad no provista por CORBA).

A través de RMI, un programa Java puede exportar un objeto, con lo que dicho objeto estará
accesible a través de la red y el programa permanece a la espera de peticiones en un puerto
TCP. A partir de ese momento, un cliente puede conectarse e invocar los métodos
proporcionados por el objeto.

La invocación se compone de los siguientes pasos:

• Encapsulado (marshalling) de los parámetros (utilizando la funcionalidad de


serialización de Java).

• Invocación del método (del cliente sobre el servidor). El invocador se queda


esperando una respuesta.

20
• Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo
envía al cliente.

• El código cliente recibe la respuesta y continúa como si la invocación hubiera sido


local.

21
Capítulo III: Integración de Aplicaciones

APLICACIONES DE ESCRITORIO

El software o aplicación de escritorio, también conocido como un recurso o un "app", es un


programa informático diseñado para ayudar al usuario a realizar singulares o múltiples tareas
específicas relacionadas.

MEDICIÓN DE LA INTERFAZ GRAFICA DE USUARIO

La medición de la interfaz de usuario es esencial para asegurar la correcta interacción


entre el sistema desarrollado y el usuario final.

La interfaz es el medio por el cual el usuario “habla” con el sistema.

Una interfaz bien diseñada evita muchos errores en el uso y aumenta la productividad
del usuario

PROCESO DE EVALUACIÓN – ISO 9126

El proceso de evaluación tiene como misión principal asegurar que los sistemas se han
diseñado teniendo en cuenta las necesidades de los usuarios.

La evaluación proporcionará información valiosísima que permite comprobar si la interacción


del sistema y el usuario se ha diseñado correctamente, detectando deficiencias y proponiendo
mejoras.

Consta de 3 Fases:

Proceso para las aplicaciones de Escritorio

El Modelo de Proceso de la Ingeniería de la Usabilidad especifica una metodología de


desarrollo para guiar al equipo y conseguir un alto nivel de usabilidad del producto final.

22
APLICACIONES CON SOCKETS

Sockets: introducción

• Aparecieron en 1981 en UNIX BSD 4.2

o Intento de incluir TCP/IP en UNIX

o Diseño independiente del protocolo de comunicación

• Un socket es punto final de comunicación (dirección IP y


puerto)

• Abstracción que:

o Ofrece interfaz de acceso a los servicios de red en el nivel de transporte

• Protocolo TCP

• Protocolo UDP

o Representa un extremo de una comunicación bidireccional con una


dirección asociada

• Sujetos a proceso de estandarización dentro de POSIX (POSIX 1003.1g)

• Actualmente

o Disponibles en casi todos los sistemas UNIX

23
o En prácticamente todos los sistemas operativos

• WinSock: API de sockets de Windows

o En Java como clase nativa

Permiten comunicar:

• Procesos del mismo computador

• Procesos conectados a través de una red

Tipos de direcciones:

● Direcciones locales: dominio UNIX


● Direcciones de red (TCP/IP)
○ Dirección de red (dirección IP)
○ Puerto
Los socket son conectores de comunicación entre procesos remotos.

Este mecanismo está en la mayoría de los sistemas operativos y fue introducido por Unix BSD

Cada conector está asociado a una IP y un puerto.

Cada conector utiliza un protocolo de comunicación que puede ser UDP o TCP.

Comunicación con datagramas UDP

Un mensaje enviado vía UDP, no posee reintentos y acuso de recibo por parte del proceso
receptor.

Si algo falla el mensaje podría no llegar a su destino

El receptor posee un puerto específico para recibir mensajes

El cliente podrá utilizar cualquier puerto para enviarlos.

El receptor averiguará por el mensaje entrante, la IP y el puerto del proceso emisor, lo que le
permite

Tamaño del Mensaje:

24
El mensaje integro puede ser de hasta 216 byte pero es usual uno de 8 Kbyte. La
aplicación debiera dividir el mensaje en partes.

Mensajes excesivamente grandes afectan el rendimiento de al red.

Bloqueo: UDP usa las operaciones

1. envía, no bloqueante, o sea la esta operación retorna el control una vez encaminado el
mensaje a la capa IP en su socket.

2. recibe bloqueante, o sea el mensaje enviado se almacena en una cola de mensajes en


el puerto del proceso receptor. Este proceso activará su operación recibe y se
bloqueará hasta recibir todo el mensaje. Para esto utiliza un hilo de proceso receptor.

Aplicaciones que utilizan UDP

• Streaming de vídeo UDP simplemente envia información y permite al video comenzar


correr. Si se utiliza TCP, retransmitiria paquetes que no vineron perfectos, y cuando
llegen estarían anticuados.

• Juegos en red Los juegos son aplicaciones en tiempo real que requieren trasmitir
información con extrema sensibilidad al tiempo.

• Búsquedas de servidor de nombre de dominio Consultas de servidor de nombres (DNS)


del dominio utilizan una simple petición seguida de una respuesta simple

Comunicación stream TCP

Orientado a la conexión. Este visualiza la comunicación como un flujo de bytes (stream), y los
procesos pueden leer desde este flujo o escribir en él. Esta abstracción oculta algunas
características propias de la red.

Tamaño de los mensajes: la aplicación decide sobre el tamaño de los mensajes y el protocolo
inferior TCP los traduce a paquetes IP y se asegura que lleguen a destino

Mensajes perdidos: Para cada paquete IP que TCP envía desde el emisor debe esperar un acuse
de recibo desde el receptor, si pasado un tiepo (timeout) no lo recibe, lo considera como paquete
perdido y reenvía el paquete IP nuevamente.

Control de Flujo: TCP regula y coordina el proceso de envío (producción) y recepción


(consumo) de los paquete: por ejemplo, si el receptor lee muy lento, bloquea al emisor hasta
que el lector haya leído una cantidad suficiente de byte.

Duplicación y Ordenación de los Mensajes: A cada paquete IP se le asocia un Id único que


permite al receptor ordenarlos y eliminar paquetes repetidos.

Destino de los mensajes: Para establecer la comunicación, el proceso emisor envía una solicitud
connect al receptor (necesita conocer dirección ip y puerto del recepetor) y este debiera
25
responderle con un accept. Una vez establecida la comunicación, los procesos leen y escriben
en el stream, sin preocuparse por la dirección IP y el número de puerto.

Integridad de los datos: se obtiene a través del cheque de suma para detectar paquetes IP
corruptos. Además, utiliza un número de serie para ordenar y evitar al duplicidad de los
paquetes.

Validez: se consigue reenviando el paquete, cada vez que timeout. Lo que garantiza la entrega.

Conexión rota: cuando los timeout ocurren con demasiada frecuencia, TCP declara la
comunicación rota. Esto significa que TCP no proporciona una comunicación fiable.

Etapas de la comunicación

El proceso cliente envía una solicitud connect al la dirección ip y puerto del servidor.

EL servidor posee una cola para recibir las solicitudes connect y a al momento de realizar un
accept, dispone un nuevo puerto para el stream de comunicación con el cliente.

Cuando se establece la comunicación, cada proceso dispone de dos stream uno para escribir y
otro para leer.

Para finalizar la comunicación uno de los procesos cierra su conector de envió, el receptor
detecta esto y cierrar sus conectores.

Aplicaciones que utilizan TCP

En internet los servicios ya poseen puertos públicos bien conocidos para prestación de algunos
servicios:

• HTTP : para la web

• FTP : transmisión de archivos

• Telnet : acceso remoto

• SMTP : transferencias de correos .

26
RMI

RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar un
método de manera remota.

Remote Method Invocation(RMI) de Java es un modelo de objetos distribuidos para desarrollar


aplicaciones complejas y robustas

RMI se caracteriza por la facilidad de su uso en la programación por estar específicamente


diseñado para Java; proporciona paso de objetos por referencia (no permitido por SOAP),
recolección de basura distribuida (Garbage Collector distribuido) y paso de tipos arbitrarios
(funcionalidad no provista por CORBA).

Serialización

Consiste en convertir un objeto en un stream de bytes para ser trasmitido por una red.

En Java los tipos primitivos son serializables por defecto

¿Qué es Java RMI?

Java RMI es una extensión al modelo de objetos de Java para soportar objetos distribuidos.

Objetivos de Java RMI

 Transparencia.

 Orientado a objetos.

 Facilidad.

27
 Mantenimiento.

 Seguridad.

 Portabilidad.

 Robustez.

 Versatilidad

Características

Concurrencia: Para cada cliente que trate de acceder a un objeto remoto, el servidor creará un
nuevo hilo que se encargará de darle servicio.

Nombrado de objetos: Utiliza la notación URL. Por Ejemplo: rmi://localhost:8080/miObjeto.

Adicionalmente se cuenta con el servidor de nombres rmiRegistry

Paso de parámetros: La Serialización se encarga de informar al compilador y al entorno de


ejecución de Java que deberá pasar por valor copias de los objetos de este tipo desde la JVM
local a la JVM remota.

En una invocación a un método de un objeto remoto puede contar con los siguientes
Parámetros:

 Primitivos.

 Serializados.

 Objetos remotos.

28
Capítulo IV: Web Services

WEB SERVICES
Un servicio web (en inglés, Web Service o Web services) es una tecnología que utiliza un
conjunto de protocolos y estándares que sirven para intercambiar datos entre aplicaciones.
Distintas aplicaciones de software desarrolladas en lenguajes de programación diferentes, y
ejecutadas sobre cualquier plataforma, pueden utilizar los servicios web para intercambiar
datos en redes de ordenadores como Internet.

Servicio Web

Un Servicio Web es un componente software que puede ser registrado, descubierto e invocado
mediante protocolos estándares de Internet.

Permiten exponer y hacer disponibles funcionalidades (servicios) de los sistemas informáticos


de las organizaciones mediante tecnologías y protocolos WEB estándar.

Cada Servicio Web se responsabiliza de realizar un conjunto de funciones concretas y bien


definidas

Servicios Web actúan como componentes independientes que se pueden integrar para formar
sistemas distribuidos complejos

Definición: (del World Wide Web Consortium [W3C])

”Un Servicio Web (Web Service [WS]) es una aplicaci´on software identificada por un URI
(Uniform Resource Identifier ), cuyas interfaces se pueden definir, describir y descubrir
mediante documentos XML. Los Servicios Web hacen posible la interacción entre ”agentes”
software (aplicaciones) utilizando mensajes XML intercambiados mediante protocolos de
Internet.”

Puntos Clave de WS

Interoperabilidad: distintas aplicaciones, en lenguajes de programación diferentes, ejecutadas


sobre cualquier plataforma, pueden utilizar los Servicios Web para intercambiar datos

La interoperabilidad se consigue mediante el uso de estándares abiertos.

Servicios Web se asientan sobre protocolos y estándares ya existentes y muy difundidos


(HTTP, XML, etc)

Uso de protocolos específicos extensibles =>no imponen restricciones sobre las aplicaciones a
las que dan acceso ni sobre las tecnologías que las implementan (independencia de lenguaje y
de plataforma)

OASIS y W3C: organizaciones responsables de definir la arquitectura y estándares para los


Servicios Web

29
Puntos Clave de WS

Pueden verse como una evolución de los mecanismos RPC

Uso de protocolos estándar de internet (HTTP, SMTP) como mecanismo para el transporte de
los mensajes (invocación, respuesta, ...)

Mensajes intercambiados se encapsulan dentro de mensajes HTTP (o SMTP)

Evitan problemas con firewalls y filtrado de puertos no privilegiados

Para la red el tráfico de Servicios Web es tráfico HTTP (o SMTP) normal

Uso de lenguajes basados en XML

Los mensajes intercambiados son representados en documentos XML

Servicios y métodos remotos son descritos en documentos XML

Uso de Servicios Web

Servicio

Un servicio es un procedimiento, un método o un objeto con una interfaz estable y pública que
puede ser invocado por un cliente

Los Servicios Web amplían esa idea para permitir que esa invocación se realice a través de
internet empleando protocolos Web estándar ya existentes

Arquitectura básica de protocolos de Servicios Web

30
Elementos necesarios para la definición de Servicios Web

1. Sintaxis común para todas la especificaciones => uso de XML

XML: eXtensible Markup Language

• Estándar para la definición de lenguajes de marcas

• Flexible y extensible

Metalenguaje usado en Servicios Web para especificar los lenguajes y protocolos


necesarios

• Permite definición de lenguajes para

Elementos necesarios para la definición de Servicios Web

2. Mecanismos de interacción entre extremos)uso de SOAP (Simple Object Access Protocol)

Necesidad de un formato de mensajes neutro, abierto y extensible

• representación de mensajes de invocación (argumentos) y respuesta (valor


retorno) como documentos XML

Especificación del modo de interacción:

Mapeo de los mensajes en el protocolo de transporte (HTTP, SMTP)

Elementos necesarios para la definición de Servicios Web

3. Lenguaje común para describir los servicios => uso de WSDL (Web Service Description
Language)

31
Descripción de los servicios y sus interfaces de forma estándar mediante documentos
XML

Papel análogo al del IDL en middleware convencional

Incluye toda la información necesaria para suplir la falta de un middleware común


centralizado

• Especifica cada operación disponible, con sus parámetros de entrada y de


salida

• Puede usarse para generar los stubs/skeleton y las capas intermedias necesarias
para escribir

• Especificar información sobre la localización del servicio (URIs)

Elementos necesarios para la definición de Servicios Web

4. Publicación y localización de servicios => uso de UDDI (Universal

Description, Discovery and Integration)

La descripción de los servicios (documentos WSDL) se almacena en un directorio de servicios

UDDI especifica cómo

Acceso al directorio UDDI mediante Servicios Web => uso mensajes SOAP

• servidor da de alta de servicios (documentos WSDL + descripción)

• cliente ”descubre” servicios (documentos WSDL)

Protocolo SOAP: Intercambio de mensajes

SOAP: Simple Object Access Protocol

Protocolo SOAP especifica:

Formato de mensajes común y extensible: describe cómo se organiza en forma de documentos


XML la información a intercambiar

Conjunto de normas para implementar RPC mediante mensajes SOAP

Reglas a seguir por la entidades (cliente o servidor) que procesen los mensajes SOAP

• indica elementos a tratar u omitir, quien debe hacerlo y los tipos de acciones a realizar

Descripción del modo en que se envían los mensajes SOAP sobre el protocolo de transporte
(HTTP o SMTP)

32
Estructura de los mensajes SOAP

SOAP ofrece soporte para el env´ıo de datos de aplicaci´on arbitrarios

• Define la estructura de un “contenedor” de mensajes XML

• No establece restricciones sobre el contenido del mensaje ni sobre el procesamiento a realizar


con él

XML-RPC usaba etiquetas predefinidas (diferencia con SOAP)

33
Protocolo WSDL: Descripción de servicios

Servicios Web necesitan una descripción de interfaces más rica e independiente de la


plataforma

1. Definición de operaciones: nombre, argumentos (nombre + tipo), valor retorno

2. Definición de mecanismos de interacción (bindings)

• Sistemas distribuidos convencionales usan siempre el mismo middleware

• En Servicios Web cada servicio se puede servir con distintos protocolos (HTTP, SMTP)

3. Especificación de la localización del servicio (URI del servicio)

• Localización a donde enviar los mensajes SOAP

Protocolo UDDI: Publicaci´on de servicios

Protocolo para interactuar con un servidor (registro UDDI) que proporciona operaciones (vía
SOAP) para registrar y buscar (descubrir) Servicios Web

Cada servicio se registra dando su nombre, una descripción del servicio (URL de su WSDL,
una descripción textual, etc.)

Uso de UDDI mediante APIs de programación basadas en SOAP

• El API de UDDI está especificada con WSDL ) uso de mensajes SOAP

34
• Alta (publicación) de Servicios Web por parte de los servidores

• Localización (descubrimiento) de Servicios Web por parte de los cliente

Finalidad:

• Ofrecer soporte para encontrar información sobre servicios web y poder construir clientes

• Facilitar el enlace dinámico, permitiendo consultar referencias y acceder a servicios de interés


en tiempo de ejecución (descubrir servicios e invocarlos)

35
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Base de datos I

Elaborado por:
Ing. Daniel Plua
Ing. Ricardo Naranjo
Revisado por:
Ing. Miguel Quiroz

36
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
DESARROLLO ................................................................... ¡Error! Marcador no definido.
CAPÍTULO 1: FUNDAMENTOS DE BASES DE DATOS................................................... 4
1.1. PROPÓSITO DE LOS SISTEMAS DE BASES DE DATOS. ................................... 4
1.2. VISIÓN DE LOS DATOS......................................................................................... 4
1.3. MODELOS DE DATOS. .......................................................................................... 5
1.4. LENGUAJES DE BASES DE DATOS. .................................................................... 6
1.5. GESTIÓN DE TRANSACCIONES. ......................................................................... 7
1.6. GESTIÓN DE ALMACENAMIENTO. ....................................................................... 7
1.7. ADMINISTRADOR DE LA BASE DE DATOS. ........................................................ 8
1.8. USUARIOS DE BASES DE DATOS........................................................................ 8
1.9. ESTRUCTURA DEL SISTEMA COMPLETO. ......................................................... 9
CAPÍTULO 2: MODELO ENTIDAD - RELACIÓN. ............................................................. 9
2.1. CONCEPTOS BÁSICOS......................................................................................... 9
2.2. CUESTIONES DE DISEÑO. ................................................................................. 11
2.3. CLAVES. ............................................................................................................... 12
2.4. DIAGRAMA ENTIDAD – RELACIÓN. ................................................................... 13
2.5. CONJUNTOS DE ENTIDADES DÉBILES. ............................................................ 14
2.6. CARACTERÍSTICAS DEL MODELO E-R EXTENDIDO. ....................................... 14
2.7. DISEÑO DE UN ESQUEMA DE BASE DE DATOS E-R. ...................................... 16
2.8. REDUCCIÓN DE UN ESQUEMA E-R A TABLAS. ................................................ 16
CAPÍTULO 3: DISEÑO DE BASES DE DATOS RELACIONALES. ................................. 18
3.1. DIFICULTADES EN EL DISEÑO DE BASES DE DATOS RELACIONALES. ........ 18
3.2. DESCOMPOSICIÓN. ............................................................................................ 19
3.3. NORMALIZACIÓN USANDO DEPENDENCIAS FUNCIONALES. ........................ 20
3.4. NORMALIZACIÓN USANDO DEPENDENCIAS MULTIVALORADAS. ................. 22
CAPÍTULO 4: EL MODELO RELACIONAL...................................................................... 26
4.1. LA ESTRUCTURA DE LAS BASES DE DATOS RELACIONALES. ...................... 26
4.2. EL ÁLGEBRA RELACIONAL. ............................................................................... 27
4.3. OPERACIONES DEL ÁLGEBRA RELACIONAL EXTENDIDA. ............................. 27
CAPÍTULO 5: SQL .......................................................................................................... 28
5.1. INTRODUCCIÓN. ................................................................................................. 28
5.2. LENGUAJE DE DEFINICIÓN DE DATOS. ............................................................ 29
5.3. ESTRUCTURA BÁSICA........................................................................................ 29
5.4. OPERACIONES SOBRE CONJUNTOS. .............................................................. 29

2
5.5. FUNCIONES DE AGREGACIÓN. ......................................................................... 30
5.6. VALORES NULOS. ............................................................................................... 31
5.7. SUBCONSULTAS ANIDADAS. ............................................................................. 31
5.8. VISTAS. ................................................................................................................ 32
5.9. MODIFICACIÓN DE LA BASE DE DATOS. .......................................................... 32
5.10. REUNIÓN DE RELACIONES .............................................................................. 33
5.11. FUNCIONES PARA MANEJO DE CADENAS, MATEMÁTICAS Y TIEMPO ....... 35
5.12. PROCEDIMIENTOS, CURSORES ..................................................................... 37
5.13. USUARIOS ......................................................................................................... 40
CAPÍTULO 6: LIGADURAS DE INTEGRIDAD ................................................................ 41
6.1. LIGADURAS DE LOS DOMINIOS. ....................................................................... 41
6.2. INTEGRIDAD REFERENCIAL. ............................................................................. 41
6.3. ASERTOS. ............................................................................................................ 42
6.4. Disparadores......................................................................................................... 42
CAPÍTULO 7: TRANSACCIONES ................................................................................... 43
7.1. CONCEPTO DE TRANSACCIÓN. ........................................................................ 43
7.2. Estado de una transacción. ................................................................................... 43
7.3. IMPLEMENTACIÓN DE LA ATOMICIDAD Y LA DURABILIDAD. ......................... 44
7.4. EJECUCIONES CONCURRENTES. ..................................................................... 44
7.5. IMPLEMENTACIÓN DEL AISLAMIENTO. ............................................................ 45
7.6. DEFINICIÓN DE TRANSACCIONES EN SQL. ..................................................... 45
7.7. TRANSACCIONES EN JAVA................................................................................ 45
CAPÍTULO 8: CONTROL DE CONCURRENCIA ............................................................ 46
8.1. PROTOCOLOS BASADOS EN EL BLOQUEO. .................................................... 46
8.2. OPERACIONES PARA INSERTAR, BORRAR Y ACTUALIZAR. ......................... 46
8.3. BLOQUEOS EN JAVA, A NIVEL DE FILA O TABLA. ........................................... 47

3
CAPÍTULO 1: FUNDAMENTOS DE BASES DE DATOS.

1.1. PROPÓSITO DE LOS SISTEMAS DE BASES DE DATOS.


Los Sistemas de bases de datos surgieron en respuesta a los primeros métodos de gestión
informatizada de datos comerciales.

Los primeros sistemas de bases de datos tenían problemas de:


1. Redundancia e inconsistencia de datos,
2. Dificultad en el acceso de datos,
3. Aislamiento de datos,
4. Problemas de integridad.
5. Problemas de atomicidad.
6. Acceso concurrente
7. Problemas de seguridad

1.2. VISIÓN DE LOS DATOS.


Un sistema de bases de datos es una colección de datos interrelacionados y un conjunto de
programas que permiten a los usuarios tener acceso a estos datos y modificarlos.

Abstracción de datos: ya que no todas las personas tienen conocimientos de bases de datos, los
desarrolladores ocultan la complejidad para la representación de datos a través del uso de varios
niveles

4
Nivel físico: Define como se almacena realmente los datos, describe el detalle de las estructuras
complejas a bajo nivel.
Nivel Lógico: Describe que datos se almacena en la base de datos y como se relacionan entre
sí. Los administradores de bases de datos que deben decidir la información que se guarda en la
base de datos usan el nivel lógico.
Nivel de Vistas: Solo describe parte de la base de datos, muchos usuarios no necesitan tener
acceso a todo el nivel lógico, solo necesitan tener acceso a una parte del sistema. Este nivel
existe para simplificar su interacción con el sistema.

1.3. MODELOS DE DATOS.


Es una colección de herramientas conceptuales para describir datos, sus relaciones su semántica
y las restricciones de consistencia.

Se pueden clasificar en cuatro categorías diferentes:


1. Modelo relacional: Usa una colección de tablas tanto para representar datos como a sus
relaciones, su semántica y restricciones de consistencia,
a. Cada tabla contiene varias columnas y
b. Cada columna tiene un nombre único,
c. Cada tabla contiene registros de un tipo dado,
d. Cada registro tiene un número fijo de campos o atributos.

2. El modelo entidad relación: Se basa en una percepción del mundo real, consiste en una
colección de objetos básicos denominados entidades y de las relaciones entre ellos.

5
3. Modelo de datos orientado a objetos: Se puede considerar como una extensión del
modelo E-R con concepto de encapsulación, métodos e identidad de objetos
4. Modelo de datos semi-estructurados: Permite especificar datos donde los elementos
individuales del mismo tipo pueden tener diferentes conjuntos de atributos, ejemplo XML.

1.4. LENGUAJES DE BASES DE DATOS.

LMD: Lenguaje de Manipulación de Datos, permite a los usuarios tener acceso a los datos,
Los tipos de acceso son:
 Recuperación de la información
 Inserción de nueva información
 El borrado de información
 Modificación de la información

Dos tipos de LMD:

Procedimentales: necesita que el usuario especifique que datos se necesitan y como obtenerlos
Declarativos: Se especifica que datos necesita sin que haga falta que se especifique como
obtener los datos

SQL: Es el lenguaje de consultas más ampliamente utilizado

LDD: Lenguaje de definición de datos mediante este lenguaje se especifica los esquema de la
base de datos, y propiedades adicionales de los datos.
Debe tener en cuenta restricciones de integridad como:
 Restricciones de dominio: Por ejemplo tipo entero, tipo carácter, tipo fecha, etc.
 Integridad referencial: En valor que aparece en una relación aparece también en la
otra.
 Asertos: Cualquier otra condición que una base de datos debe satisfacer siempre
 Autorización: Diferenciar a los usuarios en cuanto al tipo de acceso.

6
1.5. GESTIÓN DE TRANSACCIONES.
Transacción: Una transacción es la unidad de procesamiento de la base de datos. Se dice que
tras la terminación de una transacción empieza una nueva.

Propiedades de la transacción:

Propiedades de la transacción:
 Atomicidad (Atomicity): Asegura que la operación se ha realizado o no, y por lo tanto
ante un fallo del sistema no puede quedar a medias.
 Consistencia (Consistency): Asegura que sólo se empieza aquello que se puede acabar.
Por lo tanto, se ejecutan aquellas operaciones que no van a romper la reglas y directrices
de integridad.
 Aislamiento (Isolation): Asegura que una operación no puede afectar a otras. Esto
asegura que la realización de dos transacciones sobre la misma información nunca
generará ningún tipo de error.
 Durabilidad(Durability): Asegura que una vez realizada la operación, ésta persistirá y
no se podrá deshacer aunque falle el sistema.

1.6. GESTIÓN DE ALMACENAMIENTO.

Un gestor de almacenamiento es un módulo que proporciona una interface entre:


 Los datos de bajo nivel almacenados en la base de datos,
 Los programas de aplicación, y
 Las consultas remitidas al sistema.
 Es responsable de la interacción con el gestor de archivos.
 Traduce las instrucciones LMD en comandos de bajo nivel del sistema de archivos.
7
1.7. ADMINISTRADOR DE LA BASE DE DATOS.

Un DBA es el técnico responsable de la información para garantizar la funcionalidad actual del


funcionamiento y la eficiencia de las bases de datos de una organización y las aplicaciones que
acceden a las bases de datos.

Tareas del DBA


Garantizar que los datos de una organización y bases de datos son útiles, utilizables,
disponibles, y correctos para que el DBA realice una variedad de tareas en una variedad de
áreas.
Estas áreas incluyen:

 El diseño de bases de datos.


 Monitoreo y optimización del desempeño.
 La disponibilidad de bases de datos.
 Seguridad.
 Backup y recuperación.
 Integridad de datos.
 La liberación de migración.
 En realidad, todo lo que implica bases de datos de la empresa.

1.8. USUARIOS DE BASES DE DATOS.

 Normal: Son usuarios no sofisticados que interactúan con el sistema invocando a algún
programa, ejemplo: cajero de un banco.
 Programadores de aplicaciones: profesionales informáticos que escriben programas
de aplicación, ellos eligen la interface gráfica.
 Sofisticados: interactúan sin escribir programas, en este caso formulan sus consultas
en el lenguaje de consultas de la base de datos
 Especializados: Son usuarios sofisticados que escriben aplicaciones no tradicionales
por ejemplo sistemas expertos, con tipos complejos como gráficos, sonidos, etc.

8
1.9. ESTRUCTURA DEL SISTEMA COMPLETO.

CAPÍTULO 2: MODELO ENTIDAD - RELACIÓN.

2.1. CONCEPTOS BÁSICOS.


Atributos compuestos
Pueden dividirse en otros con significado propio

Valor compuesto = concatenación de valores de componentes

Atributos simples
No divisibles. Atómicos

9
Atributos monovalorados (monovaluados) sólo un valor para cada entidad
fechanacim [de un EMPLEADO particular]
añoestreno [de una PELICULA concreta]

Atributos multivalorados (multivaluados)


más de un valor para la misma entidad
nacionalidad [ PELICULA coproducida por varios países ]
telefono [ EMPLEADO con varios teléfonos de contacto]

Pueden tener límites superior e inferior del nº de valores por entidad


nacionalidad (1-2)
teléfono (0-3)

El nulo (null value) es usado cuando...

Se desconoce el valor de un atributo para cierta entidad


El valor existe pero falta
altura [de un EMPLEADO]
No se sabe si el valor existe o no
numteléfono [de un EMPLEADO]

La entidad no tiene ningún valor aplicable para el atributo:


fechaalquiler [PELICULA sólo en vídeo-venta (no alquiler)]

Atributos derivados
Valor calculado a partir de otra información ya existente (atributos, entidades relacionadas)
Son información redundante...
edad [de EMPLEADO], cálculo a partir de fechanacim
atributo derivado del valor de otro atributo

10
numcopias [de una PELICULA], cuenta del nº de entidades copia
relacionadas con cada película concreta
atributo derivado de entidades relacionadas

Atributos almacenados
nacionalidad [de una PELICULA]
fechanacim [de un EMPLEADO]

2.2. CUESTIONES DE DISEÑO.

Las nociones de conjunto de entidades y conjunto de relaciones no son precisas, y es posible


definir un conjunto de entidades y las relaciones entre ellas de diferentes formas.

USO DE CONJUNTOS DE ENTIDADES O ATRIBUTOS

Suelen definirse en un conjunto de entidades, atributos que requieren guardar información extra
referente a ellos, facilitándose eso y además de hacerlo más claro, tratarlo como una entidad en
lugar de como un atributo. Otras ocasiones resulta lo contrario, que se trata a una entidad que
quedaría más práctico manejarlo como un atributo del conjunto de entidades.
La distinción de la forma de usar la información dependerá de la estructura de la empresa del
mundo real que se modela y de la semántica asociada con el atributo en cuestión.

USO DE CONJUNTOS DE ENTIDADES O CONJUNTOS DE RELACIONES

No siempre está claro si es mejor expresar un objeto mediante un conjunto de entidades o


mediante un conjunto de relaciones.

Una posible guía para determinarlo es designar un conjunto de relaciones para describir una
acción que ocurre entre entidades. Este enfoque también puede ser útil para decidir si ciertos
atributos se pueden expresar más apropiadamente como relaciones.

CONJUNTOS DE RELACIONES BINARIAS O N-ARIAS

11
Las relaciones en las bases de datos son generalmente binarias. Algunas relaciones que parecen
no ser binarias podrían ser representadas mejor con varias relaciones binarias. Eso dependerá
de la simplicidad o utilidad que tenga hacer ese ajuste.

2.3. Ligaduras de correspondencia.


Es un subconjunto del conjunto de atributos comunes en una colección de entidades, que
permite identificar inequívocamente cada una de las entidades pertenecientes a dicha colección.
Asimismo, permiten distinguir entre sí las relaciones de un conjunto de relaciones.

Dentro de los conjuntos de entidades existen los siguientes tipos de claves:

Superclave: Es un subconjunto de atributos que permite distinguir unívocamente cada una de


las entidades de un conjunto de entidades. Si se añade un atributo al anterior subconjunto, el
resultado seguirá siendo una superclave.

Clave candidata: Se trata de superclave mínima, es decir, cualquier subconjunto de atributos


de la misma no puede ser una superclave.

Clave primaria: Es una clave candidata, elegida por el diseñador de la base de datos, para
identificar unívocamente las entidades en un conjunto de entidades.

2.3. CLAVES.

Es un subconjunto del conjunto de atributos comunes en una colección de entidades, que


permite identificar inequívocamente cada una de las entidades pertenecientes a dicha colección.
Asimismo, permiten distinguir entre sí las relaciones de un conjunto de relaciones.

Dentro de los conjuntos de entidades existen los siguientes tipos de claves:

 Superclave: Es un subconjunto de atributos que permite distinguir unívocamente cada


una de las entidades de un conjunto de entidades. Si se añade un atributo al anterior
subconjunto, el resultado seguirá siendo una superclave.

 Clave candidata: Se trata de superclave mínima, es decir, cualquier subconjunto de


atributos de la misma no puede ser una superclave.
12
 Clave primaria: Es una clave candidata, elegida por el diseñador de la base de datos,
para identificar unívocamente las entidades en un conjunto de entidades.

2.4. DIAGRAMA ENTIDAD – RELACIÓN.

Ejercicio 1:
Crear un diseño entidad relación que permita gestionar los datos de una biblioteca de modo
que:
Las personas socias de la biblioteca disponen de un código de socio y además necesitar
almacenar su dni, dirección, teléfono, nombre y apellidos
La biblioteca almacena libros que presta a los socios y socias, de ellos se almacena su título,
su editorial, el año en el que se escribió el libro, el nombre completo del autor (o autores), el
año en que se editó y en qué editorial fue y el ISBN.
Necesitamos poder indicar si un volumen en la biblioteca está deteriorado o no.
Queremos controlar cada préstamo que se realiza almacenando la fecha en la que se realiza, la
fecha tope para devolver (que son 15 días más que la fecha en la que se realiza el préstamo) y
la fecha real en la que se devuelve el libro

Ejercicio 2:
Crear un diseño entidad relación que permita controlar el sistema de información de una
academia de cursos siguiendo estas premisas:

13
Se dan clases a trabajadores y desempleados. Los datos que se almacenan de los alumnos son
el DNI, dirección, nombre, teléfono y la edad.
Además de los que trabajan necesitamos saber el CIF, nombre, teléfono y dirección de la
empresa en la que trabajan.
Los cursos que imparte la academia se identifican con un código de curso. Además se almacena
el programa del curso, las horas de duración del mismo, el título y cada vez que se imparte se
anotará las fechas de inicio y fin del curso junto con un número concreto de curso (distinto del
código) y los datos del profesor o profesora (sólo uno por curso) que son: dni, nombre,
apellidos, dirección y teléfono.
Se almacena la nota obtenida por cada alumno en cada curso teniendo en cuenta que un mismo
alumno o alumna puede realizar varios cursos y en cada cual obtendrá una nota.

2.5. CONJUNTOS DE ENTIDADES DÉBILES.

Es aquel que no tiene suficientes atributos para formar una clave primaria. Un conjunto que sí
tiene una clave primaria se denomina conjunto de entidades.

2.6. CARACTERÍSTICAS DEL MODELO E-R EXTENDIDO.

14
Existen extensiones del modelo entidad/relación que incorporan determinados conceptos o
mecanismos de abstracción para facilitar la representación de ciertas estructuras del mundo
real:

 La generalización, permite abstraer un tipo de entidad de nivel superior (supertipo) a


partir de varios tipos de entidad (subtipos); en estos casos los atributos comunes y
relaciones de los subtipos se asignan al supertipo. Se pueden generalizar por ejemplo
los tipos profesor y estudiante obteniendo el supertipo persona.
 La especialización es la operación inversa a la generalización, en ella un supertipo se
descompone en uno o varios subtipos, los cuales heredan todos los atributos y
relaciones del supertipo, además de tener los suyos propios. Un ejemplo es el caso del
tipo empleado, del que se pueden obtener los subtipos secretaria, técnico e ingeniero.
 Categorías. Se denomina categoría al subtipo que aparece como resultado de la unión
de varios tipos de entidad. En este caso, hay varios supertipos y un sólo subtipo. Si por
ejemplo se tienen los tipos persona y compañía y es necesario establecer una relación
con vehículo, se puede crear propietario como un subtipo unión de los dos primeros.
 La agregación, consiste en construir un nuevo tipo de entidad como composición de
otros y su tipo de relación y así́ poder manejarlo en un nivel de abstracción mayor. Por
ejemplo, se tienen los tipos de entidad empresa y solicitante de empleo relacionados
mediante el tipo de relación entrevista; pero es necesario que cada entrevista se
corresponda con una determinada oferta de empleo. Como no se permite la relación
entre tipos de relación, se puede crear un tipo de entidad compuesto por empresa,
entrevista y solicitante de empleo y relacionarla con el tipo de entidad oferta de empleo.
El proceso inverso se denomina desagregación.
 La asociación, consiste en relacionar dos tipos de entidades que normalmente son de
dominios independientes, pero coyunturalmente se asocian.

La existencia de supertipos y subtipos, en uno o varios niveles, da lugar a una jerarquía, que
permitirá́ representar una restricción del mundo real.

Una vez construido el modelo entidad/relación, hay que analizar si se presentan redundancias.
Para poder asegurar su existencia se deben estudiar con mucho detenimiento las cardinalidades
mínimas de las entidades, así́ como la semántica de las relaciones.

Los atributos redundantes, los que se derivan de otros elementos mediante algún cálculo, deben
ser eliminados del modelo entidad/relación o marcarse como redundantes.

15
Igualmente, las relaciones redundantes deben eliminarse del modelo, comprobando que al
eliminarlas sigue siendo posible el paso, tanto en un sentido como en el inverso, entre las dos
entidades que unían.

2.7. DISEÑO DE UN ESQUEMA DE BASE DE DATOS E-R.

 Si se usa un atributo o un conjunto de entidades para representa un objeto.


 Si un concepto del mundo real se expresa más exactamente mediante un conjunto de
entidades o mediante un conjunto de relaciones
 Si se usa una relación ternaria o un par de relaciones binaras
 Si el uso de la agregación es apropiado; la agregación agrupa una parte de un diagrama
E-R en un único conjunto de entidades, permitiendo tratar el conjunto de entidades de
la agregación como una unidad única sin importar los detalles de su estructura interna

Fases de diseño

 La fase inicial del diseño de bases de datos, es caracterizar completamente las


necesidades de datos esperadas por los usuarios de la base de datos.
 A continuación, el diseñador elige un modelo de datos y, aplicando los conceptos del
modelo de datos elegido, traduce estos requisitos a un esquema conceptual de la base
de datos.
 El diseñador revisa el esquema para confirmar que todos los requisitos de datos se
satisfacen realmente y no hay conflictos entre sí.
 Fase de diseño lógico, el diseñador traduce el esquema conceptual de alto nivel al
modelo de datos de la implementación del sistema de base de datos que se usará.
 Fase de diseño físico, se especifican las características físicas de la base de datos.

2.8. REDUCCIÓN DE UN ESQUEMA E-R A TABLAS.

Un esquema de bases de datos E-R se puede representar por una colección de tablas. Para cada
conjunto de entidades y para cada conjunto de relaciones de la base de datos hay una única
tabla a la que se asigna el nombre del conjunto de entidades o de relaciones correspondiente.
Cada tabla tiene varias columnas, cada una de las cuales con un nombre único.

16
REPRESENTACIÓN TABULAR DE LOS CONJUNTOS DE ENTIDADES FUERTES

El conjunto de entidades fuertes se representa mediante una tabla con columnas, y para cada
columna corresponde un atributo del conjunto de entidades E-R. Cada fila de la tabla
corresponde a una entidad del conjunto de entidades.

REPRESENTACIÓN TABULAR DE LOS CONJUNTOS DE ENTIDADES DÉBILES

Un conjunto de entidades débiles se representa mediante una tabla con columnas para cada cual
corresponderá a la llave primaria del conjunto de entidades del que depende y cada atributo
(incluyendo al discriminante) del conjunto de entidades débiles.

REDUNDANCIA DE TABLAS

Para un conjunto de relaciones que une a un conjunto de entidades débiles con su


correspondiente conjunto de entidades fuertes no se representa mediante una tabla, ya que será
redundante de la tabla del conjunto de entidades débiles, por lo que es innecesario hacer su
representación.

COMBINACIÓN DE TABLAS

Cuando un conjunto de relaciones es de varios a uno y el conjunto de entidades que es varios


tiene participación total con la otra entidad, se pueden combinar la columnas de la tabla del
conjunto de entidades que es varios y la tabla del conjunto de relaciones para hacer una tabla
única en lugar de tener dos por separado.

ATRIBUTOS COMPUESTOS

Cuando un atributo de un conjunto de entidades es compuesto, en la representación a tabla no


va ese atributo compuesto, sino sus atributos componentes siendo una columna cada uno.

ATRIBUTOS MULTIVALORADOS

17
Para un atributo multivalorado se crea una nueva tabla, que tendrá como columnas la clave
primaria del conjunto de entidades o relaciones al que pertenece ese atributo multivalorado.

CAPÍTULO 3: DISEÑO DE BASES DE DATOS RELACIONALES.

3.1. DIFICULTADES EN EL DISEÑO DE BASES DE DATOS


RELACIONALES.

Crear un diseño efectivo para una base de datos relacional es un elemento clave en la
construcción de un sistema fiable. No hay "correcto" diseño de base de datos relacional para
cualquier proyecto en particular y los desarrolladores debe tomar decisiones para crear un
diseño que funcione eficientemente. Hay algunos errores de diseño comunes que pueden dañar
un sistema de base de datos. Velando por estos errores en la etapa de diseño puede ayudar a
evitar problemas más adelante.

PRÁCTICAS DE NOMBRAMIENTO DESCUIDADO


Elección de nombres es un aspecto de diseño de base de datos que a menudo se descuida, pero
puede tener un impacto considerable en la usabilidad y desarrollo futuro. Para evitar esto, deben
elegirse nombres de tabla y columna sea significativo y de conformidad con los convenios
establecidos, asegurando que la consistencia se mantiene a través de un sistema. Una serie de
convenios se puede utilizar en nombres de base de datos relacional, incluyendo los siguientes
dos ejemplos para un registro de almacenamiento de un nombre de cliente: "client_name" y
"clientName".

FALTA DE DOCUMENTACIÓN
Crear documentación para una base de datos relacional puede ser un paso vital para
salvaguardar el desarrollo futuro. Hay diferentes niveles de documentación que se pueden crear
bases de datos, y algunos sistemas de gestión de bases de datos son capaces de generar
automáticamente la documentación. Proyectos donde documentación formal no se considera
necesaria, puede ser útil simplemente incluyendo comentarios dentro del código SQL.

SI NO SE NORMALIZAN

18
La normalización es una técnica para analizar y mejorar, un diseño de base de datos inicial.
Participan una variedad de técnicas, incluyendo la identificación de características de un diseño
de base de datos que puede comprometer la integridad de los datos de ítems de ejemplo de
datos que están almacenados en más de un lugar. Normalización identifica anomalías en un
diseño de base de datos y puede tener preferencia sobre las características del diseño que
puedan causar problemas cuando preguntó, inserta o actualiza datos.

3.2. DESCOMPOSICIÓN.
Siempre que un analista de sistemas de base de datos arma una base de datos, queda a su cargo
descomponer dicha base en grupos y segmentos de registros. Este proceso es la
descomposición; el mismo es necesario independientemente de la arquitectura de la base de
datos - relacional, red o jerárquica-. Sin embargo, para la base de datos relacional, la acción
correspondiente puede dividirse y expresarse en términos formales y se denomina
normalización a la misma.
La normalización convierte una relación en varias sub-relaciones, cada una de las cuales
obedece a reglas. Estas reglas se describen en términos de dependencia. Una vez que hayamos
examinado las distintas formas de dependencia, encontraremos procedimientos a aplicar a las
relaciones de modo tal que las mismas puedan descomponerse de acuerdo a la dependencia que
prevalece. Esto no llevará indefectiblemente a formar varias sub-relaciones a partir de la única
relación preexistente.

Se deben descomponer esquemas con muchos atributos en varios esquemas con pocos atributos

19
3.3. NORMALIZACIÓN USANDO DEPENDENCIAS FUNCIONALES.

Una dependencia funcional es una conexión entre uno o más atributos. Por ejemplo si se conoce
el valor de DNI tiene una conexión con Apellido o Nombre.

Las dependencias funcionales del sistema se escriben utilizando una flecha, de la siguiente
manera:

FechaDeNacimiento {\displaystyle \rightarrow } \ Edad

De la normalización (lógica) a la implementación (física o real) puede ser sugerible tener estas
dependencias funcionales para lograr la eficiencia en las tablas.

Propiedades de la dependencia funcional Existen tres axiomas de Armstrong:

Dependencia funcional reflexiva


Si "y" está incluido en "x" entonces x {\displaystyle \rightarrow } \rightarrow y

20
A partir de cualquier atributo o conjunto de atributos siempre puede deducirse él mismo. Si la
dirección o el nombre de una persona están incluidos en el DNI, entonces con el DNI podemos
determinar la dirección o su nombre.

21
3.4. NORMALIZACIÓN USANDO DEPENDENCIAS
MULTIVALORADAS.

22
 2NF

23
 3NF

24
 BCNF

25
CAPÍTULO 4: EL MODELO RELACIONAL.

4.1. LA ESTRUCTURA DE LAS BASES DE DATOS RELACIONALES.

Dado que cada tabla es un conjunto de dichas relaciones, hay una fuerte correspondencia entre
el concepto de tabla y el concepto matemático de relación, del que toma su nombre el modelo
de datos relacional.

26
4.2. EL ÁLGEBRA RELACIONAL.

El álgebra relacional es un lenguaje de consulta procedimental. Consta de un conjunto de


operaciones que toman como entrada una o dos relaciones y producen como resultado una
nueva relación. Las operaciones fundamentales del álgebra relacional son selección,
proyección, unión, diferencia de conjuntos, producto cartesiano y renombramiento. Además de
las operaciones fundamentales hay otras operaciones, por ejemplo, intersección de conjuntos,
reunión natural, división y asignación. Estas operaciones se definirán en términos de las
operaciones fundamentales.

4.3. OPERACIONES DEL ÁLGEBRA RELACIONAL EXTENDIDA.

R U S, la unión de R y S es el conjunto de elementos que están en R o S o ambos. Un elemento


solo aparece una sola vez.

R intersección S, el conjunto de elementos que aparecen en ambos R y S


R - S, la diferencia de R y S, el conjunto de elementos que están en R pero no en S. Es
importante resaltar que R - S es diferente a S - R.
R / S, la división de una relación entre otra, debe cumplirse que para toda tupla en R exista su
correspondiente en S.

27
CAPÍTULO 5: SQL

5.1. INTRODUCCIÓN.

DDL - Data Definition Language

28
Utilizadas para crear, alterar o borrar objetos de la base de datos. Ejemplo: CREATE, ALTER,
DROP, RENAME.

DML - Data Manipulation Language


Utilizadas para consultar o actualizar los datos contenidos en tablas de una base de datos.

5.2. LENGUAJE DE DEFINICIÓN DE DATOS.

Utilizadas para crear, alterar o borrar objetos de la base de datos. Ejemplo: CREATE, ALTER,
DROP, RENAME.

5.3. ESTRUCTURA BÁSICA.

5.4. OPERACIONES SOBRE CONJUNTOS.

29
5.5. FUNCIONES DE AGREGACIÓN.

Las funciones de agregación en SQL nos permiten efectuar operaciones sobre un conjunto de
resultados, pero devolviendo un único valor agregado para todos ellos. Es decir, nos permiten
obtener medias, máximos, etc... sobre un conjunto de valores.

Las funciones de agregación básicas que soportan todos los gestores de datos son las siguientes:

COUNT: devuelve el número total de filas seleccionadas por la consulta.


MIN: devuelve el valor mínimo del campo que especifiquemos.
MAX: devuelve el valor máximo del campo que especifiquemos.
SUM: suma los valores del campo que especifiquemos. Sólo se puede utilizar en columnas
numéricas.
AVG: devuelve el valor promedio del campo que especifiquemos. Sólo se puede utilizar en
columnas numéricas.

Ejemplo:

SELECT COUNT(*) AS TotalFilas, COUNT(ShipRegion) AS FilasNoNulas,


MIN(ShippedDate) AS FechaMin, MAX(ShippedDate) AS FechaMax,
SUM(Freight) AS PesoTotal, AVG(Freight) PesoPromedio
FROM Orders

30
5.6. VALORES NULOS.

Null (nulo) es un marcador especial usado en el lenguaje de consulta estructurado (SQL) para
indicar que no existe un valor dentro de una base de datos. Introducido por el creador del
modelo relacional de bases de datos E. F. Codd, su función es la de solventar el requisito de
que los sistemas de gestión relacionales de base de datos (en inglés: Database management
system, abreviado DBMS) verdaderos puedan representar información “desconocida” o “no
aplicable”. Asimismo, Codd también introdujo el uso de la letra griega omega (ω) en minúscula
para representar el Null en la teoría de la teoría de las bases de datos. NULL es también una
palabra reservada en el lenguaje SQL para identificar el marcador especial Null.

5.7. SUBCONSULTAS ANIDADAS.

Una subconsulta es una sentencia SELECT que aparece dentro de otra sentencia SELECT.
Normalmente se utilizan para filtrar una cláusula WHERE o HAVING con el conjunto de
resultados de la subconsulta, aunque también pueden utilizarse en la lista de selección.

Por ejemplo podríamos consultar el alquiler último de un cliente.

SELECT CO_CLIENTE, NOMBRE, MARCA, MODDELO


FROM ALQUILERES
WHERE CO_CLIENTE = 1
AND FECHA_ALQUILER = (SELECT MAX(FECHA_ALQUILER)
FROM ALQUILERES
WHERE CO_CLIENTE = 1)

En este caso, la subconsulta se ejecuta en primer lugar, obteniendo el valor de la máxima fecha
de alquier, y posteriormente se obtienen los datos de la consulta principal.

Una subconsulta tiene la misma sintaxis que una sentencia SELECT normal exceptuando que
aparece encerrada entre paréntesis.

La subconsulta se puede encontrar en la lista de selección, en la cláusula WHERE o en la


cláusula HAVING de la consulta principal.

31
Tiene las siguientes reestricciones:

 No puede contener la cláusula ORDER BY


 No puede ser la UNION de varias sentencias SELECT
 Si la subconsulta aparece en la lista de selección,o está asociada a un operador igual
"=" solo puede devolver un único registro.

5.8. VISTAS.

Una vista es una tabla lógica basada en una tabla u otra vista.
 No contiene datos en sí misma, pero es como una ventana a través de la cual se pueden
ver o cambiar los datos de las tablas.
 Podemos representar con ellas subconjuntos lógicos o combinaciones de datos.
 Las tablas sobre las cuales se basa una vista se llaman tablas base.
 Se almacenan en el Diccionario de Datos, USER_VIEWS.

5.9. MODIFICACIÓN DE LA BASE DE DATOS.

Esté cuenta con módulos DDL, para la definición de datos que nos permite crear o modificar
la estructura de las tablas.

Las instrucciones para realizar estas operaciones son:

CREATE TABLE: Nos permite crear una tabla de datos vacía.


INSERT: Permite almacenar registros en una tabla creada.
32
UPDATE: Permite modificar datos de registros almacenados en la tabla.
DELETE: Borra un registro entero o grupo de registros de una tabla.
CREATE INDEX: Crea un índice que nos puede auxiliar para las consultas.
DROP TABLE: Permite borrar una tabla.
DROP INDEX: Borra el índice indicado.

Para ejemplificar las instrucciones anteriores consideremos el ejemplo

ALUMNO - cursa - MATERIA, que tienen los siguientes atributos:


NControl NControl Clave
NombreA Clave NombreM
Especialidad Calif Creditos

5.10. REUNIÓN DE RELACIONES

Un JOIN se utiliza para consultar datos de más de una tabla. La condición de JOIN se escribe
en la cláusula WHERE. Si existen columnas con el mismo nombre en las tablas seleccionadas,
se deberán nombrar los campos
Ejemplo:

TIPOS DE JOIN

Existen dos tipos principales de JOIN:


 EQUIJOIN Join sobre dos o más tablas, por igualdad de campos.
 NON-EQUIJOIN Por desigualdad, sin correspondencia directa entre campos de tablas.
La relación se puede establecer mediante criterios de rango (<, >, BETWEEN, ...)
Y dos más adicionales:
 OUTER JOIN Para ver, también, las filas que no complen la condición de Join. El
operador de un Outer Join es el signo más (+), en el “lado” del join que es deficiente en
información.
33
 SELF JOIN Combinación de una tabla consigo misma.

S.Q.L.
Ejemplo de Equijoin

Ya que la columna DEPTNO es igual en ambas tablas, ésta debe ir prefijada por el nombre de
la tabla para evitar la ambigüedad.

S.Q.L.
Ejemplo de Non-Equijoins

En este ejemplo se han usado alias de tablas (e para la tabla emp y s para la tabla salgrade).

S.Q.L.
Ejemplo de Outer Join

En este ejemplo se muestran los números y nombres de todos los departamentos, incluidos
aquellos que no tienen empleado.
Si se le añade: AND emp.deptno is null, sólo se mostrarían las no coincidencias.

S.Q.L.

34
Ejemplo de Self Join

En este ejemplo la cláusula WHERE contiene la combinación "dónde un jefe de un trabajador


coincide con el número de empleado para el jefe".

5.11. FUNCIONES PARA MANEJO DE CADENAS, MATEMÁTICAS Y


TIEMPO

Ejemplos:

 Muestre todos los CONSTRAINTS a lo que puede acceder el usuario SCOTT.

SQL> SELECT CONSTRAINT_NAME, TABLE_NAME,

35
SUBSTR(COLUMN_NAME,1,255)
FROM ALL_CONS_COLUMNS
WHERE TABLE_NAME='EMP';

CONSTRAINT_NAME TABLE_NAME
SUBSTR(COLUMN_NAME,1,255)

 Muestre el código del departamento y la cantidad de empleados por departamento.

SQL> SELECT DEPTNO, COUNT (EMPNO) AS CANTIDAD FROM


EMP
GROUP BY DEPTNO;

DEPTNO CANTIDAD
---------- ----------
30 10
10 4

 Las funciones UPPER, LOWER, INITCAP reciben como parámetro una cadena cad.
UPPER(cad).LOWER(cad).INITCAP(cad). Ejemplo: Muestre el nombre del OBJETO
en Mayúscula, Minúscula y Letra capital.

SQL> SELECT UPPER(OBJECT_NAME) MAYUSCULA,


LOWER(OBJECT_NAME) MINUSCULA,
INITCAP(OBJECT_NAME) LETRACAPITAL FROM
ALL_OBJECTS;

MAYUSCULA MINUSCULA LETRACAPIT


---------------- -------------- ----------------
ALLEN allen Allen
WARD ward Ward

36
MARTIN martin Martin
BLAKE blake Blake

5.12. PROCEDIMIENTOS, CURSORES

Procedimientos:
Existen dos maneras de crear procedimientos almacenados en SQL SERVER: utilizando la
sentencia CREATE PROCEDURE y mediante Enterprise Manager.

CREATE [OR REPLACE]


PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT]
<type>,
<param2> [IN|OUT|IN OUT] <type>, ...)]
IS
-- Declaración de variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepción
END [<procedure_name>];

Ejemplo
CREATE OR REPLACE
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER)
IS
-- Declaración de variables locales
BEGIN
-- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE
37
WHERE CO_CUENTA = cuenta;
END Actualiza_Saldo;

Cursores:

Los cursores implicitos se utilizan para realizar consultas SELECT que devuelven un unico
registro.
Con cada cursor implicito debe existir la palabra clave INTO.

Declaración de cursores explícitos

Los cursores explícitos se emplean para realizar consultas SELECT que pueden devolver cero
filas, o más de una fila.

Para trabajar con un cursor explicito necesitamos realizar las siguientes tareas:

 Declarar el cursor.
 Abrir el cursor con la instrucción OPEN.
 Leer los datos del cursor con la instrucción FETCH.

38
 Cerrar el cursor y liberar los recursos con la instrucción CLOSE.

Ejemplo:

39
5.13. USUARIOS

Un usuario es un nombre de acceso a la base de datos oracle. Normalmente va asociado a una


clave (password).

Lo que puede hacer un usuario una vez ha accedido a la base de datos depende de los permisos
que tenga asignados ya sea directamente (GRANT) como sobre algun rol que tenga asignado
(CREATE ROLE).

El perfil que tenga asignado influye en los recursos del sistema de los que dispone un usuario
a la hora de ejecutar oracle (CREATE PROFILE).

La sintaxis es:

CREATE USER username


IDENTIFIED {BY password | EXTERNALLY | GLOBALLY AS
'external_name'}
options;

Donde options:

DEFAULT TABLESPACE tablespace


TEMPORARY TABLESPACE tablespace
QUOTA int {K | M} ON tablespace
QUOTA UNLIMITED ON tablespace
PROFILE profile_name
PASSWORD EXPIRE
ACCOUNT {LOCK|UNLOCK}

Crea un usuario sin derecho a guardar datos o crear objetos:

40
CREATE USER usuariolimitado IDENTIFIED BY miclavesecreta;

CAPÍTULO 6: LIGADURAS DE INTEGRIDAD

6.1. LIGADURAS DE LOS DOMINIOS.

La ligadura de dominio permite la verificación de valores al momento de agregar datos a la


base de datos. Solo aquellos que cumplan con la ligadura serán aceptados como datos válidos,
los demás serán rechazados.

En SQL se utiliza la sentencia check para establecer la ligadura de dominios, ejemplos:


create domain sueldo-por-hora numeric(7,1)
constraint comprobacion-valor-sueldo
check (value >= 800)

create domain numero-cuenta char(10)


constraint comprobacion-numero-cuenta-nulo
check (value not null)

6.2. INTEGRIDAD REFERENCIAL.

Sean r1(R1) y r2(R2) dos relaciones con claves primarias K1 y K2. Se dice que un subconjunto
a de R es una clave externa que hace referencia a K1 de la relación r1 si se exige que para cada
t2 de r2 haya una tupla t1 en r1 tal que t1[K1] = t2[a]

Las exigencias de este tipo se denominan ligaduras de integridad referencial o dependencias de


subconjunto.

La última denominación proviene de que lo anterior puede expresarse como:

41
Pa (r2) PK1 (r2)

6.3. ASERTOS.

La cláusula foreign key puede especificar las acciones a tomar para restaurar la integridad
referencial.
La cláusula on delete cascade asociada con la declaración de la clave externa, provoca que el
borrado se realice en cascada.
La cláusula on up-date cascade, de forma similar realiza una actualización en cascada, si se
modifica la clave primaria.
SQL también permite una acción diferente: establecer a nulo o darle un valor predeterminado
a los atributos de la clave externa, de forma que se mantenga la integridad referencial, con la
cláusula set default
Si hay una cadena de dependencias de claves externas entre varias relaciones, un borrado o una
actualización en uno de sus extremos puede propagarse por toda la cadena, de ahi la
denominación de actualizaciones o borrados en cascada. Las transacciones pueden consistir en
varios pasos, y las restricciones de integridad se pueden violar temporalmente dentro de una
transaccion. Las restricciones de integridad se comprueban solo al final de la transaccion, no
en los pasos intermedios

6.4. Disparadores.
Un disparador es una orden que el sistema ejecuta de manera automática como efecto
secundario de la modificación de la base de datos.
Para diseñar un mecanismo disparador hay que cumplir dos requisitos:
 Especificar las condiciones en las que se va a ejecutar el disparador.
 Esto se descompone en un evento que causa la comprobación del disparador y una
condición que se debe cumplir para ejecutar el disparador.
 Especificar las acciones que se van a realizar cuando se ejecute el disparador.

Los TRIGGERS (disparadores) son procedimientos que se ejecutan cuando se produce un


suceso de base de datos (una operación: INSERT, UPDATE o DELETE) en una tabla
específica.

El acto de ejecutar un disparador se conoce como disparo.

42
Sintaxis:
CREATE [OR REPLACE] TRIGGER nombre_disparador {
BEFORE | AFTER suceso_disparo ON referencia_tabla [FOR EACH
ROW [ WHEN condición_disparo ]] cuerpo_disparador

CAPÍTULO 7: TRANSACCIONES

7.1. CONCEPTO DE TRANSACCIÓN.

Una transacción es un conjunto de acciones llevadas a cabo por un usuario y un programa de


aplicación, que acceden o cambian el contenido de la base de datos.

7.2. Estado de una transacción.

Activa (Active): El estado inicial; la transacción permanece en este estado durante su


ejecución.
Parcialmente Comprometida (Uncommited): La transacción pasa a este estado, después de
ejecutarse la última instrucción.
Fallida (Failed): La transacción pasa a este estado; tras descubrir que no puede continuar la
ejecución normal.
Abortada (Rolled back): La transacción pasa a este estado, después de haber retrocedido la
transacción y restablecido la base de datos a su estado anterior al comienzo de la transacción.
Comprometida (Commited): La transacción pasa a este estado tras, completarse con éxito.
43
7.3. IMPLEMENTACIÓN DE LA ATOMICIDAD Y LA DURABILIDAD.

7.4. EJECUCIONES CONCURRENTES.

44
7.5. IMPLEMENTACIÓN DEL AISLAMIENTO.

7.6. DEFINICIÓN DE TRANSACCIONES EN SQL.


INICIO: no existe una instrucción para definir el inicio de una transacción. (INICIO implícito).
FIN (con confirmación): COMMIT [WORK ] (transacción confirmada parcialmente)
FIN (con anulación): ROLLBACK [WORK ] (transacción anulada)

7.7. TRANSACCIONES EN JAVA


Una transacción es una operación en la que se realizan una serie de operaciones de forma
completa, o no se realiza ninguna.
Por ejemplo, si tenemos que hacer una transferencia de una cuenta a otra en un banco, las dos
operaciones forman un conjunto. No sería lógico que quitásemos efectivo de una cuenta y, por
alguna razón, no pudiéramos ingresar el dinero en la cuenta de destino, o se realizan las dos
operaciones o ninguna.
Una vez iniciada una transacción, ningún cambio queda reflejado hasta que no se confirmen
las operaciones ("commit"), o se anulen las mismas ("rollback").
El API de Java para manipular transacciones se conoce como JTA (Java Transaction Api).

45
CAPÍTULO 8: CONTROL DE CONCURRENCIA

8.1. PROTOCOLOS BASADOS EN EL BLOQUEO.

8.2. OPERACIONES PARA INSERTAR, BORRAR Y ACTUALIZAR.

Algunas transacciones necesitan no sólo acceder a los elementos de datos existentes; sino
también poder crear nuevos elementos de datos. Otras necesitan tener la posibilidad de borrar
elementos de datos.Para examinar la forma en que tales transacciones afectan al control de
concurrencia se introducen las operaciones adicionales siguientes:

Borrar (Q): borra de la base de datos el elemento de datos Q.


Insertar (Q): inserta en la base de datos el nuevo elemento de datos Q y le asigna un valor
inicial.

BORRADO

Para comprender la manera en que puede afectar la presencia de las instrucciones borrar al
control de concurrencia, se debe decidir en que casos una instrucción borrar está en conflicto
con otro instrucción.
Se puede concluir lo siguiente:
En el protocolo de dos fases se necesita un bloqueo exclusivo en un elemento de datos antes de
que se borre dicho elemento.
En el protocolo de ordenación por marcas temporales se debe hacer un prueba similar que la
que se hacía con escribir.

INSERCIÓN

46
No se pueden realizar operaciones leer o escribir sobre un elemento de datos hasta que éste
último exista.
Puesto que insertar (Q) asigna un valor al elemento de datos Q, se trata de insertar de forma
similar a escribir desde el punto de vista del control de concurrencia: En el protocolo de bloqueo
de dos fases, si T-i realiza una operación insertar (Q) se da a Ti un bloqueo exclusivo sobre el
elemento de datos Q recientemente creado.

8.3. BLOQUEOS EN JAVA, A NIVEL DE FILA O TABLA.

47
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Base de Datos II

Elaborado por:
Ing. Daniel Plua
Ing. Ricardo Naranjo

Revisado por:
Ing. Miguel Quiroz

48
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPÍTULO 1: ARQUITECTURAS DE SISTEMAS DE BASES DE DATOS ....................... 4
1.1. SISTEMAS CENTRALIZADOS ............................................................................... 4
1.2. SISTEMAS CLIENTE – SERVIDOR........................................................................ 4
1.3. SISTEMAS A N CAPAS. ......................................................................................... 4
1.4. SISTEMAS DISTRIBUIDOS. ................................................................................... 5
CAPÍTULO 2: TEMAS ESPECIALES ................................................................................ 5
2.1. PRUEBAS DE RENDIMIENTO. .............................................................................. 5
2.2. AJUSTE DEL RENDIMIENTO................................................................................. 6
CAPÍTULO 3: ADMINISTRACIÓN DE LA BASE DE DATOS .......................................... 10
3.1. CASE*METHOD: MODELO ENTIDAD RELACIÓN EXTENDIDO. ........................ 10
3.2. COMPONENTES DE LA ARQUITECTURA DE ORACLE. .................................... 13
3.3. USUARIOS. .......................................................................................................... 16
3.4. SECUENCIAS, SINÓNIMOS................................................................................. 18
3.5. PROCEDIMIENTOS / FUNCIONES Y PAQUETES ALMACENADOS EN PL/SQL.
.................................................................................................................................... 20
3.6. PRIVILEGIOS, PERFILES Y ROLES. ................................................................... 23
3.7. MANEJO DE INSTANCIAS. .................................................................................. 25
3.8. MANIPULACIÓN DE TABLESPACES Y DATAFILES. .......................................... 28
3.9. SEGMENTOS DE DESCARTE (ROLLBACKSEGMENTS). .................................. 29
3.10. SEGMENTOS TEMPORALES. ........................................................................... 30
CAPÍTULO 4: RESPALDO Y RECUPERACIÓN ............................................................. 31
4.1. TIPOS DE RESPALDO. ........................................................................................ 31
4.2. RESPALDO Y RECUPERACIÓN SQL SERVER. ................................................. 32
4.3. RECUPERACIÓN. ................................................................................................ 33
4.4. RESPALDO Y RECUPERACIÓN VS. EXPORTAR E IMPORTAR DATOS........... 35
CAPÍTULO 5: BASES DE DATOS ORIENTADAS A OBJETOS ...................................... 35
5.1. NUEVAS APLICACIONES DE LAS BASES DE DATOS. ...................................... 35
5.2. EL MODELO ORIENTADO A OBJETOS. ............................................................. 35
5.3. LENGUAJES ORIENTADOS A OBJETOS............................................................ 35
CAPÍTULO 6: BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS .......... 36
6.1. RELACIONES ANIDADAS .................................................................................... 36
6.2. LOS TIPOS COMPLEJOS Y LA PROGRAMACIÓN ORIENTADA A OBJETOS. .. 36
6.3. CONSULTAS CON TIPOS COMPLEJOS. ............................................................ 36
6.4. CREACIÓN DE VALORES Y DE OBJETOS COMPLEJOS. ................................. 37
CONSTRUCTORES .................................................................................................... 37
2
6.5. COMPARACIÓN ENTRE LAS BASES DE DATOS ORIENTADAS A OBJETOS Y
LAS BASES DE DATOS RELACIONALES ORIENTADAS A OBJETOS. .................... 38
CAPÍTULO 7: PLAN DE SEGURIDAD PARA BASES DE DATOS .................................. 38
7.1. POLÍTICAS Y PLAN DE SEGURIDAD. ................................................................. 38
7.2. ESTÁNDARES PARA NOMBRES DE USUARIO. ................................................ 41
7.3. ESTÁNDARES PARA CLAVES. ........................................................................... 41
7.4. ESTÁNDARES PARA ROLES. ............................................................................. 42
7.5. ESTÁNDARES PARA OBJETOS DE LA BD......................................................... 42
CAPÍTULO 8: AUDITORIA .............................................................................................. 43
8.1. IMPORTANCIA DE LA AUDITORÍA. ..................................................................... 43
8.2. CONFIGURAR AUDITORÍAS. .............................................................................. 44
8.3. TIPOS DE AUDITORÍA. ........................................................................................ 45
8.4. DEPURACIÓN DE LA INFORMACIÓN DE AUDITORÍA. ...................................... 45
8.5. AUDITORÍA VS. ARCHIVOS LOG. ....................................................................... 45
CAPÍTULO 9: INICIALIZAR UNA BASE DE DATOS ....................................................... 46
9.1. DEFINIR EL DBMS ADECUADO. ......................................................................... 46
9.2. ESTUDIO COMPARATIVO DE DBMS COMERCIALES Y DE LIBRE
DISTRIBUCIÓN. .......................................................................................................... 47
9.3. DEFINIR HARDWARE Y SOFTWARE NECESARIO. ........................................... 47
9.4. CONSIDERACIONES PARA INSTALAR BD. ....................................................... 48
CAPÍTULO 10: TEMAS COMPLEMENTARIOS .............................................................. 48
10.1. ENCRIPTACIÓN DE DATOS Y DESENCRIPTACIÓN DE DATOS ..................... 48
10.2. FUNCIONES HASH ............................................................................................ 49
10.3. ALGORITMOS SIMÉTRICOS Y ASIMÉTRICOS................................................. 50

3
CAPÍTULO 1: ARQUITECTURAS DE SISTEMAS DE BASES DE
DATOS

1.1. SISTEMAS CENTRALIZADOS

 Sistema Monousuario: Un solo usuario usa la computadora


 Sistema Multiusuario: Terminales no realizan procesamiento alguno Interface de
usuario gestionada por el computador central

1.2. SISTEMAS CLIENTE – SERVIDOR.

Interface del lado del usuario


Las herramientas de desarrollo de aplicaciones se utilizan para hacer interface de usuarios:
 Visual Basic,
 Borland Delphi, etc.

1.3. SISTEMAS A N CAPAS.


El desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, sólo
se ataca al nivel requerido sin tener que revisar entre código mezclado. Cada grupo de trabajo está
totalmente abstraído del resto de niveles, de forma que basta con conocer la API que existe entre niveles.
El más común es a 3 niveles:

4
1.4. SISTEMAS DISTRIBUIDOS.
 Almacena la bases de datos en varios servidores.
 No comparten ni memoria ni discos
 Servidores se encuentran en lugares geográficos distintos

CAPÍTULO 2: TEMAS ESPECIALES

2.1. PRUEBAS DE RENDIMIENTO.


Son conjuntos de tareas que se emplean para cuantificar el rendimiento de los sistemas de
software.
El factor diferenciador entre los productos de los diferentes fabricantes es el rendimiento de
esos productos.

Familias de Tareas:
Sistema A:
T1: 99 tps
T2: 1 tps
Sistema B:
T1: 50 tps
T2: 50 tps

Error:
Promedio A= (100 tps /2)= 50 tps

5
Promedio B= (100 tps /2)= 50 tps

La correcta manera es usar la media armónica:

Media armónica A= 2/(1/99+1/1)= 1.98 tps


Media armónica B= 2/(1/50+1/50)= 50 tps

Conclusión: el sistema B es aproximadamente veinticinco veces más rápido que el sistema A


 Clases de aplicaciones en Bases de datos
 OLAP: Mide rendimiento para aplicaciones analíticas
 OLTP: Mide rendimiento para aplicaciones transaccionales

Pruebas TPC
Consejo para el rendimiento del procesamiento de las transacciones (Transaction Processing
PerformanceCouncil, TPC)

TPC-A
TPC-B
TPC-C
TPC-D
TPC-R
TPC-H
TPC-W

2.2. AJUSTE DEL RENDIMIENTO.


Implica mejorar varios parámetros y opciones de diseño para mejorar el rendimiento.
Se pueden ajustar parámetros de bases de datos o aspectos de hardware.

LOCALIZACIÓN DE CUELLOS DE BOTELLA


El rendimiento del sistema suele quedar limitado por un componente o unos pocos
denominados cuellos de botella.

6
Ejemplo:
Un programa pasa el 80% del tiempo en un pequeño bucle, y el 20 % en el resto del código.
Ese pequeño bucle representa el cuello de botella.

PASOS PARA ELIMINARLOS:


Hay que intentar descubrir los cuellos de botella y eliminarlos.
Luego puede ocurrir que otro componente se transforme en un cuello de botella

CONSECUENCIAS DE CUELLOS DE BOTELLA:


Si el sistema tiene cuellos de botella se infrautilizan los componentes y la empresa pierde
dinero.

PARÁMETROS AJUSTABLES
Los DBA suelen ajustar los sistemas de bases de datos a 3 Niveles:
De Hardware
 Ajustes en parámetros de BD.
 Ajuste del esquema y transacciones

7
Velocidad memoria<<Velocidad de disco, 1 ns << 10 ms
De Hardware
 Regla de los 5 minutos: Si una información se usa más de una vez cada cinco minutos
se debe guardar en la caché de memoria.
 Regla del minuto, que indica que los datos con acceso secuencial deben guardarse en
la caché de memoria si se utilizan al menos una vez por minuto.
En base a esto se debe comprar suficiente memoria
De Hardware
El factor limitador no es la capacidad del disco sino la velocidad con que se accede a los datos.
RAID (Redundant Array of Independent Disks): combina varios discos duros en una sola
unidad lógica.

Algunos tipos:
RAID 1
RAID 2
RAID 3
RAID 4
RAID 5
RAID 6
RAID 7
RAID 10

Parámetros ajustables
De Esquema
Consiste en dividir relaciones verticalmente.
Ejemplo:

Se puede dividir la relación cuenta en dos relaciones:

8
Si la mayor parte de transacciones solo utilizan el número de cuenta y saldo se puede optar por
este tipo de ajustes.

AJUSTES DE ÍNDICES
Si las consultas constituyen el cuello de botella se las suele poder acelerar creando los índices
adecuados en las relaciones.
Si el cuello de botella lo constituyen las actualizaciones, ingresos o eliminaciones, puede que
haya demasiados índices.

USO DE VISTAS MATERIALIZADAS


Vista Materializada: almacena el resultado de la consulta, es decir, la materializa, como un
objeto persistente en la base de datos.
Puede acelerar enormemente ciertos tipos de consultas, en especial las consultas de agregación.
Por ejemplo
La creación de una vista materializada que guarde las ventas de cada sucursal puede acelerar
enormemente estas consultas.

AJUSTES DE LAS TRANSACCIONES


Uso de optimizadores: Optimizadores de Bases de datos antiguas no eran buenos, pero los
actuales transforman consultas mal escritas en consultas muy eficientes.
Para el caso de consultas anidadas los optimizadores no funcionan muy bien por lo que es
necesario utilizar el plan de ejecución.

LLAMADAS EN CONJUNTO: Si se ejecuta con frecuencia una consulta con valores


diferentes de un parámetro puede que resulte de ayuda combinar las llamadas en una consulta
más orientada al conjunto que sólo se ejecute una vez.

PROCEDIMIENTOS ALMACENADOS: las consultas se guardan en el servidor en forma


de procedimientos almacenados, que pueden estar compilados con antelación.
9
REDUCCIÓN DE LA CONTENCIÓN DE BLOQUEOS: La ejecución concurrente de
diferentes tipos de transacciones puede llevar a veces a un rendimiento bajo por la contención
de los bloqueos.
Alternativas de solución:
Ejecutar las consultas de gran tamaño en momentos en que las actualizaciones sean pocas o no
haya ninguna.
Instantánea de datos (Oracle)
Usar niveles de consistencia más débiles.

SIMULACIÓN DEL RENDIMIENTO


Software de simulación de rendimiento donde se ingresas característica de hardware como
procesador, memoria, y aspectos de la base de datos. Con el fin de conocer cuál es el
rendimiento de la misma antes de instalarla.

CAPÍTULO 3: ADMINISTRACIÓN DE LA BASE DE DATOS

3.1. CASE*METHOD: MODELO ENTIDAD RELACIÓN EXTENDIDO.

El modelo entidad/relación extendido describe con un alto nivel de abstracción la distribución


de datos almacenados en un sistema. Existen dos elementos principales: las entidades y las
relaciones. Las extensiones al modelo básico añaden además los atributos de las entidades y la
jerarquía entre éstas. Estas extensiones tienen como finalidad aportar al modelo una mayor
capacidad expresiva.

Los elementos fundamentales del modelo son los siguientes:

Entidad

Es aquel objeto, real o abstracto, acerca del cual se desea almacenar información en la base de
datos. La estructura genérica de un conjunto de entidades con las mismas características se
denomina tipo de entidad.

Relación

10
Es una asociación o correspondencia existente entre una o varias entidades. La relación puede
ser regular, si asocia tipos de entidad regulares, o débil, si asocia un tipo de entidad débil con
un tipo de entidad regular. Dentro de las relaciones débiles se distinguen la dependencia en
existencia y la dependencia en identificación.

Se dice que la dependencia es en existencia cuando las ocurrencias de un tipo de entidad débil
no pueden existir sin la ocurrencia de la entidad regular de la que dependen. Se dice que la
dependencia es en identificación cuando, además de lo anterior, las ocurrencias del tipo de
entidad débil no se pueden identificar sólo mediante sus propios atributos, sino que se les tiene
que añadir el identificador de la ocurrencia de la entidad regular de la cual dependen.

Conceptualmente se pueden identificar tres clases de relaciones:

Relaciones 1:1: Cada ocurrencia de una entidad se relaciona con una y sólo una ocurrencia de
la otra entidad.

Relaciones 1:N: Cada ocurrencia de una entidad puede estar relacionada con cero, una o varias
ocurrencias de la otra entidad.

Relaciones M:N: Cada ocurrencia de una entidad puede estar relacionada con cero, una o
varias ocurrencias de la otra entidad y cada ocurrencia de la otra entidad puede corresponder a
cero, una o varias ocurrencias de la primera.

Cardinalidad: representa la participación en la relación de cada una de las entidades afectadas,


es decir, el número máximo y mínimo de ocurrencias de un tipo de entidad que pueden estar
interrelacionadas con una ocurrencia de otro tipo de entidad. La cardinalidad máxima coincide
con el tipo de correspondencia.

Según la cardinalidad, una relación es obligatoria, cuando para toda ocurrencia de un tipo de
entidad existe al menos una ocurrencia del tipo de entidad asociado, y es opcional cuando, para
toda ocurrencia de un tipo de entidad, puede existir o no una o varias ocurrencias del tipo de
entidad asociado.

Dominio

11
Es un conjunto nominado de valores homogéneos. El dominio tiene existencia propia con
independencia de cualquier entidad, relación o atributo.

Atributo

Es una propiedad o característica de un tipo de entidad. Se trata de la unidad básica de


información que sirve para identificar o describir la entidad. Un atributo se define sobre un
dominio. Cada tipo de entidad ha de tener un conjunto mínimo de atributos que identifiquen
unívocamente cada ocurrencia del tipo de entidad. Este atributo o atributos se denomina
identificador principal. Se pueden definir restricciones sobre los atributos, según las cuales un
atributo puede ser:

Univaluado, atributo que sólo puede tomar un valor para todas y cada una de las ocurrencias
del tipo de entidad al que pertenece.
Obligatorio, atributo que tiene que tomar al menos un valor para todas y cada una de las
ocurrencias del tipo de entidad al que pertenece.

La generalización, permite abstraer un tipo de entidad de nivel superior (supertipo) a partir de


varios tipos de entidad (subtipos); en estos casos los atributos comunes y relaciones de los
subtipos se asignan al supertipo. Se pueden generalizar por ejemplo los tipos profesor y
estudiante obteniendo el supertipo persona.
La especialización es la operación inversa a la generalización, en ella un supertipo se
descompone en uno o varios subtipos, los cuales heredan todos los atributos y relaciones del
supertipo, además de tener los suyos propios. Un ejemplo es el caso del tipo empleado, del que
se pueden obtener los subtipos secretaria, técnico e ingeniero.
Categorías. Se denomina categoría al subtipo que aparece como resultado de la unión de varios
tipos de entidad. En este caso, hay varios supertipos y un sólo subtipo. Si por ejemplo se tienen
los tipos persona y compañía y es necesario establecer una relación con vehículo, se puede
crear propietario como un subtipo unión de los dos primeros.
La agregación, consiste en construir un nuevo tipo de entidad como composición de otros y su
tipo de relación y así́ poder manejarlo en un nivel de abstracción mayor. Por ejemplo, se tienen
los tipos de entidad empresa y solicitante de empleo relacionados mediante el tipo de relación
entrevista; pero es necesario que cada entrevista se corresponda con una determinada oferta de
empleo. Como no se permite la relación entre tipos de relación, se puede crear un tipo de
entidad compuesto por empresa, entrevista y solicitante de empleo y relacionarla con el tipo de
entidad oferta de empleo. El proceso inverso se denomina desagregación.
La asociación, consiste en relacionar dos tipos de entidades que normalmente son de dominios
independientes, pero coyunturalmente se asocian.

12
La existencia de supertipos y subtipos, en uno o varios niveles, da lugar a una jerarquía, que
permitirá́ representar una restricción del mundo real.

Una vez construido el modelo entidad/relación, hay que analizar si se presentan redundancias.
Para poder asegurar su existencia se deben estudiar con mucho detenimiento las cardinalidades
mínimas de las entidades, así́ como la semántica de las relaciones.

Los atributos redundantes, los que se derivan de otros elementos mediante algún calculo, deben
ser eliminados del modelo entidad/relación o marcarse como redundantes.

Igualmente, las relaciones redundantes deben eliminarse del modelo, comprobando que al
eliminarlas sigue siendo posible el paso, tanto en un sentido como en el inverso, entre las dos
entidades que unían.

3.2. COMPONENTES DE LA ARQUITECTURA DE ORACLE.

ESTRUCTURA DE MEMORIA

SGA (System Global Area, Shared Global Area)


Es la zona de memoria en la que la BD guarda información sobre su estado. Está disponible
para todos los procesos, por eso se dice que está compartida. Varios usuarios conectados al
mismo tiempo comparten datos de la misma SGA.

Contiene datos e información de control para la comunicación entre procesos cliente y procesos
servidor. Es el nexo de unión y comunicación cliente/servidor. Todo dato necesario se
almacena previamente en memoria.
Se asigna una SGA al comienzo de cada instancia y se destruye cuando se cierra la instancia.

13
Es de lectura y escritura y tiene la siguiente estructura:

 Shared Pool
 Database Buffer Cache
 Redo Log Buffer

Existen 2 estructuras de memoria adicionales que pueden ser configuradas con la SGA:
 Large Pool
 Java Pool

Shared Pool

Almacena:
La más reciente sentencia SQL ejecutada.
La más reciente definición de datos utilizada.

Está compuesto por:


 Library Cache
 Data Diccionary Cache

El tamaño está determinado por el parámetro:


SHARED_POOL_SIZE

Ejemplo de modificación del parámetro:


SQL> ALTER SYSTEM SET SHARED_POOL_SIZE=64;
14
Library Cache
Almacena información acerca de la más reciente sentencia SQL y PL/SQL usada.

Consiste de 2 estructuras:

Shared SQL area


Shared PL/SQL area

Shared SQL y PL/SQL area


Se encuentran las sentencias SQL que han sido analizadas
Antes de analizar un Sentencia Oracle mira a ver si se encuentra otra sentencia exactamente
igual en el área Shared SQL. Si es así no la analiza y pasa a ejecutar la que mantiene en
memoria.
Por todo ello es importante tener Uniformidad en la programación.

Análisis de una Sentencia SQL


Pasos por petición son:
Comprobar si la sentencia se encuentra en el área compartida.
Comprobar si los objetos referenciados son los mismos.
Comprobar si el usuario tiene acceso a los objetos referenciados.

Database Buffer Cache


Contiene copias de los bloques de datos que han sido recuperados desde los datafiles.
Maneja el algoritmo LRU.
La primera vez que un proceso requiere un dato Se busca en Cache:

Encuentra (Cache hit)


No encuentra (Cache miss)
El tamaño es manejado por el parámetro: DB_CACHE_SIZE

Redo Log Buffer

15
Guarda los cambios hechos a los bloques de datos de la Base de Datos.
Principal propósito es la recuperación.
Los cambios guardados son llamados redo entries.
Redo entries contiene información para reconstruir o recrear los datos.
El tamaño es definido por el parámetro LOG_BUFFER

Large Pool
Área opcional de memoria en la SGA.
Usada para:
 Process Server I/O
 Operaciones de Respaldo y Recuperación (RMAN)
 No usa Lista LRU
 Tamaño: LARGE_POOL_SIZE

Java Pool
Requerido para:
 Comandos Java.
 Si se instala y Usa Java
 El Tamaño está dado por el parámetro: JAVA_POOL_SIZE

3.3. USUARIOS.
Los parámetros para CREATE USER son:

Parámetro: Significado
Username: Nombre del Usuario
Password: Palabra clave de la cuenta. Puede ser asociada directamente a una cuenta del
sistema operativo.
Default Tablespace: Espacio de tablas por defecto en el que los objetos de este usuario serán
creados. Esto no da al usuario derechos de crear objetos.
Temporary Tablespace: El espacio de tablas en el que se almacenarán los segmentos
temporales de las ordenaciones.

CREACION

16
 create user [nombre] identified by [contraseña] default tablespace [tablespace]
temporary tablespace [tablespace]
 create user ricardo identified by cont14a default tablespace users temporary tablespace
temp;

ELIMINACIÓN DE USUARIOS

 Los usuarios pueden ser eliminados de la BD utilizando el comando DROP USER. Este
comando tiene un único parámetro, CASCADE, el cual permite borrar todos los objetos
del usuario antes de eliminar el usuario.
 Drop user ricardo cascade;

PRIVILEGIOS DEL SISTEMA

 Los privilegios de sistema se utilizan para distribuir la disponibilidad de los comandos


del sistema utilizados para gestionar la BD.
 GRANT [PRIVILEGIO] TO [USUARIO]
 grant create session to rmontoya;

PRIVILEGIOS A OBJETOS

 Privilegios Los privilegios a objetos permiten darle acceso a usuarios, a objetos de los
que no son propietarios.
 GRANT privilegios ON propietario.objeto ............................................... TO usuario
 grant select, insert on perez.emp to apalacios;

ROLES
 Los privilegios se pueden agrupar en roles, para así facilitar el uso de los privilegios
para aplicarlos a distintos grupos de usuarios. Facilita la Administración.

ROLES
Se pueden crear nuevos roles, se realizan 2 pasos:

17
Create role [nombre_rol]
Grant [privilegio1, ..privilegio n] to [nombre_rol]
create role creadorCuentas;
grant create session, create user to creadorCuentas;
create role alumnos;
grant create session to alumnos;
create role inserta_perez;
grant select, insert on perez.emp to inserta_perez;

3.4. SECUENCIAS, SINÓNIMOS.

Sequences are used to generate unique, sequential integer values that are used as primary key
values in database tables

Sintaxis

CREATE SEQUENCE <sequence name>


[INCREMENT BY <number>]
[START WITH <start value number>]
[MAXVALUE <MAXIMUM VLAUE NUMBER>]
[NOMAXVALUE]
[MINVALUE <minimum value number>]
[CYCLE]
[NOCYCLE];

Example

CREATE SEQUENCE order_number_sequence


INCREMENT BY 1
START WITH 1
MAXVALUE 100000000
18
MINVALUE 1
CYCLE;

Currval: Valor actual de la secuencia


Nexval: Retorna el siguiente valor y lo asigna a la secuencia.
Ejemplo:

CREATE TABLE sales_order (


order_number NUMBER(9)
CONSTRAINT pk_sales_order PRIMARY KEY,
order_amount NUMBER(9,2));

INSERT INTO sales_order


VALUES(order_number_sequence.nextval, 155.59 );
INSERT INTO sales_order
VALUES(order_number_sequence.nextval, 450.00 );
INSERT INTO sales_order
VALUES(order_number_sequence.nextval, 16.95);

SINÓNIMOS.

Un sinónimo es un nombre alternativo que identifica una tabla en la base de datos.


Con un sinónimo se pretende normalmente simplicar el nombre original de la tabla,
También se suelen utilizar para evitar tener que escribir el nombre del propietario de la tabla.

Sintaxis:

CREATE SYNONYM
FOR ;

19
Ejemplo:
CREATE SYNONYM so
FOR sales_order ;

Select * FROM SO;

DROP SYNONYM so;

3.5. PROCEDIMIENTOS / FUNCIONES Y PAQUETES


ALMACENADOS EN PL/SQL.

PROCEDIMIENTOS

Existen dos maneras de crear procedimientos almacenados en SQL SERVER: utilizando la


sentencia CREATE PROCEDURE y mediante Enterprise Manager.

CREATE [OR REPLACE]


PROCEDURE <procedure_name> [(<param1> [IN|OUT|IN OUT] <type>,
<param2> [IN|OUT|IN OUT] <type>, ...)]
IS
-- Declaración de variables locales
BEGIN
-- Sentencias
[EXCEPTION]
-- Sentencias control de excepción
END [<procedure_name>];

Ejemplo:
CREATE OR REPLACE
PROCEDURE Actualiza_Saldo(cuenta NUMBER,
new_saldo NUMBER)

20
IS
-- Declaración de variables locales
BEGIN
-- Sentencias
UPDATE SALDOS_CUENTAS
SET SALDO = new_saldo,
FX_ACTUALIZACION = SYSDATE
WHERE CO_CUENTA = cuenta;
END Actualiza_Saldo;

FUNCIONES

Una función es un bloque nombrado PL/SQL que devuelve un valor.


Una función puede estar almacenada en la B.D., como objeto de la B.D., para repetidas
ejecuciones.

Una función puede ser llamada como parte de una expresión.

Desde dónde llamarlas


Como columna de un SELECT.
Condiciones en cláusulas WHERE y HAVING.
Cláusulas ORDER BY y GROUP BY.
Cláusula VALUES de un comando INSERT.
Cláusula SET de un comando UPDATE.

21
Restricciones en Funciones
No se permiten comandos INSERT, UPDATE o DELETE.

Ejemplo:
create or replace function f_incremento10 (avalor number) return number is
begin
return avalor+(avalor*0.1);
end;

PAQUETE

22
Llamada

3.6. PRIVILEGIOS, PERFILES Y ROLES.

Privilegios Los privilegios de sistema son permisos para realizar ciertas operaciones en la base
de datos.
Los siguientes son algunos de los privilegios de sistema existentes:

 create session: para conectarse a la base de datos;

23
 create table: crear tablas;
 create sequence: crear secuencias;
 create view: crear vistas;
 create trigger: crear disparadores en su propio esquema;
 create procedure: crear procedimientos y funciones;
 execute any procedure: ejecutar cualquier procedimiento en cualquier esquema;
 create user: crear usuarios y especificar claves;
 create role: crear roles;
 drop user: eliminar usuarios.
Se asignan privilegios de sistema a un usuario mediante la instrucción "grant":
Sintaxis básica:
 grant PERMISODESISTEMA to USUARIO;

PERFILES

Los perfiles se utilizan para limitar la cantidad de recursos del sistema y de la BD disponibles
para un usuario. Si no se definen perfiles para un usuario se utiliza el perfil por defecto, que
especifica recursos ilimitados.

Sintaxis
Los perfiles se pueden crear via el comando CREATE PROFILE, y se
pueden modificar con la sentencia ALTER PROFILE.

CREATE PROFILE NOMBREPERFIL LIMIT


{NOMBRE DE LOS LÍMITES}
{ENTERO [K | M] | UNLIMITED | DEFAULT };

UNLIMITED= No hay límites sobre un recurso en particular.


DEFAULT= Coge el límite del perfil default
Ejemplo:

24
ROLES:

Un rol es una forma de agrupar permisos (o privilegios) para asignarlos luego a los usuarios.
Cada usuario puede tener varios roles.

Ejemplo de creación de un rol:

CREATE ROLE MI_PROPIO_ROLE


Crea un rol sin password:
CREATE ROLE role NOT IDENTIFIED
Crea un rol con password:
CREATE ROLE role IDENTIFIED BY password
Crea un rol de aplicación:
CREATE ROLE role IDENTIFIED USING [schema.]package
Crea un rol basado en uno del S.O.:
ALTER ROLE role IDENTIFIED EXTERNALLY

3.7. MANEJO DE INSTANCIAS.

25
Startup Database e Instancia
Son 3 los pasos que se dan para iniciar una base de datos y que esté disponible.
Iniciar la instancia
Montar la Base
Abrir la Base

Iniciar la Instancia
Al Iniciar la instancia se reserva el espacio de memoria para la SGA y la creación de los
procesos de background.
Es el paso previo para montar la base de datos.
Si una instancia ha sido iniciada pero la base no ha sido montada, entonces ninguna base de
datos está asociada a esa estructura de memoria.
Antes de iniciar la instancia Oracle lee el archivo de parámetros que determina la inicialización
de la instancia.

Montar la Base
Montar una base asocia una base de datos con una instancia previamente iniciada.
Después que la instancia está asociada a la base de datos, la base de datos podría estar cerrada
y es accesible únicamente para los administradores.
El administrador puede iniciar la instancia y solo montar la base para realizar operaciones
específicas.
Cuando se monta la base y se asocia a la instancia, la instancia busca el control files y los abre.
Cuando estos son abiertos oracle lee los nombres de los datafiles y redo log files.

Open Database
Abrir una base de datos montada, permite que la base esté disponible para operaciones
normales.
Cualquier usuario valido puede conectarse a la base y accesar su información una vez abierta.
Cuando se abre la base de datos oracle pone online los datafiles y los redo log files

Arrancar una Montar una BD Abrir una BD


instancia de BD

Fase Nomount Mount Open

3 Startup

26
2+1 startup mount alter database open;

1+1+1 startup nomount alter database alter database open;


mount;

Al Decir que la la Decir que la base Decir que la base de


finalizar la instancia está de datos está datos está abierta
fase, el arrancada significa montada significa significa que está
significado que existen que los procesos y disponible a los
del estado procesos y recursos recursos de la usuarios, y que se
es que van a ser instancia se asocian han abierto todos los
asociados a los a los ficheros de la archivos log.
ficheros de esa BD BD física

Pasos que ● Se lee el ● Se localizan ● Se abren y


se realizan archivo los datafiles bloquean los
init<sid>.or (*.dat, datafiles
a *.dbf) (*.dat, *.dbf)
● Se ● Se abren y ● Si es la
identifican leen los primera
los control files instancia, se
controlfiles (archivos de obtiene el
ctl<sid>.ora control, startup lock
● Se crea e ctl<sid>.ora ● Abre los
inicializa la ) online redo
SGA ● Se "monta" logs
usando la BD (se ● Si es la
init<sid>.or obtiene primera
a instance instancia, se
● Se arrancan lock) realiza crash
los procesos ● Se recovery si
batch de determina es necesario
background el modo de
apertura de
la BD
(Normal o
crash
recover)

PARAR LA BASE DE DATOS

shutdown normal
27
La Base de Datos no se parará si hay usuarios conectados

shutdown transactional
Después de ejecutarla, los clientes no podrán comenzar nuevas transacciones, y la base de datos
se parará cuando todas se hayan confirmado (commit) o anulado (rollback)

Shutdown immediate

Todas las sentencias SQL se terminan inmediatamente, no se espera a que se desconecten los
usuarios. Las transacciones no confirmadas (commit) SI se deshacen, por lo que la Base de
Datos se podrá mantener consistente.

shutdown abort

Se usa cuando muere un proceso background y no se puede tirar la Base de Datos en modo
normal o immediate. Las transacciones no confirmadas (commit) NO se deshacen y la Base de
Datos puede necesitar crash recovery durante el siguiente startup.

3.8. MANIPULACIÓN DE TABLESPACES Y DATAFILES.


CREACIÓN DE UN TABLESPACE

CREATE TABLESPACE nombre_tablespace


DATAFILE ‘nombre_archivo’ SIZE tamaño
[,‘nombre_archivo’ SIZE tamaño]
[MINIMUM EXTENT tamaño [K|M]] /*control de la fragmentación*/

Ampliación de un Tablespace
 Añadir un nuevo archivo:
 ALTER TABLESPACE nombre ADD DATAFILE •earchivo•f SIZE tamaño;

MODIFICACIÓN DE UN TABLESPACE

 Cambiar los valores de almacenamiento por defecto:


 ALTER TABLESPACE nombre DEFAULT STORAGE (...);
28
 Sólo para los objetos nuevos que se creen.

DISPONIBILIDAD DE UN TABLESPACE

 Un tablespace puede estar activo o desactivado. Si está desactivado los usuarios no


pueden acceder al mismo.
 Para cambiar su estado:
 ALTER TABLESPACE nombre ONLINE|OFFLINE
 Borrado de un Tablespace
 ¡CUIDADO! DROP TABLESPACE nombre [INCLUDING CONTENTS];
 No borra los archivos asociados.

3.9. SEGMENTOS DE DESCARTE (ROLLBACKSEGMENTS).


Básicamente es información que es utilizada por Oracle para hacer un rollback (deshacer), a
los cambios que hemos hecho a nuestros datos en una transacción y principalmente tiene los
siguientes tres usos:

Deshacer los datos en nuestra transacción cuando ejecutamos el comando ROLLBACK


Cuando ejecutamos un rollback,los registros de Undo son usados para deshacer los cambios en
la Base de Datos a nuestra transacción que no ha efectuado un commit.
Poder tener consistencia de lectura de datos
Oracle utiliza los registros de tipo Undo para mantener una imagen consistente de los datos,
mientras son modificados por otro usuario.
Recuperar la Base de Datos
Los registros de tipo Undo son usados en la recuperación de la Base de Datos, para deshacer
cualquier cambio en nuestros datos a los que no se haya efectuado commit y se encuentre en
los datafiles.

Este registro es manejado en un tablespace especial de tipo undo, y puedes ver que tablespace
es de tipo undo en la vista dba_tablespaces

29
TESTDB >select tablespace_name
from dba_tablespaces where contents='UNDO';
TABLESPACE_NAME
------------------------------
UNDOTBS

En este tablespace se van a almacenar unicamente segmentos de tipo undo, que a su vez este
segmento está compuesto de mínimo dos undo extents,los segmentos de tipo undo son escritos
en ellos de forma circular.

En este tipo de tablespace no podemos almacenar una tabla o un indice, el mismo manejador
de base de datos no lo permite. También hay que saber que la base de datos nos permite tener
más de un tablespace de tipo undo pero solamente uno puede estar activo a la vez.

3.10. SEGMENTOS TEMPORALES.


Cuando Oracle procesa las consultas se puede ver en la necesidad de utilizar espacio en disco
para poder llevar a cabo algunas partes del parsing (análisis) y de la ejecución de la misma.
Solamente utilizará este tipo de segmentos cuando no pueda realizar la consulta íntegramente
en memoria o cuando no pueda buscarse un método alternativo para realizarla utilizando los
índices.

Hay varios tipos de sentencias en las que Oracle se ve en la obligación de utilizar los segmentos
temporales:

SELECT ... ORDER BY.


CREATE INDEX.
SELECT ... GROUP BY.
SELECT ... UNION ...
SELECT DISTINCT ...
SELECT INSERSEC ...
SELECT MINUS ...

30
Se puede dar el caso en el que algunas consultas en las que intervengan joins en los que no
haya índices que faciliten la unión y en las que se den a la vez sentencias del tipo "group by" y
"order by" o incluso "distinct", en las que no solo se requiere de un nuevo segmento temporal
sino que pueden adquirirse dos segmentos para poder realizar dichas consultas.

Como es natural, cuantas más operaciones se hagan en memoria mejor será el rendimiento del
sistema, por lo que si en nuestra aplicación existe un número considerable de consultas de las
mencionadas anteriormente, resulta muy apropiado hacer un tunning para decidir si ampliar la
zona de memoria reservada para las ordenaciones, aumentando el valor del parámetro
SORT_AREA_SIZE.

En Oracle también existen las tablas temporales y los índices temporales para dichas tablas.
Estos objetos tambíen utilizan segmentos temporales, pero se les asigna y desasigna de forma
diferente a como se hace con las consultas, creación de índices y ordenaciones.

CAPÍTULO 4: RESPALDO Y RECUPERACIÓN

4.1. TIPOS DE RESPALDO.

Backups del SO
Backups de la BD en Frio
Backups de la BD en Caliente
Backups Lógicos con Export/Import

BACKUPS DEL SO
 Almacena todos los ficheros del sistema
 Es el más sencillo de ejecutar,
 Consume mucho tiempo
 Hace inaccesible al sistema mientras se lleva a cabo.

Los pasos de este tipo de backup son los siguientes:


 Parar la BD y el SO
 Arrancar en modo superusuario.

31
 Realizar copia de todos los ficheros del sistema de ficheros
 Arrancar el sistema en modo normal y luego la BD.

BACKUPS DE LA BD EN FRIO

Los backups en frio implican parar la BD en modo normal y copiar todos los ficheros sobre los
que se asienta.
Antes de parar la BD hay que parar también todos las aplicaciones que estén trabajando con la
BD.
Una vez realizada la copia de los ficheros, la BD se puede volver a arrancar.

BACKUPS DE LA BD EN CALIENTE

El backup en caliente se realiza mientras la BD está abierta y funcionando en modo


ARCHIVELOG.
Habrá que tener cuidado de realizarlo cuando la carga de la BD sea pequeña.
Este tipo de backup consiste en copiar todos los ficheros correspondientes a un tablespace
determinado, los ficheros redo log archivados y los ficheros de control.
Esto para cada tablespace de la BD.

BACKUPS LÓGICOS CON EXPORT/IMPORT

Estas utilidades permiten al DBA hacer copias de determinados objetos de la BD, así como
restaurarlos o moverlos de una BD a otra.
Estas herramientas utilizan comandos del SQL para obtener el contenido de los objetos y
escribirlos en/leerlos de ficheros.

4.2. RESPALDO Y RECUPERACIÓN SQL SERVER.


El componente de copia de seguridad y restauración de SQL Server ofrece una protección
esencial para los datos críticos almacenados en las bases de datos de SQL Server. Para
minimizar el riesgo de pérdida de datos catastrófica, debe realizar copias de seguridad de las
bases de datos para conservar las modificaciones en los datos de forma periódica. Una
estrategia de copias de seguridad y restauración correctamente planeada contribuye a la

32
protección de las bases de datos de la pérdida de datos derivada de daños causados por
diferentes errores. Pruebe la estrategia mediante la restauración de las copias de seguridad y la
posterior recuperación de la base de datos para estar preparado y poder responder de forma
eficaz ante un desastre.

La copia de seguridad de las bases de datos de SQL Server, la ejecución de procedimientos de


restauración de prueba de las copias de seguridad y el almacenamiento de las copias en una
ubicación segura y fuera del sitio contribuyen a protegerse ante una pérdida de datos
catastrófica. Las copias de seguridad son la única forma de proteger los datos.
Con las copias de seguridad válidas de una base de datos puede recuperar los datos en caso de
que se produzcan errores, por ejemplo:

Errores de medios.
Errores de usuario, por ejemplo, quitar una tabla por error.
Errores de hardware, por ejemplo, una unidad de disco dañada o la pérdida permanente de un
servidor.

Desastres naturales. El uso de la copia de seguridad de SQL Server en el servicio de


almacenamiento Blob de Windows Azure le permite crear una copia de seguridad externa en
una región diferente de la ubicación local, con lo que podrá utilizarla en caso de que un desastre
natural afecte a su ubicación.

Además, las copias de seguridad de una base de datos son útiles para fines administrativos
habituales, como copiar una base de datos de un servidor a otro, configurar Grupos de
disponibilidad AlwaysOn o la creación de reflejo de la base de datos y el archivo.

4.3. RECUPERACIÓN.

Los ficheros redo log contienen los cambios realizados sobre la BD. Conviene presentar
algunos conceptos relacionados con ellos.

VECTOR DE CAMBIO
Describe un cambio simple en un bloque de datos de la BD. Entre otros datos, contiene el
número de versión, el código de la transacción, y la dirección del bloque afectado.

REGISTRO REDO LOG


33
Es un conjunto de vectores de cambio que describen un cambio atómico sobre la BD. La
transacción es también la unidad de recuperación.
Evolución de Redo log por día, Se puede calcular ejecutando el comando archive log list en
dos días consecutivos y calculando la diferencia del número de secuencia de los ficheros redo
log, multiplicado por el tamaño de un fichero redo log:

SVRMGR> archive log list;


Database log mode No Archive Mode
Automatic archival Disabled
Archive destination /opt/app/oracle/admin/demo/arch/arch.log
Oldest online log sequence 3
Current log sequence 5
SYSTEM CHANGE NUMBER, SCN

Es un dato que define la versión confirmada de la BD en este instante de tiempo. Cuando una
transacción es confirmada, se le asigna un SCN que la identifica unívocamente. Los ficheros
redo log son marcados con dos SCN. Cuando se abre un nuevo fichero redo log se le marca
con un SCN, low SCN, que es uno más que el SCN mayor del anterior fichero redo log; y su
high SCN es puesto a infinito. Los SCN también se asocian al fichero de control, ya que cuando
se para una BD, un tablespace o fichero de datos, se almacena para cada fichero de datos su
stop SCN en el fichero de control.

CAMBIO DE REDO LOG

Es el proceso mediante el cual se deja de utilizar un fichero redo log y el LGWR cambia al
siguiente fichero redo log disponible. Se puede hacer con el comando alter system switch
logfile.

CHECKPOINTS

Son activados automáticamente durante el funcionamiento normal de la instancia, pero pueden


ser activados manualmente con el comando alter system checkpoint local o alter system
checkpoint global dependiendo si nos referimos a la instancia en la que estamos, o si queremos
que afecte a todas las instancias activas, respectivamente. Cada checkpoint lleva implícito un
SCN, y Oracle asegura que todos los cambios con un SCN menor que el del checkpoint dado
han sido escritos en el disco.
34
4.4. RESPALDO Y RECUPERACIÓN VS. EXPORTAR E IMPORTAR
DATOS.

El exportar e importar datos se lo hace más para objetos discretos de la base de datos como
tablas, el respaldo y recuperación se lo puede hacer en una base de datos completa o un esquema
completo

CAPÍTULO 5: BASES DE DATOS ORIENTADAS A OBJETOS

5.1. NUEVAS APLICACIONES DE LAS BASES DE DATOS.


El usuario pueda crear sus propios tipos de datos, para ser utilizados en aquella tecnología.
 Permiten crear métodos para esos tipos de datos.
 Hace posible la creación de funciones miembro usando tipos de datos definidos por el
usuario
 Proporciona flexibilidad y seguridad.

5.2. EL MODELO ORIENTADO A OBJETOS.

Se usa para describir una base de datos que ha evolucionado desde el modelo relacional hacia
otra más amplia que incorpora conceptos del paradigma orientado a objetos.
Contiene ambas tecnologías:
 Relacional y Objetos.

5.3. LENGUAJES ORIENTADOS A OBJETOS.


Otro motivo para la creación de las bases de datos orientadas a objetos es el creciente uso de
los lenguajes orientados a objetos para desarrollar aplicaciones. Las bases de datos se han
convertido en piezas fundamentales de muchos sistemas de información y las bases de datos.
Tradicionales son difíciles de utilizar cuando las aplicaciones que acceden a ellas están escritas
en un lenguaje de programación orientado a objetos como C++, Smalltalk o Java. Las bases de
datos orientadas a objetos se han diseñado para que se puedan integrar directamente con
aplicaciones desarrolladas con lenguajes orientados a objetos, habiendo adoptado muchos de
los conceptos de estos lenguajes.

35
CAPÍTULO 6: BASES DE DATOS RELACIONALES ORIENTADAS A
OBJETOS

6.1. RELACIONES ANIDADAS

Nacen como una extensión del modelo relacional, en el que los dominios de dicha base de datos
ya no son sólo atómicos, por lo que no se cumple la 1FN, debido a que las tuplas también
pueden ser una relación, que llevará a la creación de una relación de relaciones. De este modo,
se genera la posibilidad de guardar objetos más complejos en una sola tabla con referencias a
otras relaciones, con lo que se acerca más al paradigma de POO.

6.2. LOS TIPOS COMPLEJOS Y LA PROGRAMACIÓN ORIENTADA A


OBJETOS.

Tipos: dentro de lo que llamamos tipos de datos complejos podemos definir los siguientes:
Colecciones: también conocidos como conjuntos, este tipo de datos clasifican los arrays y los
conjuntos en que los elementos pueden aparecer varias veces.
Tipos estructurados: permiten representación directa de los atributos compuestos en los
diagramas entidad-relación (DER).
Objetos de gran tamaño: desde hace varios años que se necesita almacenar datos con atributos
muy grandes (varios megabytes), como libros, canciones, etcétera, e incluso aún más grandes;
como mapas de alta resolución, video u otros que pueden llegar fácilmente a los gigabytes.

6.3. CONSULTAS CON TIPOS COMPLEJOS.

ACCESO A DATOS ESTRUCTURADOS


Se hace referencia al nombre del atributo compuesto utilizando una notación con un punto. Se
verá mejor con un ejemplo sencillo: averiguar el título y el nombre de la editorial de cada
documento. La consulta siguiente lleva a cabo esa tarea.

select título, editorial.nombre


from libros
Obsérvese que se hace referencia al campo nombre del atributo compuesto editorial.

Expresiones de ruta

36
Las referencias se desreferencian en SQL: 1999 con el símbolo ->. Considérese otra vez la tabla
departamentos. Se puede usar la siguiente consulta para hallar los nombres y direcciones de los
directores de todos los departamentos.

select director -$>$nombre, director -$>$dirección


from departamentos

Una expresión como director->nombre se denomina una expresión de ruta.

Dado que directores una referencia a una tupla de la tabla persona, el atributo nombre en la
consulta anterior es el atributo nombre de la tupla de la tabla persona.

6.4. CREACIÓN DE VALORES Y DE OBJETOS COMPLEJOS.

CONSTRUCTORES

Tablas de objetos: se puede definir una tabla para almacenar los clientes de este año y otra para
almacenar los de años anteriores de la siguiente manera:

37
6.5. COMPARACIÓN ENTRE LAS BASES DE DATOS ORIENTADAS
A OBJETOS Y LAS BASES DE DATOS RELACIONALES
ORIENTADAS A OBJETOS.

Los puntos fuertes de los varios tipos de sistemas de bases de datos pueden resumirse de la
manera siguiente:

Sistemas relacionales: tipos de datos sencillos, lenguajes de consulta potentes, protección


elevada.
Bases de datos orientadas a objetos basadas en lenguajes de programación persistentes:
tipos de datos complejos, integración con los lenguajes de programación, elevado rendimiento.
Sistemas relacionales orientados a objetos: tipos de datos complejos, lenguajes de consulta
potentes, protección elevada.

CAPÍTULO 7: PLAN DE SEGURIDAD PARA BASES DE DATOS

7.1. POLÍTICAS Y PLAN DE SEGURIDAD.

Un DBA debe tener en cuenta y desarrollar las siguientes políticas:


● Política de Seguridad del Sistema
● Política de Seguridad de la Información
● Política de Seguridad del Usuario
● Política Administrativa de Passwords
● Política de Auditoría

Seguridad de sistema:
Incluye:
 Administración de usuarios de base de datos
 Autentificación de usuarios
 Seguridad de Sistemas Operativos

POLÍTICA DE SEGURIDAD DE LA INFORMACIÓN


38
La seguridad de datos incluye los mecanismos que controlan el acceso y el uso de la base de
datos en el nivel de objeto.
Su política de seguridad de datos determina que usuarios tienen acceso a objetos de esquema
específicos, y los tipos específicos de acciones permitidos para cada usuario sobre el objeto.
La seguridad de los datos debería estar basada sobre la sensibilidad de los datos.
Si la información no es sensible, entonces la política de seguridad de datos puede ser más
flexible.
Sin embargo, si los datos son sensibles, una política de seguridad debe ser desarrollada para
mantener un fuerte control sobre el acceso a los objetos.

Seguridad de Usuarios
Seguridad del Usuario General
Se debe establecer:
 Seguridad por contraseña
 Administración de privilegios

SEGURIDAD POR CONTRASEÑA

Los administradores de seguridad deberían desarrollar una política de seguridad por contraseña
para mantener la seguridad de acceso a la base de datos.

Por ejemplo:
Los usuarios de base de datos deberían ser advertidos de cambiar su contraseña cada cierto
período regular, y por supuesto, cuando sus contraseñas son reveladas a otros.
Forzando a un usuario a modificar su contraseña en tales situaciones, los accesos a bases de
datos sin autorización pueden ser reducidos.
Para proteger mejor la confidencialidad de su contraseña, Oracle puede ser configurado para
utilizar contraseñas encriptadas para conexiones cliente/servidor y servidor/servidor.

ADMINISTRACIÓN DE PRIVILEGIOS

39
Los administradores de seguridad deben considerar los temas relacionados a la administración
de privilegios para todos los tipos de usuarios.

Por ejemplo:
Si se tiene muchos usuarios en una BD, es beneficioso utilizar roles para administrar los
privilegios disponibles a usuarios.
En una base de datos con un número de usuarios reducido, podría ser mas fácil otorgar
privilegios explícitamente a los usuarios y anular el uso de roles.

SEGURIDAD DE PASSWORDS

La seguridad de los sistemas de base de datos depende de no divulgar las passwords en ningún
momento.
No obstante, son vulnerables al robo, falsificación y abuso. Para permitir un mayor control en
la seguridad sobre las bases de datos, la política administrativa de passwords de Oracle es
controlada por DBAs.

Se debe considerar:

 Cierre de cuenta
 Expiración de las passwords
 Verificación en la complejidad de passwords

POLÍTICA DE AUDITORIA

Los administradores de Seguridad deben establecer una política para el procedimiento de


auditoria de cada base de datos.
Cuando es necesaria una auditoria el administrador de seguridad debe decidir a qué nivel de
detalle se realizará la auditoría de la base de datos.
Una vez detectado alguna actividad de origen sospechosa a través del sistema general de
auditoria, se realizará una auditoría más específica.

40
7.2. ESTÁNDARES PARA NOMBRES DE USUARIO.

Los nombres de usuario, permiten a los usuarios acceder con los privilegios de acceso
apropiados.
Se debe seguir un estándar para asignar nombres de usuario para facilitar su seguimiento.
Además, los nombres deben ser fáciles para que los usuarios los recuerden.
Un esquema simple para seleccionar un nombre de usuario es usar la inicial del primer nombre
y las siete primeras letras del apellido del usuario.

Por ejemplo, Juan piguabe sería jpiguab.

Si este esquema da como resultado nombres duplicados, puede utilizar la primera inicial, la
inicial del segundo nombre y los seis primeros caracteres del apellido del usuario.

Por ejemplo, Juan Pedro Piguabe sería jppiguab.

Si este esquema sigue dando como resultando nombres duplicados, se tomará el siguiente
esquema para crear un nombre de usuario:
La primera inicial, la inicial del segundo nombre, los primeros cinco caracteres del apellido del
usuario
El número 1, 2 o 3, y así sucesivamente hasta tener un nombre único
Por ejemplo, Juan Pedro Piguabe sería jppigua1.
Jorge Paul Piguabe sería jppiguab2.

7.3. ESTÁNDARES PARA CLAVES.

Han de seguirse las siguientes directrices:

Todas los contraseñas deberán cambiarse con una periodicidad de al menos una vez cada seis
meses.
Ante la sospecha de que una contraseña haya sido comprometida, se cambiará la misma de
forma inmediata.

41
Las contraseñas nuevas serán generadas con las características recomendadas y se les
comunicará a los usuarios su contraseña siempre en estado “expirado” para obligar al usuario
a cambiarlo en el primer uso que hagan de la cuenta o servicio
Una contraseña fuerte debe tener las siguientes características:
 Más de ocho caracteres.
 Mezcla de caracteres alfabéticos y no alfabéticos.
 No ser ni derivarse de una palabra del diccionario, de la jerga o de un dialecto.
 No derivarse del nombre del usuario o de algún pariente cercano.
 No derivarse de información personal (del número de teléfono, número de
identificación, DNI, fecha de nacimiento, etc...) del usuario o de algún pariente cercano.

7.4. ESTÁNDARES PARA ROLES.

 Mantener nombres cortos y descriptivos.


 Mantener nombres de roles únicos,
 No se aceptan espacios en blanco en medio de los identificadores; sin embargo, su uso
está permitido si se usan identificadores delimitados por comillas dobles.
 En el presente estándar, no se permiten los espacios en blanco como parte de un
identificador.

7.5. ESTÁNDARES PARA OBJETOS DE LA BD.

42
CAPÍTULO 8: AUDITORIA

8.1. IMPORTANCIA DE LA AUDITORÍA.

En la actualidad, las empresas almacenan cada vez más datos sensibles en sus servidores:
 Información de clientes y personas, Información estratégica, Proyectos,
Investigaciones, etc.

Que son de vital importancia para la organización y el buen funcionamiento de ésta.

43
Supone un reto para las empresas salvaguardar éstos datos sensibles ya que la custodia de ésta
información es una necesidad y una obligación, incluso por políticas internas y leyes.
Es importante tener la capacidad de detectar si se ha realizado un acceso autorizado o no y si
éste ha sido o no adecuado, quién lo ha hecho, cuando y qué información se ha podido
comprometer.

8.2. CONFIGURAR AUDITORÍAS.


Verificar si existe auditorias activadas.
Con cualquiera de los siguientes comandos:

select name, value


from v$parameter
where name like 'audit_trail';
SHOW PARAMETERS AUDIT;
Es necesario activar la escritura en las tablas de auditoría activando el
parámetro de inicialización AUDIT_TRAIL.
Se puede activar o desactivar modificando dicho parámetro, se puede hacer
a través de sentencias SQL.

Activar una Auditoria:


ALTER SYSTEM SET audit_trail = ‘DB’ SCOPE=SPFILE;

Para desactivar la auditoría ejecutaremos el siguiente comando:


ALTER SYSTEM SET AUDIT_TRAIL = ‘NONE’ SCOPE=SPFILE;

44
8.3. TIPOS DE AUDITORÍA.

8.4. DEPURACIÓN DE LA INFORMACIÓN DE AUDITORÍA.

Si tenemos la auditoria de oracle activada y el tablespace donde se encuentran las tablas está
al 100%:
Los usuarios, aplicaciones no podrán conectarse a la BD.

Para depurar la información se siguen los siguientes pasos:

1. En que tablespace se encuentran las tablas de auditoria


2. Mover las tablas a otro tablespace distinto a system y asegurarnos que
tenga espacio suficiente:
3. Limpiar los registros de auditoría
4. Ejecutamos el procedimiento de borrado

8.5. AUDITORÍA VS. ARCHIVOS LOG.

En Oracle se puede usar Logs para contener:


 Mensajes de todo tipo de eventos,
 Incluye encendido y apagado de Bases,
 Errores Mensajes de Warning, etc
 Mientras que la auditoria es un monitoreo específico sobre operaciones realizadas en la
base de datos.

45
CAPÍTULO 9: INICIALIZAR UNA BASE DE DATOS

9.1. DEFINIR EL DBMS ADECUADO.

Consideraciones al elegir un DBMS

 Número de usuarios
 Número de transacciones
 Cantidad de datos para almacenar
 Consistencia en la información
 Presupuesto
 Experiencia propia o externa

46
9.2. ESTUDIO COMPARATIVO DE DBMS COMERCIALES Y DE LIBRE
DISTRIBUCIÓN.

9.3. DEFINIR HARDWARE Y SOFTWARE NECESARIO.

Los componentes de hardware del SGBDD constan de:

 Los volúmenes de almacenamiento secundario, como Discos magnéticos, que se


emplean para contener los datos almacenados,
 Dispositivos asociados de E/S,
 Los controladores de dispositivos,
 Los canales de E/S, entre otros.
 Los procesadores

Memoria principal asociada usados para apoyarla ejecución del software del sistema de base
de datos

SOFTWARE:

47
El sistema de administración de base de datos (DBMS) maneja todas las solicitudes de acceso
a la base de datos para:
 Agregar y eliminar archivos, Recuperar y almacenar datos desde y en dichos archivos.
 El DBMS ocultar a los usuarios de la base de datos los detalles al nivel de hardware.
 El DBMS ofrece a los usuarios una percepción de la base de datos que está en cierto
modo, por encima del nivel del hardware y que maneja las operaciones del usuario .
 El DBMS es el componente de software más importante del sistema en general, aunque
no es el único, Otros software que apoyan como herramientas:
 Herramientas de transferencias de archivos: FTP, SFTP…
 Herramientas de conexión para ejecución de comandos: Telnet, Ssh…
 Herramientas de compresión de arhivos. Gzip, tuzip…

9.4. CONSIDERACIONES PARA INSTALAR BD.

Analizar qué información contendrá la base de datos:


 Número de Transacciones
 Volúmenes de datos, etc.
 Definir qué tipo de Hardware usar de acuerdo al tipo aplicación que manejara.
 Dimensionar correctamente el tamaño del sistema operativo, para que no ocurra que
por la falta espacio en SO deje de funcionar la BD.(TS extendibles)
 Probar que las aplicaciones tengan la conexión correcta con la base.

CAPÍTULO 10: TEMAS COMPLEMENTARIOS

10.1. ENCRIPTACIÓN DE DATOS Y DESENCRIPTACIÓN DE DATOS

Una manera muy sencilla de llevar a cabo esta tarea es mediante el paquete
dbms_obfuscation_toolkit, que contiene funciones y procedimientos especializados para
diversos mecanismos de encriptación, entre los cuales se tienen:

Algoritmos DES
Triple DES
RSA (el más rápido actualmente)

48
Creamos estas dos funciones (Encriptar, Desesencriptat), en un esquema diferente al cual
vamos a encriptarlos datos y que no tenga acceso cualquier usuario.
Se establece la clave “DBAKey03”

create or replace function SYS.cryptf( p_str in varchar2 ) return varchar2


as
l_data varchar2(255);
begin
l_data := rpad( p_str, (trunc(length(p_str)/8)+1)*8, chr(0) );
dbms_obfuscation_toolkit.DESEncrypt
( input_string => l_data,
key_string => 'DBAKey03',
encrypted_string=> l_data );
return l_data;
end;
/

create or replace function sys.decryptf(p_str in varchar2)


return varchar2 as
l_data varchar2(255);
begin
dbms_obfuscation_toolkit.DESDecrypt(input_string => p_str,
key_string => 'DBAKey03',
decrypted_string => l_data);
return rtrim(l_data, chr(0));
end;

10.2. FUNCIONES HASH

49
Hash se refiere a una función o método para generar claves o llaves que representen de manera
casi unívoca a un documento, registro, archivo, etc.,
Un hash es el resultado de dicha función o algoritmo

Dónde:
Expr: es el argumento que se quiere que oracle compute hacia un código hash numérico.
No puede ser de tipo: LONG, LOB
max_bucket: argumento opcional, que determina el valor máximo a se ser retornado por la
función, Se puede especificar entre 0 y 4294967295. El valor por defecto es 4294967295.
Seed_value: Habilita a Oracle a obtener algunos resultados con la misma data, se puede
especificar la semilla desde 0 hasta 4294967295.

10.3. ALGORITMOS SIMÉTRICOS Y ASIMÉTRICOS

ALGORITMOS ASIMÉTRICOS:

Esta nos permite que dos personas puedan enviar información encriptada, sin tener que
entregar la llave de seguridad.
Se utiliza dos llaves una pública para encriptar el texto y la otra llave de seguridad para
desencriptarlo, Nadie puede desencriptar algo con la misma llave pública.

50
ALGORITMOS ASIMÉTRICOS:

El algoritmo más utilizado en la encriptación asimétrica es el RSA, A pesar de ser


computacionalmente mucho más complejos, son el estándar hoy en día, usados en sistemas que
combinan cifrado asimétrico y simétrico (Pretty Good Privacy y Secure Socket Layer entre
ellos).

En conclusión es:
Que exista una clase que entregue una llave pública para que encripte la información y luego
enviarla está a la misma clase para que con la llave de privada la desencripte.

51
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Base de datos III

Elaborado por:
Ing. Daniel Plua
Ing. Ricardo Naranjo
Revisado por:
Ing. Miguel Quiroz

52
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
BASE DE DATOS III.......................................................................................................... 4
1. SISTEMAS OLTP ....................................................................................................... 4
1.1 CARACTERÍSTICAS PRINCIPALES ...................................................................... 4
1.2 ORIENTACIÓN ....................................................................................................... 4
1.3 EJEMPLOS ............................................................................................................. 4
2. SISTEMAS DE BASES DE DATOS MULTIDIMENSIONALES OLAP ......................... 5
2.1 ORIENTACIÓN ....................................................................................................... 5
2.2 CARACTERÍSTICAS PRINCIPALES ...................................................................... 5
2.3 TIPOS DE BASES DE DATOS MULTIDIMENSIONALES ....................................... 6
2.3.1 MOLAP ............................................................................................................. 6
2.3.2 ROLAP ............................................................................................................. 6
2.3.3 HOLAP ............................................................................................................. 7
2.3.4 WOLAP............................................................................................................. 7
2.3.5 ROLAP ............................................................................................................. 7
2.3.6 SOLAP.............................................................................................................. 7
2.4 DIFERENCIA ENTRE SISTEMAS OLAP Y OLTP ................................................... 8
3. INTELIGENCIA DE NEGOCIOS ................................................................................. 8
3.1 DEFINICIÓN ........................................................................................................... 8
3.2 FASES .................................................................................................................... 8
3.2.1 DIRIGIR Y PLANEAR ....................................................................................... 8
3.2.2 RECOLECCIÓN DE INFORMACIÓN ............................................................... 9
3.2.3 PROCESAMIENTO DE DATOS ....................................................................... 9
3.2.4 ANÁLISIS Y PRODUCCIÓN ........................................................................... 10
3.2.5 DIFUSIÓN ...................................................................................................... 10
3.3 BENEFICIOS ........................................................................................................ 10
3.4 ESCENARIOS DE NEGOCIOS.............................................................................. 11
4. ANÁLISIS DE PROCESOS DE UN SISTEMA INTEGRADO DE GESTIÓN ............. 11
4.1 DIAGRAMACIÓN DE PROCESOS DE UN SISTEMAS INTEGRADO DE GESTIÓN
.................................................................................................................................... 11
4.2 DISEÑO DE UNA BASE DE DATOS DE UN SISTEMA INTEGRADO DE GESTIÓN
.................................................................................................................................... 11
4.3 DESARROLLO DE UN SISTEMA INTEGRADO DE GESTIÓN............................. 11
5. DATA WAREHOUSE (ALMACÉN DE DATOS) ........................................................ 11
5.1 INTRODUCCIÓN .................................................................................................. 11
5.2 DEFINICIÓN ......................................................................................................... 12
2
5.3 CARACTERÍSTICAS ............................................................................................. 12
5.4 CUALIDADES ....................................................................................................... 14
5.5 VENTAJAS............................................................................................................ 15
5.6 DESVENTAJAS ..................................................................................................... 16
5.7 DESNORMALIZACIÓN - REDUNDANCIA ............................................................ 17
5.8 ESTRUCTURA ...................................................................................................... 17
6. CREACIÓN DE CUBOS MULTIDIMENSIONALES .................................................. 19
6.1 CREACION DE CUBOS MULTIDIMENSIONALES ................................................ 19
6.2 CREACIÓN DE INDICADORES ............................................................................ 20
6.3 CREACIÓN DE ATRIBUTOS ................................................................................ 21
6.4 CREACIÓN DE JERARQUÍAS .............................................................................. 22
6.5 OTROS EJEMPLOS DE CUBOS MULTIDIMENSIONALES ................................. 23
7. HERRAMIENTAS PARA ANÁLISIS DE DATOS ....................................................... 24
7.1 CONCEPTOS DE ANÁLISIS DE DATOS .............................................................. 24
7.2 HERRAMIENTAS PARA ANÁLISIS DE DATOS ................................................... 25
7.3 HOJA ELECTRÓNICA .......................................................................................... 25

3
BASE DE DATOS III
[Talleres de preparación para examen complexivo]

1. SISTEMAS OLTP

1.1 CARACTERÍSTICAS PRINCIPALES

OLTP es la sigla en inglés de Procesamiento de Transacciones En Línea (OnLine Transaction


Processing) es un tipo de sistemas que facilitan y administran aplicaciones transaccionales.

Arquitectura cliente-servidor

Ejemplos:
Un Cajero automático de un banco.
Ventas de una tienda.
Entre otros

1.2 ORIENTACIÓN

 Un gran número de cortas las transacciones en línea (INSERT,UPDATE, DELETE)


 Mantener la integridad de datos en entornos de acceso múltiple
 Tiene datos detallados y actuales
 Para guardar los datos por lo general se usa 3FN
 Cada transacción solo tiene dos posibles finales: commit o rollback
 Por lo general se adapta a cada empresa o departamento

1.3 EJEMPLOS

La tecnología OLTP se utiliza en innumerables aplicaciones como:


En banca electrónica, Procesamiento de pedidos, Comercio electrónico, Supermercados o
Industria

4
2. SISTEMAS DE BASES DE DATOS MULTIDIMENSIONALES
OLAP

2.1 ORIENTACIÓN
Herramientas OLAP (Procesamiento analítico en línea-OnLine Analytical Processing) son
unas de las más usadas por las empresas, para BI (Business Intelligence).
Proporcionan un sistema confiable y rápido para procesar datos, que luego serán usados para
realizar análisis y reportes, apoyo a toma de decisiones en empresas, tableros de mando utilizan
Cubos OLAP
Datos de dos tipos:
● Dimensiones
● Métricas (Hechos)

2.2 CARACTERÍSTICAS PRINCIPALES


Generación de informes para bases de datos relacionales (OLTP), son lentas cuando debe
explorarse toda la base de datos.

EJEMPLO:

5
2.3 TIPOS DE BASES DE DATOS MULTIDIMENSIONALES

2.3.1 MOLAP

Requiere un pre-procesamiento y almacenamiento en una matriz multidimensional optimizada.

Es más rápido debido a:


 Optimización de almacenamiento
 Indexación multidimensional
 Memoria Cache

2.3.2 ROLAP

 Es construida sobre una base de datos Relacional.


 Accede a los datos de la BD relacional
 BD relacional debe ser diseñada para uso de ROLAP
 Tablas de Hechos
 Tablas de dimensiones
 Tablas de resumen/agregaciones

6
2.3.3 HOLAP

Combina los sistemas ROLAP y MOLAP, en los últimos años una tercera herramienta
denominada HOLAP, toma una base relacional (ROLAP) y una multidimensional(MOLAP),
utilizando cada una de ellas de acuerdo a los requerimientos de cada uno de los datos que deben
ser procesados.

 Presenta ventajas operativas, debido a la utilización de dos tipos de bases de datos


diferentes.
 Una correcta fusión entre los sistemas ROLAP y MOLAP,
 Logra un veloz pre-procesamiento de la información,
 Ofrece un escalado de datos adecuado y
 Proporciona un excelente apoyo de consultas en su base de datos.

2.3.4 WOLAP

 OLAP basado u orientado para la web.

2.3.5 ROLAP
 Es construida sobre una base de datos Relacional.
 Accede a los datos de la BD relacional
 BD relacional debe ser diseñada para uso de ROLAP
 Tablas de Hechos
 Tablas de dimensiones
 Tablas de resumen/agregaciones

2.3.6 SOLAP

 OLAP espacial, aplicaciones de mapas, geometría, etc.

7
2.4 DIFERENCIA ENTRE SISTEMAS OLAP Y OLTP

3. INTELIGENCIA DE NEGOCIOS

3.1 DEFINICIÓN
Integra como solución el almacenamiento y procesamiento de enormes cantidades de datos e
información para transformarla en conocimiento y decisiones en tiempo real a través de una
fácil explotación. [Elliott, 2004].

3.2 FASES

3.2.1 DIRIGIR Y PLANEAR


 Esta fase es el principio y el fin del proceso.
 Principio por que involucra redactar los requerimientos específicos.
 Final porque contesta preguntas que guían a otras nuevas.

BI empieza con los usuarios:


● Ejecutivos,
8
● Directivos,
● Líderes de Negocio etc.

Generan las preguntas que les va ayudar a ellos a alcanzar sus objetivos. Ejemplos:
 ¿Cuáles son los clientes más rentables?
 ¿Cuál es el margen de cada línea de producto?, Etc.,

Analistas de negocios:
Formulan los requerimientos de los usuarios y Dirigen un plan para la recolección de la
información y para solución de las respuestas.

3.2.2 RECOLECCIÓN DE INFORMACIÓN


Diferentes fuentes son analizadas para determinar los datos necesarios para encontrar las
respuestas a las preguntas.
Hay diversas fuentes de información en una empresa.
La automatización de los procesos han múltiples fuentes de datos como son:
● ERP,
● CRM,
● SFA,
● Aplicaciones de Servicios al cliente etc.
● Facturadores
● Centrales

Sistemas crean, procesan y almacenan diferentes tipos de información.


Es un proceso continuo, los datos de esas fuentes es simplemente información y no Inteligencia.
La información se convierte en Inteligente procesándola y analizándola.
Los datos en crudo frecuentemente son incompletos y confusos.

3.2.3 PROCESAMIENTO DE DATOS

9
Integración de datos en crudo a un formato utilizable para el análisis.
Esto puede ser posible:
 Creando una nueva base de datos,
 Agregar datos a bases de datos existente o consolidando información.
 Esta fase generalmente ser visto como Extracción, Transformación y Carga (ETL) que
ocurren en los ambientes de BI.

3.2.4 ANÁLISIS Y PRODUCCIÓN


Analistas de negocios utilizan herramientas y técnicas para ordenar sobre los datos y crear
inteligencia.
 Produce respuestas “inteligentes”, en un contexto propio.
 Puede ser simple como la creación de un reporte.
En otros casos, son la creación de indicadores. Tal vez en esta fase, sean generados
requerimientos adicionales pues los analistas puede que encuentren nuevas preguntas que
necesiten ser contestadas.

3.2.5 DIFUSIÓN
Entregar productos inteligentes a los diversos clientes que lo requieren.
Uso de herramientas BI para la publicación de “tableros de indicadores”, reportes (mails
automáticos)
Herramientas de fácil uso para que los mismos usuarios tengan la capacidad de revisar los datos
de manera rápida y sencilla. (interface Web)

3.3 BENEFICIOS

10
 Reducción de costes y mayor eficiencia
 Más capacidad para tomar decisiones
 Mejor capacidad de respuesta
 Mejor visibilidad, mayor comprensión del negocio

3.4 ESCENARIOS DE NEGOCIOS


 Laboratorios Novartis en españa adquirió la herramienta de BI COGNOS.
 Claro-Ecuador adquirio la herramienta de BI SpotFire, la implementación la realizo la
empresa Desotein.
 Reybanpack adquirio la herramienta de BI Qlickview, la implementación la realizo la
empresa Novatech.

4. ANÁLISIS DE PROCESOS DE UN SISTEMA INTEGRADO DE


GESTIÓN

4.1 DIAGRAMACIÓN DE PROCESOS DE UN SISTEMAS INTEGRADO


DE GESTIÓN

4.2 DISEÑO DE UNA BASE DE DATOS DE UN SISTEMA INTEGRADO


DE GESTIÓN

4.3 DESARROLLO DE UN SISTEMA INTEGRADO DE GESTIÓN

5. DATA WAREHOUSE (ALMACÉN DE DATOS)

5.1 INTRODUCCIÓN
Debido a que para llevar a cabo BI, es necesario gestionar datos guardados en diversos
formatos, fuentes y tipos, para luego depurarlos e integrarlos, además de almacenarlos en un
solo destino o base de datos que permita su posterior análisis y exploración, es imperativo y de
vital importancia contar con un proceso que satisfaga todas estas necesidades. Este proceso se
denomina Data Warehousing.

El Data Warehousing (DWH), es el encargado de extraer,transformar, consolidar, integrar y


centralizar los datos que una organización genera en todos los ámbitos de su actividad diaria
(compras, ventas, producción, etc) y/o información externa relacionada. Permitiendo de esta
manera el acceso y exploración de la información requerida, a través de una amplia gama de
11
posibilidades de análisis multivariables, con el objetivo final de dar soporte al proceso de toma
de desiciones estratégico y táctico.

5.2 DEFINICIÓN

Data Warehousing posibilita la extracción de datos de sistemas operacionales y fuentes


externas, permite la integración y homogeneización de los datos de toda la empresa, provee
información que ha sido transformada y sumarizada, para que ayude en el proceso de toma de
decisiones estratégicas y tácticas.

El Data Warehousing, convertirá entonces los datos operacionales de la empresa en una


herramienta competitiva, debido a que pondrá a disposición de los usuarios indicados la
información pertinente, correcta e integrada, en el momento que se necesita.

Pero para que el Data Warehousing pueda cumplir con sus objetivos, es necesario que la
información que se extrae, transforma y consolida, sea almacenada de manera centralizada en
una base de datos con estructura multidimensional denominada Data Warehouse (DW).

Una de las definiciones más famosas sobre DW, es la de William Harvey Inmon, quien define:
“Un Data Warehouse es una colección de datos orientada al negocio, integrada, variante en el
tiempo y no volátil para el soporte del proceso de toma de decisiones de la gerencia”.

Debido a que W. H. Inmon, es reconocido mundialmente como el padre del DW, la explicación
de las características más sobresalientes de este concepto se basó en su definición.

5.3 CARACTERÍSTICAS
ORIENTADA AL NEGOCIO

La primera característica del DW, es que la información se clasifica en base a los aspectos que
son de interés para la organización. Esta clasificación afecta el diseño y la implementación de
los datos encontrados en el almacén de datos, debido a que la estructura del mismo difiere
considerablemente a la de los clásicos procesos operacionales orientados a las aplicaciones.

INTEGRADA
12
La integración implica que todos los datos de diversas fuentes que son producidos por distintos
departamentos, secciones y aplicaciones, tanto internos como externos, deben ser consolidados
en una instancia antes de ser agregados al DW, y deben por lo tanto ser analizados para asegurar
su calidad y limpieza, entre otras cosas. A este proceso se lo conoce como Integración de Datos,
y cuenta con diversas técnicas y subprocesos para llevar a cabo sus tareas. Una de estas técnicas
son los procesos ETL: Extracción, Transformación y Carga de Datos (Extraction,
Transformation and Load).

Si bien el proceso ETL es solo una de las muchas técnicas de la Integración de Datos, el resto
de estas técnicas puede agruparse muy bien en sus diferentes etapas. Es decir, en el proceso de
Extracción tendremos un grupo de técnicas enfocadas por ejemplo en tomar solo los datos
indicados y mantenerlos en un almacenamiento intermedio; en el proceso de Transformación
por ejemplo estarán aquellas técnicas que analizarán los datos para verificar que sean correctos
y válidos; en el proceso de Carga de Datos se agruparán por ejemplo técnicas propias de la
carga y actualización del DW.

La integración de datos, resuelve diferentes tipos de problemas relacionados con las


convenciones de nombres, unidades de medidas, codificaciones, fuentes múltiples, etc., cada
uno de los cuales será correctamente detallado y ejemplificado más adelante.

VARIANTE EN EL TIEMPO

Debido al gran volumen de información que se manejará en el DW, cuando se le realiza una
consulta, los resultados deseados demorarán en originarse. Este espacio de tiempo que se
produce desde la búsqueda de datos hasta su consecución es del todo normal en este ambiente
y es, precisamente por ello, que la información que se encuentra dentro del depósito de datos
se denomina de tiempo variable.

Esta característica básica, es muy diferente de la información encontrada en el ambiente


operacional, en el cual, los datos se requieren en el momento de acceder, es decir, que se espera
que los valores procurados se obtengan a partir del momento mismo de acceso.
Además, toda la información en el DW posee su propio sello de tiempo

Esto contribuye a una de las principales ventajas del almacén de datos: los datos son
almacenados junto a sus respectivos históricos. Esta cualidad que no se encuentra en fuentes
de datos operacionales, garantiza poder desarrollar análisis de la dinámica de la información,
pues ella es procesada como una serie de instantáneas, cada una representando un periodo de
13
tiempo. Es decir, que gracias al sello de tiempo se podrá tener acceso a diferentes versiones de
la misma información.

Es importante tener en cuenta la granularidad de los datos, así como también la intensidad de
cambio natural del comportamiento de los fenómenos de la actividad que se desarrolle, para
evitar crecimientos incontrolables y desbordamientos de la base de datos.

El intervalo de tiempo y periodicidad de los datos debe definirse de acuerdo a la necesidad y


requisitos de los usuarios.

Es elemental aclarar, que el almacenamiento de datos históricos, es lo que permite al DW


desarrollar pronósticos y análisis de tendencias y patrones, a partir de una base estadística de
información.

NO VOLÁTIL

La información es útil para el análisis y la toma de decisiones solo cuando es estable. Los datos
operacionales varían momento a momento, en cambio, los datos una vez que entran en el DW
no cambian.

La actualización, o sea, insertar, eliminar y modificar, se hace de forma muy habitual en el


ambiente operacional sobre una base, registro por registro, en cambio en el depósito de datos
la manipulación básica de los datos es mucho más simple, debido a que solo existen dos tipos
de operaciones: la carga de datos y el acceso a los mismos.

Por esta razón es que en el DW no se requieren mecanismos de control de concurrencia y


recuperación.

5.4 CUALIDADES

Una de las primeras cualidades que se puede mencionar del DW, es que maneja un gran
volumen de datos, debido a que consolida en su estructura la información recolectada durante
años, proveniente de diversas fuentes y áreas, en un solo lugar centralizado. Es por esta razón
que el depósito puede ser soportado y mantenido sobre diversos medios de almacenamiento.

14
Además, como ya se ha mencionado, el almacén de datos presenta la información sumarizada
y agregada desde múltiples versiones, y maneja información histórica.

Organiza y almacena los datos que se necesitan para realizar consultas y procesos analíticos,
con el propósito de responder a preguntas complejas y brindarles a los usuarios finales la
posibilidad de que mediante una interface amigable, intuitiva y fácil de utilizar, puedan tomar
decisiones sobre los datos sin tener que poseer demasiados conocimientos informáticos. El DW
permite un acceso más directo, es decir, la información gira en torno al negocio, y es por ello
que también los usuarios pueden sentirse cómodos al explorar los datos y encontrar relaciones
complejas entre los mismos.

Cabe aclarar que el Data Warehousing no se compone solo de datos, ni tampoco solo se trata
de un depósito de datos aislado. El Data Warehousing hace referencia a un conjunto de
herramientas para consultar, analizar y presentar información, que permiten obtener o realizar
análisis, reporting, extracción y explotación de los datos, con alta performance, para
transformar dichos datos en información valiosa para la organización.

Con respecto a las tecnologías que son empleadas, se pueden encontrar las siguientes:

 Arquitectura cliente/servidor.
 Técnicas avanzadas para replicar, refrescar y actualizar datos.
 Software front-end, para acceso y análisis de datos.
 Herramientas para extraer, transformar y cargar datos en el depósito, desde múltiples
fuentes muy heterogéneas.
 Sistema de Gestión de Base de Datos (SGBD).

Todas las cualidades expuestas anteriormente, son imposibles de saldar en un típico ambiente
operacional, y esto es una de las razones de ser del Data Warehousing.

5.5 VENTAJAS
A continuación se enumerarán algunas de las ventajas más sobresalientes que trae aparejada la
implementación de un Data Warehousing y que ejemplifican de mejor modo sus características
y cualidades:

 Transforma datos orientados a las aplicaciones en información orientada a la toma de


decisiones.

15
 Integra y consolida diferentes fuentes de datos (internas y/o externas) y departamentos
empresariales, que anteriormente formaban islas, en una única plataforma sólida y
centralizada.
 Provee la capacidad de analizar y explotar las diferentes áreas de trabajo y de realizar
un análisis inmediato de las mismas.
 Permite reaccionar rápidamente a los cambios del mercado.
 Aumenta la competitividad en el mercado.
 Elimina la producción y el procesamiento de datos que no son utilizados ni necesarios,
producto de aplicaciones mal diseñadas o ya no utilizadas.
 Mejora la entrega de información, es decir, información completa, correcta, consistente,
oportuna y accesible. Información que los usuarios necesitan, en el momento adecuado
y en el formato apropiado.
 Logra un impacto positivo sobre los procesos de toma de decisiones.Aumento de la
eficiencia de los encargados de tomar decisiones.
 Los usuarios pueden acceder directamente a la información en línea, lo que contribuye
a su capacidad para operar con mayor efectividad en las tareas rutinarias o no.
 Permite la toma de decisiones estratégicas y tácticas.

5.6 DESVENTAJAS
 Requiere una gran inversión, debido a que su correcta construcción no es tarea sencilla
y consume muchos recursos, además, su misma implementación implica desde la
adquisición de herramientas de consulta y análisis, hasta la capacitación de los usuarios.
 Existe resistencia al cambio por parte de los usuarios.
 Los beneficios del almacén de datos son apreciados en el mediano y largo plazo.
 Si se incluyen datos propios y confidenciales de clientes, proveedores, etc, el depósito
de datos atentará contra la privacidad de los mismos, ya que cualquier usuario podrá
tener acceso a ellos.
 Infravaloración de los recursos necesarios para la captura, carga y almacenamiento de
los datos.
 Infravaloración del esfuerzo necesario para su diseño y creación.
 Incremento continuo de los requerimientos de los usuarios.
 Subestimación de las capacidades que puede brindar la correcta utilización del DWH y
de las herramientas de BI en general.

16
5.7 DESNORMALIZACIÓN - REDUNDANCIA

Debido a que el DW recibe información histórica de diferentes fuentes, sencillamente se podría


suponer que existe una repetición de datos masiva entre el ambiente DW y el operacional. Por
supuesto, este razonamiento es superficial y erróneo, de hecho, hay una mínima redundancia
de datos entre ambos ambientes.

Para entender claramente lo antes expuesto, se debe considerar lo siguiente:

Los datos del ambiente operacional se filtran antes de pertenecer al DW. Existen muchos datos
que nunca ingresarán, ya que no conforman información necesaria o suficientemente relevante
para la toma de decisiones.
El horizonte de tiempo es muy diferente entre los dos ambientes.
El almacén de datos contiene un resumen de la información que no se encuentra en el ambiente
operacional.
Los datos experimentan una considerable transformación, antes de ser cargados al DW. La
mayor parte de los datos se alteran significativamente al ser seleccionados, consolidados y
movidos al depósito.

En vista de estos factores, se puede afirmar que, la redundancia encontrada al cotejar los datos
de ambos ambientes es mínima, ya que generalmente resulta en un porcentaje menor del 1%.

5.8 ESTRUCTURA

Los DW estructuran los datos de manera muy particular y existen diferentes niveles de
esquematización y detalle que los delimitan.
En la siguiente figura se puede apreciar mejor su respectiva estructura:

17
A continuación se explicarán cada uno de estos tipos de datos:

Detalle de datos actuales: son aquellos que reflejan las ocurrencias más recientes.
Generalmente se almacenan en disco, aunque su administración sea costosa y compleja, con el
fin de conseguir que el acceso a la información sea sencillo y veloz, ya que son bastante
voluminosos.
Detalle de datos históricos: representan aquellos datos antiguos, que no son frecuentemente
consultados. También se almacenan a nivel de detalle, normalmente sobre alguna forma de
almacenamiento externa, ya que son muy pesados y en adición a esto, no son requeridos con
mucha periodicidad. Datos ligeramente resumidos: son los que provienen desde un bajo nivel
de detalle y sumarizan o agrupan los datos bajo algún criterio o condición de análisis.
Habitualmente son almacenados en disco. Por ejemplo, en este caso se almacenaría la
sumarización del detalle de las ventas realizadas en cada mes.
Datos altamente resumidos: son aquellos que compactan aún más a los datos ligeramente
resumidos. Se guardan en disco y son muy fáciles de acceder. Por ejemplo, aquí se encontraría
la sumarización de las ventas realizadas en cada año.
Metadatos: representan la información acerca de los datos. De muchas maneras se sitúa en
una dimensión diferente al de otros datos del DW, ya que su contenido no es tomado
directamente desde el ambiente operacional.
5.9 Flujo de Datos
El DW posee un flujo de datos estándar y generalizado, el cual puede apreciarse mejor en la
siguiente figura.

18
Cuando la información ingresa al depósito de datos se almacena a nivel de Detalle de datos
actuales. Los datos permanecerán allí hasta que ocurra alguno de los tres eventos siguientes:

 Sean borrados del depósito de datos.


 Sean resumidos, ya sea a nivel de Datos ligeramente resumidos o a nivel de Datos
altamente resumidos.
 Sean archivados a nivel de Detalle de datos históricos.

6. CREACIÓN DE CUBOS MULTIDIMENSIONALES

6.1 CREACION DE CUBOS MULTIDIMENSIONALES

A continuación se creará un cubo multidimensional de ejemplo, que será llamado “Cubo de


Ventas” y que estará basado en el modelo lógico diseñado en el caso práctico de la metodología
Hefesto.

19
La creación de este cubo tiene las siguientes finalidades:

 Ejemplificar la creación de cubos multidimensionales.


 Propiciar la correcta distinción entre hechos de una tabla de hechos e indicadores de un
cubo.
 Propiciar la correcta distinción entre campos de una tabla de dimensión y atributos de
un cubo.

6.2 CREACIÓN DE INDICADORES

En este momento se crearán dos indicadores que serán incluidos en el cubo ”Cubo de Ventas”:

De la tabla de hechos “VENTAS”, se sumarizará el hecho “Cantidad” para crear el indicador


denominado:
“Unidades Vendidas”.

La fórmula utilizada para crear este indicador es la siguiente:


“Unidades Vendidas” = SUM(VENTAS.Cantidad).

De la tabla de hechos “VENTAS”, se sumarizará el hecho “MontoTotal” para crear el indicador


denominado:
“Monto Total de Ventas”.

La fórmula utilizada para crear este indicador es la siguiente:


“Monto Total de Ventas” = SUM(VENTAS.MontoTotal).
Entonces, el cubo quedaría conformado de la siguiente manera:

20
6.3 CREACIÓN DE ATRIBUTOS

Ahora se crearán y agregarán al cubo seis atributos:

 De la tabla de dimensión “CLIENTE”, se tomará el campo “Cliente” para la creación


del atributo denominado: “Clientes”.

 De la tabla de dimensión “PRODUCTO”, se tomará el campo “Marca” para la creación


del atributo denominado: “Marcas”.

 De la tabla de dimensión “PRODUCTO”, se tomará el campo “Producto” para la


creación del atributo denominado: “Productos”.

 De la tabla de dimensión “FECHA”, se tomará el campo “Año” para la creación del


atributo denominado: “Años”.

 De la tabla de dimensión “FECHA”, se tomará el campo “Trimestre” para la creación


del atributo denominado: “Trimestres”.

 De la tabla de dimensión “FECHA”, se tomará el campo “Mes” para la creación del


atributo denominado: “Meses”.

Entonces, el cubo quedaría conformado de la siguiente manera:

21
6.4 CREACIÓN DE JERARQUÍAS

Finalmente se crearán y agregarán al cubo dos jerarquías:

Se definió la jerarquía “Jerarquía Productos”, que se aplicará sobre los atributos recientemente
creados, “Marcas” y “Productos”, en donde:

Un producto en especial pertenece solo a una marca. Una marca puede tener uno o más
productos.

Gráficamente:

Se definió la jerarquía “Jerarquía Fechas”, que se aplicará sobre los atributos recientemente
creados, “Años”, “Trimestres” y “Meses”, en donde:

Un mes del año pertenece solo a un trimestre del año. Un trimestre del año tiene uno o más
meses del año.

Un trimestre del año pertenece solo a un año. Un año tiene uno o más trimestres del año.

Gráficamente:

Entonces, el cubo quedaría conformado de la siguiente manera:

22
6.5 OTROS EJEMPLOS DE CUBOS MULTIDIMENSIONALES

A partir del modelo lógico planteado, podrían haberse creado una gran cantidad de cubos, cada
uno de los cuales estaría orientado a un tipo de análisis en particular. Tal y como se explicó
antes, estos cubos pueden coexistir sin ningún inconveniente.

A continuación se expondrán una serie de cubos de ejemplo:

Cubo 1:

Cubo 2:
23
Cubo 3:

7. HERRAMIENTAS PARA ANÁLISIS DE DATOS

7.1 CONCEPTOS DE ANÁLISIS DE DATOS


Examina datos en bruto con el propósito de sacar conclusiones sobre la información.

Es usado en varias industrias para permitir que las compañías y las organizaciones tomen
mejores decisiones empresariales.
También es usado en las ciencias para verificar o reprobar modelos o teorías existentes.

Clasifican inmensos conjuntos de datos usando software sofisticado para identificar patrones
no descubiertos y establecer relaciones escondidas.
24
Se divide en:
 Análisis exploratorio de datos (EDA), donde se descubren nuevas características en los
datos.
 Análisis confirmatorio de datos (CDA), donde se prueba si las hipótesis existentes son
verdaderas o falsas.

7.2 HERRAMIENTAS PARA ANÁLISIS DE DATOS


Las herramientas de consulta y análisis son sistemas que permiten a los usuarios realizar la
exploración de datos del DW. Básicamente constituyen el nexo entre el depósito de datos y los
usuarios.

Utilizan la metadata de las estructuras de datos que han sido creadas previamente (cubos
multidimensionales, Business Models, etc.) para trasladar a través de consultas SQL los
requerimientos de los usuarios, para luego, devolver el resultado obtenido.

Estas herramientas también pueden emplear simples conexiones a bases de datos (JNDI, JDBC,
ODBC), para obtener la información deseada.

A través de una interfaz gráfica y una serie de pasos, los usuarios generan consultas que son
enviadas desde la herramienta de consulta y análisis al Query Manager, este a su vez realiza la
extracción de información al DW Manager y devuelve los resultados obtenidos a la herramienta
que se los solicitó. Luego, estos resultados son expuestos ante los usuarios en formatos que le
son familiares.

7.3 HOJA ELECTRÓNICA


Para el análisis de datos usando hoja electrónica deberá proporcionar los datos y parámetros
para cada análisis, y la herramienta utilizará las funciones de macros estadísticas o técnicas
correspondientes para realizar los cálculos y mostrar los resultados en una tabla de resultados.
Algunas herramientas generan gráficos además de tablas de resultados.

Las funciones de análisis de datos solo pueden utilizarse en una única hoja de cálculo a la vez.
Cuando se analizan los datos de hojas agrupadas, los resultados aparecerán en la primera hoja,
y en las hojas restantes aparecerán tablas con formato vacías. Para analizar los datos del resto
de las hojas, actualice la herramienta de análisis para cada una de ellas.

25
Las Herramientas para análisis incluyen las herramientas que se describen en las secciones a
continuación. Para tener acceso a estas herramientas, haga clic en Análisis de datos en el grupo
Análisis de la pestaña Datos. Si el comando Análisis de datos no está disponible, deberá cargar
el complemento Herramientas para análisis.

Las tablas dinámicas y los gráficos dinámicos resumen, analizan, exploran y presentan datos
de resumen. Estos informes permiten tomar decisiones informadas sobre datos críticos.

26
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Estructura de Datos

Elaborado por:
Ing. Shirley Coque
Ing. Máximo Tandazo
Revisado por:
Ing. Miguel Quiroz

27
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPÍTULO 1: MÉTODOS DE ORDENACIÓN ................................................................... 4
1.1. ORDENACIÓN INTERNA ...................................................................................... 4
1.2. ORDENACIÓN POR INTERCAMBIO DIRECTO (BURBUJA). ............................... 5
1.3. ORDENACIÓN POR INSERCIÓN DIRECTA. ........................................................ 6
1.4. ORDENACIÓN POR SELECCIÓN DIRECTA. ....................................................... 8
1.5. ORDENACIÓN POR EL MÉTODO DE SHELL .................................................... 10
1.6. ORDENACIÓN POR EL MÉTODO QUICKSORT ................................................ 11
1.7. MERGE................................................................................................................ 13
CAPÍTULO 2: MÉTODOS DE BÚSQUEDA. .................................................................... 14
2. ¿QUÉ ES BÚSQUEDA? .......................................................................................... 14
2.1. BÚSQUEDA SECUENCIAL ................................................................................. 15
2.2. BÚSQUEDA BINARIA. ......................................................................................... 15
2.3. BÚSQUEDA POR TRANSFORMACIÓN DE CLAVES. ........................................ 17
CAPÍTULO 3: LISTAS ..................................................................................................... 20
3.1. TEORÍA Y MÉTODOS RECURSIVOS ................................................................. 20
3.2. OPERACIONES CON LISTAS. ............................................................................ 21
3.3. LISTAS CIRCULARES. ........................................................................................ 23
3.4. LISTAS DOBLEMENTE LIGADAS. ...................................................................... 24
3.5. REPRESENTACIÓN DE POLINOMIOS. .............................................................. 24
3.6. SOLUCIONES DE COLISIONES (HASH). ........................................................... 25
3.7. APLICACIONES................................................................................................... 27
CAPÍTULO 4: PILAS Y COLAS ....................................................................................... 28
4.1. PILAS................................................................................................................... 28
4.1.2. OPERACIONES CON PILAS. ............................................................................ 28
4.1.3. USO DE PILAS PARA SIMULAR RECURSIÓN. ................................................ 28
4.1.4. APLICACIONES................................................................................................. 29
4.2. COLAS................................................................................................................. 29
4.2.2. OPERACIONES CON COLAS. .......................................................................... 29
4.2.3. COLAS CIRCULARES. ...................................................................................... 30
4.2.4. DOBLE COLA. ................................................................................................... 30
4.2.5. APLICACIONES CON COLAS. .......................................................................... 30
CAPÍTULO 5: ÁRBOLES. ................................................................................................ 31
5.1. ÁRBOLES EN GENERAL. ................................................................................... 31
5.2. ÁRBOLES BINARIOS. ......................................................................................... 32

2
5.3. RECORRIDOS EN ÁRBOLES BINARIOS. .......................................................... 32
5.4. ÁRBOLES BINARIOS DE BÚSQUEDA. .............................................................. 33
CAPÍTULO 6: ÁRBOLES EN DISCO ............................................................................... 37
6.1. INTRODUCCIÓN. ................................................................................................ 37
6.2. BÚSQUEDA E INSERCIÓN. ................................................................................. 38
6.3. ELIMINACIÓN, CONCATENACIÓN Y REDISTRIBUCIÓN. .................................. 39

3
CAPÍTULO 1: MÉTODOS DE ORDENACIÓN

1.1. ORDENACIÓN INTERNA

La ordenación o clasificación de datos (sort, en inglés) es una operación consistente en disponer


un conjunto (estructura) de datos en algún determinado orden con respecto a uno de los campos
de los elementos del conjunto.

 Por ejemplo: cada elemento del conjunto de datos de una guía telefónica tiene un campo
nombre, un campo dirección y un campo número de teléfono;

El elemento por el cual está ordenado un conjunto de datos (o se está buscando) se denomina
clave. Una colección de datos (estructura) puede ser almacenada en memoria central o en
archivos de datos externos guardados en unidades de almacenamiento magnético (discos,
cintas, CD-ROM, DVD, etc.).

4
Cuando los datos se guardan en un array, en una lista enlazada o en un árbol, se denomina
ordenación interna; Existen dos técnicas de ordenación fundamentales en gestión de datos:
ordenación de listas y ordenación de archivos.

Los métodos de ordenación se conocen como internos o externos según los elementos a ordenar
están en la memoria principal o en la memoria externa.

1.2. ORDENACIÓN POR INTERCAMBIO DIRECTO (BURBUJA).


Este método realiza comparaciones de todas las posibles parejas de llaves intercambiando
aquellas que se encuentran fuera de orden.

Utiliza un proceso repetitivo comparando las parejas de datos adyacentes del inicio al final del
arreglo donde, después de la primera pasada la llave mayor queda en la última posición del
arreglo.

5
Algoritmo:
 Varios recorridos por el arreglo.
 Se comparan pares sucesivos de elementos:
- Si el orden es incremental (o idéntico), no hay cambio
- Si el orden es decremental, los elementos se intercambian

 Fácil de programar, pero se ejecuta con lentitud.


 Provee un excelente rendimiento en algunos casos y muy pobre en otros.
 Trabaja mejor cuando el arreglo es ordenado inicialmente.
 En el peor de los casos el número de comparaciones O(n2).
 En el peor de los casos los intercambios son O(n2).
 El mejor caso ocurre cuando el arreglo está ordenado.
- O(n) comparaciones
- O(1) intercambios

Código:

1.3. ORDENACIÓN POR INSERCIÓN DIRECTA.

6
Los datos a clasificar son considerados uno a la vez, cada elemento se inserta en la posición
apropiada con respecto al resto de los valores ya ordenados. El Algoritmo de Inserción Directa
por la Izquierda o derecha es un algoritmo de ordenamiento simple en el cual la lista se va
ordenando con una entrada a la vez hacia la izquierda o derecha.

Empezamos con los datos aleatoriamente ordenados, el primer dato lo tomamos como la parte
ordenada, el resto será la parte desordenada. Tomamos el primer número de la parte
desordenada, en este caso siempre es el segundo, la almacenamos en una variable temporal.

Se compara con el primer número de la parte ordenada.

Si el número es menor se recorre el arreglo y se inserta el número, si no fuera así se pone el


numero al final de la parte ordenada.

Ventajas y Aplicaciones:

7
 Fácil de Implementar.
 Eficiente en pocos datos.
 Eficiente en datos que ya tienen cierta tendencia al orden.
 Estable (no cambia el orden relativo de los elementos iguales).
 Es un algoritmo "en línea" (puede ordenar elementos conforme los recibe).
 Aunque este algoritmo tiene un mejor orden de complejidad que el de burbuja, es muy
ineficiente al compararlo con otros algoritmos como quicksort.
 Es el método más sencillo de programar, no requiere espacio extra.
 El método de ordenación por inserción directa es el que generalmente utilizan los
jugadores de cartas cuando ordenan éstas, de ahí que también se conoce con el
nombre de método de la baraja.

Código:

1.4. ORDENACIÓN POR SELECCIÓN DIRECTA.

Consiste en buscar el menor elemento del arreglo y colocarlo en la primera posición, luego se
busca el segundo elemento más pequeño del arreglo y se coloca en la segunda posición. El
proceso continúa hasta que todos los elementos del arreglo han sido ordenados.
Este proceso es mucho más sencillo que el método de inserción binaria, busca de una vez el
más pequeño y lo acomoda en la posición que debe ir.

8
Ventajas:
 Fácil de implementar.
 Requerimientos mínimos de memoria.

Desventajas:
 Lento.
 Realiza numerosas comparaciones.

Conclusiones:
 No se recomienda cuando el número de elementos del arreglo es mayor o mediano.
 Simplifica el ordenamiento de datos.
 Se reduce el número de comparaciones.
 Es fácil de programar y de comprender.

Código:

9
1.5. ORDENACIÓN POR EL MÉTODO DE SHELL

Este método es un tipo de inserción pero con mejor rendimiento, fue descubierto por Donald
Shell en 1959. Aprovecha el proceso de divide y conquista para insertar sus elementos y antes
de ordenar todo el arreglo, ordena muchos pequeños sub-arreglos usando inserción antes de
ordenarlo completamente.

Se suele denominar también ordenación por inserción con incrementos decrecientes, se


considera que el método Shell es una mejora de los métodos de inserción directa. Se debe
empezar con k=n/2, siendo n el número de elementos del arreglo, y utilizando siempre la
división entera, después iremos variando k haciéndolo más pequeño mediante sucesivas
divisiones por 2, hasta llegar a k=1.

Este método propone que hagamos sobre el arreglo una serie de ordenaciones basadas en la
inserción directa, pero dividiendo el arreglo original en varios sub-arreglos tales que cada
elemento esté separado k elementos.

Código:

10
1.6. ORDENACIÓN POR EL MÉTODO QUICKSORT

Este algoritmo fue desarrollado en 1962 por Charles Hoare, utiliza divide y vencerás. Quicksort
organiza un arreglo en dos partes así todos los elementos en el arreglo izquierdo son menores
o iguales que un valor específico llamado pivote. El algoritmo se asegura que los elementos en
el arreglo derecho sean mayores que el pivote.

Divide los elementos restantes en particiones de izquierda y derecha, de modo que ningún
elemento de la izquierda tenga una clave mayor que el pivote (ordenar la partición izquierda
utilizando quicksort recursivamente) y que ningún elemento a la derecha tenga una clave menor
que la del pivote (Ordenar la partición derecha utilizando quicksort recursivamente). La
solución es partición izquierda seguida por el pivote y, a continuación, partición derecha.

Seleccionando el Pivote:

 La mejor solución es tomar el valor del pivote de manera que sea lo menor para una
mala partición.
 Primer elemento – una mala selección
 En general, no seleccione el pivote cerca del inicio o del final del conjunto.
11
 Un elemento intermedio es una buena opción

Código:

12
1.7. MERGE

Este algoritmo consiste básicamente en dividir en partes iguales la lista de números y luego
mezclarlos comparándolos y dejándolos ordenados. Si se piensa en este algoritmo
recursivamente, podemos imaginar que dividirá la lista hasta tener un elemento en cada lista,
luego lo compara con el que está a su lado y según corresponda, lo sitúa donde corresponde.

Este ordenamiento fue desarrollado en 1945 por John Von Neumann. Merge Sort es un
ordenamiento estable, paraleliza, y es más eficiente manejando medios secuenciales de acceso
lento.

El algoritmo de ordenamiento por mezcla (merge sort ) es un algoritmo de ordenamiento


externo estable basado en la técnica divide y vencerás. Merge Sort es a menudo la mejor opción
para ordenar una lista enlazada.

Conceptualmente, el ordenamiento por mezcla funciona de la siguiente manera:

 Si la longitud de la lista es 0 ó 1, entonces ya está ordenada.


 Dividir la lista desordenada en dos sublistas de aproximadamente la mitad del tamaño.
 Ordena cada sublista recursivamente aplicando el ordenamiento por mezcla.
 Mezclar las dos sublistas en una sola lista ordenada.

13
El algoritmo de ordenamiento por mezcla (Mergesort) se divide en dos procesos: Primero se
divide en partes iguales la lista y el algoritmo que nos permite mezclar los elementos según
corresponda:

Código:

CAPÍTULO 2: MÉTODOS DE BÚSQUEDA.

2. ¿QUÉ ES BÚSQUEDA?

La búsqueda es el proceso de localizar un registro (elemento) con un valor de llave particular.


La búsqueda termina exitosamente cuando se localiza el registro que contenga la llave buscada,
o termina sin éxito, cuando se determina que no aparece ningún registro con esa llave.

14
2.1. BÚSQUEDA SECUENCIAL

El método de búsqueda secuencial es de los más fáciles que podemos utilizar para buscar datos
(es aconsejable utilizarlo cuando el vector no es de gran tamaño), ya que no requiere que el
vector esté ordenado, el método consiste en recorrer el vector de manera secuencial hasta
encontrar el dato a buscar.

Este método se usa para buscar un elemento en el arreglo (vector), es explorar secuencialmente
el arreglo, es decir; recorrer el arreglo desde el primer elemento hasta el último. Si se encuentra
el elemento buscado se debe visualizar un mensaje similar a “Fin de Búsqueda” o “Elemento
encontrado” y otro que diga “posición =” en caso contrario, visualizar un mensaje similar a
“Elemento no existe en el arreglo”.

Código:

2.2. BÚSQUEDA BINARIA.

15
Esta búsqueda consiste en dividir el arreglo por su elemento medio en dos subarreglos más
pequeños, y comparar el elemento con el del centro. Si coinciden la búsqueda se termina. Si el
elemento es menor debe estar en el primer subarreglo, si es mayor está en el segundo.

Condiciones de una Búsqueda Binaria:

 Definir el tamaño del arreglo.


 Los elementos del arreglo deben de estar ordenados.
 Los elementos del arreglo no deben de estar duplicados.
 Saber cuál es el elemento a buscar (clave).

Funcionamiento de la Búsqueda Binaria

 Se determina el elemento central del arreglo y se compara con el valor que se está
buscando, si coincide termina la búsqueda y en caso de no ser así se determina si el dato
es mayor o menor que el elemento central, de esta forma se elimina una mitad del
arreglo junto con el elemento central para repetir el proceso hasta encontrarlo o tener
solo un elemento en el arreglo.
Código:

16
2.3. BÚSQUEDA POR TRANSFORMACIÓN DE CLAVES.
Es una técnica de búsqueda la cual permite que un registro se recupere directamente con un
mínimo de comparaciones o sin ellas. Esto se lleva a cabo reservando una posición en la tabla
para cada posible valor de clave, de tal manera que todas las posiciones queden incluidas de
acuerdo al valor de la clave. Un registro se recupera simplemente usando la clave, o una función
de la clave, como índice en la tabla.
Para almacenar cada valor clave en una única posición, se requiere que la clave sea tan grande
como el rango de claves. Si se presenta una proporción pequeña de claves, se desperdicia
mucho espacio en la tabla. Una mejor manera de proporcionar recuperación directa de registros,
es conformar la tabla de tal forma que ciertas claves compartan en la posición de la tabla. De
esta manera tenemos la esencia del HASH.
En particular, es claro que las claves que teóricamente comparten el mismo lugar en la tabla,
naturalmente no pueden compartir la posición asignada. Este conflicto se debe resolver de
alguna forma. Dado un rango M de claves posibles, se proporciona una tabla con N entradas,
donde N < M. La posición de una clave particular se determina transformando la clave en un
entero dentro del rango de 1 a N. El proceso de transformación se llama HASHING y una
transformación particular se llama HASH.

 FUNCIONES HASH.
La función HASH es una transformación matemática que sirve como base para obtener una
dirección. Hay varias técnicas incorporadas en la determinación de direcciones, las más
comunes son:
● Función Módulo.
● Función Cuadrado.
● Función Truncamiento.
● Función Plegamiento.

FUNCIÓN MÓDULO.
Consiste en tomar el residuo de la división de la clave entre el número de componentes del
arreglo. Suponga que se tiene un arreglo de N elementos y K es la clave del dato a buscar.

H(K)=(K MOD N)+1

17
Sea N=100, el tamaño del arreglo
Sus direcciones de 1-100.
Sea K1 = 7259
K2 = 9359
Dos claves que deban asignarse posiciones en el arreglo
H(K1)=(7259 mod 100)+1=60
H(K2)=(9359 mod 100)+1=60

Donde H(K1) es igual a H(k2) y K1 es distinto de K2, es una colisión


Se aplica N igual a un valor primo en lugar de utilizar N=100

H(K1)=(7259 mod 97)+1=82

H(K1)=(9359 mod 97)+1=48

Con N=97 se ha eliminado la colisión

FUNCIÓN CUADRADO.
Consiste en elevar al cuadrado la clave y coger las cifras centrales. Este método también
presenta problemas de colisión.
K1=7259
K2=136

H(k1*k1)=DigitosCentrales(52693081)+1=94
H(k2*k2)=DigitosCentrales(18496)+1=85

FUNCIÓN TRUNCAMIENTO.
Consiste en tomar algunos dígitos de la clave y formar con ellos una dirección. Este método es
de los más sencillos, pero es también de los que ofrece menos uniformidad en la distribución
de las claves. Se pueden elegir los dígitos de las posiciones pares o impares.

H(k)= elegir_digitos(d1,d2,...,dn)+1)

18
Sea:
Sea K1=7259
K2=9359

Dos claves que deban asignarse posiciones en el arreglo

H(k1)=Elegir_digito(7259)+1=76
H(K2)= Elegir_digito(9359)+1=96

Se toman el primer y tercer número de la clave y une de izquierda a derecha

FUNCIÓN PLEGAMIENTO.
Consiste en dividir la clave en partes de igual número de dígitos (La última puede tener menos
dígitos) y operar con ellos tomando como dirección los dígitos menos significativos.

La operación entre las partes puede hacerse por medio de sumas o multiplicaciones.

H(K)=digitos_menos_significativos((d1..di)+(di+1..dj)+…+(d1..dn))+1

Sea:
K1=7259
K2=12345678

Dos claves que deban asignarse posiciones en el arreglo

H(k1)=(72+59)+1=(131)+1=32

H(k2)=(123+456+78)=(657)+1=658

SOLUCIONES DE COLISIONES.

19
Existe una colisión cuando hay una sola dirección para dos claves diferentes. Hay un costo
excesivo para resolver colisiones
Métodos:
 Reasignación.
 Encadenamiento o Tablas Hash Abiertas.
 Arreglos anidados.

CAPÍTULO 3: LISTAS

3.1. TEORÍA Y MÉTODOS RECURSIVOS

¿QUÉ ES LA RECURSIVIDAD?
Es un concepto fundamental en matemáticas y en computación. Es una alternativa diferente
para implementar estructuras de repetición diferentes. Se dice que una función es recursiva
cuando se define en función de si misma.
No todas las funciones pueden llamarse a sí mismas, deben estar diseñadas especialmente para
que sean recursivas, de otro modo podrían conducir a bucles infinitos, o a que el programa
termine inadecuadamente. Se puede usar en toda situación en la cual la solución pueda ser
expresada como una secuencia de movimientos, pasos o transformaciones gobernadas por un
conjunto de reglas no ambiguas.
Cuando se llama a una función, se crea un nuevo juego de variables locales, de este modo, si
la función hace una llamada a sí misma, se guardan sus variables y parámetros. La nueva
instancia de la función trabajará con su propia copia de las variables locales, cuando esta
segunda instancia de la función retorna, recupera las variables y los parámetros anteriores y
continúa la ejecución en el punto en que había sido llamada.

ALGORITMO RECURSIVO:
Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de
una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente.

RECURSIÓN DIRECTA E INDIRECTA:

20
Cuando un procedimiento o función incluye una llamada a sí mismo se conoce como Recursión
Directa. Cuando un procedimiento o función llama a otro procedimiento y éste causa que el
procedimiento original sea invocado, se conoce como Recursión Indirecta.
Ejemplos:

3.2. OPERACIONES CON LISTAS.


LISTA:
Es un vector de dimensión variable. Esto es que solamente utiliza la cantidad de elementos
mínima necesaria.

Por ejemplo:

Supongamos que tenemos un programa que gestiona los datos de los alumnos de una asignatura
y el programa está diseñado para una cantidad máxima de 50 plazas. Si en un año solamente
hay 4 alumnos, no hay necesidad de declarar un vector de 50 elementos si solo vamos a usar 4,
la memoria que necesitaría es mucho menor si se manejan las listas que si utilizamos vectores.
La forma que tiene de almacenar los valores es a través de nodos, donde guarda todos los datos
del elemento más una referencia a otro nodo que representa el siguiente elemento de la lista.
Una lista es una estructura dinámica de datos. La cantidad de nodos en una lista puede variar
de manera drástica conforme se insertan o remueven elementos. La naturaleza dinámica de una
lista contrasta con la naturaleza estática de un arreglo, cuyo tamaño permanece constante. En
21
una representación secuencial, los elementos están ordenados explícitamente, es decir, cada
elemento contenía dentro de sí mismo la dirección del siguiente.

Cada elemento de la lista se denomina un nodo y contiene dos campos, uno de información y
uno de dirección siguiente. El campo de información contiene el elemento real en la lista. El
campo de dirección siguiente contiene la dirección del siguiente nodo en la lista. Tal dirección,
que se usa para acceder a un nodo particular, se conoce como apuntador.

Se accede a toda la lista a partir de un apuntador externo cabeza (head o cab) que apunta al
(contiene la dirección del) primer nodo en la lista. Por apuntador externo, nos referimos a uno
que no está incluido dentro de un nodo. Más bien, es posible acceder a su valor directamente
haciendo referencia a una variable.

El campo de dirección siguiente del último nodo en la lista contiene un valor especial, conocido
como null (nulo), el cual no es una dirección válida. Este apuntador nulo se usa para señalar el
fin de una lista. La lista que no contiene nodos se denomina lista vacía o lista nula.

22
CONSIDERACIONES:

 Para recorrer todos los nodos de una lista se comienza con el primero.
 Tomando el valor del campo SIG de éste se avanza al segundo.
 La dirección de un nodo, excepto el primero, está dada por el campo SIG de su
predecesor.
 Las listas son estructuras de dato recursivas, pueden manejarse fácilmente con procesos
recursivos.

3.3. LISTAS CIRCULARES.

Una lista circular es una lista lineal en la que el último elemento apunta al primero. Entonces
es posible acceder a cualquier elemento de la lista desde cualquier punto dado. Las operaciones
sobre una lista circular resultan más sencillas ya que se evitan casos especiales. Por ejemplo,
el método añadir de la clase ClistaLinealSE expuesta anteriormente contempla dos casos:
insertar al principio de la lista e insertar a continuación de un elemento. La siguiente figura
muestra cómo se ve una lista circular simplemente enlazada.

Cuando recorremos una lista circular, diremos que hemos llegado al final de la misma cuando
nos encontremos de nuevo en el punto de partida, suponiendo, desde luego, que el punto de
partida se guarda de alguna manera en la lista; por ejemplo con una referencia fija al mismo.
Esta referencia puede ser al primer elemento de la lista, también puede ser al último elemento,
en cuyo caso también es conocida la dirección del primer elemento. Otra posible solución sería
poner un elemento especial identificable en cada lista circular como lugar de partida. Este
elemento especial recibe el nombre de elemento de cabecera de la lista. Esto presenta, además,
la ventaja de que la lista circular no estará nunca vacía.

23
3.4. LISTAS DOBLEMENTE LIGADAS.
En algunas aplicaciones podemos desear recorrer la lista hacia adelante y hacia atrás, o dado
un elemento, podemos desear conocer rápidamente los elementos anterior y siguiente. En tales
situaciones podríamos desear darle a cada celda sobre una lista un puntero a las celdas siguiente
y anterior en la lista tal y como se muestra en la figura.

Otra ventaja de las listas doblemente enlazadas es que podemos usar un puntero a la celda que
contiene el i-ésimo elemento de una lista para representar la posición i, mejor que usar el
puntero a la celda anterior aunque lógicamente, también es posible la implementación similar
a la expuesta en las listas simples haciendo uso de la cabecera. El único precio que pagamos
por estas características es la presencia de un puntero adicional en cada celda y
consecuentemente procedimientos algo más largos para algunas de las operaciones básicas de
listas.

3.5. REPRESENTACIÓN DE POLINOMIOS.


Las listas se utilizan para almacenar los coeficientes diferentes de cero del polinomio, junto al
exponente. Así, por ejemplo, dado el polinomio:

Su representación mediante lista, sería como sigue:

24
3.6. SOLUCIONES DE COLISIONES (HASH).

La elección de un método adecuado para resolver colisiones es tan importante como la elección
de una buena función hash. Cuando la función hash obtiene una misma dirección para dos
claves diferentes, se está ante una colisión. Algunos métodos más utilizados para resolver
colisiones son los sig.:

 Reasignación
 Arreglos anidados
 Áreas de desborde
REASIGNACIÓN:

Existen varios métodos que trabajan bajo el principio de comparación y reasignación de


elementos. Se analizaran tres de ellos:

1. Prueba lineal
2. Prueba cuadrática
3. Doble dirección hash

PRUEBA LINEAL

Consiste en que una vez detectada la colisión se debe de recorrer el arreglo secuencialmente a
partir del punto de colisión, buscando al elemento. El proceso de búsqueda concluye cuando el
elemento es hallado, o bien cuando se encuentra una posición vacía. Se trata al arreglo como a
una estructura circular: el siguiente elemento después del último es el primero. La principal
desventaja de este método es que puede haber un fuerte agrupamiento alrededor de ciertas
claves, mientras que otras zonas del arreglo permanecerán vacías. Si las concentraciones de

25
claves son muy frecuentes, la búsqueda será principalmente secuencial perdiendo así las
ventajas del método hash.

PRUEBA CUADRÁTICA

Este método es similar al de la prueba lineal. La diferencia consiste en que en el cuadrático las
direcciones alternativas se generan como D + 1, D + 4, D + 9, . . ., D + i² en vez de D + 1, D +
2,...,D + i. Esta variación permite una mejor distribución de las claves colisionadas. La principal
desventaja de este método es que pueden quedar casillas del arreglo sin visitar. Además, como
los valores de las direcciones varían en 1² unidades, resulta difícil determinar una condición
general para detener el ciclo. Este problema podría solucionarse empleando una variable
auxiliar, cuyos valores dirijan el recorrido del arreglo de tal manera que garantice que serán
visitadas todas las casillas.

DOBLE DIRECCIÓN HASH

Consiste en que una vez detectada la colisión se debe generar otra dirección aplicando la
función hash a la dirección previamente obtenida. El proceso se detiene cuando el elemento es
hallado, o bien cuando se encuentra una posición vacía. D = H(K) D' = H(D) D'' = H(D') La
función hash que se aplique a las direcciones puede o no ser la misma que originalmente se
aplicó a la clave. No existe una regla que permita decidir cuál será la mejor función a emplear
en el cálculo de las sucesivas direcciones.

ARREGLOS ANIDADOS

Este método consiste en que cada elemento del arreglo tenga otro arreglo en el cual se almacena
los elementos colisionados. Si bien la solución parece ser sencilla, es claro también que resulta
ineficiente. Al trabajar con arreglos se depende del espacio que se ha asignado a este lo cual
conduce a un nuevo problema difícil de solucionar: elegir un tamaño adecuado de arreglo que
permita el equilibrio entre el coste de memoria y el número de valores colisionados que pudiera
almacenar

26
3.7. APLICACIONES
Algunas aplicaciones usando pilas son las siguientes:

LLAMADAS A SUBPROGRAMAS:

Cuando se tiene un programa que llama a un subprograma, internamente se usan pilas para
guardar el estado de las variables y la dirección del programa en el momento que se hace la
llamada, para que cuando termine la ejecución del subprograma, los valores almacenados en la
pila puedan recuperarse para continuar con la ejecución del programa en el punto en el cual fue
interrumpido.Por ejemplo, se tiene un programa principal (PP) que llama a los subprogramas
UNO y DOS. A su vez,el subprograma DOS llama al subprograma TRES. Cada vez que la
ejecución de uno de los subprogramas concluye, se regresa el control al nivel inmediato
superior.

RECURSIÓN:

Con cada llamada recursiva se crea una copia de todas las variables y constantes que estén
vigentes, y se guarda esa copia en la pila, para usarse posteriormente una vez terminado el
proceso recursivo.

TRATAMIENTO DE EXPRESIONES ARITMÉTICAS:

Convertir expresiones en notación infija (el operador está entre los operandos, por ejemplo: A
+ B) a su equivalente en notación postfija o prefija (el operador está después o antes de los
operandos, respectivamente; por ejemplo: AB+ y +AB).

ORDENACIÓN:
Otra aplicación de las pilas puede verse en el método de ordenación rápida.

27
CAPÍTULO 4: PILAS Y COLAS

4.1. PILAS.

Una pila es una estructura de datos en la cual el acceso está limitado al elemento más
recientemente insertado y solamente puede crecer y decrecer por uno de sus extremos. Las
pilas se denominan también estructuras LIFO (Last-In-First-Out), porque su característica
principal es que el último elemento en llegar es el primero en salir.

En todo momento, el único elemento visible de la estructura es el último que se colocó. Se


define el tope de la pila como el punto donde se encuentra dicho elemento.

4.1.2. OPERACIONES CON PILAS.

push( x ) --> Inserta x


pop( ) --> Elimina el último elemento insertado
info( ) --> Retorna el último elemento insertado
esVacia( ) --> Retorna true si no existen elementos; false en caso contrario
vaciar( ) --> Elimina todos los elementos

4.1.3. USO DE PILAS PARA SIMULAR RECURSIÓN.

Las pilas pueden ser usadas para implementar la recursión en programas. Una función o
procedimiento recursivo es aquel que se llama a si mismo.

Ejemplos:
 Factorial
 Números de Fibonacci
 Torres de Hanoi
 Algoritmos de Ordenamiento de datos

28
4.1.4. APLICACIONES.
Las pilas tienen muchas aplicaciones. Por ejemplo, cuando se realiza una llamada de función,
la función llamada debe saber la manera de regresar a su invocador, y por esto la dirección, de
devolución se pone en una pila.

Si sucede una serie de llamadas de función, los valores de devolución sucesivos se ponen en la
pila en un orden último en entrar, primero en salir, para que cada función pueda regresar a su
invocador.

Las pilas son requeridas para implementar el control de flujo de ejecución de un programa con
subprogramas (funciones, procedimientos o métodos).
 Subprogramas recursivos o no recursivos
 Existen llamadas a ejecución de subprogramas.
 Un subprograma se ejecuta completamente antes de retornar al punto donde fue
llamado.

4.2. COLAS.

Es un conjunto ordenado de elementos del que pueden suprimirse estos, de un extremo


(llamado la parte delantera) y en el que pueden insertarse elementos del otro extremo (llamado
la parte posterior de la cola). El primer elemento insertado en una cola es el primer elemento
que se suprime. Por esta razón, se conoce a la Cola como un lista tipo FIFO (primero en entrar,
el primero en salir).

Una cola es una estructura lineal, en la cual los elementos sólo pueden ser adicionados por uno
de sus extremos y eliminados o consultados por el otro. También hay que tener presente, que
el único elemento visible en una cola es el primero y mientras éste no haya salido (eliminado),
no es posible tener acceso al siguiente.

4.2.2. OPERACIONES CON COLAS.


encolar( x ) --> Inserta x
desencolar( ) --> Elimina el primer elemento
info( ) --> Retorna el primer elemento
esVacia( ) --> Retorna true si no existen elementos ; false en caso contrario
vaciar( ) --> Elimina todos los elementos

29
4.2.3. COLAS CIRCULARES.
La cola circular propone tratar el arreglo como un círculo en donde cuando la longitud se hace
igual al tamaño, el siguiente elemento es el de índice 0. Esto permite utilizar todos los espacios
que quedan libres en el arreglo luego de realizar eliminaciones de nodos.

Es una representación lógica de la cola en un arreglo. El frente y final son movibles. Cuando
el frente o final llegan al extremo se regresan a la primera posición del arreglo.

4.2.4. DOBLE COLA.


Estructura lineal en la que los elementos se pueden añadir o quitar por cualquier extremo de la
cola (cola bidireccional).

4.2.5. APLICACIONES CON COLAS.

IMPLEMENTACIÓN DE COLAS

Arreglo
 con frente fijo.
 con frente movible.
 circular.

LISTAS ENLAZADAS

REPRESENTACIÓN USANDO ARREGLOS

Cuando la cola está vacía las variables frente y final son nulos y no es posible remover
elementos. Cuando la cola está llena ( frente = 0 y final = n-1) no es posible insertar elementos
nuevos a la cola.

30
Cuando se remueven elementos el frente puede incrementarse para apuntar al siguiente
elemento de la cola (implementación con frente móvil) o los elementos en la cola pueden
desplazarse una posición adelante (implementación con frente fijo)

Recuperación de espacio: Cuando no hay espacios libres al final del arreglo los elementos
pueden ser desplazados para desocupar posiciones en un extremo del arreglo o se puede
manejar una estructura circular.

CAPÍTULO 5: ÁRBOLES.

5.1. ÁRBOLES EN GENERAL.

Intuitivamente el concepto de árbol implica una estructura en la que lo datos se organizan de


modo que los elementos de información están organizados entre sí a través de ramas.

Un árbol consta de un conjunto finito de elementos, denominados nodos, y un conjunto finito


de líneas dirigidas, denominadas ramas, que conectan los nodos.

Si el árbol no está vacío, entonces el primer nodo se llama raíz.

El nivel de un nodo es su distancia a la raíz. La altura o profundidad de un árbol es el nivel de


la hoja del camino más largo desde la raíz más uno.

 Nodo Padre de un nodo N es aquel que apunta al mismo. En un árbol cada nodo sólo
puede tener un padre.
 Nodo Hijo de otro nodo A es cualquier nodo apuntado por el nodo A. Un nodo puede
tener varios hijos.
 Nodo Raíz es el único del árbol que no tiene padre.
 Hojas son todos los nodos que no tienen hijos.
 Nodos Interiores son los nodos que no son ni el nodo raíz, ni nodos hoja.
 Camino es una secuencia de nodos, en el que dos nodos consecutivos cualesquiera son
padre e hijo.
 Rama es un camino desde el nodo raíz a una hoja.

31
 Grado es el número máximo de hijos que tienen los nodos del árbol.

5.2. ÁRBOLES BINARIOS.

Un Árbol binario es un árbol de grado 2. Es decir cada nodo tiene como máximo dos hijos.
Está formado por un nodo cuyos subárboles izquierdo y derecho son a su vez árboles binarios.
Existen algunos tipos especiales de árboles binarios en función de ciertas propiedades. Por
ejemplo:

 Árbol binario equilibrado es aquel en el que en todos sus nodos se cumple la siguiente
propiedad: altura (subárbol_derecho)- altura (subárbol_izquierdo) Es menor o igual a
1.

 Árbol binario completo es aquel en el que todos los nodos tienen dos hijos y todas las
hojas están en el mismo nivel. Se denomina completo porque cada nodo, excepto las
hojas, tiene el máximo de hijos que puede tener.

5.3. RECORRIDOS EN ÁRBOLES BINARIOS.


Recorrer un árbol consiste en acceder una sola vez a todos sus nodos. Esta operación es básica
en el tratamiento de árboles y permite, por ejemplo, imprimir toda la información almacenada
en el árbol, o bien eliminar toda esta información o, si tenemos un árbol con tipo base numérica,
sumar todos los valores.

En el caso de los árboles binarios, el recorrido de sus distintos nodos se debe realizar en tres
pasos:
 Acceder a la información de un nodo dado
 Acceder a la información del subárbol izquierdo de dicho nodo
 Acceder a la información del subárbol derecho de dicho nodo.

Imponiendo la restricción de que el subárbol izquierdo se recorre siempre antes que el derecho,
esta forma de proceder da lugar a tres tipos de recorrido, que se diferencian por el orden en el
que se realizan estos tres pasos.

Preorden: primero se accede a la información del nodo raíz, después al subárbol izquierdo y
después al derecho.

32
Inorden: primero se accede a la información del subárbol izquierdo, después se accede a la
información del nodo raíz y, por último, se accede a la información del subárbol derecho.
Postorden: primero se accede a la información del subárbol izquierdo, después a la del
subárbol derecho y, por último, se accede a la información del nodo raíz.

5.4. ÁRBOLES BINARIOS DE BÚSQUEDA.

Un árbol binario de búsqueda es una estructura de datos de tipo árbol binario en el que para
todos sus nodos, el hijo izquierdo, si existe, contiene un valor menor que el nodo padre y el
hijo derecho, si existe, contiene un valor mayor que el del nodo padre.

Es de búsqueda por:
 Los nodos están ordenados de manera conveniente para la búsqueda.
 Todos los datos del subárbol izquierdo son menores que el dato del nodo raíz, y todas
los datos del subárbol derecho son mayores.

INSERCIÓN
La operación de inserción de un nuevo nodo en un árbol binario de búsqueda consta de tres
fases básicas:
1. Creación del nuevo nodo
2. Búsqueda de su posición correspondiente en el árbol. Se trata de encontrar la posición
que le corresponde para que el árbol resultante siga siendo de búsqueda. 3. Inserción en
la posición encontrada. Se modifican de modo adecuado los enlaces de la estructura.

ELIMINAR
Existen cuatro distintos escenarios:
1. Intentar eliminar un nodo que no existe. – No se hace nada, simplemente se regresa
FALSE.
2. Eliminar un nodo hoja; se borra el nodo y se actualiza el apuntador del nodo padre a
NULL.
3. Eliminar un nodo con un solo hijo; el nodo hijo se convierte en el padre.
4. Eliminar un nodo con dos hijos, es necesario mover más de una referencia.
5. Se busca el máximo de la rama izquierda o el mínimo de la rama derecha.

33
ÁRBOLES BALANCEADOS.

Los árboles binarios de búsqueda, son eficientes en las operaciones de búsqueda, inserción y
eliminación pero qué sucede cuando el árbol crece o decrece descontroladamente, la eficiencia
de la estructura de datos decae. Una situación crítica es cuando se insertan elementos
ordenados en un AB veamos el ejemplo:

El árbol crece en profundidad hacia la derecha.

ÁRBOLES BALANCEADOS
La idea central – Realizar reacomodos o balanceos después de inserciones o eliminaciones de
elementos. – Se les conoce igual como árboles AVL – (autores: G.M. Adelson-Velskii y E.M
Landis).

Es un árbol binario de búsqueda, en la cual se cumple la siguiente condición “Para todo nodo
T del árbol la altura de los subárboles izquierdo y derecho no deben diferir en más de una
unidad “.

FACTOR DE EQUILIBRIO
Se calcula FE= Hrd – Hri
Los valores que puede tomar son: -1, 0, 1
Si no son estos valores se tendrá que reestructurar el árbol

REESTRUCTURACIÓN
34
INSERCIÓN

El proceso de inserción en un árbol balanceado es sencillo pero con detalles complicados.


Paso 1 seguir un camino de búsqueda para localizar el lugar de la inserción.
Paso 2 calcular el FE (obviamente 0)
Paso 3 regresar por el camino calculando el Fe de los distintos nodos, si en algún momento se
viola el criterio de equilibrio

Se reestructura el árbol.
Significa rotar los nodos del mismo y puede ser:
SIMPLE
DD (Derecha derecha)
II (izquierda, izquierda)
COMPUESTA
DI (derecha izquierda)
ID (izquierda derecha)
Rotación hacia la izquierda izquierda

Rotación hacia la derecha derecha

35
Rotación hacia la derecha izquierda

Rotación hacia la izquierda derecha

ELIMINACIÓN

Se tienen los mismos casos que en árboles binarios de búsqueda


1. Nodo terminal u hoja se suprime
2. Un descendiente(izquierda o derecha) se sustituye
3. Dos descendientes Buscamos en el subárbol izquierdo el que esté más a la derecha
Buscamos en el subárbol derecho el que se encuentre más a la izquierda.
PASO 1.- Se busca la ruta
PASO 2.-Se aplica la regla anterior
PASO 3.- Regresar por el camino de búsqueda y recalcular Fe.
PASO 4.- Si en un momento se viola la regla se reacomoda como en la inserción
PASO 5.- Se hace la operación hasta llegar al nodo raíz

36
CAPÍTULO 6: ÁRBOLES EN DISCO

6.1. INTRODUCCIÓN.

Cuando se tienen un conjunto de datos masivos, no se pueden mantener en memoria principal,


la información debe ser ingresada en memoria auxiliar, generalmente el disco.

Los accesos a discos son críticos, consumen recursos y necesitan más tiempo que las
instrucciones en memoria, se necesita reducir el acceso al disco, para ello se utiliza los árboles
m-arios, ya no tienen dos ramas como los árboles binarios, sino que pueden tener hasta m-
ramas, y las claves se organizan al igual que un árbol binario de búsqueda.

El objetivo es que la altura del árbol sea pequeña, para que los accesos al disco sean menos
costosos. Un tipo especial de estos árboles son los árboles B.

Los árboles B son m-arios cada nodo tiene como máximo m ramas, no tienen subárboles vacíos
y siempre están perfectamente equilibrados.

Los nodos de un árbol B se denominan página, cada página es una unidad a la que se accede
en bloque. Las características de un árbol B son:

 Todas las páginas hojas están en el mismo nivel


 Todas las páginas internas menos la raíz, tienen a lo sumo m ramas no vacías y como
mínimo m/2 ramas.
 El número de claves de la página, es uno menos que el número de ramas
 La raíz puede tener como máximo m ramas, puede llegar tener hasta dos y ninguna si
el árbol consta solamente de la raíz.

37
6.2. BÚSQUEDA E INSERCIÓN.

BÚSQUEDA
Localizar una clave en un B-árbol es una operación simple pues consiste en situarse en el nodo
raíz del árbol,si la clave se encuentra ahí hemos terminado y si no es así seleccionamos de entre
los hijos el que se encuentra entre dos valores de clave que son menor y mayor que la buscada
respectivamente y repetimos el proceso hasta que la encontremos .En caso de que se llegue a
una hoja y no podamos proseguir la búsqueda la clave no se encuentra en el árbol.En
definitiva,los pasos a seguir son los siguientes:

1. Seleccionar como nodo actual la raíz del árbol.


2. Comprobar si la clave se encuentra en el nodo actual:
2.1. Si la clave está, fin.
2.2. Si la clave no está.
● Si estamos en una hoja, no se encuentra la clave. Fin.
● Si no estamos en una hoja,hacer nodo actual igual al hijo que
corresponde según el valor de la clave a buscar y los valores de las claves
del nodo actual(i buscamos la clave K en un nodo con n claves: el hijo
izquierdo si K<K1,el hijo derecho si K>Kn y el hijo i-ésimo si
Ki<K<Ki+1)y volver al segundo paso.

INSERCIÓN
ALGORITMO:
 Si el árbol está vacío
- Retornar la nueva clave que se iba a insertar y la nueva página(NULL)
- Indicar que si se debe seguir propagando la revisión

 En la página dada, se busca en qué rama se debe insertar la nueva clave


Cuando se encuentre, y si hay espacio para insertar un nuevo elemento:
Ingresar la clave en la página y
La nueva página como rama derecha nueva de la página
Indicar que ya no se debe seguir revisando más arriba.
38
 Si se encuentra la posición en página y NO HAY espacio
Dividir la página, creando nueva página nueva página
Copiar mitad de las claves, incluyendo clave nueva en nueva página sin incluir clave
mediana
Retornar la clave mediana, la nueva página creada e indicar que si se debe seguir
revisando hacia arriba.
 Repetir todo, hasta que haya espacio o se llegue a la raíz, en ese caso, se debe crear una
nueva raíz con la clave mediana y añadir rama derecha como nueva página

6.3. ELIMINACIÓN, CONCATENACIÓN Y REDISTRIBUCIÓN.

Algoritmo de eliminación:

 Siempre se deberá eliminar claves de páginas hojas


 Si la clave está en una página interna
 Se busca su antecesora
 Mayor de los menores
 Se intercambia y se elimina la clave en página hoja
 Si está en página hoja
 Se debe mantener el equilibrio
 Si luego de eliminar, quedan más del mínimo de claves por página.
 Todo OK, se elimina fácilmente
 Si quedan menos del mínimo
 Se informa a la raíz del problema
 La raíz revisa si los hermanos de la página pueden prestar claves
 Sube clave a prestar
 Baja clave intermedia de raíz
 Si no tiene para prestar
 Bajar clave de raíz y unir dos hermanos
 Al hacer esto, la raíz puede quedar con menos claves y en ese caso propagar acción
hacia más arriba.

39
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
INGENIERÍA DE SOFTWARE

Elaborado por:
Ing. Osvaldo Pereira

Revisado por:
Ing. Miguel Quiroz

40
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPITULO 1 ..................................................................................................................... 3
GENERALIDADES. ........................................................................................................... 3
1.1 Definiciones básicas de Software. .......................................................................... 3
1.2. Características del software ................................................................................... 4
1.3. Definiciones de Ingeniería de software................................................................... 4
1.4. Responsabilidad Profesional y ética. ...................................................................... 5
1.5. Los sistemas y su entorno. ..................................................................................... 6
1.6. Modelado de Sistemas. .......................................................................................... 9
1.7. El proceso de la Ingeniería de sistemas. .............................................................. 10
CAPITULO 2 ................................................................................................................... 13
2. PROCESOS DEL SOFTWARE. ................................................................................... 13
2.1. Modelos del proceso del software. ....................................................................... 13
2.7. Ayuda automatizada al proceso. .......................................................................... 20
CAPITULO 3 ................................................................................................................... 22
3. REQUERIMIENTOS DEL SOFTWARE........................................................................ 22
3.1. Requerimientos Funcionales y no Funcionales. ................................................... 23
3.2. Requerimientos del Usuario. ................................................................................ 24
3.3. Requerimientos del Sistema. ............................................................................... 24
3.4. Obtención y análisis de requerimientos. ............................................................... 25
3.5. Documento de especificación de requerimientos del sistema............................... 25
3.6. Validación de requerimientos ............................................................................... 25
CAPITULO 4 ................................................................................................................... 26
4. MODELOS DE SISTEMAS. ......................................................................................... 26
4.1. Modelos de Contexto. .......................................................................................... 26
4.2. Modelos de comportamiento. ............................................................................... 27
4.3. Modelos de datos. ................................................................................................ 30
4.4. Modelos de Objetos. ............................................................................................ 30
4.5. Bancos de trabajo CASE. ..................................................................................... 31
CAPITULO 5 ................................................................................................................... 32
5. DISEÑO DE SOFTWARE. ........................................................................................... 32
5.1. Fundamentos de Diseño ...................................................................................... 32
5.2. Estructura y arquitectura de software ................................................................... 32
5.7. Patrones de diseño. ............................................................................................. 33
CAPITULO 6 ................................................................................................................... 36

2
6. CONSTRUCCIÓN DE SOFTWARE ............................................................................ 36
6.1. Buenas prácticas en la construcción de software ................................................. 36
6.2. Lenguajes de Programación ................................................................................ 38
6.3. Reutilización de componentes de software .......................................................... 38
6.4. Integración ........................................................................................................... 44
6.5. Control de versiones ............................................................................................ 47
CAPITULO 7 ................................................................................................................... 48
7. VERIFICACIÓN Y VALIDACIÓN. ................................................................................ 48
7.4. Tipos de pruebas de software .............................................................................. 48
CAPITULO 8 ................................................................................................................... 53
8. DESPLIEGUE Y MANTENIMIENTO DE SOFTWARE. ................................................ 53
8.1. Gestión de la configuración .................................................................................. 53

CAPITULO 1

GENERALIDADES.

1.1 Definiciones básicas de Software.

¿Qué es software?
Programas de ordenador y la documentación asociada. Los productos de software se pueden
desarrollar para algún cliente en particular o para un mercado general.

Tipos de productos de Software:

● Productos génericos: Sistemas aislados producidos por una organización de desarrollo


y que se venden al mercado abierto a cualquier cliente que le sea posible comprarlo.
Ej: bases de datos, procesadores de texto, etc.
● Productos personalizados (o hechos a medida).- Sistemas requeridos por un cliente
en particular. Un contratista de software desarrolla el software especialmente para ese
cliente.

3
Ej: Sistema de control para instrumentos electrónicos, sistema de control de tráfico
aéreo.
Un nuevo software puede ser creado a partir de otro nuevo programa desarrollado, de la
configuración de un sistema genérico o de la reutilización de software existente.

1.2. Características del software

¿Cuáles son los atributos de un buen software?


El software debería entregar las funcionalidades requeridas y rendimiento al usuario y además
debería ser mantenible, confiable y usable.

● Mantenibilidad
○ El software debe evolucionar para cumplir las necesidades de cambios;
● Confiabilidad
○ El software debe ser de confianza;
● Eficiencia
○ El software no debería hacer que se malgasten los recursos del sistema;
● Usabilidad
○ El software debe ser aceptado por el usuario para quien fue diseñado. Esto
significa que debe ser entendible, usable y compatible con otros sistemas.

1.3. Definiciones de Ingeniería de software

¿Qué es Ingeniería de Software?


La Ingeniería de Software es una disciplina de ingeniería que comprende todos los aspectos de
la producción de software.
Los ingenieros de software adoptan un enfoque sistemático y organizado en su trabajo, además
del uso apropiado de herramientas y técnicas dependiendo del problema a resolver, las
restricciones del desarrollo y la disponibilidad de los recursos.

¿Cuáles son los costos de la Ingeniería de Software?


Aproximadamente el 60% de los costos son para desarrollo, el 40% para costos de pruebas.
Para software especializado, la evolución de los costos a menudo excede los costos de
desarrollo.
4
El costo varía dependiendo del tipo de sistema que esté siendo desarrollado y de los
requerimientos del sistema tales como rendimiento (performance) y la fiabilidad (reliability).
La distribución de los costos depende del modelo de desarrollo que es usado.

¿Cuáles son los retos fundamentales que afronta la Ingeniería de Software?


1. El reto de la heterogeneidad
a. –Desarrollar técnicas para construir software confiable que pueda acoplarse con
otras plataformas o la ejecución con otros sistemas;
2. El reto de la entrega
a. –Desarrollar técnicas que permitan reducir los tiempos de entrega para sistemas
grandes y complejos sin comprometer la calidad del sistema;
3. El reto de la confianza
a. Desarrollar técnicas que demuestren que los usuarios pueden confiar en el
software.

1.4. Responsabilidad Profesional y ética.

Los ingenieros de software deben aceptar que su trabajo comprende responsabilidades más
amplias que simplemente la aplicación de habilidades técnicas. Deben comportarse de una
forma ética y moral responsible si es que desean ser respetados como profesionales. El
comportamiento ético es más que un simple cumplimiento de leyes.
● Confidencialidad
○ Normalmente los Ingenieros deben respetar la confidencialidad de sus
empleadores o clientes independientemente de si es o no un acuerdo de
confidencialidad formal ha sido firmado.

● Competencia
○ Los ingenieros no deben tergiversar su nivel de competencia. Ellos no deben
aceptar a sabiendas que el trabajo está fuera de su competencia.
● Derechos de propiedad intelectual
○ Los ingenieros deben ser conscientes de las leyes locales que regulan el uso de
la propiedad intelectual, tales como patentes, derechos de autor, etc., deben
tener cuidado para asegurar que la propiedad intelectual de los empleadores y
clientes está protegida.
● Mal uso del computador
○ –Los ingenieros de software no deben utilizar sus habilidades técnicas para un
mal uso de los ordenadores de otras personas. El mal uso del ordenador varía
desde algo relativamente trivial (jugar en la máquina de un empleador, por
ejemplo) a extremadamente grave (difusión de virus).
5
1.5. Los sistemas y su entorno.

¿Qué es un sistema?
Una colección de componentes interrelacionados que trabajan juntos para lograr un objetivo
común.
Un sistema puede incluir software, mecánica, eléctrica y electrónica hardware y ser operado
por personas.
Los componentes del sistema dependen de otros componentes del sistema?
Las propiedades y el comportamiento de los componentes del sistema están intrínsecamente
mezclados entre sí.

Categorías de los Sistemas

1. Sistemas basados en computadoras


Los sistemas que incluyen hardware y software, pero donde los operadores y los procesos
operacionales normalmente no se consideran parte del sistema. El sistema no es consciente de
sí mismo.

2. Sistemas socio-técnicos
Los sistemas que incluyen no solo a los sistemas técnicos, sino también a los procesos
operativos y de las personas que usan e interactúan con el sistema técnico. Sistemas socio-
técnicos se rigen por políticas de la organización y las reglas.
Los Sistemas Socio-técnicos son sistemas de organización destinados a ayudar a entregar una
meta organizacional o empresarial.

Si usted no entiende el entorno de la organización, donde se utiliza un sistema, es menos


probable que el sistema sirva para satisfacer las necesidades reales de la empresa y sus usuarios
Factores humanos y organiza

● Cambios de los procesos


○ ¿El sistema requiere cambios en los procesos de trabajo en el medio ambiente?
● Los cambios de trabajo
○ ¿El sistema inhibe las habilidades de los usuarios en un entorno o provoca que
cambien su forma de trabajar?
● Los cambios organizativos
○ ¿Cambia el sistema la estructura del poder político en una organización?

6
Características de los Sistemas Socio-técnicos
Propiedades emergentes, el sistema es un todo, dependen de los componentes y las relaciones
entre ellos. Se evalúan cuando el sistema está ensamblado
No deterministas, una entrada específica no produce siempre la misma salida.
Amplitud en apoyo a los objetivos de la organización.

Ejemplos de propiedades emergentes

7
Tipos de propiedades emergentes

● Propiedades funcionales
Estas aparecen cuando todas las partes de un sistema trabajan juntas para lograr algún objetivo.
Por ejemplo, una bicicleta tiene la propiedad funcional de ser un dispositivo de transporte una
vez que ha sido ensamblado a partir de sus componentes.

● Propiedades emergentes no funcionales


Ejemplos son la fiabilidad, rendimiento, seguridad, y la seguridad. Estas se relacionan con el
comportamiento del sistema en su entorno operacional. Ellas son a menudo críticas para los
sistemas basados en ordenador como la imposibilidad de lograr algún nivel definido mínimo
en estas propiedades puede hacer que el sistema inutilizable.

Influencia sobre la fiabilidad

Fiabilidad Hardware
¿Cuál es la probabilidad de que un componente de hardware falle y cuánto tiempo se tarda en
reparar ese componente?

Fiabilidad Software
¿Qué probabilidades hay de que un componente de software producirá una salida incorrecta.
La falla de software suele ser distinto de un fallo de hardware ya que el software no se desgasta.

Fiabilidad del operador


¿Qué probabilidades hay de que el operador de un sistema cometa un error?

Medición de propiedades emergentes

Propiedades tales como el rendimiento y la fiabilidad pueden ser medidos.


Sin embargo, algunas propiedades son propiedades que el sistema no debe exhibir
–Seguridad - el sistema no debe comportarse de una manera insegura;
–Protección - el sistema no debe permitir el uso no autorizado.

8
1.6. Modelado de Sistemas.
Es el proceso para desarrollar modelos abstractos de un sistema, donde cada modelo presenta
una visión o perspectiva diferente de dicho sistema.
Los modelos se usan durante el proceso de ingeniería de requerimientos para ayudar a derivar
los requerimientos de un sistema, durante el proceso de diseño para describir el sistema a los
ingenieros que implementan el sistema.
Modelos del sistema existente, ayudan a aclara lo que hace el sistema existente y pueden
utilizarse como base para discutir sus fortalezas y debilidades
Modelos del sistema nuevo, ayudan a explicar los requerimientos propuestos a otros
participantes del sistema. Se usan para discutir las propuestas de diseño y documentar el
sistema para la implementación.
Desarrollar Modelos
Diferentes perspectivas
Externa (entorno del sistema)
Interacción (Entre el sistema y su entorno)
Estructural (Organización del sistema)
Comportamiento (Respuesta a eventos)
Modelos
Modelos de contexto
Establecer fronteras del sistema
Funciones que se incluirán dentro del sistema
Establecer procesos automatizados
Modelos de interacción
Los sistemas incluyen interacciones
Implican entradas y salidas del usuario
Interacciones entre el sistema y otros sistemas o entre los componentes del sistema
Modelos estructurales
Muestran la organización de un sistema,en términos de los componentes que constituyen
dicho sistema y sus relaciones.Son modelos estáticos que muestran la estructura del diseño
del sistemas,o modelos dinámicos que revelan la organización del sistema cuando se ejecuta.
Modelos de comportamiento

9
Son modelos de comportamiento del sistema conforme se ejecutan. Se muestra lo que sucede
o lo que se supone que pasa cuando un sistema responde a un estímulo de su entorno. Son de
dos tipos:
– Datos (Datos se procesan en el sistema)
– Eventos (Activan el procesamiento del sistema)

1.7. El proceso de la Ingeniería de sistemas.

Especificación, diseño, implementación, validación, desplegamiento y mantenimiento de los


sistemas socio-técnicos.
Preocupados por los servicios prestados por el sistema, en el que se utiliza restricciones en su
construcción y funcionamiento y las formas.

Etapas de la vida de sistemas socio-técnicos

1. Procuración o Adquisición, se establecen propósitos, requerimientos


2. Desarrollo, se diseña el sistema, se definen procesos operacionales
3. Operación, se implementa el sistema, se capacita a usuarios y se pone en
funcionamiento el sistema

Controladores para decidir la adquisición


10
● El estado de otros sistemas de la organización
● La necesidad de cumplir regulaciones externas
● Competencia externa
● Reorganización empresarial
● Presupuesto disponible

11
Desarrollo del sistema

Las metas de este proceso son diseñar o adquirir todos los componentes de un sistema y después
integrar dichos componentes para elaborar el sistema final.

Operación del Sistema

● Los procesos operacionales están relacionados con el uso del sistema para su propósito
definido
● Pueden surgir problemas no descubiertos
● Se require diseñar procesos operacionales que sean flexibles y adaptables
● La operación del nuevo Sistema junto con los sistemas existentes puede generar un
problema.
● Error humano
○ –El enfoque personal: Se considera el error responsabilidad del individuo y los
actos inseguros son consecuencia de un descuido individual o un
comportamiento imprudente
○ –El enfoque de sistemas: Las personas son falibles y se equivocarán. Los
sistemas eficaces tienen que reconocer la posibilidad del error humano, e incluir
barreras y protecciones que los detecten, y permitir que el sistema se recupere
antes de la falla

Evolución del Sistema

Los sistemas grandes tienen una larga vida útil. Ellos deben evolucionar para satisfacer las
necesidades cambiantes.
La evolución es inherentemente costosa

12
Los cambios deben ser analizados desde una perspectiva técnica y de negocios;
Cuando los subsistemas interactúan pueden surgir problemas que no están anticipados;
La estructura del sistema se corrompe cuando se realizan cambios a la misma.
Los sistemas existentes que deben mantenerse a veces se llaman los sistemas heredados.

Sistemas heredados

Son sistemas Socio-técnicos que se han desarrollado utilizando la tecnología vieja u obsoleta.
Crucial para la operación de un negocio y que a menudo es demasiado arriesgado deshacerse
de estos sistemas
–Sistema de contabilidad de clientes del Banco;
–Sistema de mantenimiento de aeronaves.
Los sistemas heredados restringen nuevos procesos de negocio y consumen una alta proporción
de los presupuestos de la empresa.

CAPITULO 2

2. PROCESOS DEL SOFTWARE.

2.1. Modelos del proceso del software.

Modelos

1. Cascada
2. Desarrollo Incremental
3. Ingeniería de Software orientada a la reutilización
4. Espiral
5. RUP

Modelo en Cascada

13
El principal inconveniente del modelo de cascada es la dificultad de acomodar cambio después
está en marcha el proceso. Una fase tiene que ser completa antes de pasar a la siguiente fase.
Este modelo sólo es apropiado cuando los requisitos son bien entendidos y los cambios serán
bastante limitados durante el proceso de diseño.

Desarrollo Incremental

Desarrollo exploratorio

14
El objetivo es trabajar con los clientes y para desarrollar un sistema final a partir de una
especificación inicial del contorno. Debe comenzar con requisitos bien entendidos y añadir
nuevas características según lo propuesto por el cliente.

Prototipado desechable
El objetivo es comprender los requisitos del sistema. Debe comenzar con requisitos poco
conocidos para aclarar lo que realmente se necesita.

Problemas
–El proceso no es visible
–La estructura del Sistema tiende a degradarse conforme se tienen nuevos incrementos

Aplicabilidad
–Para los sistemas interactivos de tamaño pequeño o mediano;
–Para las piezas de grandes sistemas (por ejemplo, la interfaz de usuario);
–Para los sistemas de corta vida.

Ingeniería de software orientada a la reutilización

Sobre la base de la reutilización sistemática donde los sistemas se integran a partir de


componentes o COTS (Commercial-off-the-shelf) Sistemas existentes.

Etapas del proceso

–Análisis de los componentes;


–Modificación Requisitos;
–Diseño del sistema con la reutilización;
–Desarrollo e integración.

Este enfoque se está utilizando cada vez más como han surgido normas que lo componen.

15
Component-based software engineering

Cómo enfrentar el cambio

Dos enfoques (relacionados)


–Entrega incremental
–Prototipo de sistema

16
Prototipo del sistema

Es una versión inicial de un sistema de software que se usa para demostrar conceptos, tratar
opciones de diseño y encontrar más sobre el problema y sus posibles soluciones.

Se usa para contribuir con:


–Proceso de ingeniería de requerimientos
–Proceso de diseño de sistemas

Los prototipos no tienen que ser ejecutables para ser útiles

Proceso de desarrollo de prototipo

Entrega incremental

En lugar de entregar el sistema en su totalidad, el desarrollo y la entrega se divide en


incrementos, con cada incremento se entrega parte de la funcionalidad requerida.
Requisitos de usuario se priorizan y las más altas exigencias prioritarias se incluyen en
incrementos tempranos.
Una vez que se inicia el desarrollo de un incremento, los requisitos están congelados aunque
los requisitos para incrementos posteriores pueden seguir evolucionando.

17
Desarrollo incremental

Ventajas del desarrollo incremental

El valor del cliente puede ser entregado con cada incremento la funcionalidad del sistema está
disponible antes.
Los primeros incrementos actúan como un prototipo para ayudar a obtener los requisitos para
incrementos posteriores.
Menor riesgo de fracaso del proyecto en general.
Los servicios de más alta prioridad del sistema tienden a recibir la mayoría de las pruebas.

MODELO BASADO EN EL RIESGO

Modelo Espiral

18
Modelo Espiral

El proceso se representa como una espiral en lugar de como una secuencia de actividades con
retroceso.
Cada bucle en la espiral representa una fase en el proceso.
Los riesgos se evalúan y se resolvieron durante todo el proceso de forma explícita

Sectores del modelo espiral

● Establecimiento de objetivos
○ –Se identifican los objetivos específicos para la fase.

● La evaluación y la reducción de riesgos


○ –Los riesgos se evalúan y las actividades puestas en marcha para reducir los
principales riesgos.

● Desarrollo y validación
○ –Un modelo de desarrollo para el sistema se elige lo que puede ser cualquiera
de los modelos genéricos.

● Planificación
○ –El proyecto se revisa y se planea la siguiente fase de la espiral.

MODELO del Proceso Unificado Racional (RUP)

Fases del RUP

1. Concepción
a. –Establecer el modelo de negocio para el sistema.
2. Elaboración
a. –Desarrollar una comprensión del dominio del problema y la arquitectura del
sistema.
3. Construcción
a. –El diseño del sistema, programación y pruebas.
4. Transición
a. –Implementar el sistema en su entorno operativo.
19
RUP buenas prácticas
● Desarrollar software iterativo
● Gestionar requisitos
● Utilizar las arquitecturas basadas en componentes
● Software modelado visualmente
● Verificar la calidad del software
● Control de cambios en el software

2.7. Ayuda automatizada al proceso.

Herramientas Case - Ingeniería de Software asistida por computadora


La ingeniería de software asistido por ordenador (CASE) es un software para apoyar los
procesos de desarrollo de software y evolución.

Automatización de actividades
–Editores gráficos para el desarrollo del modelo del sistema;
–Diccionario de datos para gestionar entidades de diseño;
–Constructor de interfaz de usuario gráfica para la construcción de la interfaz de
usuario;
–Depuradores para apoyar programa de detección de fallos;
–Traductores automáticos para generar nuevas versiones de un programa.

La tecnología CASE ha dado lugar a mejoras significativas en el proceso de software. Sin


embargo, estos no son del orden de magnitud de las mejoras que una vez se predijo
–Ingeniería de software requiere pensamiento creativo - esto no es automático
fácilmente;
–La ingeniería de software es una actividad de equipo y, para grandes proyectos, se
dedica mucho tiempo en las interacciones del equipo. Tecnología CASE no apoya
realmente estos.

CASE clasificación

20
La clasificación nos ayuda a entender los diferentes tipos de herramientas CASE y su apoyo a
las actividades del proceso.
● Perspectiva funcional
○ –Las herramientas se clasifican de acuerdo a su función específica.
● Perspectiva del proceso
○ –Las herramientas se clasifican de acuerdo a las actividades del proceso que son
compatibles.
● Perspectiva Integración
○ –Las herramientas se clasifican de acuerdo con su organización en unidades
integradas
2.8. Métodos ágiles para el proceso de desarrollo de software.
Permite que el equipo de desarrollo se enfoque en el software en lugar del diseño y la
documentación
Se apoyan en el enfoque incremental para la especificación, el desarrollo y la entrega de
software.
Adecuados para aplicaciones con requerimientos cambiantes
Entregan con prontitud el software operativo al cliente

Principios de los métodos ágiles

1. Participación del cliente


2. Entrega incremental
3. Personas, no procesos
4. Adoptar el cambio
5. Mantener simplicidad

Metodología Programación Extrema (XP)

Un enfoque del desarrollo basado en el desarrollo y la entrega de muy pequeños incrementos


de funcionalidad.
Se basa en la mejora constante de código, la participación del usuario en el equipo de desarrollo
y la programación por parejas.

Prácticas:

21
● Planeación incremental
● Liberaciones pequeñas
● Diseño simple
● Desarrollo de la primera prueba
● Refactorización
● Programación en pares
● Propiedad colectiva
● Integración continua
● Ritmo sustentable
● Cliente en sitio

Metodología Administración de un Proyecto Ágil (SCRUM)

Se enfoca en la administración iterativa del desarrollo, y no en los enfoques técnicos específicos


para la ingeniería de software ágil.
Tiene tres fases:
● –Planeación del bosquejo
● –Ciclos sprint (desarrolla un incremento del sistema)
● –Cierre del proyecto

Metodología Sprint
Es una unidad de planeación en que se valora el trabajo que se va a realizar , se selecciona las
particularidades por desarrollar y se implementa el software. Al final de un sprint, la
funcionalidad completa se entrega a los participantes
Características:
● Tienen longitud fija
● El punto de partida es la lista de trabajo por realizar en el proyecto
● La fase de selección incluye a todo el equipo del proyecto que trabaja con el cliente
● Se desarrolla el software, se realizan reuniones diarias con todos los miembros del
equipo
● Se revisar el trabajo y se presenta a los participantes

CAPITULO 3

3. REQUERIMIENTOS DEL SOFTWARE.


Cada requerimiento de ser:
22
● Necesario
● Realizable
● Conciso
● Correcto (exacto, técnica y legalmente)
● No ambiguo (solo puede ser interpretado de 1 FORMA)
● Completo (todas las condiciones bajo una oración)
● Consistente (no entra en conflicto con otros requisitos)
● Verificable (su implementación puede ser comprobada)
● Rastreable (a través del diseño, codificación, pruebas, documentación, etc.)
● Asignable (allocated): a un componente del diseño.
● Independiente del diseño: no debe de decir una solución específica.
● No redundante: no está duplicado.
● Escrito correctamente en modo imperativo (debe hacer algo)
● Con un único identificador.
● No debe incluir palabras como: excepto, pero, a menos que , generalmente, típicamente,
normalmente, etc)

Las dificultades en los proyectos se debe a:

1. Requerimientos no explícitos. Las necesidades reales del usuario no son definidas.


2. Los cambios en los requerimientos se hacen sin considerar costos, tiempos, impacto en
la calidad.
3. No se administran los requerimientos durante el ciclo de vida del proyecto.
4. Mala comunicación entre las partes involucradas en el proyecto (administrador,
desarrollo, diseño, etc.)
5. Métodos, técnicas, herramientas no son utilizadas.
6. Al cliente no se lo involucra como parte del proyecto. Se recurre a él al inicio y al final.

3.1. Requerimientos Funcionales y no Funcionales.

Requerimientos Funcionales

Especifican los servicios que debe de proporcionar la aplicación.


Ej: El sistema debe de calcular los valores obtenidos de las retenciones del impuesto al valor
agregado IVA y del impuesto a la RENTA de acuerdo a los porcentajes establecidos por el SRI
y sobre la base imponible.

Requerimientos no funcionales
23
Describen aspectos del sistema que no están directamente relacionados con el comportamiento
funcional.
Se ven y se sienten desde la interfaz del usuario, como por ejemplo : aspectos de seguridad y
tiempos de respuesta.
Deben definirse al mismo tiempo que los requisitos funcionales porque impactan en el
desarrollo y costo del sistema.
Se deben de identificar en conjunto entre el cliente y el desarrollador para determinar cuáles de
los atributos del sistema críticos para el trabajo del usuario.
Ej: El promedio del tiempo de respuestas por consultas por pantalla debe de ser de 10 segundos.
Ej: Cada pantalla debe permitir el fácil y rápido ingreso de toda la información.

3.2. Requerimientos del Usuario.


Son escritos para los clientes.
Audiencia primaria: Clientes
Audiencia secundaria: Desarrolladores
Identificación de los Stakeholders
Personas que tienen intereses en el resultado del producto.
Ej: Portal para comercio electrónico de empresa XYZ.
Visitantes (facilidad para encontrar información)
Dueños (ganancia en corto plazo)
Administradores (aplicación de seguimiento a visitantes)
Equipo de desarrollo (desean que sea hecha en una plataforma específica)

3.3. Requerimientos del Sistema.


Atributo necesario de un sistema
Un enunciado que identifica una capacidad, una característica, un factor de calidad del
sistema para lograr la utilidad y valor esperados por el usuario o cliente.

Stated requirements (requisitos manifestados):


–Son proporcionados por el usuario/cliente al inicio del desarrollo de un sistema/software.
Real requirements(requisitos reales):
–Reflejan las necesidades reales del sistema. Algunos requerimientos reales son omitidos
por el usuario /cliente cuando estos son expresados al inicio (stated requirements). EL reto
consiste en identificar estos requisitos reales.

24
3.4. Obtención y análisis de requerimientos.

Identificación de requerimientos
 Proceso interactivo e iterativo.

 Se requieren prácticas, mecanismos, métodos, herramientas efectivos.

 No debe ser un proceso complicado o costoso.

3.5. Documento de especificación de requerimientos del sistema.


Documentación descriptiva:
Descripción de requerimiento
Gráficos asociados.
Beneficios:
Cuando los requisitos están documentados existe un entendimiento común de lo que el
sistema involucrará.
El proceso de documentar puede ser entendido por todos los involucrados.
Cuando existe un entendimiento común aparecen mejoras al proceso, lo que conlleva a la
mejora continua y al empoderamiento de los que participan en el proceso.

3.6. Validación de requerimientos

1. Clasifique los requerimientos en funcionales y no funcionales.


2. Determine el tamaño con cuidado
–Un requisito funcional corresponde + o - a un método
–Demasiado grande: difícilde manejar
–Muy pequeño: no vale la pena traza rx separado.
3. Si es posible, deb ede ser trazable
–Asegurar que sea trazable durante el diseño e implementación
4. Debe poderse probar
5. Asegúrese de qu eno haya ambiguedad
25
6. Asigne una prioridad a los requisitos
–(“essential”); (“optional”); (“desirable”)
7. Verificar que el conjunto de requisitos esté completo
–Asegúrese que los requisitos necesarios que acompañan a requisito estén completos.
8. Incluya condiciones de error
9. Verificar consistencia
–Asegurar que cada requisito no contradiga aspectos de los otros requisitos.

Inspección de requisitos
Cuando no se especifican en detalle los requisitos las consecuencias pueden ser desastrosas.
El departamento de QA generalmente se queja de que no existen requisitos adecuados
contra los cuales sepueda verificar la aplicación.
Métricas=dinero+tiempo…..Debemos ser selectivos
Los requisitos específicos constituyen los primeros documentos de software que se pueden
inspeccionar.

CAPITULO 4

4. MODELOS DE SISTEMAS.
Es el proceso para desarrollar modelos abstractos de un sistema, donde cada modelo presenta
una visión o perspectiva diferente de dicho sistema.
Los modelos se usan durante el proceso de ingeniería de requerimientos para ayudar a derivar
los requerimientos de un sistema, durante el proceso de diseño para describir el sistema a los
ingenieros que implementan el sistema.
Modelos del sistema existente, ayudan a aclarar lo que hace el sistema existente y pueden
utilizarse como base para discutir sus fortalezas y debilidades.
Modelos del sistema nuevo, ayudan a explicar los requerimientos propuestos a otros
participantes del sistema. Se usan para discutir las propuestas de diseño y documentar el sistema
para la implementación.

4.1. Modelos de Contexto.


● Establecer fronteras del sistema
● Funciones que se incluirán dentro del sistema

26
● Establecer procesos automatizados

4.2. Modelos de comportamiento.


● Los sistemas incluyen interacciones
● Implican entradas y salidas del usuario
● Interacciones entre el sistema y otros sistemas o entre los componentes del sistema

27
Son modelos de comportamiento del sistema conforme se ejecutan. Se muestra lo que sucede
o lo que se supone que pasa cuando un sistema responde a un estímulo de su entorno. Son de
dos tipos:
–Datos (Datos se procesan en el sistema)
–Eventos (Activan el procesamiento del sistema)

Modelos Dirigidos por Eventos


Muestra cómo responde el sistema a eventos externos e internos. Se basa en la suposición de
que un sistema tiene un número finito de estados y que los eventos pueden causar una transición
de un estado a otro.

Diagrama de Secuencia
Sirven para modelar las interacciones entre los actores y los objetos en un sistema, así como
las interacciones de los objetos entre sí.
28
Muestras las sucesión de interacciones que ocurren durante un caso de uso particular o una
instancia de caso de uso.

29
4.3. Modelos de datos.
Muestran la secuencia de acciones involucradas en el procesamiento de datos de entrada, así
como la generación de una salida asociada.
Muestran el procesamiento extremo a extremo de un sistema.
Antiguamente se utilizaba el diagrama DFD (Diagrama de Flujo de Datos)

4.4. Modelos de Objetos.


Muestran la organización de un sistema, en términos de los componentes que constituyen dicho
sistema y sus relaciones. Son modelos estáticos que muestran la estructura del diseño del
sistemas, o modelos dinámicos que revelan la organización del sistema cuando se ejecuta.

30
4.5. Bancos de trabajo CASE.

Modelado de Casos de Usos


● Apoyar la adquisición de requerimientos
● Es un escenario que describe lo que el usuario espera de un sistema
● Cada caso de uso representa una tarea discreta que implica interacción externa con un
sistema

31
CAPITULO 5

5. DISEÑO DE SOFTWARE.

5.1. Fundamentos de Diseño

Diseño es el proceso creativo de transformación del problema en una solución.

• Para transformar los requerimientos en un sistema que funcione, los diseñadores deben
satisfacer tanto a los clientes como a los constructores de sistemas de su propio equipo de
desarrollo.

• Los clientes pueden comprender lo que el sistema debe hacer. Al mismo tiempo los
constructores deben comprender cómo debe operar el sistema.

• El diseño se torna en una actividad iterativa que consta de dos partes:

El diseño conceptual del sistema que le dice al cliente lo que hará elsistema y el diseño técnico
que permite que los constructores comprendan el hardware y el software concretos que se
necesitan para resolver el problema del cliente.

5.2. Estructura y arquitectura de software


Metas del diseño

32
Correcto
• El modelo puede ser mapeado
Completo
• El diseño considera todos los requerimientos
Consistente
• no se contradice
Realista
• Puede ser implementado
Entendible
• Personas ajenas al proyecto lo pueden entender

Administrando el diseño

 Documentar el diseño
 Asignar responsabilidades
 Comunicar acerca del diseño
 Realizar iteraciones sucesivas
Documentar el diseño

 Introducción
 Arquitectura Actual (si existiera)
 Arquitectura propuesta
 Servicios de los subsistemas
 Glosario

5.7. Patrones de diseño.


Arquitectura en Capas

 Es fundamental esta noción de separación e independencia ya que son fundamentales para el


diseño arquitectónico del sistema, porque permite realizar cambios en el desarrollo del
sistema e implementarlo.

 Es una forma de lograr separación e independencia de las capas.

 Está organizada en capas separadas en las cuáles cada una se apoyan sólo en las facilidades y
los servicios ofrecidos por la capa inmediatamente debajo de ella.

 Se enfoca en soportar el desarrollo incremental de sistemas, conforme se desarrolle una capa,


algunos de los servicios proporcionado por esta capa deben quedar a disposición de los
usuarios.

 La arquitectura es cambiable y portátil, siempre y cuando su interfaz no varía puede


sustituirse por tora equivalente.

33
Arquitectura en Capas con cuatro capas

 1RA CAPA.- Incluye software de soporte al sistema, por lo general soporte de base de
datos y sistema operativo.
 2DA CAPA.- Es la capa de aplicación, que comprende los componentes relacionados con
la funcionalidad de la aplicación, así cómo los componentes de utilidad que usan otros
componentes de la aplicación.
 3ERA CAPA.- Se relaciona con la gestión de la interfaz del usuario y con brindar a
autenticación y autorización al usuario.
 4TA CAPA.- Proporciona facilidades de interfaz de usuario.
 Cualquier de estas capas se pueden dividir en subcapas.

Arquitectura de repositorio

 Los patrones de arquitectura en capas y MVC son ejemplos de patrones en que la vista
presenta es la organización conceptual de un sistema
 Comparte los datos de un conjunto de componentes en interacción
 La mayoría de sistemas que usan grandes cantidades de datos se organizan sobre una
base de datos o un repositorio compartido

Características

34
 Organizar herramientas alrededor de un repositorio es una forma eficiente de compartir
grandes cantidades de datos
 En la practica, llega a ser complicado distribuir el repositorio sobre un numero de
maquinas. aunque es posible distribuir un repositorio lógicamente centralizado, puede
haber problemas con la redundancia e inconsistencia de datos.
Arquitectura de Tubería y Filtro
El nombre tubería y filtro proviene del sistema Unix original porque…
 Tuberías.- Era posible vincular procesos empleando “tuberías”.
 Filtro.- Transformación filtra los datos que pueden procesar de su secuencia de datos
de entrada.
 Los datos fluyen de uno a otro y se transforman conforme a través de la secuencia,
procesan sus entradas y producen salidas.
 Es posible que los datos se procesen item por item o en un solo lote.

 Los sistemas interactivos son difíciles de escribir con el modelo de tubería y filtro,
debido a la necesidad de procesar datos.
 Las entradas y salidas textuales simples, además de las interfaces gráficas de usuario
tienen formatos I/O más complejos (basados en clics de mouse o selecciones de
menú) pueden emplear esta arquitectura.

35
Arquitectura Cliente Servidor

CAPITULO 6

6. CONSTRUCCIÓN DE SOFTWARE
El proceso unificado de desarrollo de software da nombres a los grupos de iteraciones.
La mayoría de las iteraciones involucra cierta implementación y las iteraciones de construcción.
Este proceso considera la implementación como otro modelo
Los lenguajes previstos para la aplicación influyen en su diseño

6.1. Buenas prácticas en la construcción de software


La implementación se refiere a la programación.
“Unidad” se refiere a la parte más pequeña de la implementación (método o clase)
El objetivo es satisfacer los requisitos de la manera que se especifica en el diseño detallado

36
Métricas estándar para código fuente:
● –Cuenta de líneas
○ Contar las declaraciones que ocupan varias líneas
○ Contar los comentarios
○ Contar las líneas de while, for, do
● –Métricas de IEEE
○ Métrica 14. Cantidades medidas usadas
○ Métrica 16. Complejidad ciclomática
Métricas especiales para código fuente
● –Ciclos anidados
○ Inspección de código
● –Identificar los defectos no triviales
○ Documentación personal de software
● –Cada ingeniero debe documentar el trabajo realizado

37
Visión general del desarrollo

6.2. Lenguajes de Programación


Los lenguajes previstos para la aplicación influyen en su diseño

6.3. Reutilización de componentes de software


Los entornos de desarrollo interactivos (IDE) tienen un amplio uso para permitir que los
programadores produzcan más código en menos tiemp.
● Principios generales para programar:
○ –Reutilización de componentes
○ –Cumplir con las intenciones
● Indicadores y referencias
○ Recolección de basura
● Funciones
○ Utilizar funciones virtuales, evitar buscar por tipo
● Excepciones
○ Usar solo las que sabe manejar
38
Desarrollo basado en componentes

La ingeniería del software basada en componentes (CBSE) es un enfoque para el desarrollo de


software que se basa en la reutilización de las entidades llamadas "componentes de software”.
Surgió de la falta de desarrollo orientado a objetos para apoyar la reutilización efectiva. Las
clases de objetos individuales son demasiado detalladas y específicas.
Los componentes son más abstractos que las clases de objetos y pueden ser considerados como
proveedores de servicios independientes. Pueden existir como entidades independientes.

CBSE esenciales
Componentes independientes especificados por sus interfaces.
Normas de componentes para facilitar la integración de los componentes.
Middleware que proporciona soporte para el componente de interoperabilidad.
Un proceso de desarrollo que está orientado a la reutilización.
CBSE y principales diseños
Aparte de los beneficios de la reutilización, CBSE se basa en los principios de diseño de
ingeniería de software de sonido:
–Componentes son independientes por lo que no interfieren entre sí;
–Las implementaciones de componentes están ocultos;
–La comunicación es a través de interfaces bien definidas;
–Plataformas de componentes son compartidas y reducir los costos de desarrollo.

Normas de Componentes
Las normas deben establecerse de manera que los componentes pueden comunicarse entre sí e
inter-operar.
Desafortunadamente, se establecieron varios estándares de componentes que compiten:
–Enterprise Java Beans de Sun.
–De Microsoft COM y .NET
–CCM de CORBA
En la práctica, estos múltiples estándares han obstaculizado la absorción de CBSE. Es
imposible que los componentes desarrollados utilizando diferentes enfoques puedan trabajar
juntos.

39
CBSE Problemas
Confiabilidad de los componentes - ¿cómo puede un componente sin código fuente disponible
ser fiable?
La certificación de los componentes -¿ quién certificará la calidad de los componentes?
Predicción propiedad emergente - ¿cómo se pueden predecir las propiedades emergentes de
composiciones de componentes?
Requisitos compensaciones - ¿cómo hacemos un análisis de equilibrio entre las características
de un componente y otro?
CBSE Procesos
CBSE procesos son procesos de software compatibles con la ingeniería del software basada en
componentes.
–Tienen en cuenta las posibilidades de reutilización y las diferentes actividades de los
procesos involucrados en el desarrollo y el uso de componentes reutilizables.
Desarrollo para su reutilización
–Este proceso se refiere a los componentes de desarrollo o servicios que serán
reutilizados en otras aplicaciones. Por lo general, implica la generalización de los
componentes existentes.
Desarrollo con reutilización
–Este proceso es el proceso de desarrollo de nuevas aplicaciones utilizando
componentes y servicios existentes.

Componente de Software

40
Los componentes proporcionan un servicio sin tener en cuenta donde el componente está
ejecutando o su lenguaje de programación
–Un componente es una entidad ejecutable independiente que puede ser formado por
uno o más objetos ejecutables;
–La interfaz del componente se publica y todas las interacciones son a través de la
interfaz publicada;

Definiciones:
Councill y Heinmann:
–Un componente de software es un elemento de software que se ajusta a un modelo de
componente y se puede implementar sin modificación y compuesto de acuerdo con un estándar
de composición de forma independiente.

Szyperski:
–Un componente de software es una unidad de composición con interfaces especificadas
contractualmente y el contexto explícita dependencias solamente. Un componente de software
se puede implementar de forma independiente y está sujeta a la composición por terceros.
Características de los componentes

41
Los componentes como proveedores de servicios
El componente es una entidad ejecutable independiente. No tiene que ser compilado antes de
ser usado con otros componentes.
Los servicios ofrecidos por un componente se ponen a disposición a través de una interfaz y
todos los componentes de las interacciones tienen lugar a través de la interfaz.
La interfaz de componente se expresa en términos de operaciones parametrizados y de su estado
interno nunca se expone.
Interfaces de Componentes
–Define los servicios que son proporcionados por el componente a otros componentes.
–Esta interfaz, en esencia, es la API de los componentes. Se define los métodos que pueden ser
llamados por un usuario del componente.
Requiere interfaz
–Define los servicios que especifica qué servicios deben estar disponibles para el componente
de ejecutar como se especifica.
–Esto no pone en peligro la independencia o la capacidad de despliegue de un componente
porque el 'requiere' interfaz no define cómo deben proporcionar estos servicios.

42
Modelo de Componentes
Un modelo de componentes es una definición de estándares para el componente de
implementación, documentación y despliegue.
Ejemplos de modelos de componentes
–Modelo EJB (Enterprise Java Beans)
–COM + modelo (modelo .NET)
–Corba Componente Modelo
El modelo de componentes especifica cómo deben definirse las interfaces y los elementos que
deben incluirse en una definición de interfaz.

Elementos de un modelo de componente


Interfaces
–Los componentes se definen especificando sus interfaces. El modelo de componentes
especifica cómo deben definirse las interfaces y los elementos, como los nombres de operación,
parámetros y excepciones, que deben incluirse en la definición de interfaz.
Uso
–Para que los componentes que se distribuirán y acceder a distancia, tienen que tener un nombre
único o manejar asociado con ellos. Esto tiene que ser única a nivel mundial.
Despliegue
–El modelo de componentes incluye una especificación de cómo los componentes deben ser
empaquetados para su despliegue como entidades independientes, ejecutables.

43
6.4. Integración
Integración en Desarrollo Espiral

Planificar la Integración:

1. Comprender la descomposición de la arquitectura


•Intentar hacer una arquitectura sencilla de integrar
2. Identificar las partes de la arquitectura que implementará cada iteración
•Construir clases de marcos de trabajo primero, o en paralelo
•Si es posible, integrar “continuamente”
•Construir suficientes GUI para anclar las pruebas
•Documentar los requisitos para cada iteración
•Intentar construir de abajo arriba al menos parte del tiempo
•Para que las partes estén disponibles cuando se requieran
•Intentar planear las iteraciones para eliminar los riesgos
•Los riesgos más altos primero

44
•Especificar las iteraciones y construir de manera que cada caso de uso se maneje por
completo por una
3. Descomponer cada iteración en construcciones si es necesario
4. Planificar las pruebas, revisar e inspeccionar el proceso
5. Refinar el programa para reflejar los resultados
Mapa conceptual para la integración y Pruebas de Sistemas

Factores que determinan la secuencia de integración:

45
46
6.5. Control de versiones
Control de Cambio
Sistemas de software están sujetos a las solicitudes de cambio constantes:
1. –De los usuarios;
2. –De los desarrolladores;
3. –A partir de las fuerzas del mercado.
La gestión del cambio tiene que ver con el seguimiento de estos cambios y asegurar su
aplicación de la forma más rentable.

Factores para considerar si debe aprobarse o no el cambio:


–Las consecuencias de no realizar el cambio
–Los beneficios del cambio
–El número de usuarios afectados por el cambio
–Los costos de hacer el cambio
–El ciclo de liberación del producto

Control de Versiones
Versión Un ejemplo de un sistema que es: Funcionalmente distinta de alguna manera de otras
instancias del sistema.

Variante Una instancia de un sistema que es?:Funcionalmente idéntica, pero no


funcionalmente distinta de otras instancias de un sistema.
Release Un ejemplo de un sistema que es distribuido a los usuarios fuera del equipo de
desarrollo.
Promoción Un ejemplo de un sistema que es distribuido a otros desarrolladores en la
organización.

Versión y liberación de identificación


–Sistemas asignan identificadores automáticamente cuando una nueva versión se
presenta al sistema.
La gestión del almacenamiento.
–Sistema almacena las diferencias entre las versiones en lugar de todo el código de
versión.
Grabación de historial de cambios
–Razones de registro para la creación de versiones.
47
–desarrollo independiente
Sólo una versión a la vez puede ser revisado por el cambio. Paralelamente trabaja en diferentes
versiones.
–El apoyo del proyecto Puede gestionar grupos de archivos asociados a un proyecto y
no sólo archivos individuales.

CAPITULO 7

7. VERIFICACIÓN Y VALIDACIÓN.

7.4. Tipos de pruebas de software

Pruebas de Integración
La prueba de integración verifica cada construcción e iteración de integración
Los casos de uso son una fuente ideal de casos de prueba para las pruebas de integración.

Ejecución de las Pruebas de Integración

1. Decida cuándo y dónde almacenar, reutilizar y codificar las pruebas de integración


•Muestre esto en la programación de tiempos del proyecto
2. Ejecute tantas pruebas unitarias (de nuevo) como el tiempo permita
•Esta vez en el contexto de la construcción
•No se requieren controladores esta vez
•De prioridades según la mayor probabilidad de encontrar defectos
3. Realice pruebas de regresión
•Para asegurar que las capacidades existentes siguen funcionando
4. Asegure que los requisitos de las construcciones están bien especificados
5. Ejecute los casos de uso que debe implementar la construcción
•Pruebe contra el ERS
6. Ejecute las pruebas del sistema soportadas por esta construcción

48
Artefactos y Roles en las Pruebas de Integración

Pruebas de Sistema:
Es la culminación de las pruebas de integración.
Consiste en pruebas de caja negra que validan la aplicación completa frente a sus requisitos

Tipos de Pruebas de Sistema

Volumen
Somete al producto a la entrada de grandes cantidades de datos.
Usabilidad
Mide la reacción del usuario (por ejemplo, calificación de 0 a 10)
Rendimiento
Mide la velocidad para varias circunstancias.
Configurabilidad
Configura los distintos elementos de hardware / software
–por ejemplo, mide el tiempo de preparación.
Compatibilidad
Con otras aplicaciones designadas.
–por ejemplo, mide el tiempo de adaptación.
Confiabilidad/disponibilidad
Mide el tiempo de operación en períodos largos.
Seguridad

49
Sujeta a intentos comprometedores.
–por ejemplo, mide el tiempo promedio para entrar (romper) al sistema.
Uso de recursos
Mide el uso de RAM, espacio en disco, etcétera.

Aptitud de instalación
–Mide el tiempo de instalación.
Recuperabilidad
Fuerza actividades que desactivan la aplicación.
–Mide el tiempo de recuperación.
Funcionalidad
Da servicio a las aplicaciones en diferentes circunstancias.
–Mide el tiempo de servicio.
Carga / tensión
Sujeta a datos extremos y tráfico de eventos.

Prueba de Unidad
Una buena interfaz puede mejorar mucho el valor de una aplicación.
La prueba de utilidad válida la aceptación de la aplicación por los usuarios

Atributos de las Pruebas de Unidad

Accesibilidad
Facilidad con la que entran, navegan y salen los usuarios
–Por ejemplo, medida por el tiempo promedio que toma
Rapidez de respuesta
Rapidez de la aplicación para permitir al usuario lograr sus metas especificadas
–Por ejemplo, medida del tiempo promedio que toma
Eficiencia
Tamaño pequeño de los pasos requeridos para la funcionalidad elegida

50
–Por ejemplo, también medida por el tiempo por el tiempo mínimo de una
muestra de usuarios
Compresión
La facilidad con que se entiende y usa el producto mediante la documentación
y la ayuda
–Por ejemplo, medida por el tiempo que toman las investigaciones estándar.

Pruebas de unidades en el contexto

Flujo de Artefactos

51
Pruebas de Validación y Verificación

52
CAPITULO 8

8. DESPLIEGUE Y MANTENIMIENTO DE SOFTWARE.

8.1. Gestión de la configuración


Se ocupa de las políticas, los procesos y las herramientas para administrar los sistemas
cambiantes de software
Útil para proyectos individuales, ya que es fácil para una persona olvidar qué cambios se
realizaron
Esencial para los proyectos de equipo en los que varios desarrolladores alteran el mismo trabajo
Facilita encontrar problemas desde el inicio.
Motiva a los desarrolladores a hacer pruebas de unidades exhaustivas para no dañar lo
construido.
Se requiere un proceso estricto de administración de cambios para monitorear todos los
problemas y saber si fueron reparados.
Actividades

● Administración del cambio: Seguimiento de las peticiones de cambio por parte de


clientes y desarrolladores.
● Gestión de versiones: Seguimiento de las numerosas versiones de los componentes del
Sistema
● Construcción del Sistema: Ensamblar los componentes del programa, datos y librerías.
● Gestión de entregas: Prepara el software para la entrega externa

Plan CM

Define los tipos de documentos que deben gestionarse y un esquema de documento de


nombramiento.
Define que asume la responsabilidad de los procedimientos de CM y la creación de líneas de
base.
Define las políticas de control de cambios y gestión de versiones.
Define los registros CM que deben mantenerse.

Los “Releases”:
Incorporan cambios debido a errores descubiertos por el usuario o por cambios en el hardware.
También debe incorporar nuevas funcionalidades del sistema.

53
Se debe de planear un “release” para establecer cuándo es el momento correcto para liberar una
versión del sistema.
Involucra la recogida de todos los archivos y la documentación necesarios para crear un sistema
de liberación.
Descripciones de configuración tienen que ser por escrito para diferentes hardware e instalación
de scripts tiene que ser escrito.
La versión específica debe ser documentada para grabar exactamente lo que se utilizaron los
archivos para crearlo. Esto permite que se vuelva a crear si es necesario.
No SOLO comprende los programas ejecutables.
Sino que debe incluir:
–Los archivos de configuración que definen cómo se configura el despacho a una
instalación en particular;
–Los archivos de datos necesarios para el funcionamiento del sistema;
–Un programa de instalación o el script de shell para instalar el sistema en el hardware
de destino;
–Documentación electrónica y papel;
–Embalaje y publicidad asociada.
Los sistemas son ahora liberados en CD o DVD o como archivos de instalación para descargar
de la web.
La versión específica debe ser documentada para grabar exactamente los archivos que se
utilizaron para crearla. Esto permite que se vuelva a crear si es necesario.
El proceso de compilación y enlazado de los componentes de software en un sistema
ejecutable.
Este proceso está siempre apoyado por herramientas automatizadas que son impulsados por
'scripts de creación'.

Problemas de Realese
A veces los clientes no quieren una nueva versión.
No se debe asumir que todo está listo para instalar una nueva versión liberada.

Preparación y distribución de una versión del sistema es un proceso costoso.


Los factores que influyen en la decisión de cuándo emitir una nueva versión del sistema:
–calidad técnica del sistema,
–competencia,
–requisitos de comercialización–solicitudes de cambio de cliente

54
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]

Materia:
Programación Hypermedial

Elaborado por:
Ing. Vanessa Jurado

Revisado por:
Ing. Miguel Quiroz

55
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

56

[30/Septiembre/2016] – versión 1.0


Contenido
1. INTRODUCCIÓN A LA MULTIMEDIA. CONCEPTOS Y APLICACIONES MULTIMEDIA ........................... 58
CONCEPTOS MULTIMEDIA, HIPERMEDIA, HIPERTEXTO ....................................................................... 58
CONCEPTOS: TEXTO, IMAGEN, SONIDO, ANIMACIÓN, VÍDEO ............................................................. 59
HERRAMIENTAS MULTIMEDIA .................................................................................................................. 59
APLICACIONES: 3D, REALIDAD VIRTUAL, EDUCACIÓN VIRTUAL, SOFTWARE EDUCATIVO
MULTIMEDIA, SOCIAL MEDIA .................................................................................................................... 61
2. E - BUSINESS.............................................................................................................................................. 64
CONCEPTOS ................................................................................................................................................... 64
TIPOS DE NEGOCIOS EN INTERNET....................................................................................................... 65
MODELOS DE NEGOCIOS ......................................................................................................................... 66
E-MARKETING ............................................................................................................................................ 68
PRESENCIA EN LA RED ............................................................................................................................. 68
3. METODOLOGÍAS UTILIZADAS EN PROYECTOS WEB OOHDM ............................................................. 69
DEFINICION DE REQUERIMIENTOS ......................................................................................................... 70
DISEÑO ABSTRACTO DE LA UI ................................................................................................................. 72
DISEÑO CONCEPTUAL .............................................................................................................................. 72
DISEÑO CONCEPTUAL .............................................................................................................................. 73
DISEÑO NAVEGACIONAL .......................................................................................................................... 73
DISEÑO DE INTERFAZ ABSTRACTA ......................................................................................................... 74
MODELOS DE VISTAS ABSTRACTAS DE DATOS (ADVS) ....................................................................... 74
IMPLEMENTACIÓN ..................................................................................................................................... 75
4. LENGUAJES DE ETIQUETAS, HOJAS DE ESTILO, LENGUAJES DE SCRIPTING .................................. 76
METALENGUAJES XML, JSON, JAVASCRIPT, HTML5, CSS, AJAX ........................................................ 76
XML .............................................................................................................................................................. 76
JSON ............................................................................................................................................................ 79
¿QUÉ ES HTML5? ....................................................................................................................................... 81
¿QUÉ ES CSS? ........................................................................................................................................... 82
JAVASCRIPT ............................................................................................................................................... 85
AJAX ............................................................................................................................................................ 87

57
1. INTRODUCCIÓN A LA MULTIMEDIA. CONCEPTOS Y
APLICACIONES MULTIMEDIA

CONCEPTOS MULTIMEDIA, HIPERMEDIA, HIPERTEXTO


MULTIMEDIA

 Según Fred Hoffstetter: “Multimedia es el uso del ordenador para presentar y combinar:
texto, gráficos, audio y vídeo con enlaces que permitan al usuario navegar, interactuar,
crear y comunicarse”.

 Para A. Bartolomé (1994): “Los sistemas Multimedia, en el sentido que hoy se da al


término, son básicamente sistemas interactivos con múltiples códigos”.

 La palabra multi-media significa “múltiples medios”, y utilizada en el contexto de las


tecnologías de la información, hace referencia a que existen “múltiples intermediarios
entre la fuente y el destino de la información, es decir, que se utilizan diversos medios
para almacenar, transmitir, mostrar o percibir la información”.

HIPERTEXTO

El hipertexto es una tecnología que organiza una base de información en bloques distintos de
contenidos, conectados a través de una serie de enlaces cuya activación o selección provoca la
recuperación de información
El hipertexto ha sido definido como un enfoque para manejar y organizar información, en el
cual los datos se almacenan en una red de nodos conectados por enlaces.

58
CONCEPTOS: TEXTO, IMAGEN, SONIDO, ANIMACIÓN, VÍDEO

HERRAMIENTAS MULTIMEDIA

USO DE DIFERENTES MEDIOS

 Texto
 Imagen
 Sonido
 Animación
 Vídeo

TEXTO

La inclusión de texto en las aplicaciones multimedia permite desarrollar la comprensión


lectora, discriminación visual, fluidez verbal, vocabulario, etc.

59
IMAGEN

Iconográficos. Permiten la representación de palabras, conceptos, ideas mediante dibujos o


imágenes, tendiendo a la representación de lo esencial del concepto o idea a transmitir
Imágenes estáticas. La imagen puede realizar seis funciones distintas: representación, alusión,
enunciativa, atribución, catalización de experiencias y operación.

SONIDO

Se incorporan en las aplicaciones multimedia principalmente para facilitar la comprensión de


la información. Son especialmente relevantes para algunas temáticas (aprendizaje de idiomas,
música), Existen múltiples programas que nos permiten grabar, modificar e incorporar efectos
a los archivos de sonido.

ANIMACIÓN
Imágenes
dinámicas. Las imágenes en movimiento son un recurso de gran importancia, puesto que
transmiten de forma visual secuencias completas de contenido, ilustrando un apartado de
contenido con sentido propio.

VIDEO

Presentación de un número de imágenes por segundo, que crean en el observador la sensación


de movimiento. Las imágenes pueden ser sintetizadas (creadas manualmente) o captadas a
partir del entorno (vídeo).
60
APLICACIONES: 3D, REALIDAD VIRTUAL, EDUCACIÓN VIRTUAL,
SOFTWARE EDUCATIVO MULTIMEDIA, SOCIAL MEDIA

3D (TRES DIMENSIONES).

En computación, las tres dimensiones son el largo, el ancho y la profundidad de una imagen.
Técnicamente hablando el único mundo en 3D es el real, la computadora sólo simula gráficos
en 3D, pues, en definitiva toda imagen de computadora sólo tiene dos dimensiones, alto y ancho
(resolución).

En la computación se utilizan los gráficos en 3D para crear animaciones, gráficos, películas,


juegos, realidad virtual, diseño, etc.

REALIDAD VIRTUAL

61
Es una ciencia basada en el empleo de ordenadores y otros dispositivos, cuyo fin es producir
una apariencia de realidad que permita al usuario tener la sensación de estar presente en ella.

EDUCACIÓN VIRTUAL

Es una opción y forma de aprendizaje que se acopla al tiempo y necesidad del estudiante. La
educación virtual facilita el manejo de la información y de los contenidos del tema que se desea
tratar y está mediada por las tecnologías de la información y la comunicación -las TIC- que
proporcionan herramientas de aprendizaje más estimulantes y motivadoras que las
tradicionales.

SOFTWARE EDUCATIVO

Se denomina software educativo al que está destinado a la enseñanza y el aprendizaje autónomo


y que, además, permite el desarrollo de ciertas habilidades cognitivas.

62
ENTORNOS VIRTUALES DE APRENDIZAJE

Un entorno virtual de aprendizaje es un software con accesos restringidos, concebido y


diseñado para que las personas que acceden a él desarrollen procesos de incorporación de
habilidades y saberes.

AULA VIRTUAL

Aula virtual dentro del entorno de aprendizaje, consta de una plataforma o software a través
del cual el ordenador permite la facilidad de dictar las actividades en clases, de igual forma
permitiendo el desarrollo de las actividades de enseñanza y aprendizaje habituales que
requerimos para obtener una buena educación.

SOCIAL MEDIA

Los medios de comunicación sociales o simplemente medios sociales1 (social media en inglés),
son plataformas de comunicación en linea donde el contenido es creado por los propios usuarios
mediante el uso de las tecnologías de la Web 2.0, que facilitan la edición, la publicación y el
intercambio de información.

63
2. E - BUSINESS

CONCEPTOS

E - BUSINESS: Se define al e-business como cualquier actividad empresarial que se efectúa a


través de internet, no solo de compra y venta, sino también integrando marketing,
contabilidad, recursos humanos, desarrollo de estrategias, manufactura y operaciones con sus
actividades en su sitio web.

DIFERENCIA ENTRE E- BUSINESS Y E-


COMMERCE

E-BUSINESS

Incluye al e-commerce, pero también cubre procesos internos como producción,


administración de inventario, desarrollo de productos, administración de riesgo, finanzas,
desarrollo de estrategias, administración del conocimiento y recursos humanos.

E-COMMERCE

Cubre los procesos por los cuales se llega a los consumidores, proveedores y socios de negocio,
incluyendo actividades como ventas, marketing, toma de órdenes de pedido, entrega, servicios
al consumidor, y administración de lealtad del consumidor.
Evolución de e-business.

64
VENTAJAS:
Las ventajas que ofrece el negocio electrónico:

 Organización efectiva, rápida y fácilmente adaptable a los diferentes cambios que


puedas surgir.
 Mayor facilidad a la hora de mantener la relación con los proveedores.

TIPOS DE NEGOCIOS EN INTERNET

El comercio electrónico: Básicamente es un negocio de venta online de productos físicos,


productos que tienes que entregar a un cliente final. Las partes interactúan electrónicamente.

 La publicidad: Se refiere a blogs, portales, plataforma que ofrecen un servicio o


contenidos gratis a cambio de publicidad.

 La venta de servicios a empresas o particulares: Tratar de analizar las necesidades


de nuestros posibles clientes, y, en la medida que tú puedas responder a sus problemas,
tratar de hacer una propuesta que ellos te compren.

65
POR SU TRANSACCIÓN

 B2B Business – To – Business


www.e-steel.com

 B2C Business – To – Consumer


www.amazone.com

 C2C Consumer – To – Consumer


www.clasificados.com.ec

 P2P People – To – People


www.thepiratebay.sx

 C2B Consumer – To – Business

 G2C Goverment – To – Citizens


www.sri.gob.ec

 B2E Business – To – Employee

 C2B Consumer – To – Business

 G2C Goverment – To – Citizens

MODELOS DE NEGOCIOS

66
Los negocios electrónicos son convenientes y están a la vanguardia. Amazon.com es sólo un
ejemplo exitoso de lo que un negocio electrónico puede llegar a ser.

Los negocios electrónicos del tipo "consumidor a consumidor" son como las ventas de garaje,
sólo que tus clientes se encuentran en todo el mundo.

NEGOCIO A NEGOCIO (MODELO BUSINESS TO BUSINESS)

El comercio de bienes raíces, mobiliario institucional y servicios de contabilidad y publicidad


son comúnmente asociados con las transacciones de empresa a empresa. En este ámbito, las
empresas hacen negocios con otras empresas en lugar de hacerlos con clientes minoristas.

NEGOCIO A CONSUMIDOR (MODELO BUSINESS TO CONSUMER)

Amazon.com y eBay son ejemplos de empresas centradas en los consumidores. Un e-business


basado en este modelo necesita tiempo para entender los patrones de comportamiento de los
consumidores en línea, y a menudo requerirá utilizar programas de software para rastrear los
patrones de las decisiones y preferencias de compra. El objetivo de las interacciones negocio-
consumidor es establecer una relación a largo plazo, haciendo que cada cliente quede satisfecho
con el producto o servicio que está comprando a la empresa.

CONSUMIDOR A CONSUMIDOR (MODELO CONSUMER TO CONSUMER)

Piensa en una venta de garaje y entenderás el concepto de consumidor a consumidor. En este


tipo de negocio, se establecen relaciones de comercio de un individuo directamente con otra
persona, sólo que esta vez, a través de Internet. Algunos sitios de subastas como eBay son
conocidos por este tipo de interacción de negocios, a pesar de que eBay también lleva a cabo
otras formas de comercio electrónico.

67
E-MARKETING

PRESENCIA EN LA RED

SERVICIOS E-MARKETING

 Posicionamiento en buscadores.
 Gestión de boletines electrónicos.
 Banners.
 Marketing uno a uno.
 Sms.

POSICIONAMIENTO EN BUSCADORES

Consiste en el uso de varias técnicas con el objetivo de situar las páginas web en los espacios
más óptimos y más visitados por los usuarios de Internet.

GESTIÓN DE BOLETINES ELECTRÓNICOS

Gestione el envío de boletines electrónicos o a sus clientes, proveedores, distribuidores o


colaboradores externos de forma rápida y fácil.

BANNERS

Desarrollo y diseño de campañas publicitarias en formato imagen o animación Flash con el


objetivo de publicitar servicios, productos, novedades u ofertas.

MARKETING UNO A UNO

Publicidad en Internet que permite personalizar el mensaje publicitario en función del visitante
según situación geográfica (por país, comunidad autónoma o región, provincia y ciudad), según
página origen, etc.

68
SMS

Es el envío de SMS masivos a contactos de forma automatizada y desatendida, filtrando los


destinatarios y personalizando el envío por parámetros como edad, sexo, preferencias, sectores,
etc.

3. METODOLOGÍAS UTILIZADAS EN PROYECTOS WEB OOHDM

INTRODUCCIÓN

En la actualidad son pocas las metodologías existentes que permiten a los desarrolladores
conseguir productos de software hipermedia reusables y fáciles de mantener.
A pesar de ello, ha nacido una tendencia a considerar el desarrollo hipermedial con un enfoque
de proceso de ingeniería (del software), por lo que ya se han propuesto algunas metodologías
para este fin.

Una de ellas es OOHDM (Object Oriented Hypermedia Design Method), la cual será analizada
con el principal objetivo de identificar sus ventajas, desventajas y su real aplicación a este tipo
de aplicaciones.

OOHDM

OOHDM es una metodología orientada a objetos.


Su proceso de desarrollo tiene 5 fases donde se combinan notaciones UML y otras propias de
la metodología.

Antes OOHDM era solo para aplicaciones como:

 CD-ROM promocionales
 Enciclopedias
 Museos virtuales

69
OOHDM

El gran desarrollo de Internet obligo a que se adaptara para desarrollo de aplicaciones


Hipermedia.

 Comercio electrónico
 Motores de búsqueda
 Sitios educacionales y de entretención
 Etapas de OOHDM

DEFINICION DE REQUERIMIENTOS

La herramienta en la cual se fundamenta esta fase son los diagramas de casos de usos, los cuales
son diseñados por escenarios con la finalidad de obtener de manera clara los requerimientos y
acciones del sistema.

Para ello se debe desarrollar los siguientes pasos:

 Identificar de roles y tareas


 Especificar de escenarios
 Especificar de casos de uso
 Especificar los UID’s

IDENTIFICACIÓN DE ROLES Y TAREAS

70
ESPECIFICACIÓN DE ESCENARIOS

ESPECIFICACIÓN DE CASOS DE USO

71
DISEÑO ABSTRACTO DE LA UI

ESPECIFICACIÓN DE LOS UID’S

DISEÑO CONCEPTUAL
Se construye un modelo orientado a objetos que represente el dominio de la aplicación usando
las técnicas propias de la orientación a objetos.

La finalidad principal durante esta fase es capturar el dominio semántico de la aplicación


teniendo en cuenta el papel de los usuarios y las tareas que desarrollan.

El resultado de esta fase es un modelo de clases relacionadas que se divide en subsistemas.

 Productos: Diagrama de Clases, División en subsistemas y relaciones.


 Herramientas: Técnicas de modelado O.O, patrones de diseño.
 Mecanismos: Clasificación, agregación, generalización y especialización.

72
 Objetivo de diseño: Modelo semántico de la aplicación.

DISEÑO CONCEPTUAL

DISEÑO NAVEGACIONAL

La estructura de navegación de una aplicación hipermedia está definida por un esquema de


clases de navegación específica, que refleja una posible vista elegida.

En OOHDM hay una serie de clases especiales predefinidas, que se conocen como clases
navegacionales:

73
 Nodos
 Enlaces
 Estructuras de acceso
 Los menús
 Los índices
 Las guías de ruta

DISEÑO DE INTERFAZ ABSTRACTA


Esto consiste en definir:

 Qué objetos de interfaz va a percibir el usuario


 El camino en el cuál aparecerán los diferentes objetos de navegación
 Qué objeto de interfaz actuarán en la navegación
 La forma de sincronización de los objetos multimedia y el interfaz de transformaciones.

MODELOS DE VISTAS ABSTRACTAS DE DATOS (ADVS)

74
Los modelos de los ADVs no son más que representaciones formales que se usan para mostrar todo
esto.

IMPLEMENTACIÓN

Una vez cumplidas las 4 fases anteriores solo queda llevar los objetos a un lenguaje concreto
de programación.

 Productos: Aplicación ejecutable


 Herramientas: El entorno del lenguaje de programación
 Mecanismos: Los ofrecidos por el lenguaje
 Objetivo de diseño: Obtener la aplicación ejecutable

VENTAJAS

Una separación clara entre lo conceptual, lo navegacional y lo visual. Esta independencia hace
que el mantenimiento de la aplicación sea mucho más sencillo.
Hace un estudio profundo de los aspectos de interfaz, esencial no solo en las aplicaciones
multimedia, sino que es un punto crítico en cualquiera de los sistemas que se desarrollan
actualmente.

Hace uso también de la orientación a objetos y de un diagrama tan estandarizado como el de


clases, para representar el aspecto de la navegación a través de las clases navegacionales.

DESVENTAJAS

75
 Ha dejado fuera de su ámbito un aspecto esencial que es el tratamiento de la
funcionalidad del sistema.
 No ofrece ningún mecanismo para trabajar con múltiples actores.
 Lenguajes de Etiquetas, hojas de estilo, lenguajes de scripting

4. LENGUAJES DE ETIQUETAS, HOJAS DE ESTILO,


LENGUAJES DE SCRIPTING

METALENGUAJES XML, JSON, JAVASCRIPT, HTML5, CSS, AJAX

XML

XML es un lenguaje de metamarcado que ofrece un formato para la descripción de datos


estructurados. Esto facilita unas declaraciones de contenido más precisas y unos resultados de
búsquedas más significativos en varias plataformas. Además, XML habilitará una nueva
generación de aplicaciones para ver y manipular datos basadas en el Web.

VENTAJAS DE XML

 Procesable por humanos y por software


 Separa la información o el contenido de su presentación o formato
 Ideal para transacciones B2B
 Permite poderosas técnicas de extracción de información y data-mining
 Fácil análisis sintáctico
 Una de las mayores utilidades de XML es poder etiquetar los datos con su significado
(self-describing data).
 Permite la estructuración de la información.
 Ello lleva el tratamiento automático de la información a límites insospechados.
 XML es la base de la nueva generación de aplicaciones web intercambio de datos.

76
USOS XML

Sitios web
XML Data Model: Example
 Permite separar contenido y presentación <BOOKS>
<book id=“123” loc=“library”>
<author>Hull</author>
Comunicación <-> Intercambio Datos
<title>California</title>
 Servicios web <year> 1995 </year>
</book>
<article id=“555” ref=“123”>
Como configuración de programas <author>Su</author>
<title> Purdue</title>
</article>
 Deployment descriptos en servidores J2EE </BOOKS>
 Ant make system

77
ESTRUCTURA JERÁRQUICA DE ELEMENTOS

78
JSON

 JSON es la abreviatura/acrónimo de JavaScript ObjectNotation, en su definición literal


JSON utiliza el código JavaScript como modelo de datos.
 JSON es una forma de enviar/recibir, intercambiar datos, por lo general entre un cliente
y un servidor. XML nació primero y es otra manera de hacerlo, JSON apareció después
como otra alternativa a este sistema de envío y recepción de datos.

¿POR QUÉ UTILIZAR UN SISTEMA DE INTERCAMBIO DE DATOS?

JSON se emplea habitualmente en entornos donde la cantidad de datos que fluyen entre cliente
y servidor es de vital importancia. Google y Yahoo lo utilizan a diestra y siniestra en muchos
de sus servicios, como los de mensajería, también lo utilizan las redes sociales twitter y
facebook.

LENGUAJES QUE SOPORTAN JSON


La lista de lenguajes que soportan JSON incluye:

 ActionScript, C, C++, C#, ColdFusion, Common Lisp, Delphi, E, Eiffel, Java,


JavaScript, ML, Objective-C, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Lua
y Visual FoxPro.

ARREGLOS, OBJETOS LITERALES


Se definen con la siguiente sintaxis:

 var miArray = [ 'item1',2,'item3',true ];

La sintaxis para crear los objetos literales de Javascript es la siguiente:


 var miObjeto = { ‘propiedad1′: valor1, ‘propiedad2′: valor2 }

LOS OBJETOS JSON

JSON es un formato ligero de intercambio de datos. Un documento JSON es un subconjunto


de JavaScript, y para esto se basa principalmente en dos estructuras:

79
 Una coleccion de pares propiedad:valor (objetos)
 Los arreglos literales

Los objetos comienzan con { y terminan con } en medio estan los pares propiedad:valor
separados por comas. Veamos el diagrama sintactico de un objeto JSON:

 Ejemplo de documento Json


{
"desarrollador" : "Xavier Landa",
"depto" : "Sistemas (SI)",
"email" : "ej_email@dominio.com",
"genero" : "h",
"direccion":["Benito Juarez",3,"Lomas de Chapultepec","D.F."],
"tel" : "123000987",
"proyectos":[
{
"codigo" : "xs2012",
"nombre" : "XenixSoft",
"url" : "http://gonzasilve.wordpress.com",
"prioridad" : 1
},
{
"codigo" : "msw2012",
"nombre" : "Mantenimiento website oficial",
"url" : "http://shalo.site50.net",
"prioridad" : 2
},
{
"codigo" : "plg2011",
"nombre" : "Plugin DB Converter",
"url" : "http://gonzasilve.260mb.com",
"prioridad" : 0
}
]
}

 Como se puede convertir un documento Json en un objeto Javascript.

80
¿QUÉ ES HTML5?

<script language="javascript" type="text/javascript">


//Definimos un pequeño documento JSON en una variable
var cadenaJSON = "{"+
"'nombre' : 'Gonzalo',"+
"'apellidos' : 'Silverio Silverio',"+
"'carrera' : 'Ingenieria en sistemas'"+
"}";
//Convertir el documento JSON a Objeto Javascript
var objCadena = eval('(' + cadenaJSON + ')');

//Mostrar los valores del objeto JSON al usuario


var str_Nombre = "Nombre: "+objCadena.nombre+"\n";
var str_Apellidos = "Apellidos: "+objCadena.apellidos+"\n";
var str_Carrera = "Carrera: "+objCadena.carrera+"\n";
alert(str_Nombre+str_Apellidos+str_Carrera);
</script>

 HTML5 será el nuevo estándar para el HTML.


 La versión anterior de HTML, HTML 4.01, se produjo en 1999. El Internet ha cambiado
mucho desde entonces.
 HTML5 está diseñado para ofrecer casi todo lo que quieres hacer en línea sin necesidad
de plugins adicionales. Lo hace todo, desde la animación de aplicaciones, música para
películas, y también se puede utilizar para crear aplicaciones complejas que se ejecutan
en el navegador.
 HTML5 también es multiplataforma (no importa si usted está utilizando una tableta o
un teléfono inteligente, un netbook, portátil o un televisor Smart).

DOCUMENTO HTML5 MÍNIMO

A continuación se muestra un documento HTML 5 sencilla, con el mínimo de etiquetas


requeridas:

81
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title of the document</title>
</head>

<body>
Content of the document......
</body>

</html>

¿QUÉ ES CSS?
CSS es un lenguaje de hojas de estilos creado para controlar el aspecto o presentación de los
documentos electrónicos definidos con HTML y XHTML. CSS es la mejor forma de separar
los contenidos y su presentación y es imprescindible para crear páginas web complejas.

HOJA DE ESTILO
 Al crear una página web, se utiliza en primer lugar el lenguaje HTML/XHTML para
marcar los contenidos, es decir, para designar la función de cada elemento dentro de la
página: párrafo, titular, texto destacado, tabla, lista de elementos, etc.

 Una vez creados los contenidos, se utiliza el lenguaje CSS para definir el aspecto de
cada elemento: color, tamaño y tipo de letra del texto, separación horizontal y vertical
entre elementos, posición de cada elemento dentro de la página, etc.

SOPORTE DE CSS EN LOS NAVEGADORES

Navegador Motor CSS 1 CSS 2.1 CSS 3


Todos los
Completo desde selectores,
Google Chrome WebKit la versión 85 Completo pseudo-clases y
del motor muchas
propiedades

82
Todos los
selectores,
pseudo-clases y
Completo desde
Internet muchas
Trident la versión 7.0 Completo
Explorer propiedades a
del navegador
partir de la
versión 10.0 del
navegador
Todos los
Completo desde selectores,
Firefox Gecko la versión 1.0 Completo pseudo-clases y
del navegador muchas
propiedades
Todos los
Completo desde selectores,
Safari WebKit la versión 85 Completo pseudo-clases y
del motor muchas
propiedades
Todos los
Completo desde selectores,
Opera Presto la versión 1.0 Completo pseudo-clases y
del navegador muchas
propiedades

FUNCIONAMIENTO BÁSICO DE CSS

83
FUNCIONAMIENTO BÁSICO DE CSS

84
HOJA DE ESTILO

 CSS en el mismo documento HTML: Los estilos se definen en una zona específica del
propio documento HTML. Se emplea la etiqueta<style> de HTML y solamente se
pueden incluir en la cabecera del documento (sólo dentro de la sección <head>).
 CSS en un archivo externo: Todos los estilos CSS se incluyen en un archivo de tipo
CSS que las páginas HTML enlazan mediante la etiqueta <link>.

JAVASCRIPT

JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas


web dinámicas.

 Una página web dinámica es aquella que incorpora efectos como texto que aparece y
desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con
mensajes de aviso al usuario.
 Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que no
es necesario compilar los programas para ejecutarlos. En otras palabras, los programas
escritos con JavaScript se pueden probar directamente en cualquier navegador sin
necesidad de procesos intermedios.
 A pesar de su nombre, JavaScript no guarda ninguna relación directa con el lenguaje de
programación Java. Legalmente, JavaScript es una marca registrada de la empresa Sun
Microsystems, como se puede ver en http://www.sun.com/suntrademarks/.

CÓMO INCLUIR JAVASCRIPT EN DOCUMENTOS XHTML


85
Incluir JavaScript en el mismo documento XHTML:
El código JavaScript se encierra entre etiquetas <script> y se incluye en cualquier parte del
documento. Aunque es correcto incluir cualquier bloque de código en cualquier zona de la
página, se recomienda definir el código JavaScript dentro de la cabecera del documento (dentro
de la etiqueta <head>)

CÓMO INCLUIR JAVASCRIPT EN DOCUMENTOS XHTML

Definir JavaScript en un archivo externo

Las instrucciones JavaScript se pueden incluir en un archivo externo de tipo JavaScript que los
documentos XHTML enlazan mediante la etiqueta <script>. Se pueden crear todos los archivos
JavaScript que sean necesarios y cada documento XHTML puede enlazar tantos archivos
JavaScript como necesite.

86
AJAX
El término AJAX es un acrónimo de Asynchronous JavaScript + XML, que se puede traducir
como "JavaScript asíncrono + XML".

Las tecnologías que forman AJAX son:

 XHTML y CSS, para crear una presentación basada en estándares.


 DOM, para la interacción y manipulación dinámica de la presentación.
 XML, XSLT y JSON, para el intercambio y la manipulación de información.
 XMLHttpRequest, para el intercambio asíncrono de información.

87
 JavaScript, para unir todas las demás tecnologías.

88
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Programación II

Elaborado por:
Ing. Mónica Gómez

Revisado por:
Ing. Miguel Quiroz

89
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPÍTULO 1: MODELAMIENTO DE OBJETOS ......................................................... 4
1.1. Historia de UML ................................................................................................ 4
1.2. Modelamiento del dominio ................................................................................ 5
1.3. Casos de Uso, Diagramas y Escenarios ........................................................... 6
1.4. Diagramas de Clases ...................................................................................... 10
CAPITULO 2: PAQUETES ........................................................................................ 26
2.1. Conceptos ....................................................................................................... 26
2.2. Empaquetamiento ........................................................................................... 26
2.3. Utilización de paquetes ................................................................................... 27
2.4. Diagramas de Paquetes en UML .................................................................... 29
CAPITULO 3: HERENCIA ......................................................................................... 30
3.1. Relación de Herencia ...................................................................................... 30
3.2. Constructores y Herencia ................................................................................ 32
3.3. Sobrecarga de métodos .................................................................................. 33
3.4. Sobrecarga de constructores .......................................................................... 34
3.5. Sobremontado de métodos ............................................................................. 37
3.6. Sobremontado vs. Sobrecarga ........................................................................ 38
CAPITULO 4: CLASES ABSTRACTAS E INTERFACES .......................................... 40
4.1. Clases Abstractas ........................................................................................... 40
4.2. Interfaces ........................................................................................................ 41
CAPITULO 5: POLIMORFISMO ................................................................................ 41
5.1. Enlace Dinámico ............................................................................................. 42
5.2. Upcasting y Downcasting ................................................................................ 43
5.3. Operador instanceOf ....................................................................................... 47
CAPITULO 6: VARIABLES Y MÉTODOS DE ALCANCE CLASIFICADOR ............... 47
6.1. Variables de alcance clasificador .................................................................... 47
6.2. Methods de alcance clasificador ..................................................................... 49
6.3. Constantes, Keyword Final ............................................................................. 51
6.4. Clases Wrapper .............................................................................................. 54
CAPITULO 7: STRING .............................................................................................. 57
7.1. Clase String: métodos y conceptos ................................................................. 63
7.2. Clase StringBuilder ......................................................................................... 63
7.3. Argumentos en la línea de Comandos ............................................................ 65
CAPITULO 8: MANEJO DE ERRORES Y EXCEPCIONES ....................................... 68

2
8.1. Definición de una excepciónes ........................................................................ 69
8.2. Cláusula finally ................................................................................................ 71
8.3. Tipos de Excepciones ..................................................................................... 71
8.4. Manejo de Excepciones .................................................................................. 72
8.5. Excepciones definidas por el usuario .............................................................. 75
CAPITULO 9: COLECCIONES E ITERADORES ...................................................... 76
9.1. Listas dinámicas (ArrayList) ............................................................................ 76
9.2. Tablas Hash (Hashtables) ............................................................................... 84
CAPITULO 10: ELABORACIÓN DE INTERFACES GRÁFICAS ................................ 88
10.1. Contenedores (Ventanas, Paneles)............................................................... 88
10.2. Componentes gráficos para interacción (botones, listas, etiquetas, cajas de texto)
.............................................................................................................................. 91
10.3. Gestores de distribución (Layout Managers) ................................................. 95
10.4. Manejo de Eventos en ventanas, botones, teclado y ratón. ........................... 97
CAPITULO 11: MANEJO DE GRÁFICOS 2D .......................................................... 105
11.1. Métodos de dibujado (paint y paintComponent) ......................................... 105
11.2. Dibujado de primitivas gráficas (figuras geométricas y textos) ................... 106
11.3. Dibujado de imágenes................................................................................ 108
11.4. Manejo de color y fuente (Color y Font). .................................................... 111

3
CAPÍTULO 1: MODELAMIENTO DE OBJETOS

Objetivos:
● Comprender la importancia del desarrollo de los diagramas UML en el desarrollo del
software.
● Identificar los diferentes diagramas utilizados.
● Revisar otros tipos de diagramas, pero enfatizar en los más utilizados.
● Realizar ejercicios utilizando diagramas UML.

1.1. Historia de UML

UML (Unified Modeling Language) es un lenguaje que permite modelar, construir y


documentar los elementos que forman un sistema software orientado a objetos. Se ha
convertido en el estándar de facto de la industria, debido a que ha sido concebido por los autores
de los tres métodos más usados de orientación a objetos: Grady Booch, Ivar Jacobson y Jim
Rumbaugh.

Estos autores fueron contratados por la empresa Rational Software Co. para crear una notación
unificada en la que basar la construcción de sus herramientas CASE. En el proceso de creación
de UML han participado, no obstante, otras empresas de gran peso en la industria como
Microsoft, Hewlett-Packard, Oracle o IBM, así como grupos de analistas y desarrolladores.

Esta notación ha sido ampliamente aceptada debido al prestigio de sus creadores y debido a
que incorpora las principales ventajas de cada uno de los métodos particulares en los que se
basa: Booch, OMT y OOSE. UML ha puesto fin a las llamadas “guerras de métodos” que se
4
han mantenido a lo largo de los 90, en las que los principales métodos sacaban nuevas versiones
que incorporaban las técnicas de los demás. Con UML se fusiona la notación de estas técnicas
para formar una herramienta compartida entre todos los ingenieros software que trabajan en el
desarrollo orientado a objetos.

Figura 1. Historia de UML

El objetivo principal cuando se empezó a gestar UML era posibilitar el intercambio de modelos
entre las distintas herramientas CASE orientadas a objetos del mercado. Para ello era necesario
definir una notación y semántica común. En la Figura 2 se puede ver cuál ha sido la evolución
de UML hasta la creación de UML 1.1. Hay que tener en cuenta que el estándar UML no define
un proceso de desarrollo específico, tan solo se trata de una notación. En este curso se sigue el
método propuesto por Craig Larman [Larman99] que se ajusta a un ciclo de vida iterativo e
incremental dirigido por casos de uso. En la parte II de este texto se expone la notación y
semántica básica de UML, en la parte III se presentan conceptos avanzados de la notación
UML, mientras que en la parte IV se presenta el método de desarrollo orientado a objetos de
Larman, que se sirve de los modelos de UML que se han visto anteriormente[1].

1.2. Modelamiento del dominio

El modelo de dominio es utilizado para para capturar y expresar el análisis del sistema previo
al diseño de un sistema. Este modelo es utilizado por el analista del equipo de proyectos para
comprender el sector de negocios donde el sistema se adaptará. Es el punto de partida para el
diseño del sistema.

Mediante este modelo se representará de manera visual los principales componentes que se
manejan, ayudando a los usuarios, desarrolladores y analistas a utilizar un vocabulario común
para poder entender el contexto en que se desarrolla el sistema; además contribuirá a identificar
objetos involucrados en el sistema como personas, eventos y procedimientos.

5
El modelo de dominio incluye la interacción entre diferentes clases de objetos del mundo real,
relaciones entre objetos, atributos de las clases de objetos, manejados por su identidad para
hacerlos distinguibles entre sí

Por ejemplo:

Establecer un modelo de dominio para una boletería: para ello los objetos serían: cliente,
cobrador, boleto, factura.

Las relaciones con los objetos serían: El cliente solicita un boleto, el vendedor cobra y entrega
una factura con la(s) entrada (s).

Cada objeto tiene sus propios atributos, por ejemplo Cliente(cedula, nombre, edad…) y los
objetos se relacionan entre sí.

1.3. Casos de Uso, Diagramas y Escenarios

El modelo de Casos de uso es uno de los diagramas UML para capturar información con
respecto a los servicios que un sistema proporciona a su entorno, no pertenece estrictamente al
enfoque orientado a objetos, es una técnica para captura y especificación de requisitos,
permiten definir los límites del sistema y las relaciones entre el sistema y el entorno. Además,
describen la funcionalidad del sistema independientemente de su implementación

Componentes y características:

1. Actor: Los actores pueden ser personas u objetos, donde una misma persona física puede
interpretar varios papeles como actores distintos, el nombre del actor describe el papel
desempeñado durante el proceso.

 Principales: personas que usan el sistema


 Secundarios: personas que mantienen o administran el sistema

6
 Material externo: dispositivos materiales imprescindibles que forman parte del ámbito
de la aplicación y deben ser utilizados
 Otros sistemas: sistemas con los que el sistema interactúa

2. Relaciones: Las relaciones son de tipo comunicativo, incluyente, extensivo y por herencia.

Comunicación

Figura 2. Componentes de Casos de Uso

Inclusión: Una instancia del Caso de Uso origen incluye también el comportamiento descrito
por el Caso de Uso destino

Figura 3. Formato Caso de Uso - include


<<include>> reemplazó al denominado <<uses>>

Ejemplo:

7
Figura 4. Ejemplo - Caso de Uso

Extensión: el Caso de Uso origen extiende el comportamiento del Caso de Uso destino

Figura 5. Formato Caso de Uso - extends

Ejemplo:

8
Figura 6. Ejemplo Caso de Uso

Ejemplo de include y extends:

Figura 7. Formato Caso de Uso – include y extends

Herencia: El Caso de Uso origen hereda la especificación del Caso de Uso destino y
posiblemente la modifica y/o amplía

Figura 8. Ejemplo Caso de Uso con herencia

9
Ejemplo:

Figura 9. Ejemplo de diagrama de Casos de Uso

Es importante que, al realizar el diagrama de casos de uso, éste debe ser simple, inteligible,
claro y conciso, generalmente hay pocos actores asociados a cada Caso de Uso. Para lo cual
nos preguntamos lo siguiente:

¿Cuáles son las tareas del actor?


¿Qué información crea, guarda, modifica, destruye o lee el actor?
¿Debe el actor notificar al sistema los cambios externos?
¿Debe el sistema informar al actor de los cambios internos?

Con ello podemos generar diagramas sin redundancia y concretos.

1.4. Diagramas de Clases

Clase: Una clase define la estructura y el comportamiento de un conjunto de objetos que tienen
(comparten) el mismo patrón estructural y de comportamiento. Un ejemplo de una clase
“número complejo”:

10
Figura 10. Estructura de una clase

Una clase está dividida en tres partes, nombre (ComplexNumber), atributos (-r,-i) y métodos
(+ComplexNumber(), +nomr()), como se ve en el ejemplo anterior.

El código en java que se generaría sería:

Figura 11. Código en Java

Atributos: Propiedades relevantes de una clase, representan su estructura, éstos pueden ser
simples o compuestos.

Métodos: Comportamiento o proceso asociado a una clase.

Figura 12. Ejemplo de Clase con sus atributos y métodos

11
El diagrama de clases representa la estructura estática del sistema modelado, las relaciones que
existen entre las distintas clases y objetos del sistema, las clases y objetos del sistema y su
estructura interna, además de los elementos del sistema de forma independiente del tiempo
(Muestran aspectos estáticos y no dinámicos).

Las clases sirven para realizar la abstracción de un dominio y formalizar el análisis de los
conceptos relacionados al mismo (Modelo de Dominio) (...o de cualquier tipo de conceptos),
también sirven para definir / Documentar una solución de diseño, es decir, la estructura del
sistema que se va a implementar en términos de clases y objetos y para definir / Documentar
modelado de datos (Cumplen la misma función en este sentido de los diagramas ERE)[1].

La declaración de métodos no significa que de forma obligatoria se deba usar, simplemente son
herramientas que están disponibles. Por ejemplo, al arreglar un vehículo, no se utilizan todas
las herramientas de la caja de herramientas, sólo se usa lo que necesita para realizar el trabajo.
Igual ocurre con UML y las herramientas de modelado, se utilizan sólo las herramientas
(diagramas / constructos) que necesita para una situación particular.

Figura 13. Componentes de una clase

Sintáxis para los atributos:


[visibilidad] [/] nombre [:tipo] [multiplicidad] [=valor por omisión] [{propiedad}]

Sintáxis para los métodos:


[visibilidad] nombre [(lista de parámetros)] [{propiedad}]
Donde un parámetro es:

12
[dirección (in/out/inout)] nombre: tipo [multiplicidad] [=valor por omisión]

Las propiedades pueden una o mas de las siguientes: readOnly, isQuery, Concurrent, Guarded,
Sequential, etcétera.

En el desarrollo del diagrama de clases es importante conocer los siguientes conceptos:

Instancia: Cada objeto que pertenece a una clase


Instanciación / Instanciar: Proceso de generación o creación de las instancias (objetos) de una
clase pedro = new Persona()
Objeto: Representación de algo que se describe mediante un identificador, una estructura y un
comportamiento. “Instancia de una Clase”

Figura 14. Ejemplo de instancia

13
Figura 15. Ejemplo en Java

Figura 16. Código en Java

Tipos de Clases:

- Clases Parametrizables: Plantillas de clases que se pueden parametrizar con uno o más tipos
de datos según sea necesario (Clases Genéricas)

14
Figura 17. Parametrizable

- Clases Abstractas: Clases que no tienen implementación para todos los métodos definidos

Figura 18. Abstracta

- Clases Utilitarias: Clases que contienen librerías de funciones (no interesa mucho la
implementación) 20 Diagramas de Clases (Parametrizables / Abstract

Figura 19. Utilitaria

- Jerarquía de Clases: Relación ES-UN(A), abstracciones de generalización / especialización


de clases

15
Figura 20. Utilitaria

Figura 21. Utilitaria

Herencia: Propiedad que tienen las clases de heredar de sus superclases estructura y/o
comportamiento (Simple / Múltiple)

Relaciones entre Clases:

El diagrama de clases, representa diferentes formas de relación entre clases:


 Asociación y Agregación (vista como un caso particular de asociación)
 Generalización/Especialización
 Las relaciones de Agregación y Generalización forman jerarquías de clases

Asociación:

La asociación expresa una conexión bidireccional entre objetos, es una abstracción de la


relación existente en los enlaces entre los objetos.

16
Figura 22. Ejemplo de Asociación:

Existen diferentes tipos para la especificación de multiplicidad (mínima...máxima)


1 Uno y sólo uno
0..1 Cero o uno
M..N Desde M hasta N (enteros naturales)
* Cero o muchos
0..* Cero o muchos
1..* Uno o muchos (al menos uno)
● La multiplicidad mínima >= 1 establece una restricción de existencia

17
Figura 23. Ejemplo de Asociación Cualificada

Agregación:

La agregación representa una relación parte de entre objetos, en UML se proporciona una
escasa caracterización de la agregación, puede ser caracterizada con precisión determinando
las relaciones de comportamiento y estructura que existen entre el objeto agregado y cada uno
de sus objetos componentes

Figura 24. Ejemplo de Asociación:

Generalización:
Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases, se obtiene
usando los mecanismos de abstracción de Generalización y/o Especialización; consiste en
factorizar las propiedades comunes de un conjunto de clases en una clase más general

● Nombres usados: clase padre - clase hija. Otros nombres: superclase - subclase, clase
base - clase derivada
18
● Las subclases heredan propiedades de sus clases padre, es decir, atributos y operaciones
(y asociaciones) de la clase padre están disponibles en sus clases hijas

Figura 25. Ejemplo de Asociación:

La especialización es una técnica muy eficaz para la extensión y reutilización, las estricciones
predefinidas en UML: disjunta - no disjunta o total (completa) - parcial (incompleta)

Clasificación de la Generalización:
Se tienen dos tipos de Clasificación:
· Estática: Particionamiento del espacio de objetos

· Dinámica: Particionamiento del espacio de estados de los objetos

19
En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas

Figura 26. Ejemplo de Asociación en Java

Agregación:
Es una relación en la que una de las clases representa un todo y la otra representa parte de ese
todo. Las partes no pueden existir sin el todo:

Figura 27. Agregación

Composición:
Es una forma más fuerte de la agregación, en la que el todo no puede existir sin sus partes, El
todo no puede existir sin las partes:

Figura 28. Composición

20
Figura 29. Agregación – Composición

Figura 30. Agregación – Composición

Dependencia: Relación en la que una clase necesita (requiere) a otra para poder funcionar

Figura 31. Dependencia


Interfaz:
Clase asociada que describe su comportamiento visible. Conjunto de métodos que describen el
comportamiento visible de una clase

21
Figura 32. Interfaz

Figura 33. Interfaz II

22
Figura 34. En Java

Figura 35. En código Java

Figura 36. Codigo en Java

23
A continuación, se muestra un ejemplo general de diagrama de clases para una empresa
fabricante de azúcar:

Figura 37. Ejemplo de diagrama de clases

Ejercicios:
1) Identificar las clases para un sistema de venta de Boletos para el estadio.
2) Realizar un diagrama de clases para alquiler de canchas de futbol.

1.5. Diagramas de Interacción de Objetos (DIOs): Diagrama de Secuencia y de Colaboración

Diagrama de Secuencia:
Los diagramas de secuencia muestran la secuencia de mensajes entre objetos durante un
escenario concreto (paso de mensajes).

● En la parte superior aparecen los objetos que intervienen


● La dimensión temporal se indica verticalmente(el tiempo transcurre hacia abajo)
● Las líneas verticales indican el período de vida de cada objeto
● El paso de mensajes se indica con flechas horizontales u oblicuas (cuando existe
demora en el envío y la atención del mensaje)
● La realización de una acción se indica con rectángulos sobre las líneas de
actividad del objeto que realiza la acción

24
Figura 38. Ejemplo de diagrama de secuencia

Diagrama de Colaboración:
En el diagrama de colaboración, la distribución de los objetos en el diagrama permite
observar adecuadamente la interacción de un objeto con respecto a los demás.

● De forma estática del sistema, ésta viene dada por las relaciones existentes entre los
objetos (igual que un diagrama de objetos)
● De forma dinámica en cambio viene indicada por el envío de mensajes a través de los
enlaces existentes entre objetos
● En este diagrama los mensajes se enumeran para ilustrar el orden en el que se emiten.

Figura 39. Ejemplo diagrama de colaboración

25
CAPITULO 2: PAQUETES

Objetivos:
· Definir el concepto de Paquete.
· Interpretar el código fuente java donde se utilicen paquetes.
· Construir una aplicación Java sencilla, convenientemente especificada, que
incluya la declaración y utilización de un paquete.

2.1. Conceptos
Un paquete o package de Java es un conjunto de clases e interfaces relacionadas entre sí, con
el objetivo de organizar un conjunto de archivos fuente.

2.2. Empaquetamiento

A medida que el tamaño de una aplicación aumenta o se trabaja en equipo se hace necesario
introducir el concepto de separar las clases en grupos de archivos.

Es recomendable dividir el código en varios archivos fuentes, las razones son las siguientes: El
tiempo: compilación de una parte del código, en lugar de todo
La eficiencia: del trabajo en equipo ya que la edición simultánea de un mismo archivo es
bastante complicada
Incrementa la facilidad para localizar y controlar los accesos a las clases e interfaces y evitar
conflictos con identificadores

26
Sintaxis para la definición de un paquete:

Figura 2. Sintaxis en Java

2.3. Utilización de paquetes


El alcance de la sentencia package es todo el archivo fuente. Si se incluyen varias clases dentro
de un único archivo fuente.
Sólo los componentes de tipo público de esa clase son accesibles desde fuera del paquete
Si no se emplea una sentencia package, las clases o interfaces pertenecen al paquete por defecto
(sin identificador).
Normalmente, este paquete por defecto sólo se emplea en aplicaciones pequeñas o temporales
o al inicio de un desarrollo.
En cualquier otro caso, las clases e interfaces deben pertenecer a paquetes con un identificador
explícito.
Las ventajas de agrupar clases e interfaces en un paquete son las siguientes:

Se puede determinar más fácilmente qué clases e interfaces están relacionadas


Se evitan conflictos por el empleo de los mismos identificadores en diferentes clases si éstas
están en paquetes distintos.
Puede configurarse un acceso específico dentro de las clases de un mismo paquete diferente al
acceso desde otras clases fuera del paquete.
Importar el componente del paquete, incluyendo una sentencia import al principio del archivo
fuente, antes de cualquier declaración de clase o interfaz y después de la sentencia package, si
existe.

27
Figura 3. Importar paquetes - código Java

Figura 4. Referenciarlo mediante su identificador

Figura 5. Importar el paquete completo, empleando la sentencia import con el identificador


del paquete seguido de un punto y un asterisco:
Por defecto, la plataforma Java importa automáticamente tres paquetes completos:

28
El paquete por defecto (sin identificador explícito).
El paquete java.lang que contienen las clases de Java más corrientes, como Object y Math.
El paquete actual de trabajo.

En este apartado es importante comprender lo que son modificadores de acceso:

public: acceso público para todas las clases


private: acceso restringido para otras clases
protected: acceso restringido para otros paquetes

Utilizados comúnmente en el uso de paquetes para proteger la información.

2.4. Diagramas de Paquetes en UML


Los paquetes ofrecen un mecanismo general para la organización de los modelos/subsistemas
agrupando elementos de modelado, se representan gráficamente como:

Cada paquete corresponde a un submodelo (subsistema) del modelo (sistema).

Un paquete puede contener otros paquetes, sin límite de anidamiento pero cada elemento
pertenece a (está definido en) sólo un paquete

Una clase de un paquete puede aparecer en otro paquete por la importación a través de una
relación de dependencia entre paquetes
Todos los elementos no son necesariamente visibles desde el exterior del paquete, es decir, un
paquete encapsula a la vez que agrupa

El operador “::” permite designar una clase definida en un contexto distinto del actual

29
Figura 6. Ejemplo de paquetes

CAPITULO 3: HERENCIA
Introducción:
Las clases no son suficientes para conseguir los objetivos de:

Reutilización.- se entiende por la necesidad de mecanismos para generar código genérico


(generalizar las funciones utilizadas para que puedan usarse en más de una ocasión). Capturar
aspectos comunes en grupos de estructuras similares, independencia de la representación y
variación en estructuras de datos y algoritmos

Extensibilidad.- es la necesidad de mecanismos para favorecer. “Principio abierto-cerrado”


(una clase debe permitir ser extendida sin necesidad de modificarla) y “Principio Elección
Única” (una clase debe tener una, y solamente una, razón para cambiar), en java se utiliza la
palabra reservada extends

3.1. Relación de Herencia

La herencia es el mecanismo que:


Sirve de soporte para utilizar y registrar las relaciones conceptuales existentes entre las clases.
Posibilita la definición de una Clase a partir de otra.

30
Figura 1. Ejemplo de herencia

Jerarquías de Herencia: La herencia organiza las clases en una estructura jerárquica


formando jerarquías de clases.

Figura 2. Ejemplo de clasificación de clases - herencia

Cuando aplicamos herencia:


Si una Clase B hereda de otra Clase A, entonces:
B incorpora la estructura (atributos) y comportamiento (métodos) de la Clase A.
B puede incluir adaptaciones:
B puede añadir nuevos atributos;
B puede añadir nuevos métodos;
B puede redefinir métodos.
Las adaptaciones son dependientes del lenguaje.

El Proceso de Herencia es Transitivo

Tipos de Herencia

31
3.2. Constructores y Herencia

Un constructor es necesario para inicializar las variables de un objeto. Sus características


principales son:

Se llama igual que la clase.


No retorna ningún valor
Pueden existir varios, pero siguiendo las reglas de la sobrecarga de funciones.
De entre los que existan, tan sólo uno se ejecutará al crear un objeto de la clase.
Dentro del código de un constructor generalmente suele existir inicializaciones de variables
y objetos, para conseguir que el objeto sea creado con dichos valores iniciales.

La referencia this:
Si un parámetro tiene el mismo identificador (nombre) que una variable de instancia se usa la
palabra clave “this” para identificar cual es la variable de instancia:

Referencia al objeto actual.


Permite invocar métodos del objeto actual.
Permite referenciar atributos del objeto actual
Permite devolver una referencia al objeto actual
Permite invocaciones entre constructores
Al acceder a variables de instancia de una clase, la palabra clave this hace referencia a los
miembros de la propia clase

32
Referencia super
La nueva clase hereda de la primera todos los métodos y los atributos

Se usa para invocar constructores de la clase padre


Debe ser la primera sentencia del constructor de la clase hijo
Esta referencia también se usa para invocar cualquier método del padre.
Si la superclase no tiene un constructor sin argumentos, se deberás definir un constructor en
la subclase.

3.3. Sobrecarga de métodos

La sobrecarga es la capacidad de un lenguaje de programación, que permite nombrar con el


mismo identificador diferentes variables u operaciones.

En programación orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos o más


funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones
con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo
de los parámetros usados. A esto se llama también sobrecarga de funciones.

También existe la sobrecarga de operadores que al igual que con la sobrecarga de funciones se
le da más de una implementación a un operador.

El mismo método dentro de una clase permite hacer cosas distintas en función de los
parámetros.

33
3.4. Sobrecarga de constructores

Palabras clave static y final:


En los programas que generemos usualmente intervendrán constantes: valores matemáticos
como el número Pi, o valores propios de programa que nunca cambian.
Si nunca cambian, lo adecuado será declararlos como constantes en lugar de cómo variables.
Supongamos que queremos usar una constante como el número Pi y que usamos esta
declaración:

Sintáxis:

Explicación:

static: los atributos miembros de una clase pueden ser atributos de clase o atributos de
instancia; se dice que son atributos de clase si se usa la palabra clave static: en ese caso la
variable es única para todas las instancias (objetos) de la clase (ocupa un único lugar en
memoria). A veces a las variables de clase se les llama variables estáticas. Si no se usa static,
el sistema crea un lugar nuevo para esa variable con cada instancia (la variable es diferente
para cada objeto).

Final: en este contexto indica que una variable es de tipo constante: no admitirá cambios
después de su declaración y asignación de valor. final determina que un atributo no puede ser
sobreescrito o redefinido. O sea: no funcionará como una variable “tradicional”, sino como una
constante.

Toda constante declarada con final ha de ser inicializada en el mismo momento de declararla.
final también se usa como palabra clave en otro contexto: una clase final (final) es aquella que
no puede tener clases que la hereden.

34
Constantes:
- Para declarar constantes, se recomienda que se declaren con letra mayúscula
- Una declaración en cabecera de una clase como private final double PI = 3.1416;
podríamos interpretarla como una constante de objeto.
- Cada objeto tendrá su espacio de memoria con un contenido invariable.
- Una declaración en cabecera de una clase como private static final double Pi = 3.1416;
la interpretamos como una constante de clase.

Existe un único espacio de memoria, compartido por todos los objetos de la clase, que
contiene un valor invariable. Veamos ejemplos de uso:

Al utilizar la palabra clave static la declaración de la constante ha de realizarse obligatoriamente


en cabecera de la clase

Por otro lado, final sí puede ser usado dentro de métodos y también dentro de un método main.

35
También se debe anotar que final, es utilizado para terminar una herencia, por ejemplo: Se tiene
la clase Padre con un hijo, pero al hijo no se le permite tener un nieto, es decir que su hijo no
puede tener descendientes. Entonces declaramos la clase Hijo, de tipo final.
Ejemplo:

Clase Padre

Clase Hijo

36
Clase Nieto con error porque la clase hijo es declarado como “final”

3.5. Sobremontado de métodos

Es legal tener estos métodos en una Clase:


public String printString(String string);
public String printString(String string, int offset);

El tipo de dato retornado no es considerado en la sobrecarga; por ende, lo siguiente no es


correcto:
public int countRows(int number);
public String countRows(int number);

Ejemplo:

37
Basado en el orden de los argumentos:

3.6. Sobremontado vs. Sobrecarga


El sobremontado o sobreescritura, y sobrecarga no son más que dos conceptos que se aplican
a la utilización de métodos, estos conceptos dependen principalmente de nuestra lógica de
programación y el enfoque o forma de trabajo, siendo así veamos algunas características:

Sobrecarga de métodos (Overloading)

Al declarar una variable o un método con un nombre específico, no podemos declarar otra
variable o método con el mismo nombre, pero esta regla no aplica cuando usamos la
38
Sobrecarga de métodos, ya que esta permite usar el mismo nombre del método pero solo
si se tiene diferente firma(sus parámetros).

Por esta razón lo que define a qué método se ingresa, son los argumentos que se envían como
parámetros.

Ejemplo:

Tenemos dos métodos llamados metodo1, con diferente número de parámetros.

Sobreescritura de métodos (Overriding)

Es la forma por la cual una clase que hereda puede re-definir los métodos de su clase Padre,
de esta manera puede crear nuevos métodos con el mismo nombre de su superClase.

Esto indica que si tengo una clase padre con el método ingresar() yo puedo crear en la clase
hija un método que también se llame ingresar() pero implementándolo según lo que necesite.
Suena ilógico ya que la clase hijo hereda los atributos y métodos de la clase Padre, entonces,
depende de lo que queremos hacer; si lo que queremos es extender una funcionalidad por medio
de la herencia y si bien, en la clase padre existe el método ingresar(), el método y la lógica que
tenga es propia de esa clase, si yo quiero vincularle algo más a ese método pero que sea
específico para la clase hija, no podría, ya que tendría que modificarlo en la clase padre y de
esta manera ya se perdería el enfoque como tal, pues dicha funcionalidad sería común para
todas las clases hijas que heredan de la superClase.

Es por ello que, la sobreescritura nos permite extender la funcionalidad de un método heredado
para hacerlo específico a lo que necesitemos, pudiendo implementar la lógica que queramos en
nuestras clases hijas para el mismo método.
39
Un método sobreescrito se detalla cuando tiene la anotación @override, esto es muy común
encontrarlo cuando trabajamos con clases abstractas e interfaces, donde se obliga a
implementar los métodos de estas si son heredadas o implementadas, pero no es obligatorio
ponerlo pero si es recomendable.

CAPITULO 4: CLASES ABSTRACTAS E INTERFACES

4.1. Clases Abstractas


Es una clase que no se puede instanciar, se utiliza únicamente para definir subclases, el hijo
obligatoriamente debe implementar métodos y constructores abstractos del Padre.

Cuándo es una clase abstracta?

En cuanto uno de sus métodos no tiene implementación (el método abstracto se etiqueta con la
palabra reservada abstract). No se debería crear una clase abstracta si sus métodos van a ser
utilizados.

Cuándo se utilizan clases abstractas?

Cuando deseamos definir una abstracción que englobe objetos de distintos tipos y queremos
hacer uso del polimorfismo

Figura es una clase abstracta (En UML el nombre con cursiva), porque no tiene sentido calcular
su área, pero si la de un cuadrado o la de un círculo. Si una subclase de Figura no redefine
area(), deberá declararse también como clase abstracta

40
4.2. Interfaces

Una interfaz es una clase completamente abstracta (una clase sin implementación)
Para el ejemplo de la Figura, si no estuviésemos interesados en conocer la posición de una
Figura, podríamos eliminar por completo su implementación y convertir Figura en una interfaz.

Características:
- En java las interfaces se declaran con la palabra reservada interface, de forma similar a
las clases abstractas
- En la declaración de una interfaz, lo único que pueden aparecer son declaraciones de
métodos (su nombre y signatura, sin su implementación) y definiciones de constantes
simbólicas.
- Una interfaz no encapsula datos, solo define cuáles son los métodos que han de
implementar los objetos de aquellas clases que implementan interfaz.

CAPITULO 5: POLIMORFISMO
● La palabra polimorfismo proviene del griego y significa que posee varias formas
diferentes.
● Realizamos la llamada a un método de un objeto del que no se sabe su tipo hasta que el
programa esté en ejecución.
● Al tener métodos sobre-escritos(@override), de tal forma que podemos escribir código
de forma general sin preocuparnos del método concreto que se ejecutará en cada
momento.
● Se implementa cuando el enlace dinámico elige el método a ejecutar en tiempo de
ejecución, en función de la clase del objeto.
● Un método es polifmórfico cuando actúa de diferentes formas dependiendo del objeto
que reciba.

41
5.1. Enlace Dinámico

● Polimorfismo dinámico (o polimorfismo paramétrico) es aquél en el que el código no


incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así,
puede ser utilizado a todo tipo de datos compatible.

● Polimorfismo estático (o polimorfismo ad hoc) es aquél en el que los tipos a los que se
aplica el polimorfismo deben ser explicitados y declarados uno por uno antes de poder
ser utilizados.

EJEMPLO

● Por un lado tenemos la clase base “Transporte”, que posee los métodos “Avanzar” y
“Frenar”. Por otro lado tenemos tres clases distintas derivadas de la clase “Transporte”,
cada una de las cuales podrá sobrescribir la implementación de los métodos Avanzar y
Frenar para que su comportamiento sea más específico

En general, hay tres tipos de polimorfismo:

● Polimorfismo de sobrecarga
● Polimorfismo paramétrico (también llamado polimorfismo de plantillas)
● Polimorfismo de inclusión (también llamado redefinición o subtipado)

POLIMORFISMO DE SOBRECARGA
● El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen,
con funcionalidad similar, en clases que son completamente independientes una de otra
(éstas no tienen que ser clases secundarias de la clase objeto).
● Por lo tanto, el polimorfismo de sobrecarga nos permite definir operadores cuyos
comportamientos varían de acuerdo a los parámetros que se les aplican.

POLIMORFISMO PARAMÉTRICO

● El polimorfismo paramétrico es la capacidad para definir varias funciones utilizando el


mismo nombre, pero usando parámetros diferentes (nombre y/o tipo).

42
● El polimorfismo paramétrico selecciona automáticamente el método correcto a aplicar
en función del tipo de datos pasados en el parámetro.
● Por lo tanto, podemos por ejemplo, definir varios métodos homónimos de addition()
efectuando una suma de valores.
○ El método int addition(int,int) devolvería la suma de dos números enteros.
○ float addition(float, float) devolvería la suma de dos flotantes.
○ char addition(char, char) daría por resultado la suma de dos caracteres
definidos por el autor.
○ etc.
● Una signature es el nombre y tipo (estático) que se da a los argumentos de una función.
Por esto, una firma de método determina qué elemento se va a llamar.

POLIMORFISMO DE SUBTIPADO

● La habilidad para redefinir un método en clases que se hereda de una clase base se llama
especialización. Por lo tanto, se puede llamar un método de objeto sin tener que conocer
su tipo intrínseco: esto es polimorfismo de subtipado.
● Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y peón, cada
uno heredando el objeto pieza.
● El método movimiento podría, usando polimorfismo de subtipado, hacer el movimiento
correspondiente de acuerdo a la clase objeto que se llama.
● Esto permite al programa realizar el movimiento.de_pieza sin tener que verse conectado
con cada tipo de pieza en particular.
● En resumen es el uso de @override en java.

Ejemplos:

5.2. Upcasting y Downcasting

Upcasting: mover en sentido ascendente por una jerarquía de herencia.


Downcasting: para mover en sentido descendente en una jerarquía.

43
El poder manipular un Objeto como si éste fuera de un tipo genérico otorga mayor flexibilidad
al momento de programar con Objetos, el término Polimorfismo también es asociado con un
concepto llamado Late-Binding (Ligamiento Tardío), observe el siguiente fragmento de
código:
Figura a = new Circulo();
Figura b = new Triangulo();

Inicialmente se puede pensar que este código generaría un error debido a que el tipo de
referencia es distinta a la instancia del objeto, sin embargo, el fragmento anterior es correcto y
demuestra el concepto de Polimorfismo; para asentar este tema se describe un ejemplo más
completo:
● Uso de polimorfismo
El uso de Polimorfismo posee ciertos detalles que no fueron descritos en el ejemplo anterior,
uno de estos, que también tiene implicaciones en otros componentes es: Casting.

Uso de "Casting"
El término "Casting" viene de la palabra "Cast" que significa Molde, por lo que el termino
literal es Hacer un Molde, en Polimorfismo se lleva acabo este proceso de "Casting"
implícitamente, una Guitarra se coloca en el molde de un Instrumento, un Triangulo en el molde
de una Figura, sin embargo, en ciertas ocasiones se requiere realizar un tipo de "Casting" que
no es considerado seguro en términos computacionales.
Anteriormente se mencionó que el "Casting" llevado acabo con Polimorfismo es implícito, esto
se debe a que no se requiere de sintaxis especial, simplemente se convierte una Guitarra a un
Instrumento, sin embargo, para llevar una transformación en sentido opuesto se requiere de
sintaxis adicional para mantener la seguridad de transformación; analicemos: mientras se puede
asegurar que un Triángulo es una Figura ("Up-Casting"), una Figura no necesariamente es un

44
Triangulo, claro está que lo puede ser, pero en Java se requiere definir explícitamente esta
operación ("Down-Casting").
Ejemplo:

Ejemplo:

45
46
5.3. Operador instanceOf

● El operador instanceof, sólo puede usarse con variables que contengan la referencia a
un objeto. Es decir, variables que contendrán un conjunto de bytes que representarán a
la dirección en memoria en la que está almacenado el objeto.
● El objetivo del operador instanceof es conocer si un objeto es de un tipo determinado.
Por tipo nos referimos a clase o interfaz (interface), es decir si el objeto pasaría el test
ES-UN para esa clase o ese interfaz, especificado a la derecha del operador.
● Un ejemplo sería el siguiente:
● String s = new String("No leas esto, sólo es un ejemplo");
● if (s instanceof String)
○ System.out.prinln("Efectivamente s pertenece a la clase String");
Ejemplo:

CAPITULO 6: VARIABLES Y MÉTODOS DE ALCANCE


CLASIFICADOR

6.1. Variables de alcance clasificador

El alcance de una variable indica la parte del programa donde puede utilizarse. En base al
alcance, las variables se clasifican en:

- Variables locales y
- Variables de instancia

1) Variables locales

47
Se declaran dentro de métodos o de instrucciones asociadas a bucles for,
estructuras condicionales, etc. Su alcance se restringe al código del método o de
la instrucción. No admiten modificadores de acceso salvo "final" y deben estar
inicializadas antes de ser empleadas.

2) Variables de instancia o globales


● Se declaran después de la clase y fuera de cualquier método. Los valores que asumen
para cada objeto constituyen el estado o conjunto de atributos del objeto.

● Su alcance es global, es decir, las pueden utilizar directamente todos lo métodos no


estáticos de la clase.

● Para acceder desde el método main o desde cualquier otro método estático a una
variable de instancia es necesario crear un objeto de la clase.

● Al hecho de crear un objeto de una clase se le conoce también como instanciar la clase.
Si no se inicializan explícitamente, asumen el valor nulo por defecto, una vez
instanciada la clase.

48
3) Variables de tipo parámetro

Son las variables que conforman la firma de un método. Son siempre clasificados como
variables y no como campos. También se encuentran en otras construcciones que aceptan
parámetros como los son los constructores y manipuladores de excepciones.

6.2. Methods de alcance clasificador

Un método de instancia es el que se invoca siempre sobre una instancia (objeto) de una clase.
Por ejemplo p1.getNombre(); siendo p1 un objeto de tipo Persona es un método de instancia:
para invocarlo necesitamos una instancia de persona. Un método de clase es aquel que puede
ser invocado sin existir una instancia.

49
Sin static

Con static

50
Con instancia

6.3. Constantes, Keyword Final


PALABRAS CLAVE STATIC Y FINAL. CONSTANTES EN JAVA.

Valores matemáticos como el número Pi, o valores propios de programa que nunca cambian.
Si nunca cambian, lo adecuado será declararlos como constantes en lugar de cómo variables.

51
Si se modifica en una clase hijo el valor lo puedo hacer?

Respuesta: si, por lo tanto no está declarado como una constante

Formato para crear uma constante:

CaracterPublico/Privado static final TipoDeLaConstante = valorDeLaConstante;

En esta declaración intervienen dos palabras clave cuyo significado es importante:

a) static: los atributos miembros de una clase pueden ser atributos de clase o atributos de
instancia. Al crear “static final” se dice que creamos una constante de clase, un atributo común
a todos los objetos de esa clase.

b) final: indica que una variable es de tipo constante: no admitirá cambios después de su
declaración y asignación de valor. Determina que un atributo no puede ser sobreescrito o
redefinido. O sea: no funcionará como una variable “tradicional”, sino como una constante. La
variable de tipo final debe ser inicializada al momento de declararla.

Nota: final también se usa como palabra clave en otro contexto: una clase final (final) es aquella
que no puede tener clases que la hereden.

52
Con static

Modificar valor de una constante: Error

53
Sin static

6.4. Clases Wrapper


Las clases envoltorio existentes son:
Byte para byte.

Short para short.

Integer para int.

Long para long.

Boolean para boolean

Float para float.

Double para double y

Character para char.

Obsérvese que las clases envoltorio tienen siempre la primera letra en mayúsculas.

Las clases envoltura se usan como cualquier otra:

Integer i = new Integer(5);


int x = i.intValue();

54
Hay que tener en cuenta que las operaciones aritméticas habituales (suma, resta, multiplicación
...) están definidas solo para los datos primitivos por lo que las clases envoltura no sirven para
este fin.

CONVERSIÓN DE TIPOS DE DATOS EN JAVA


En Java es posible transformar el tipo de una variable u objeto en otro diferente al original con
el que fue declarado. Este proceso se denomina "conversión", "moldeado" o "tipado" y es algo
que debemos manejar con cuidado pues un mal uso de la conversión de tipos es frecuente que
dé lugar a errores.

Formas de conversión
Una forma de realizar conversiones consiste en colocar el tipo destino entre paréntesis, a la
izquierda del valor que queremos convertir de la forma siguiente:

Tipo VariableNueva = (NuevoTipo) VariableAntigua;

Ejemplo: Pasar de doublé a entero

Observaciones en la conversión:
El tamaño de los tipos que queremos convertir es muy importante. No todos los tipos se
convertirán de forma segura. Por ejemplo, al convertir un long en un int, el compilador corta
los 32 bits superiores del long (de 64 bits), de forma que encajen en los 32 bits del int, con lo
que si contienen información útil, ésta se perderá. Este tipo de conversiones que suponen
pérdida de información se denominan “conversiones no seguras” y en general se tratan de
evitar, aunque de forma controlada pueden usarse puntualmente.

MÉTODO VALUEOF PARA CONVERSIÓN DE TIPOS

EXPRESIÓN INTERPRETACIÓN

miInteger = miInteger.valueOf (i) Con i entero primitivo que se transforma en


Integer
55
miInteger = miInteger.valueOf (miString) El valor del String se transforma en Integer

miString = miString.valueOf El booleano se transforma en String “true”


(miBooleano) o “false”
miString = miString.valueOf (miChar) El carácter (char) se transforma en String

miString = miString.valueOf (miDouble) El double se transforma en String.


Igualmente aplicable a float, int, long.

No todas las conversiones son posibles. Instrucciones de conversión incoherentes como


miInteger = (int) miString;.

El resultado en este caso es un error de tipo “Inconvertible types”. Un uso típico de valueOf es
para convertir tipos primitivos en objetos.

Ejemplo: Pasar de int a String y viceversa

public void ingresoIntAString(){

int numero = 1000;

String cadena = "";

cadena = String.valueOf(numero);

cadena= Integer.toString(numero);

public void ingresoStringAInt(){

String cadena = "1000";

int numero = 0;

numero = Integer.parseInt(cadena);

}
56
CAPITULO 7: STRING
Dentro de un objeto de la clases String o StringBuffer, Java crea un array de caracteres de una
forma similar a como lo hace el lenguaje C++. A este array se accede a través de la función
miembro de la clase.

Los strings u objetos de la clase String se pueden crear explícitamente o implícitamente. Para
crear un string implícitamente basta poner una cadena de caracteres entre comillas dobles. Por
ejemplo, cuando se escribe

System.out.println("El primer programa");

Java crea un objeto de la clase String automáticamente.

Para crear un string explícitamente escribimos

String str=new String("El primer programa");

También se puede escribir, alternativamente

String str="El primer programa";

Para crear un string nulo se puede hacer de estas dos formas

String str="";

String str=new String();

Un string nulo es aquél que no contiene caracteres, pero es un objeto de la clase String. Sin
embargo, String str;

Está declarando un objeto str de la clase String, pero aún no se ha creado ningún objeto de esta
clase.

Cómo se obtiene información acerca del string


Una vez creado un objeto de la clase String podemos obtener información relevante acerca del
objeto a través de las funciones miembro.

Para obtener la longitud, número de caracteres que guarda un string se llama a la función
miembro length.

String str="El primer programa"; int longitud=str.length();

Podemos conocer si un string comienza con un determinado prefijo, llamando al método


startsWith, que devuelve true o false, según que el string comience o no por dicho prefijo

String str="El primer programa"; boolean resultado=str.startsWith("El");

En este ejemplo la variable resultado tomará el valor true.


57
De modo similar, podemos saber si un string finaliza con un conjunto dado de caracteres,
mediante la función miembro endsWith.

String str="El primer programa"; boolean resultado=str.endsWith("programa");

Si se quiere obtener la posición de la primera ocurrencia de la letra p, se usa la función indexOf.

String str="El primer programa"; int pos=str.indexOf('p');

Para obtener las sucesivas posiciones de la letra p, se llama a otra versión de la misma función

pos=str.indexOf('p', pos+1);

El segundo argumento le dice a la función indexOf que empiece a buscar la primera ocurrencia
de la letra p a partir de la posición pos+1.

Otra versión de indexOf busca la primera ocurrencia de un substring dentro del string.

String str="El primer programa"; int pos=str.indexOf("pro");

Vemos que una clase puede definir varias funciones miembro con el mismo nombre pero que
tienen distinto número de parámetros o de distinto tipo.

Comparación de strings
La comparación de strings nos da la oportunidad de distinguir entre el operador lógico == y la
función miembro equals de la clase String. En el siguiente código

String str1="El lenguaje Java";

String str2=new String("El lenguaje Java"); if(str1==str2){

System.out.println("Los mismos objetos");

}else{

System.out.println("Distintos objetos");

if(str1.equals(str2)){

System.out.println("El mismo contenido");

}else{

System.out.println("Distinto contenido"); }

Esta porción de código devolverá que str1 y str2 son distintos objetos pero con el mismo
contenido. str1 y str2 ocupan posiciones distintas en memoria pero guardan los mismos datos.

58
Cambiemos la segunda sentencia y escribamos

String str1="El lenguaje Java";

String str2=str1;

System.out.prinln("Son el mimso objeto "+(str1==str2);

Los objetos str1 y str2 guardan la misma referencia al objeto de la clase String creado. La
expresión (str1==str2) devolverá true.

Asi pues, el método equals compara un string con un objeto cualquiera que puede ser otro
string, y devuelve true cuando dos strings son iguales o false si son distintos.

String str="El lenguaje Java"; boolean resultado=str.equals("El lenguaje Java");

La variable resultado tomará el valor true.

La función miembro comapareTo devuelve un entero menor que cero si el objeto string es
menor (en orden alfabético) que el string dado, cero si son iguales, y mayor que cero si el objeto
string es mayor que el string dado.

String str="Tomás"; int resultado=str.compareTo("Alberto");

La variable entera resultado tomará un valor mayor que cero, ya que Tomás está después de
Alberto en orden alfabético.

String str="Alberto"; int resultado=str.compareTo("Tomás");

La variable entera resultado tomará un valor menor que cero, ya que Alberto está antes que
Tomás en orden alfabético.

Extraer un substring de un string


En muchas ocasiones es necesario extraer una porción o substring de un string dado. Para este
propósito hay una función miembro de la clase String denominada substring.

Para estraer un substring desde una posición determinada hasta el final del string escribimos

String str="El lenguaje Java";

String subStr=str.substring(12);

Se obtendrá el substring "Java".

Una segunda versión de la función miembro substring, nos permite extraer un substring
especificando la posición de comienzo y la el final.

String str="El lenguaje Java";

59
String subStr=str.substring(3, 11);

Se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar desde
cero.

Convertir un número a string


Para convertir un número en string se emplea la función miembro estática valueOf (más
adelante explicaremos este tipo de funciones).

int valor=10;

String str=String.valueOf(valor);

La clase String proporciona versiones de valueOf para convertir los datos primitivos: int, long,
float, double.

Esta función se emplea mucho cuando programamos applets, por ejemplo, cuando queremos
mostrar el resultado de un cálculo en el área de trabajo de la ventana o en un control de edición.

Convertir un string en número


Cuando introducimos caracteres en un control de edición a veces es inevitable que aparezcan
espacios ya sea al comienzo o al final. Para eliminar estos espacios tenemos la función miembro
trim

String str=" 12 ";

String str1=str.trim();

Para convertir un string en número entero, primero quitamos los espacios en blanco al principio
y al final y luego, llamamos a la función miembro estática parseInt de la clase Integer (clase
envolvente que describe los números enteros)

String str=" 12 "; int numero=Integer.parseInt(str.trim());

Para convertir un string en número decimal (double) se requieren dos pasos: convertir el string
en un objeto de la clase envolvente Double, mediante la función miembro estática valueOf, y
a continuación convertir el objeto de la clase Double en un tipo primitivo double mediante la
función doubleValue

String str="12.35 "; double numero=Double.valueOf(str).doubleValue();

Se puede hacer el mismo procedimiento para convertir un string a número entero

String str="12"; int numero=Integer.valueOf(str).intValue();

60
Métodos Principales
Para poder aplicar estos métodos es necesario crear un objeto String. Además de estos métodos,
la clase String cuenta con otros muchos. Consultar la API para más información.

● int length(): devuelve la longitud de la String, incluyendo espacios en blanco. La


longitud siempre es una unidad mayor que el índice asociado al último carácter de la
String. Ejemplo:

Salida:
● int indexOf(String str, int indice): devuelve el índice en el que aparece por primera vez
la String del primer argumento en la que se aplica el método, a partir del índice
especificado en el segundo argumento. Recordar que una String está indexada. Si el
índice a partir del que se inicia la búsqueda no existe o la String no aparece, devuelve
–1. MUY USADO. Ejemplo:

Salida:

–1 porque la búsqueda se inicia a partir de un índice que no existe ya que el índice


mayor es la longitud de la String –1.

● int indexOf(char ch): devuelve el índice en el que aparece por primera vez el carácter
que se le pasa al argumento. Si no se encuentra el carácter devuelve –1. Se observa que
el nombre de este método es igual al anterior aunque su número de argumentos es
distinto además de su tipo. A esto, en Java, se le llama sobrecarga de métodos: mismo
nombre pero distinto nº de argumentos o distinto tipo de argumentos o distinto orden.
Ir a la API para comprobar que hay más con este mismo nombre. Este concepto se
tratará más en profundidad en temas posteriores.
● String replace (char viejoChar, char nuevoChar): cambia el carácter asociado al primer
argumento por el que se le pasa al segundo, de la String sobre la que se aplica el método
generando una nueva. La String sobre la que se aplica el método no cambia,
simplemente se crea otra nueva en base a la String sobre la que se aplica el método.
Ejemplo:

Por consola:

cucu

coco
61
● String toLowerCase(): devuelve una nueva String convirtiendo todos los caracteres de
la String sobre la que se aplica el método, en minúsculas.
● String toUpperCase(): devuelve una nueva String convirtiendo todos los caracteres de
la String sobre la que se aplica el método, en mayúsculas.
● boolean equals(String str): investiga si dos String tienen los mismos caracteres y en el
mismo orden. Si es así devuelve true y si no false. MUY USADO
● boolean equalsIgnoreCase(String str): investiga si dos String tienen los mismos
caracteres y en el mismo orden sin tener en cuenta las mayúsculas. Si es así devuelve
true y si no false. MUY USADO
● boolean startsWith(String str): devuelve true si la String sobre la que se aplica comienza
por la del argumento; false si esto no ocurre.
● boolean startsWith(String str, int indice): devuelve true si la String sobre la que se aplica
comienza por la del argumento a partir de un determinado índice asociado al segundo
argumento; false si esto no ocurre.
● boolean endsWith(String str): devuelve true si la String sobre la que se aplica acaba en
la del argumento; false si esto no ocurre.
● String trim(): devuelve una String en base a la que se le pasa al argumento, pero sin
espacios en blanco al principio ni al final. No elimina los espacios en blanco situados
entre las palabras. Ejemplo:

Salida:

● String substring(int indiceIni, int indiceFin): devuelve una String obtenida a partir del
índice inicial incluido y del índice final excluido; es decir, se comporta como un
intervalo semiabierto [indiceIni, indiceFin). Si el índice final sobrepasa la longitud de
la String, lanza una IndexOutOfBoundsException. MUY USADO. Ejemplo:

Salida:

rrucu

● char charAt (int indice): devuelve el carácter asociado al índice que se le pasa como
argumento de la String sobre la que se aplica el método. Si el índice no existe se lanza
una StringIndexOutO
Conceptos

62
• La clase StringBuilder es similar a la clase String en el sentido de que sirve para almacenar
cadenas de caracteres. No obstante, presenta algunas diferencias relevantes. Señalaremos como
características de StringBuilder a tener en cuenta:

• Su tamaño y contenido pueden modificarse. En el caso de la clase


String no.
• Debe crearse la instancia, en String no es necesario.
• Un StringBuilder está indexado. Cada uno de sus caracteres tiene un
Índice: 0 para el primero,1 para el segundo, 2 para el tercero… etc.

Constructores:

7.1. Clase String: métodos y conceptos

7.2. Clase StringBuilder

63
Otros métodos:

64
7.3. Argumentos en la línea de Comandos
- Una aplicación Java puede aceptar cualquier número de argumentos desde la línea de
comandos.
- Los argumentos de la línea de comandos permiten al usuario modificar la operación de
una aplicación.
- El usuario introduce argumentos en la línea de comandos cuando invoca la aplicación
y los especifica después del nombre de la clase a ejecutar.
- Por ejemplo, supóngase que se tiene una aplicación Java, llamada Ordenar, que ordena
cinco números.
- La invocación en la línea de comandos es:

Nota: los argumentos se separan por espacios

Cómo reciben las aplicaciones Java los argumentos en la línea de comandos

En Java cuando se invoca una aplicación, el sistema en tiempo de ejecución (runtime) pasa los
argumentos en la línea de comandos al método main de la aplicación mediante un array de
String.

Cada String en el array contiene uno de los argumentos de la línea de comandos

Array String[ ] args


Los argumentos se almacenan en el array args del método main:

65
Ejemplo
Para imprimir el contenido del array de argumentos:

Conversión de argumentos en la línea de comandos


● Si se necesita valores numéricos en la línea de comandos, deben convertirse los
argumentos String al equivalente numérico utilizando las clases wrappers.
● Trozo de código que convierte el arg[0] a un entero:

El método parseInt() en la clase Integer produce error (NumberFormatException) si el formato


no es un número

66
Recomendaciones de codificación en la línea de comandos

● Antes de usar argumentos en la línea de comandos, siempre comprobar el número de


argumentos antes de acceder a los elementos del array para que no se generen
excepciones (errores).
● Por ejemplo si un programa necesita que el usuario ingrese cinco (5) argumentos,
entonces:

Argumentos en la línea de comandos en NetBeans

Asumiendo que se tiene un proyecto que compila sin errores, para pasar argumentos al
programa con NetBeans:
– Pulsar sobre el nodo del proyecto el botón derecho del ratón. En el menú popup seleccionar
Properties

67
- En el diálogo Project Properties, seleccionar Run

- En el cajetín de texto Arguments escribir los parámetros que se desean pasar al


programa y pulsar OK
- Ejecutar el programa

CAPITULO 8: MANEJO DE ERRORES Y EXCEPCIONES

Java es un lenguaje compilado, por tanto durante el desarrollo pueden darse dos tipos de
errores: los de tiempo de compilación y los de tiempo de ejecución. En general es preferible
que los lenguajes de compilación estén diseñados de tal manera que la compilación pueda
68
detectar el máximo número posible de errores. Es preferible que los errores de tiempo de tiempo
de ejecución se deban a situaciones inesperadas y no a descuidos del programador. Errores de
tiempo de ejecución siempre habrá, y su gestión a través de excepciones es fundamental en
cualquier lenguaje de programación actual.

Una excepcion no siempre es un error (hablando como excepcion en general, ya que en java
una Exception es muy diferente a un Error), muchas veces necesitaremos trabajar con
excepciones controladas para indicar alguna inconsistencia en nuestro sistema que podría
provocar errores.
El tratamiento de excepciones en Java es un mecanismo del lenguaje que permite gestionar
errores y situaciones excepcionales.

Jerarquía de Excepciones de Java (puede que no se encuentren algunas excepciones, pero se


contemplan las mas comunes):

8.1. Definición de una excepciónes

Una excepción es un Objeto que proviene de la clase java.lang.Object, nuestro sistema emite
una condición excepcional que altera la correcta ejecución del programa.
Las excepciones nos indican que hay algo anómalo, inconsistente o simplemente un Error, lo
cual impide que el sistema se ejecute como debería de ser.
Ejemplo:

NullPointerException, el cual nos indica que un objeto se encuentra vacio, pero esto no es un
error ya que nosotros podemos trabajar con objetos null, entonces veámoslo como si la
excepción nos dijera "Es un objeto nulo y no se puede efectuar el proceso"

De la Jerarquía:

La clase principal de la cual heredan todas las excepciones Java es Throwable. De ella nacen
dos ramas: Error y Exception. La primera representa errores de una magnitud tal que una
aplicación nunca debería intentar realizar nada con ellos (como errores de la JVM,
desbordamientos de buffer, etc).

La segunda rama, encabezada por Exception, representa aquellos errores que normalmente si
solemos gestionar, y a los que comunmente solemos llamar excepciones.

69
De Exception nacen múltiples ramas: ClassNotFoundException, IOException, ParseException,
SQLException y otras muchas, todas ellas de tipo checked.
La única excepción es RuntimeException que es de tipo unchecked y encabeza todas las de
este tipo.

Figura. Rutas de Exception

Figura. Jerarquía de Exception

Un error es por ejemplo, NoClassDefFoundError, el cual nos indica que la maquina virtual de
Java (JVM) no puede encontrar una clase que necesita, debido a por ejemplo que no encuentra
un .class, esto si se maneja como un error en java

70
8.2. Cláusula finally

finally: es un bloque que contiene el código que se ejecutará al final tanto si se ha producido
una excepción como si no lo ha hecho. Este bloque se utiliza para, por ejemplo, cerrar algún
fichero que haya podido ser abierto dentro del código regular del programa, de manera que nos
aseguremos que tanto si se ha producido un error como si no este fichero se cierre. El bloque
finally no es obligatorio ponerlo.

8.3. Tipos de Excepciones

Entre los diferentes tipos de errores tenemos:

1) Errores en tiempo de ejecución: Excepciones

Los errores en tiempo de ejecución son aquellos que ocurren de manera inesperada:
disco duro lleno, error de red, división por cero, cast inválido, etc. Todos estos errores
pueden ser manejados a través de excepciones.

Las excepciones son eventos que ocurren durante la ejecución de un programa y hacen
que éste salga de su flujo normal de instrucciones.
Este mecanismo permite tratar los errores de una forma elegante, ya que separa el
código para el tratamiento de errores del código normal del programa. Se dice que una
excepción es lanzada cuando se produce un error, y esta excepción puede ser capturada
para tratar dicho error.

2) Errores de compilación

Los errores de compilación, también conocidos como errores del compilador, son
errores que impiden que su programa se ejecute. La mayoría de los errores del
compilador se deben a errores cometidos al escribir el código. Por ejemplo, puede
escribir mal una palabra clave, omitir alguna puntuación necesaria o intentar utilizar
una instrucción End If sin antes utilizar una instrucción If.

3) Errores lógicos

71
Este tipo de errores impiden que el programa haga lo que estaba previsto. El código
puede compilarse y ejecutarse sin errores, pero el resultado de una operación puede
generar un resultado no esperado. Por ejemplo, puede tener una variable llamada name
y establecida inicialmente en una cadena vacía. Después en el programa, puede
concatenar name con otra variable denominada apellido para mostrar un nombre
completo. Si olvida asignar un valor a name, sólo se mostrará el apellido, no el nombre
completo como se quería obtener.

Excepciones tipo checked y unchecked

Excepciones checked representan un error del cual técnicamente podemos recuperarnos. Por
ejemplo, una operación de lectura/escritura en disco puede fallar porque el fichero no exista,
porque este se encuentre bloqueado por otra aplicación, etc. Todos estas situaciones, además
de ser inherentes al propósito del código que las lanza (lectura/escritura en disco) son
totalmente ajenas al propio código, y deben ser (y de hecho son) declaradas y manejadas
mediante excepciones de tipo checked y sus mecanismos de control. Por tanto, todas las
excepciones de tipo checked deben ser capturadas o relanzadas. En el primer caso, utilizamos
el más que conocido bloque try-catch:

Las excepciones unchecked (no predecibles) sirven para indicar errores graves en la lógica del
programa, que normalmente no deberían ocurrir. Se utilizarán para comprobar la consistencia
interna del programa.

8.4. Manejo de Excepciones

Cuando un fragmento de código sea susceptible de lanzar una excepción y queramos tratar el
error producido o bien por ser una excepción de tipo checked debamos capturarla, podremos
hacerlo mediante la estructura try-catch-finally, que consta de tres bloques de código:

- Bloque try: Contiene el código regular de nuestro programa que puede producir una
excepción en caso de error.
- Bloque catch: Contiene el código con el que trataremos el error en caso de producirse.
- Bloque finally: Este bloque contiene el código que se ejecutará al final tanto si se ha
producido una excepción como si no lo ha hecho. Este bloque se utiliza para, por
ejemplo, cerrar algún fichero que haya podido ser abierto dentro del código regular del
programa, de manera que nos aseguremos que tanto si se ha producido un error como
si no este fichero se cierre. El bloque finally no es obligatorio ponerlo.

72
Para el bloque catch además deberemos especificar el tipo o grupo de excepciones que tratamos
en dicho bloque, pudiendo incluir varios bloques catch, cada uno de ellos para un tipo/grupo
de excepciones distinto. La forma de hacer esto será la siguiente:

Ejemplo:

Si como tipo de excepción especificamos un grupo de excepciones este bloque se encargará de


la captura de todos los subtipos de excepciones de este grupo. Por lo tanto, si especificamos
Exception capturaremos cualquier excepción, ya que está es la superclase común de todas las
excepciones.

En el bloque catch pueden ser útiles algunos métodos de la excepción (que podemos ver en la
API de la clase padre Exception):

1) String getMessage()

Con getMessage obtenemos una cadena descriptiva del error (si la hay).

73
2) void printStackTrace()

Con printStackTrace se muestra por la salida estándar la traza de errores que se han producido
(en ocasiones la traza es muy larga y no puede seguirse toda en pantalla con algunos sistemas
operativos).

Un ejemplo de uso:

Nota: Nunca deberemos dejar vacío el cuerpo del catch, porque si se produce el error, nadie se
va a dar cuenta de que se ha producido. En especial, cuando estemos con excepciones no-
checked.

Lanzamiento de excepciones

Hemos visto cómo capturar excepciones que se produzcan en el código, pero en lugar de
capturarlas también podemos hacer que se propaguen al método de nivel superior (desde el
cual se ha llamado al método actual). Para esto, en el método donde se vaya a lanzar la
excepción, se siguen 2 pasos:
Indicar en el método que determinados tipos de excepciones o grupos de ellas pueden ser
lanzados, cosa que haremos de la siguiente forma, por ejemplo:

Podremos indicar tantos tipos de excepciones como queramos en la claúsula throws. Si alguna
de estas clases de excepciones tiene subclases, también se considerará que puede lanzar todas
estas subclases. Para lanzar la excepción utilizamos la instrucción throw, proporcionándole un
objeto correspondiente al tipo de excepción que deseamos lanzar. Por ejemplo: throw new
IOException(mensaje_error); Juntando estos dos pasos:

74
NOTA: para las excepciones que no son de tipo checked no hará falta la cláusula throws en la
declaración del método, pero seguirán el mismo comportamiento que el resto, si no son
capturadas pasarán al método de nivel superior, y seguirán así hasta llegar a la función
principal, momento en el que si no se captura provocará la salida de nuestro programa
mostrando el error correspondiente.

8.5. Excepciones definidas por el usuario

Además de utilizar los tipos de excepciones contenidos en la distribución de Java, podremos


crear nuevos tipos que se adapten a nuestros problemas.
Para crear un nuevo tipo de excepciones simplemente deberemos crear una clase que herede de
Exception o cualquier otro subgrupo de excepciones existente. En esta clase podremos añadir
métodos y propiedades para almacenar información relativa a nuestro tipo de error. Por
ejemplo:

75
CAPITULO 9: COLECCIONES E ITERADORES

Para trabajar con un ArrayList antes hay que saber que es una colección de datos:
Una colección es un objeto el cual almacena referencias sobre objetos, siendo estas dinámicas
pues no contienen un limite como los simples arrays, permitiendo añadir objetos en tiempo de
ejecución.

9.1. Listas dinámicas (ArrayList)


Un ArrayList se trata de un arreglo en el cual se enlistan referencias a objetos mediante índices,
el índice es la posición que ocupa un determinado objeto, como en todo arreglo la posición
inicial o índice es 0.Cuando se agregan elementos a un objeto ArrayList su capacidad aumenta
de forma automática.

76
La clase ArrayList tiene varios constructores, dependiendo de cómo necesitemos construir el
ArrayList .
Los siguientes dos constructores nos ayudarán a empezar:

ArrayList(): construye un ArrayList con capacidad cero por defecto, pero crecerá según le
vayamos añadiendo:
ArrayList lista1 = new ArrayList();

ArrayList(int initialCapacity): construye un ArrayList vacío con una capacidad inicial


especificada:
ArrayList lista2 = new ArrayList(5);

Qué necesitamos?
Para usar esta clase debemos hacer la importación respectiva:
import java.util.ArrayList;

Para crear un ArrayList se puede seguir el siguiente formato:


nombreDeLista = new ArrayList();

Como suele ser habitual, se puede declarar la lista a la vez que se crea:
ArrayList<nombreClase> nombreDeLista = new ArrayList();

Ejemplo:
ArrayList<String> listaEstudiantes = new ArrayList();
Estamo especificando que listaEstudiantes es un arraylist de Strings.

Propiedad para “añadir” elementos al final de la lista


El método add de la clase ArrayList posibilita añadir elementos.

Los elementos que se van añadiendo, se colocan después del último elemento que hubiera en
el ArrayList.

En primer elemento que se añada se colocará en la posición 0.


77
boolean add(Object elementoAInsertar);

Ejemplo:

ArrayList<String> listaEstudiantes = new ArrayList();

listaEstudiantes.add(“Marcela ‘Gonzales"); //Ocupa la posición 0

listaEstudiantes.add(“Marco Moreno"); //Ocupa la posición 1

listaEstudiantes.add(“Paola Jaramillo"); //Ocupa la posición 2

“Insertar” elementos en una determinada posición

Con ArrayList también es posible insertar un elemento en una determinada posición


desplazando el elemento que se encontraba en esa posición, y todos los siguientes, una posición
más.

Para ello, se emplea también el método add indicando como primer parámetro el número de la
posición donde se desea colocar el nuevo elemento:

void add(int posición, Object elementoAInsertar);

ArrayList<String> listaPaises = new ArrayList();

listaEstudiantes.add(“Marcela ‘Gonzales"); //Ocupa la posición 0

listaEstudiantes.add(“Marco Moreno"); //Ocupa la posición 1

listaEstudiantes.add(“Paola Jaramillo"); //Ocupa la posición 2

//El orden hasta ahora es: Marcela ‘Gonzales, Marco Moreno, Paola Jaramillo

listaEstudiantes.add(1, “Leonel Macías"); //El orden ahora es: Marcela ‘Gonzales,


Leonel Macías ,Marco Moreno, Paola Jaramillo

Si se intenta insertar en una posición que no existe, se produce una excepción


(IndexOutOfBoundsException)

“Suprimir” elementos de la lista

Si se quiere que un determinado elemento se elimine de la lista se puede emplear el método


remove al que se le puede indicar por parámetro un valor int con la posición a suprimir, o bien,
se puede especificar directamente el elemento a eliminar si es encontrado en la lista.

ArrayList<String> listaPaises = new ArrayList();

listaEstudiantes.add(“Marcela Gonzales");

listaEstudiantes.add(“Marco Moreno");
78
listaEstudiantes.add(“Paola Jaramillo");

listaEstudiantes.add(1, “Leonel Macías");

listaEstudiantes.remove(2);

listaEstudiantes.remove(" Paola Jaramillo ");

“Consultar” de un determinado elemento de la lista

El método get permite obtener el elemento almacenado en una determinada posición que es
indicada con un parámetro de tipo int:

Object get(int posición)

Con el elemento obtenido se podrá realizar cualquiera de las operaciones posibles según el tipo
de dato del elemento (asignar el elemento a una variable, incluirlo en una expresión, mostrarlo
por pantalla, etc). Por ejemplo:

System.out.println(listaEstudiantes.get(0)); //mostraría Marcela Gonzales

“Modificar” un elemento contenido en la lista

Es posible modificar un elemento que previamente ha sido almacenando en la lista utilizando


el método set.

Como primer parámetro se indica, con un valor int, la posición que ocupa el elemento a
modificar, y en el segundo parámetro se especifica el nuevo elemento que ocupará dicha
posición sustituyendo al elemento anterior.

Sintáxis

Object set(int posición, Object nuevoElemento)

listaEstudiantes.set(1, “Mónica Velez");

“Buscar” un elemento

La clase ArrayList facilita mucho las búsquedas de elementos gracias al método indexOf que
retorna, con un valor int, la posición que ocupa el elemento que se indique por parámetro.

int indexOf(Object elementoBuscado)

Si el elemento se encontrara en más de una posición, este método retorna la posición del
primero que se encuentre.

El método lastIndexOf obtiene la posición del último encontrado.

79
String estudianteBuscado = “Mónica Velez";

int pos = listaEstudiantes.indexOf(estudianteBuscado);

if(pos!=-1)

System.out.println(estudianteBuscado + " se ha encontrado en la posición:


"+pos);

else

System.out.println(estudianteBuscado + " no se ha encontrado");

Recorrer el contenido de la lista

Es posible obtener cada uno de los elementos de la lista utilizando un bucle con tantas
iteraciones como elementos contenga, de forma similar a la empleada con los arrays
convencionales.

Para obtener el número de elementos de forma automática se puede emplear el método size()
que devuelve un valor int con el número de elementos que contiene la lista.

for(int i=0; i<listaEstudiantes.size(); i++)

System.out.println(listaEstudiantes.get(i));

También se puede emplear el formato compacto del bucle for en el que se va asignando cada
elemento de la lista a una variable declarada del mismo tipo que los elementos del ArrayList:

for(String estudiante:listaEstudiantes)

System.out.println(estudiante);

Ejemplo:

80
Sin ingreso por teclado

Otra forma de mostrar datos con Iterador

81
Con ingreso por teclado

Ejemplo con objetos


82
Utilizando otros métodos

Otros métodos de interés de la clase Arraylist.

void clear(): Borra todo el contenido de la lista.


83
Object clone(): Retorna una copia de la lista.

boolean contains(Object elemento): Retorna true si se encuentra el elemento indicado


en la lista, y false en caso contrario.

boolean isEmpty(): Retorna true si la lista está vacía.

Object[] toArray(): Convierte la lista a un array.

Tamaño Para determinar la cantidad de elementos de la lista solo se llama al método


size()

int total = mi_lista.size();

Vaciar Para vaciar la lista y dejarla sin ningún elemento en ella se usa el método

clear()

mi_lista.clear();

Si un objeto ya existe en la lista Para saber si un objeto ésta insertado en lista usamos
el método contains(…), el cual devuelve true si existe o un false si sucede lo contrario

boolean existencia = mi_lista.contains(elObjetoBuscado);

Si está vacía

Para saber si la lista esta vacía, es decir, si no tiene elementos usamos isEmpty() que
devuelve true si NO hay elementos o un false si contiene algún elemento.

boolean vacia = mi_lista.isEmpty();

Convertir a un arreglo

Para pasar o copiar los elementos a un arreglo de objetos.

(TipoObjeto objetos []) se usa el método toArray()

Object objetos [] = mi_lista.toArray();

9.2. Tablas Hash (Hashtables)


Una función hash es método para generar claves o llaves que representen de manera casi
unívoca a un documento o conjunto de datos.

84
Una Hashtable Java es una estructura de datos que utiliza una función hash para identificar
datos mediante una llave o clave (ej. Nombre de una persona). La función hash transforma una
llave a un valor índice de un arreglo de elementos. En este caso a una índice de nuestra
Hashtable Java.

Una Hashtable Java más específica del funcionamiento es la siguiente:

Identificador Dato

001 Maria

002 Marco

003 Pedro

004 Juan

005 Carlos

Instancia y Métodos:

Instancia: Hashtable balance = new Hashtable();

put(): Para añadir datos

get(): para obtener el valor mediante la clave

System.out.println(contenedor.get("1002"));

Methods y su description

void clear( )

Restablece y se vacía la tabla hash .

85
Object clone( )

Devuelve un duplicado del objeto que invoca.

boolean contains(Object value)

Devuelve verdadero si existe algún valor igual al valor dentro de la tabla hash. Devuelve
false si no se encuentra el valor.

boolean containsKey(Object key)

Devuelve verdadero si alguna clave igual a la tecla exista en la tabla hash. Devuelve
false si no se encuentra la clave.

boolean containsValue(Object value)

Devuelve verdadero si existe algún valor igual al valor dentro de la tabla hash. Devuelve
false si no se encuentra el valor.

Enumeration elements( )

Devuelve una enumeración de los valores contenidos en la tabla hash.

Object get(Object key)

Devuelve el objeto que contiene el valor asociado a la clave. Si la clave no está en la


tabla hash, se devuelve un objeto nulo.

boolean isEmpty( )

Devuelve true si la tabla hash está vacía; devuelve false si contiene al menos una clave.

Enumeration keys( )

Devuelve una enumeración de las claves contenidas en la tabla hash .

Object put(Object key, Object value)

Inserta una clave y un valor en la tabla hash. Devuelve un valor nulo si la clave no está
ya en la tabla hash; devuelve el valor anterior asociada con la clave si la clave ya está
en la tabla hash.

86
void rehash( )
Aumenta el tamaño de la tabla hash y rehashes todas sus claves .

Object remove(Object key)

Elimina clave y su valor. Devuelve el valor asociado a la clave. Si la clave no está en


la tabla hash, se devuelve un objeto nulo.

int size( )

Devuelve el número de entradas en la tabla hash.

String toString( )

Devuelve la cadena equivalente de una tabla hash.

Ejemplo:

87
CAPITULO 10: ELABORACIÓN DE INTERFACES GRÁFICAS
Elementos básicos de una GUI

· Componentes GUI (widgets)

 Objetos visuales del interfaz

 Un programa gráfico es un conjunto de componentes anidados

 ventanas, contenedores, menús, barras, botones, campos de texto, etc.

· Disposición (layout): cómo se colocan los componentes para lograr un GUI cómodo de utilizar

 Layout managers: Gestionan la organización de los componentes gráficos de la interfaz

· Eventos: interactividad, respuesta a la entrada del usuario

 Desplazamiento del ratón, selección en un menú, botón pulsado, etc.

· Creación de gráficos y texto - Clase Graphics

 Define fuentes, pinta textos,

 Para dibujo de líneas, figuras, coloreado, ...

10.1. Contenedores (Ventanas, Paneles)

Un contenedor es un componente especial que permite contener en su interior a otros


componentes, incluidos otros contenedores. Un contenedor posee, además de la habilidad de
contener otros componentes, la de organizar dichos componentes en su interior.

88
Los contenedores descienden de la clase padre Container, la cual, a su vez, es descendiente
directa de la clase Component.
java.lang.Object
java.awt.Component
java.awt.Container

Esta clase posee los métodos comunes a todos los contenedores, como aquellos que permiten
agregar componentes al contenedor, localizar componentes, establecer la organización o
disposición de los componentes (layouts), etc.

Para agregar componentes a un contenedor existe un método llamado add(añadir, agregar), que
posee diversas sintaxis:
public Component add (Component comp)// Añade el componente al final del
contenedor
public Component add (String name, // Añade el componente al final del contenedor
y
Component comp) // le asigna un nombre
public Component add (Component comp,// Añade el componente en la posicion
indicada
int index) // por index. Con –1 lo añade al final
public void add (Component comp, // Añade el componente al final e indica al
Object constraints) // Layout las restricciones (x, y, ancho y alto)
public void add (Component comp, // Idem al anterior pero indicando que agregue
Object constraints, // el componente en la posicion index dentro de
int index) // la lista de componentes del contenedor

Para eliminar componentes del contenedor se utiliza el método remove, cuya sintaxis es la
siguiente:
public remove (int index) // Elimina el componente que hay en la posicion index
public remove (Component comp) // Elimina el componente especificado

Si se desea vaciar el contenedor, el método removeAll es el método indicado:


89
public void removeAll ( )

Para conocer el número de componentes que hay actualmente insertados en el contenedor, se


puede utilizar el método siguiente:
public int getComponentCount ( )

Obtener el componente situado en un posición específica en la lista de componentes del


contenedor es muy sencillo. El método getComponent se encarga de ello:
public Component getComponent (int n)

Es posible también obtener el componente en relación a unas coordenadas específicas dentro


del contenedor. Para ello, hay varios métodos:
public Component getComponentAt (int x, int y)
public Component getComponentAt (Point p)
public findComponentAt (int x, int y)
public findComponentAt (Point p)

La diferencia entre el método getComponentAt y findComponentAt es quegetComponentAt


busca en el hijo más inmediato, mientras quefindComponentAt puede buscar dentro de hijos
anidados.

En este caso, si se desea conocer si un componente dado está contenido dentro del contenedor,
existe un método:
public boolean isAncestorOf (Component c)

Este método retorna true si el componente está contenido dentro del contenedor, o false en caso
contrario.

Los contenedores poseen la habilidad de pintar, y poseen varios métodos que sirven para pintar
en el contenedor en un determinado momento:
public void paint (Graphics g) // Cuando se repinta todo el contenedor
public void update (Graphics g) // Cuando se actualiza el contenedor
public void print (Graphics g) // Cuando se imprime el contenedor
90
public void paintComponents (Graphics g) // Cuando se repinta cada componente
public void printComponents (Graphics g) // Cuando se imprime cada componentes

Los contenedores poseen también la habilidad de validar o no su contenido. Esto se consigue


gracias a algunos métodos especiales:
public void invalidate ( ) // Invalida el contenedor
public void validate ( ) // Valida el contenedor y sus subcomponentes

Cuando se invalida un contenedor, éste y sus padres son marcados como que necesitan
reorganizarse. Cuando se valida el contenedor, el contenedor y sus subcomponentes son
reorganizados. El uso habitual de estos métodos se realiza cuando se han añadido, eliminado o
modificado sus subcomponentes.

Los contenedores poseen la facultad de organizar sus subcomponentes gracias a los Layouts
(disposiciones u organizadores). Para gestionar dichos organizadores existen varios métodos,
algunos de los cuales ya se han visto en capítulos anteriores:
public void setLayout (LayoutManager mgr) // Establece el tipo de disposicion
public LayoutManager getLayout ( ) // Obtiene el tipo de disposicion
public void doLayout ( ) // Reorganiza la disposicion del contenedor

Las disposiciones u organizadores serán tratados más adelante dentro de este mismo tema
dedicado a los contenedores.

Todos los métodos aquí vistos son comunes a todos los tipos de contenedores. Como se indicó
desde un principio, la clase Container es la clase padre de los contenedores, y pone a
disposición de las clases más especializadas (cada tipo de contenedor) estos métodos y los
heredados de la clase Component.

10.2. Componentes gráficos para interacción (botones, listas,


etiquetas, cajas de texto)

Tipos de contenedores

91
En sí, la clase Container no se utiliza directamente, pues es una clase abstracta que define el
comportamiento de los distintos tipos de contenedores. Sin embargo, sí es utilizada para
extenderla y crear clases más especializadas. No obstante, Java posee varios tipos de
contenedores, dispuestos en la siguiente jerarquía:
java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Panel
java.applet.applet
java.awt.ScrollPane
java.awt.Window
java.awt.Dialog
java.awt.FileDialog
java.awt.Frame

Panel
Un panel es la clase de contenedor más simple, ya que únicamente proporciona el espacio para
contener otros componentes y contenedores.

Applet
Un applet es un contenedor que deriva de la clase Panel. Además de proporcionar espacio para
contener otros componentes, tiene la funcionalidad de ser una aplicación autónomo e
independiente dentro de una página web.

ScrollPane
Este tipo de contenedor puede implementar desplazamientos horizontales y/o verticales para
poder acceder a posiciones de sus componentes hijos, si éstos no son visualizados.

Window

92
Representa el nivel más básico de una ventana, sin bordes ni menús. Una instancia de una
ventana no puede estar contenida dentro de otro contenedor.

Dialog
Es una especialización de una ventana, y muestra bordes y título, y es utilizada comúnmente
como formularios de entrada por los usuarios.

FileDialog
Es una especialización de un diálogo (Dialog), permitiendo al usuario seleccionar navegar por
los discos para seleccionar ficheros o archivos.

Frame
Un frame (marco) es una especialización de ventana y muestra bordes y título, y además pueden
tener menús. La diferencia con los diálogos es que éstos son dependientes de una ventana padre.
Si esta ventana padre se minimiza, se restaura o se cierra, automáticamente los diálogos
también se minimizan, se restauran o se cierran. Además, los diálogos pueden redimensionarse
o moverse, pero no minimizarse ni maximizarse.

Frame
Este contenedor es uno de los principales y mas usados (ya lo hemos visto anteriormente),
representa la ventana Principal de nuestra aplicación, en el podemos alojar otros contenedores.

JDialog
Este contenedor representa una ventana de tipo Ventana de diálogo, también puede ser un
contenedor principal aunque es mas recomendable dadas sus propiedades, que sea usada como
ventana secundaria, es decir, un JFrame como ventana Principal y el resto de ventanas como
un JDialog (Ya veremos el porqué).

JPanel
Este contenedor es uno de los mas simples, permite la creación de paneles independientes
donde se almacenan otros componentes, de esta manera decidimos que elementos se alojan en
que paneles y dado el caso podemos usar sus propiedades para ocultar, mover o delimitar
secciones... cuando alojamos elementos en un panel, los cambios mencionados se aplican a
todo su conjunto...es decir, si nuestro panel tiene 5 botones y ocultamos solo el panel, los
botones también se ocultan....

93
JScrollPane
Este contenedor permite vincular barras de scroll o desplazamiento en nuestra aplicación,
puede ser utilizado tanto en paneles como en otros componentes como un JTextArea, hay que
tener en cuenta que no es simplemente poner un scroll, es alojar el componente (en este caso
panel o área de texto) en el JScrollPane....

JSplitPane
Este componente permite la creación de un contenedor dividido en 2 secciones, muchas veces
usado en aplicaciones donde una sección presenta una lista de propiedades y otra sección
presenta el elemento al que le aplicamos dicha lista....cada sección puede ser manipulada por
aparte y redimensionar sus componentes (Mas utilizado cuando se trabaja con layouts...después
lo veremos).

JTabbedPane
Este tal vez sea otro de los componentes mas usados, permite la creación de una pestañas en
nuestra ventana, cada pestaña representa un contenedor independiente donde podemos alojar
paneles u otros elementos.

JDesktopPane
Este contenedor aloja componentes de tipo JInternalFrame, estos representan ventanas internas,
permitiendo así crear ventanas dentro de una ventana principal, al momento de su creación
podemos manipular sus propiedades para definir si queremos redimensionarlas, cerrarlas,
ocultarlas entre otras....

También podemos definir una posición inicial de cada ventana interna, sin embargo después
de presentadas podemos moverlas por toda la ventana Principal donde se encuentran alojadas.

JToolBar
Este contenedor representa una Barra de herramientas dentro de nuestra aplicación, en el
podemos alojar diferentes componentes que consideremos útiles, botones, check, radios,
campos entre otros.......esta barra de herramientas puede ser manipulada permitiendo cambiar
su ubicación con tan solo arrastrarla al extremo que queramos, o sacarla de la ventana para que
nuestras opciones se encuentren como una ventana independiente.

Ejemplo.
94
Nuevamente presento un ejemplo sencillo, no tiene mayor grado de complejidad que el que le
pueda dar cada componente, la aplicación presenta una Ventana Principal con un botón por
cada elemento a exponer, como se mencionó anteriormente la Ventana Principal será un JFrame
y el resto de ventanas del sistema lo trabajaremos como JDialog (En esta entrada se explica el
porqué).

La idea es mostrar rápidamente el funcionamiento básico de estos elementos, si se necesitan


alguno se recomienda profundizar mediante ejemplos o mas investigación...... es importante
que si no se entiende algún procedimiento soliciten ayuda, por ejemplo es muy común omitir
en ocasiones el método pack(); debemos saber que este permite trabajar con las dimensiones
de los contenedores (si es necesario).

10.3. Gestores de distribución (Layout Managers)

Los layout managers o manejadores de composición, en traducción literal, ayudan a adaptar


los diversos Componentes que se desean incorporar a un Panel, es decir, especifican la
apariencia que tendrán los Componentes a la hora de colocarlos sobre un Contenedor,
controlando tamaño y posición (layout) automáticamente. Java dispone de varios, en la actual
versión, tal como se muestra en la imagen:

FlowLayout

Es el más simple y el que se utiliza por defecto en todos los Paneles si no se fuerza el uso de
alguno de los otros. Los Componentes añadidos a un Panel con FlowLayout se encadenan en
forma de lista. La cadena es horizontal, de izquierda a derecha, y se puede seleccionar el
espaciado entre cada Componente.

Si el Contenedor se cambia de tamaño en tiempo de ejecución, las posiciones de los


Componentes se ajustarán automáticamente, para colocar el máximo número posible de
Componentes en la primera línea.

Los Componentes se alinean según se indique en el constructor. Si no se indica nada, se


considera que los Componentes que pueden estar en una misma línea estarán centrados, pero
también se puede indicar que se alineen a izquierda o derecha en el Contenedor.

95
BorderLayout
La composición BorderLayout (de borde) proporciona un esquema más complejo de
colocación de los Componentes en un panel. La composición utiliza cinco zonas para colocar
los Componentes sobre ellas: Norte, Sur, Este, Oeste y Centro. Es el layout o composición que
se utilizan por defecto JFrame y Dialog.

El Norte ocupa la parte superior del panel, el Este ocupa el lado derecho, Sur la zona inferior y
Oeste el lado izquierdo. Centro representa el resto que queda, una vez que se hayan rellenado
las otras cuatro partes. Así, este controlador de posicionamiento resuelve los problemas de
cambio de plataforma de ejecución de la aplicación, pero limita el número de Componentes
que pueden ser colocados en Contenedor a cinco; aunque, si se va a construir un interfaz gráfico
complejo, algunos de estos cinco Componentes pueden Contenedores, con lo cual el número
de Componentes puede verse ampliado.

En los cuatro lados, los Componentes se colocan y redimensionan de acuerdo a sus tamaños
preferidos y a los valores de separación que se hayan fijado al Contenedor. El tamaño prefijado
y el tamaño mínimo son dos informaciones muy importantes en este caso, ya que un botón
puede ser redimensionado a proporciones cualesquiera; sin embargo, el diseñador puede fijar
un tamaño preferido para la mejor apariencia del botón.

El controlador de posicionamiento puede utilizar este tamaño cuando no haya indicaciones de


separación en el Contenedor, o puede ignorarlo, dependiendo del esquema que utilice. Ahora
bien, si se coloca una etiqueta en el botón, se puede indicar un tamaño mínimo de ese botón
para que siempre sea visible, al menos, el rótulo del botón. En este caso, el controlador de
posicionamiento muestra un total respeto a este valor y garantiza que por lo menos ese espacio
estará disponible para el botón.

GridLayout
Coloca los componentes de la interfaz en forma de rejilla.
El orden en que se añadan los componentes determina su posición en la rejilla.
Constructor:
GridLayout(int filas, int columnas)
Métodos:
setHgap(int separacion)
setVgap(int separacion)

96
CardLayout

Este es el tipo de composición que se utiliza cuando se necesita una zona de la ventana que
permita colocar distintos Componentes en esa misma zona. Este layout suele ir asociado con
botones de selección (Choice), de tal modo que cada selección determina el panel (grupo de
component es) que se presentarán.

Posicionamiento Absoluto

Los Componentes se pueden colocar en Contenedores utilizando cualquiera de los


controladores de posicionamiento, o utilizando posicionamiento absoluto para realizar esta
función. La primera forma de colocar los Componentes se considera más segura porque
automáticamente serán compensadas las diferencias que se puedan encontrar entre resoluciones
de pantalla de plataformas distintas.

La clase Component proporciona métodos para especificar la posición y tamaño de un


Componente en coordenadas absolutas indicadas en pixels:

setBounds( int,int,int,int );
setBounds( Rectangle );

La posición y tamaño si se especifica en coordenadas absolutas, puede hacer más difícil la


consecución de una apariencia uniforme, en diferentes plataformas, del interfaz, según algunos
autores; pero, a pesar de ello, es interesante saber cómo se hace.

10.4. Manejo de Eventos en ventanas, botones, teclado y ratón.

Cuando el usuario actúa sobre un componente -- pulsando el ratón o la tecla Return, por
ejemplo -- se crea un objeto Event. El sistema manejador de eventos del AWT pasa el Evento
a través del árbol de componentes, dando a cada componente una oportunidad para reaccionar
97
ante el evento antes de que el código dependiente de la plataforma que implementan todos los
componentes lo procese.
Cada manejador de eventos de un componente puede reaccionar ante un evento de alguna de
estas formas:
● Ignorando el evento y permitiendo que pase hacia arriba en el árbol de componentes.
Esto es lo que hace la implementación por defecto de la clase Component. Por ejemplo,
como la clase TextField y su superclase TextComponent no implementan manejadores
de eventos, los Campos de texto obtienen la implementación por defecto de la clase
Component. Así cuando un TextField recibe un evento, lo ignora y permite que su
contenedor lo maneje.
● Mediante la modificación del ejemplar de Event antes de dejarlo subir por el árbol de
componentes. Por ejemplo, una sublcase de TextField que muestra todas las letras en
mayúsculas podría reaccionar ante la pulsaicón de una letra minúscula cambiando el
Event para que contuviera la versión mayúscula de la letra.
● Reacionando de alguna otra forma ante el evento. Por ejemplo, una sublcase de
TextField (o un contenedor de TextField) podrían reaccionar ante la pulsación de la
tecla Return llamando a un método que procese el contenido del campo.
● Interceptando el evento, evitando un procesamiento posterior. Por ejemplo, un carácter
no válido se ha introducido en un campo de texto, un manejador de eventos podría parar
el evento resultante y evitar su propagación. Como resultado, la implementación
dependiente de la plataforma del campo de texto nunca vería el evento.

Desde el punto de vista de un Componente, el sistema de manejo de eventos del AWT es como
un sistema de filtrado de eventos. El código dependiente de la plataforma genera un evento,
pero los Componentes tienen una oportunidad para modificar, reaccionar o interceptar el evento
antes de que el código dependiente de la plataforma los procese por completo.

Nota: En la versión actual, los eventos del ratón se envían a los Componentes después de que
los haya procesado el código dependiente de la plataforma. Por eso aunque los Componentes
pueden interceptar todos los eventos del teclado, actualmente no pueden interceptar los eventos
del ratón.

Aunque el AWT define una amplia variedad de tipos de eventos, el AWT no ve todo lo que
ocurre. De este modo no todas las acciones del usuario se convierten en eventos. El AWT sólo
puede ver aquellos eventos que le deja ver el código dependiente de la plataforma. Por ejemplo,
los campos de texto Motif no envían los movimientos del ratón al AWT. Por esta razón, las
subclases de TextField y los contenedores no pueden contar con obtener los eventos de
movimiento del ratón -- en Solaris, al menos, no hay una forma sencilla de conocer que ese
evento se ha producido, ya que no recibe ningún evento cuando se mueve el ratón. Si se quiere
acceder a un amplio rango de tipos de eventos se necesitará implementar una subclase de

98
Canvas, ya que la implementación dependiente de la plataforma de la clase Canvas reenvia
todos los eventos.

El Objeto Event

Cada evento resulta en la creacción de un objeto Event. Un objeto Event incluye la siguiente
información:
● El tipo del evento -- por ejemplo, una pulsación de tecla o un click del ratón, o un evento
más abstracto como "acción" o iconificación de una ventana.
● El objeto que fue la "fuente" del evento -- por ejemplo, el objeto Button correspondiente
al botón de la pantalla que pulsó el usuario, o el objeto TextField en el que el usuario
acaba de teclear algo.
● Un campo indicando el momento en que ocurrió el evento.
● La posición (x,y) donde ocurrió el evento. Esta posición es relativa al origen del
Componente a cuyo manejador de eventos se pasó este evento.
● La tecla que fue pulsada (para eventos de teclado).
● Un argumento arbitrario (como una cadena mostrada en el Componente) asociada con
el evento.
● El estado de las teclas modificadoras, como Shift o Control, cuando ocurrió el evento.

Cómo implementar un Manejador de Eventos

La clase Component define muchos métodos manejadores de eventos, y se puede sobreescribir


alguno de ellos. Excepto el método utilizado para todos los propósitos handleEvent()), cada
método manejador de eventos sólo puede ser utilziaro para un tipo de evento particular.
Recomendamos que se evite el método multi-propósito, si es posible, y en su lugar se
sobreescriba el método de manejo de evento que está especificado por el tipo de evento que se
necesita manejar. Esta aproximación tiende a tener menor número de efectos laterales adversos.

La clase Component define los siguientes métodos para responder a los eventos (el tipo de
evento manejado se lista después del nombre del método):

● action() (Event.ACTION_EVENT)
● mouseEnter() (Event.MOUSE_ENTER)
● mouseExit() (Event.MOUSE_EXIT)
● mouseMove() (Event.MOUSE_MOVE)
● mouseDown() (Event.MOUSE_DOWN)
● mouseDrag() (Event.MOUSE_DRAG)
99
● mouseUp() (Event.MOUSE_UP)
● keyDown() (Event.KEY_PRESS or Event.KEY_ACTION)
● keyUp() (Event.KEY_RELEASE or Event.KEY_ACTION_RELEASE)
● gotFocus() (Event.GOT_FOCUS)
● lostFocus() (Event.LOST_FOCUS)
● handleEvent() (all event types)

Cuando ocurre un evento, se llama al método manejador de evento que coincide con el tipo del
evento. Especificamente, el Evento se pasa primero al método handleEvent(), que (en la
implementación por defecto de handleEvent()) llama al método apropiado por el tipo de evento.

El método action() es un método especialista importante en el manejo de eventos. Sólo los


componentes de control básicos -- Button, Checkbox, Choice, List, MenuItem, y TextField
objects -- producen eventos action. Ellos lo hacen cuando el usuario indica de alguna forma
que el control debería realizar alguna acción. Por ejemplo, cuando el usuario pulsa un botón,
se genera un evento action. Mediante la implementación del método action(), se puede
reaccionar a las acciones sobre los controles sin preocuparse por el eventos de bajo nivel, como
la pulsación de tecla o el click del ratón que causó la acción.

Todos lo métodos manejadores de eventos tienen al menos un argumento (el objeto Event) y
devuelven un valor booleano. El valor de retorno indica si el método a manejado
completamente el evento. Devolviendo false, el manejador indica que se debe continuar
pasando el evento a través del árbol de componentes. Devolviendo true, el manejador indica
que el evento no debe seguir pasandose. El método handleEvent() casi siempre deberá devolver
super.handleEvent(), para asegurarse que todos los eventos sean pasados al método manejador
de eventos apropiado.
Importante: Como los métodos de dibujo, todos los métodos manejadores de eventos deben
ejecutarse rápidamente! De otra fomra, destruirían el rendimiento percibido del programa. Si
se necesita realizar alguna operación lenta como resultado de un evento, házlo arrancando otro
thread (o enviándo una petición a otro thread) para que realice la operación. Puedes ver Threads
de Control.
En el programa de ejemplo, todo el manejo de eventos lo realizan los objetos ConversionPanels.
Utilizan el método action() para capturar los eventos resultantes de las acciones del usuario los
campos de texto (TextField), y las listas desplegables (Choice). Para capturar los eventos
resultantes de la acción del usuario sobre las barras deslizantes (Scrollbar), deben utilizar el
método handleEvent(), ya que los Scrollbars no producen el evento action y la clase Component
no define ningún método específico para los eventos de los objetos Scrolbar.

Aquí tienes la implemtación de ConversionPanel para los método action() y handleEvent():

100
/** Responde a las acciones del usuario sobre los controles. */
public boolean action(Event e, Object arg) {
if (e.target instanceof TextField) {
setSliderValue(getValue());
controller.convert(this);
return true;
}
if (e.target instanceof Choice) {
controller.convert(this);
return true;
}
return false;
}

/** Responde a la barra deslizable. */


public boolean handleEvent(Event e) {
if (e.target instanceof Scrollbar) {
textField.setText(String.valueOf(slider.getValue()));
controller.convert(this);
}
return super.handleEvent(e);
}
Estos métodos simplemente se aseguran que la barra deslizante y el campo de texto de los
ConversionPanel muestren el mismo valor, y le piden al objeto Converter que actualice el otro
ConversionPanel. El método action() devuelve truesi ha manejado el evento. Esto evita que el
evento haga un viaje innecesario a través del árbol de componentes. Si el método action() no
puede manejar el evento, devuelve false, para que algún componente superior en el árbol de
componentes pueda echarle un vistazo al evento. El método handleEvent() siempre devuelve
super.handleEvent() para que todos los eventos sean completamenten procesados.
Una Nota sobre el Método action(): Los eventos Action son eventos de alto nivel. Son causados
por uno o más eventos de bajo nivel como una pulsación de tecla y de ratón. Por esta razón, es
correcto devolver true para parar el evento actión antes de que siga subiendo por el árbol de
componentes después de haberlo manejado -- el código dependiente de la plataforma ya ha

101
manejado los eventos de teclas o del ratón que ha lanzado la acción, no necesita ver de nuevo
el evento action.
Nota: Si handleEvent() devolviera true o false (en lugar de llamar a la implementación de su
superclase), el método action() nunca sería llamado. Riesgos como este son una parte de la
razón por la que hemos avisado para que se evite la utilización del método handleEvent() a
menos que sea absolutamente necesario.

El Foco del Teclado

Muchos componentes --incluso que aquellos que operan primordialmente con el ratón, como
los botones -- pueden operarse con el teclado. Para que tenga efecto una puslación de tecla
sobre un componente, este componente debe tener el foco del teclado.
En un momento dado, al menos una ventana y un componente de esa ventana pueden tener el
foco del teclado. Cómo obtienen las ventanas el foco del teclado depende del sistema. Pero una
vez que una ventana a obtenido el foco puede utilizar el método requestFocus() para pedir que
un componente obtenga el foco.
Cuando un componente obtiene el foco se llama a su método gotFocus(). Cuando un
componente pierde el foco se llama a su método lostFocus().

Componentes Atómicos

Los componentes atómicos son los elementos que no pueden almacenar otros objetos o
componentes graficos, por ejemplo, un JPanel no es Atómico, ya que en el podemos almacenar
JButtons, JTextField entre otros…

JLabel – Permite Vincular Etiquetas, tanto de texto como de imagenes

JButton – Permite vincular Botones simples.

JCheckBox – Son Casilla de verificación, ideal para selección múltiples.

102
JRadioButton – Permite presentar opciones de selección similares a las checkbox, solo que el
enfoque de estas es de única selección.

JToggleButton – Botón que al oprimirlo se quedará presionado hasta que se ejecute otro evento.

JComboBox – Permite mostrar una lista de elementos como un combo de selección.

JScrollBar – Permite mostrar una barra de desplazamiento, regularmente usada en Areas de


texto o paneles donde el contenido es mayor que el tamaño del componente.

Separator – Permite separar opciones, es una barra simple.

JSlider - Permite vincular un Deslizador en nuestra ventana.

JSpinner – permite vincular una caja de texto con botones integrados para seleccionar algún
valor.

JProgressBar – Establece una barra de progreso.

Componentes de Texto.

Son todos aquellos que nos permiten procesar cadenas de texto, sea como entrada o salida de
información.

JTextField – Permite introducir un campo de texto simple.

JFormattedTextField – Permite introducir un campo de texto con formato, (si definimos que
solo recibe números no permitirá letras...)
JPasswordField – Campo de texto que oculta los caracteres ingresados.

JTextArea – Permite vincular un área de texto donde el usuario ingresara información o


simplemente para presentar cadenas de texto.

JEditorPane –Permite vincular un área de texto con propiedades de formato.


103
JTextPane – Similar al anterior, permitiendo otras opciones de formato, colores, iconos entre
otros.

Componentes de Menus.

Estos componentes permiten vincular opciones de menú en nuestras ventanas, tipo menú
principal, como por ejemplo el conocido Inicio, Archivo, Edición etc..

JMenuBar – Permite vincular una barra de menús.

JMenu– Permite vincular botones o enlaces que al ser pulsados despliegan un menú principal.

JMenuItem – Botón u opción que se encuentra en un menú.

JCheckBoxMenuItem– Elemento del menú como opciones de checkbox.

JRadioButtonMenuItem– Elemento del menú como botón de selección.

JPopupMenu– Opciones de menú emergentes.

Componentes Complejos

Estos son componentes un poco más avanzados, cumplen con funciones más enfocadas a
procesos específicos y complejos, como por ejemplo obtener gran cantidad de información de
una base de datos, trabajo con nodos, colores entre otros.

JTable – Permite vincular una tabla de datos con sus respectivas filas y columnas.
JTree - Carga un árbol donde se establece cierta jerarquía visual, tipo directorio.
JList – Permite cargar una lista de elementos, dependiendo de las propiedades puede tenerse
una lista de selección múltiple.

104
JFileChooser – Es un componente que permite la búsqueda y selección de ficheros entre otras.
JColorChooser – Componente que permite cargar un panel selector de color

JOptionPane – No es algo complejo sino mas un componente independiente que permite


mostrar un cuadro de diálogo personalizable.

CAPITULO 11: MANEJO DE GRÁFICOS 2D

El API 2D de Java introducido en el JDK 1.2 proporciona gráficos avanzados en dos


dimensiones, texto, y capacidades de manejo de imágenes para los programas Java a través de
la extensión del AWT. Este paquete de rendering soporta líneas artísticas, texto e imágenes en
un marco de trabajo flexible y lleno de potencia para desarrollar interfaces de usuario,
programas de dibujo sofisticados y editores de imágenes.

El API 2D de Java proporciona:


● Un modelo de renderizado uniforme para pantallas e impresoras.
● Un amplio conjunto de gráficos primitivos geométricos, como curvas, rectángulos, y
elipses y un mecanismo para renderizar virtualmente cualquier forma geométrica.
● Mecanismos para detectar esquinas de formas, texto e imágenes.
● Un modelo de composición que proporciona control sobre cómo se renderizan los
objetos solapados.
● Soporte de color mejorado que facilita su manejo.
● Soporte para imprimir documentos complejos.

11.1. Métodos de dibujado (paint y paintComponent)

Java proporciona la clase Graphics, que permite dibujar elipses, cuadrados, líneas, mostrar
texto y también tiene muchos otros métodos de dibujo. Para cualquier programador, es esencial
el entendimiento de la clase Graphics, antes de adentrarse en el dibujo en Java.
La clase Graphics proporciona el entorno de trabajo para cualquier operación gráfica que se
realice dentro del AWT.
Para poder pintar, un programa necesita un contexto gráfico válido, representado por una
instancia de la clase Graphics. Pero esta clase no se puede instanciar directamente; así que
debemos crear un componente y pasarlo al programa como un argumento al método paint().
El único argumento del método paint() es un objeto de esta clase. La clase Graphics dispone
de métodos para soportar tres categorías de operaciones gráficas:

105
11.2. Dibujado de primitivas gráficas (figuras geométricas y textos)

Además, la clase Graphics mantiene un contexto gráfico: un área de dibujo actual, un color de
dibujo del Background y otro del Foreground, un Font con todas sus propiedades, etc. Los ejes
están situados en la esquina superior izquierda. Las coordenadas se miden siempre en pixels.

106
Sobreescribimos el método paint heredado de la clase JFrame:
public void paint (Graphics g)
{
El método paint se ejecuta cada vez que el JFrame debe ser redibujado y llega como parámetro
un objeto de la clase Graphics. Este objeto nos permite acceder al fondo del JFrame y utilizando
las primitivas gráficas dibujar líneas, rectángulos, elipses etc.

Lo primero que hacemos dentro de este método es llamar al método paint de la clase superior
para que se pinte el fondo del JFrame y otras componentes contenidas dentro (para llamar al
método paint de la clase JFrame debemos anteceder la palabra clave super y pasar el parámetro
respectivo):
super.paint(g);
Mediante el método setColor activamos un color:
g.setColor (Color.blue);
Dibuja una línea desde la coordenada (0,70) es decir columna 0 y fila 70 en píxeles, hasta la
coordenada (100,70). La línea es de color azul:
g.drawLine (0, 70, 100, 70);
Dibujamos un rectángulo desde la coordenada (150,70) con un ancho de 50 píxeles y un alto
de 70, solo se pinta el perímetro del rectángulo de color azul):
g.drawRect (150, 70, 50, 70);
107
Similar a drawRect más un valor de redondeo de los vertices que le indicamos en el quinto y
sexto parámetro:
g.drawRoundRect (250, 70, 50, 70, 6, 6);
Dibujamos un óvalo:
g.drawOval (350, 70, 50, 70);
Dibujamos un triángulo (debemos indicar mediante dos vectores los vértices de cada punto del
triángulo), el primer punto es el (500,70) el segundo punto es el (550,120) y por último el punto
(450,120):
int [] vx1 = {500, 550, 450};
int [] vy1 = {70, 120, 120};
g.drawPolygon (vx1, vy1, 3);
De forma similar los métodos fillRect, fillRoundRect, fillOval y fillPolygon son similares a los
anteriores con la diferencia que pinta su interior con el color activo de la última llamada al
método setColor:
g.setColor (Color.red);
g.fillRect (150, 270, 50, 70);
g.fillRoundRect (250, 270, 50, 70, 6, 6);
g.fillOval (350, 270, 50, 70);
int [] vx2 = {500, 550, 450};
int [] vy2 = {270, 320, 320};
g.fillPolygon (vx2, vy2, 3);

Dibujar texto

La clase Graphics permite ?dibujar? texto, como alternativa al texto mostrado en los
componentes JLabel, JTextField y JTextArea. El método que permite graficar texto sobre el
JFrame es:
drawString(String str, int x, int y);

11.3. Dibujado de imágenes

Java permite incorporar imágenes de tipo GIF y JPEG definidas en ficheros. Se dispone para
ello de la clase java.awt.Image. Para cargar una imagen hay que indicar la localización del

108
archivo y cargarlo mediante el método getImage(). Este método existe en las clases
java.awt.Toolkit.

Entonces, para cargar una imagen hay que comenzar creando un objeto (o una referencia)
Image y llamar al método getImage() (de Toolkit); Una vez cargada la imagen, hay que
representarla, para lo cual se redefine el método paint() para llamar al método drawImage() de
la clase Graphics. Los objetos Graphics pueden mostrar imágenes a través del método:
drawImage(). Dicho método admite varias formas, aunque casi siempre hay que incluir el
nombre del objeto imagen creado.

Clase Image

Una imagen es un objeto gráfico rectangular compuesto por pixels coloreados. Cada pixel en
una imagen describe un color de una particular localización de la imagen.
A continuación, algunos métodos de la clase Image:

La clase Graphics provee el método drawImage() para dibujar imagenes; este método admite
varias formas:
- drawImage (Image i, int x, int y, ImageObserver o)
- drawImage (Image i,int x,int y,int width,int height,ImageObserver o)

Ejercicio:

Crear una aplicación que muestre un archivo jpg dentro de un JFrame.

Graphics

109
Luego de crear el proyecto debemos disponer un archivo en la carpeta raiz del proyecto (el
archivo debe llamarse imagen1.jpg)

110
Creamos un objeto de la clase Toolkit llamando al método estático de la misma clase:
Toolkit t = Toolkit.getDefaultToolkit ();

Creamos un objeto de la clase Image llamando al método getImage de la clase Toolkit pasando
como parámetro el archivo con la imagen:
Image imagen = t.getImage ("imagen1.jpg");

Por último llamamos al método drawImage con la referencia al objeto de tipo Image, la
columna, la fila y la referencia al JFrame donde debe dibujarse:
g.drawImage (imagen, 0, 0, this);

Método repaint()

Este es el método que con más frecuencia es llamado por el programador. El método repaint()
llama ?lo antes posible? al método paint() del componente.
El método repaint() puede ser:
repaint()
repaint(int x, int y, int w, int h)
Las segunda forma permiten definir una zona rectangular de la ventana a la que aplicar el
método.

11.4. Manejo de color y fuente (Color y Font).

Clase Color

111
La clase java.awt.Color encapsula colores utilizando el formato RGB (Red, Green, Blue). Las
componentes de cada color primario en el color resultante se expresan con números enteros
entre 0 y 255, siendo 0 la intensidad mínima de ese color y 255 la máxima. En la clase Color
existen constantes para colores predeterminados de uso frecuente: black, white, green, blue,
red, yellow, magenta, cyan, orange, pink, gray, darkGray, lightGray.
Problema 3

Crear una aplicación que dibuje 255 líneas creando un color distinto para cada una de ellas:

112
Dentro de un for creamos objetos de la clase Color y fijamos el color de la línea seguidamente
(con esto logramos un degradé del negro al rojo):
int fila = 0;
for (int rojo = 0 ; rojo <= 255 ; rojo++)
{
Color col = new Color (rojo, 0, 0);
g.setColor (col);
g.drawLine (0, fila, 800, fila);
fila++;

113
} UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Programación III

Elaborado por:
Ing. Miguel Quiroz

Revisado por:
Ing. Miguel Quiroz

114
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPITULO 2 ..................................................................................................................... 3
MANEJO DE DIRECTORIOS ............................................................................................ 3
CAPITULO 3 .................................................................................................................. 4
MANEJO DE ARCHIVOS .................................................................................................. 4
CLASES PARA MANEJO DE ARCHIVOS DE TEXTO .................................................. 5
CLASES PARA MANEJO DE ARCHIVOS BINARIOS ................................................... 7
CLASES PARA MANEJO DE ACCESO ALEATORIO ................................................. 11
CLASES PARA MANEJO DE RCHIVOS DE OBJETOS .............................................. 12
CLASES PARA MANEJO DE SERIALIZACIÓN........................................................... 12
CAPITULO 4 ................................................................................................................... 14
CREACIÓN DE LIBRERÍAS ............................................................................................ 14
CONCEPTOS .............................................................................................................. 14
CAPITULO 5 ................................................................................................................... 15
BASE DE DATOS ........................................................................................................... 15
INTRODUCCION A BASE DE DATOS ........................................................................ 15
INTRODUCCION A SQL.............................................................................................. 19
EJEMPLO DE CONEXIÓN CON BASES DE DATOS PROPIETARIAS (SQL SERVER)
.................................................................................................................................... 22
EJEMPLO DE CONEXIÓN CON BASES DE DATOS DE LIBRE DISTRIBUCIÓN
(MYSQL, POSGRESQL).............................................................................................. 26
CAPITULO 6 ................................................................................................................... 34
HILOS Y MULTIHILOS .................................................................................................... 34
INTRODUCCION ......................................................................................................... 34
USO DE HILOS DE EJECUCION ................................................................................ 35
MULTIHILOS Y SINCRONIZACION ............................................................................ 37
CAPITULO 7 ................................................................................................................... 40
PROGRAMACION GENERICA ....................................................................................... 40
CAPITULO 8 ................................................................................................................... 41
INTERNACIONALIZACION ............................................................................................. 41
ARCHIVOS DE PROPIEDAD ...................................................................................... 41

2
CAPITULO 2

MANEJO DE DIRECTORIOS

La forma de interactuar con los sistemas de archivos locales se realiza a través de la


clase File, esta clase proporciona muchas utilidades relacionadas con archivos y con la
obtención de información básica sobre esos archivos.

MÉTODOS DE LA CLASE FILE


RETORNO MÉTODO DESCRIPCIÓN
File [] listFiles() Retorna un arreglo con los
elementos contenidos ya
sean estos archivos o
directorios
Boolean isDirectory() Retorna verdadero si la
instancia de File es un
directorio
Boolean isFile() Retorna verdadero si la
instancia de File es un
archivo
String getAbsolutePath() Retorna un string con la ruta
completa del archivo o
directorio
String getName() Retorna un string con el
nombre del archivo o
directorio
Boolan exists() Devuelve true si existe el
path especificado en el
constructor File
Boolean delete() Elimina el archivo o
directorio que se encuentra
en el path especificado
Boolean createNewFile() Crea el archivo que se
encuentra en el path
especificado
Boolean mkdir() Crea el directorio que se
encuentra en el path
especificado
Boolean renameTo(File dest) Renombre el archivo que se
encuentra en el path
especificado en el
constructor

3
CAPITULO 3

MANEJO DE ARCHIVOS
STREAM
Son usados en lenguaje JAVA como un conducto/pasarela entre la aplicación y el archivo físico
representado por la clase FILE.
Es decir, si se desea almacenar los datos en el archivo se debe cargar los datos en una instancia
de Stream, la misma que recibirá como parámetro el objeto que apunta a la ruta del archivo.
De esta manera el Stream se convierte en un canal de flujo de bytes secuenciales entre la
memoria y el archivo.
Hay 4 grupos de streams:

 Reader: lectura de archivo de texto

 Writer: escritura de archivo de texto

 InputStream: lectura de archivo binario

 OutputStream: escritura de archivo binario

NOTA: Al ser clases abstractas no se pueden crear directamente instancias, sino que se debe
utilizar los constructores de las clases derivadas.
Ver: JERARQUÍA DE CLASES

 Para archivos de texto

 Para archivos binarios

EXCEPCIONES

 IOException

o Errores generales para ingreso o salida de datos

 FileNotFoundException

o Cuando no se ha podido acceder a la ruta especificada


4
 EOFException

o Cuando se intentaba leer más datos del archivo se llegó inesperadamente al final

CLASES PARA MANEJO DE ARCHIVOS DE TEXTO

JERARQUÍA DE CLASES PARA ARCHIVOS DE TEXTO

Object

Reader Writer

BufferedReader InputStreamReader StringReader BufferedWriter OutputStreamWriter StringWriter

FileReader FileWriter

ESCRITURA DE ARCHIVO DE TEXTO


 FileWriter:

o clase que permite ser instanciada con dos tipos de constructores

5
 el primero la ruta del archivo

 el segundo la ruta del archivo y un valor booleano true/false

 true-> se puede agregar información al final

 false->sobrescribe la información

 BufferedWriter

o Su constructor puede recibir cualquier objeto instanciado de las clases derivadas


de la superclase Writer, por lo tanto la clase elegida en el caso de archivo de
texto es la OutputStreamwriter y dentro de ese contexto la clase derivada
FileWriter.

o Para acceder al método append() que guarda el texto en el archivo.

LECTURA DE ARCHIVO DE TEXTO


 FileReader

o permite crear un objeto para apuntar al objeto de interés, recoge la ruta

 BufferedReader

o Para acceder al método

 readLine() que permite leer en forma secuencial cada línea del archivo

ARCHIVOS DE TEXTO :
 ESCRIBIR:

o FileWriter;

o BufferedWriter;

 LEER:

o FileReader;

o BufferedReader;

6
FileReader BufferedReader

FileWriter BuferedWriter

CLASES PARA MANEJO DE ARCHIVOS BINARIOS

JERARQUIA DE CLASES PARA ARCHIVO S BINARIOS

Object

InputStream OutputSream

FileInputStream ObjectInpuctStream Filterinputstream FileOutputStream FilterOutputStream ObjectOutputStream

BufferedInputStream DataInputStream DataOutputStream BufferedOutputStream

ESCRITURA DE ARCHIVOS BINARIOS


 FileOutputStream

o Clase encargada de definir la ruta en donde se escribirá el archivo.

7
o Para crear una instancia se puede utilizar 5 constructores.

o Los más utilizados:

 El que recibe como parámetro una instancia de la clase File

 El que recibe 2 parámetros: string que representa la ruta y un valor


booleano true/false.

 DataOutputStream

o Esta clase es la encargada de proveer los métodos que permitan agregar


cualquier tipo de dato al archivo de una manera binaria y secuencial.

o Para crear una instancia de esta clase es necesario definir la ruta en un objeto
FileOutputStream y pasarlo como parámetro.

o Permite usar métodos como:

 writeInt()

 writeUTF()

 writeDouble()

LECTURA DE ARCHIVOS BINARIOS

 FileInputStream

o Es la clase encargada de indicar la ruta en donde se encuentra el archivo binario


que se va a leer

o Para crear una instancia de esta clase se puede pasar como parámetro en el
constructor un objeto de la clase File o directamente un string con la ruta.

 DataInputStream

o Es la clase encargada de proveer los métodos que permitan leer del archivo
cualquier tipo de dato binario que se haya escrito de manera secuencial.

o Para crear una instancia de esta clase es necesario definir la ruta en un objeto
FileInputStream y pasarlo como parámetro.

o Permite usar métodos como

 readInt()

8
 readUTF()

 readDouble()

ARCHIVOS BINARIOS:
 ENTRADA:

o FileInputStream

o DataInputStream (USADA EN CLASES)

o BufferedInputStream

 SALIDA:

o FileOutputStream

o DataOutputStream (USADA EN CLASES)

o BufferedOutputStream

DataInputStream

FileOutputStream DataOutputStream

FileOutputStream BufferedOutputStream

9
BUFFEREDINPUTSTREAM Y DATAINPUTSTREAM

10
CLASES PARA MANEJO DE ACCESO ALEATORIO

ACCESO ALEATORIO
 También llamados randómicos

 Almacenan información de tipo binario (bytes)

 Su acceso es aleatorio y NO secuencial

 Pueden saltar de una posición a otra dentro del archivo

 Para el manejo de acceso aleatorio se utiliza la clase RandomAccessFile

CLASE RANDOMACCESSFILE
 Esta clase define la ruta del archivo

 Posee los métodos para guardar y recuperar los archivos

 Se implementa las interfaces

o DataOutputStream

o DataInputStream

 Constructor: para crear un objeto de la clase RandomAccessFile es necesario pasar 2


parámetros

o String con la ruta del archivo

o String que indique el modo que será abierto el archivo

11
 “r” archivo solo lectura

 “rw” archivo de lectura/escritura

 MÉTODOS:

Retorno Método Descripción


Long Lenght() Retorna el tamaño del
archivo
Void writeUTF(dato:String) Escribe una cadena de
caracteres
Void writeInt(dato:int) Escribe un dato de tipo
entero
Void writeDouble(dato:double) Escribe un dato de tipo
decimal
String readUTF() Lee una cadena de caracteres
Double writeDouble() Lee un dato de tipo decimal
Int writeInt() Lee un dato de tipo entero

CLASES PARA MANEJO DE RCHIVOS DE OBJETOS


MANEJO DE ARCHIVOS DE OBJETO

 Los archivos de objetos son una variante de los archivos binarios

 Guarda datos simples y datos objetos serializados

 Utilizan clases de la misma jerarquía de los archivos binarios

o ObjectOutputStream escritura de archivo

o ObjectInputStream lectura de archivo

CLASES PARA MANEJO DE SERIALIZACIÓN


SERIALIZACION
 Es una técnica que permite convertir o representar el contenido de los campos de un
objeto en una cadena de bytes.
12
 De esta manera se puede transmitir o almacenar los objetos en archivos, para luego
reconstruirlos en su formato inicial.

 Interface

o Java.io.Serializable

Escritura de archivos de objetos


 La escritura es de tipo secuencial

 Se utiliza la clase ObjectInputStream que se deriva de OutputStream

o FileOutputStream

 String que representa la ruta

 Booleano true/false para indicar si se agrega información al final del


archivo

o ObjectOutputStream

 Permite convertir en una secuencia de bytes el objeto que se envíe como


parámetro al método writeObject(Object obj) que se encarga de escribir
los bytes en el archivo.

 Hay que definir la ruta en un objeto de la clase FileOutputStream

Lectura de archivos de objetos


 Utiliza la clase ObjectOutputSream que se deriva de la InputStream

o FileInputStream

 Indica la ruta del archivo

 Constructor un objeto de la clase File

o ObjectInputStream

 Provee el método readObject():Object que recupera del archivo los


objetos previamente serializados

 El método retorna un objecto de tipo Object, por lo tanto para


deserializar se utiliza un casting convertir del objeto al tipo de dato
inicial y poder utilizarlo.

 Para crear una instancia es necesario definir la rura en un objeto


FileInputStream y pasarlo como parámetro.

La E/S en Java sigue el mismo modelo que en Unix:


13
 Abrir, usar, cerrar flujo

 Flujos estándar: System.in, System.out y System.err


Dos tipos de clases de E/S:
 Readers y Writers para texto

 Basados en el tipo char


Streams (InputStream y OutputStream) para datos binarios
 Basados en el tipo byte
Los flujos de E/S se pueden combinar para facilitar su uso
 La E/S suele ser propensa a errores
Implica interacción con el entorno exterior
 Excepción IOException

CAPITULO 4

CREACIÓN DE LIBRERÍAS

CONCEPTOS
Las librerías son un conjunto de clases con funciones específicas que ayudan a desarrollar
aplicaciones más complejas de una forma sencilla, por ejemplo si se requiere realizar cálculos
matemáticos y emplear el funciones como el Seno o Coseno, simplemente se importa la librería
Math y se utilizan estos métodos, en lugar de desarrollarlos.

Java cuenta con una extensa lista de librerías disponibles dentro del JDK o desarrolladas por
terceros, pero también existe la posibilidad de desarrollar librerías propias para reutilizar de
forma más eficiente el código, por ejemplo si se trabaja de forma cotidiana con conexión a base
de datos, se pueden desarrollar métodos genéricos que realicen la conexión, que validen las
consultas, etc. de forma que su uso reduzca el tiempo de desarrollo e incremente la
productividad.

VENTAJAS DE USOS DE PAQUETES

14
 Agrupación de clases que se encuentran relacionadas bajo características comunes en
un mismo paquete

 Mayor accesibilidad de clases

 Tener una visión de pequeñas partes del sistema

 Facilidad en la creación de pequeñas partes del sistema (paquetes)

 Presentar un orden en la creación

 Tener una vista global sin tanto detalle

CAPITULO 5

BASE DE DATOS

INTRODUCCION A BASE DE DATOS


FICHERO

Un fichero es un archivo que permite organizar, clasificar y almacenar de forma virtual los
datos para ser leído o manipulado por un programa.
Otra definición, un fichero es una colección de registros de una misma entidad.

PARTES QUE LO CONFORMAN

15
 Es la minina unidad de información de una entidad.

 Es un espacio de almacenamiento para un dato en particular.

 Representa las características de la entidad.

 Un fichero puede tener uno o más campos.

Es un conjunto de campos relacionados a una misma entidad.


Un fichero puede tener uno o más registros.

ENTIDAD
 Es la representación de un objeto real del sistema informático.
– Ejemplos:
• Cliente
• Inventario
• Factura

EJEMPLO DE UN FICHERO

SISTEMA INFORMÁTICO CON FICHEROS

16
 Datos esparcidos en diferentes ficheros
 Acceso más lento, debido a que la aplicación debe interactuar con múltiples ficheros.
 Programas dependientes de la estructura física de los archivos
 Limitación de datos en Mb

BASES DE DATOS
 Surgen a causa de los problemas de los sistemas con ficheros
 Las bases de datos:
– Son repositorios/almacenador de datos
– Posee un conjunto de información estructurada

SISTEMA INFORMÁTICO CON BASES DE DATOS


 Datos almacenados en un solo archivo
17
 Acceso más rápido
 Programas independientes de la estructura física de la BD
 Mayor capacidad de datos en Gb, Tb, etc

SISTEMA DE GESTOR DE BD
 Aplicación que permite:
– Definir, crear, mantener a la BD
– Proporciona un acceso controlado a la BD
– Es independiente del lenguaje de programación utilizado para las aplicaciones

18
INTRODUCCION A SQL
BD RELACIONALES
 Conjunto de datos almacenados en tablas relacionadas mediante una conexión lógica.

Modelo Entidad Relación


 Incluye:
– Entidad, atributos y elementos
• (tablas, columnas, filas)
– Relaciones
• Uno a uno

19
• Uno a muchos
• Muchos a muchos
Entidad
 Los objetos que aparecen en la vida real es lo que llamamos entidad.
 Ejemplo:
– Alumno
– Empleado
– Automóvil
– Alojamiento
 Una entidad da lugar a una tabla en la BD

Atributos
 Las entidades tienen atributos, que vienen a ser sus propiedades o características.
 Ejemplo de la entidad alumno
– Atributos: cedula, nombre, apellido, dirección, fono, correo
 Los atributos reciben el nombre de columnas o campos en la tabla de la BD de cada
entidad

Elementos
 Cada entidad tiene un número de elementos
 Ejemplo
– Entidad alumno
• 0914894332, Juan, Pérez, Sauces5, 0999500498 jperez@hotmail.es
 Cada uno de los elementos de la entidad se llaman filas o registros en la tabla de la BD
Tablas
 Combinando estos conceptos: entidad, atributos, elementos, se obtiene una TABLA en
la BD.

20
Relaciones
 Las tablas no están aisladas, sino que están relacionadas entre sí.
 Estas relaciones son de 3 tipos:
– 1a1
– 1 a muchos (1 a N)
– Muchos a muchos (M a N)
Representación del Modelo
 Las entidades con recuadros con su nombre en el interior

Alumno

21
EJEMPLO DE CONEXIÓN CON BASES DE DATOS PROPIETARIAS
(SQL SERVER)
REPRESENTACIÓN DE LAS RELACIONES

Ejemplo de Relaciones
 Relación 1 a 1 (uno a uno)
– Sistema de música

 Relación 1 a N (uno a muchos)


– Sistema académico

22
 Relación M a N (muchos a muchos)
– Ejemplo Sistema Académico

MODELO CONCEPTUAL BD

23
MODELO LÓGICO E/R

MODELO FÍSICO BD

24
 APLICACIÓN INFORMÁTICA:
◦ Programa informático que permite que permite a un usuario utilizar la PC con
un fin específico.
 BASE DE DATOS RELACIONAL:
◦ Es una base de datos que cumple con el modelo relacional (tablas y relaciones).
◦ Almacena los datos del sistema informático.
 SERVIDOR:
◦ Es un nodo que forma parte de una red para proveer servicios a otros nodos de
la red, llamados clientes.
 CLIENTE:
◦ Son nodos que realizan peticiones de requerimientos al servidor y consumen los
servicios que provee el servidor.
 TCP/IP:
◦ Es un protocolo de red que permite la transmisión de datos entre los puntos de
la red por medio de la dirección IP del nodo.
 CONEXIÓN DE BD:
◦ Contiene información acerca de cómo tener acceso a los datos de la BD con una
aplicación informática.
 DRIVERS/CONTROLADORES:
◦ Son programas que tienen información para una tarea específica, como:
 Controladores de dispositivos
 Funciones a utilizarse en el desarrollo de la aplicación.

25
 LIBRERÍA/BILIOTECA (API):
◦ Programa que almacena los driver necesarios de la herramienta de programación.
◦ En el caso de JAVA, contiene las clases y los métodos a utilizar en el código de la
aplicación.

EJEMPLO DE CONEXIÓN CON BASES DE DATOS DE LIBRE


DISTRIBUCIÓN (MYSQL, POSGRESQL)
CONEXIÓN DE LA BD CON LA APLICACIÓN JAVA

26
27
ESTRUCTURA JDBC JAVA DATABASE CONNECTIVITY
DRIVER
 Database Driver
◦ Controlador/librería que se adiciona en la herramienta de JAVA
 .jar
CLASE
Driver Manager
◦ Clase que utiliza el conector .jar y se invoca en el código de la aplicación en
JAVA para utilizar sus objetos y métodos al establecer la conexión
OBJETOS
 Connection
◦ Permite establecer la conexión de la BD con la aplicación JAVA
 Statement
◦ Permite enviar y ejecutar instrucciones/sentencias SQL
 ResulSet
◦ Permite recuperar los resultados de la base de datos

28
CREAR UNA CONEXIÓN A BD CON JAVA
 Descargar y añadir el driver JDBC para JAVA en la herramienta a usar
◦ mysql-connector-java-5.1.23-bin //para MySQL

EN EL CÓDIGO DE NUESTRA CLASE EN EL PROYECTO DE JAVA:


 Importar las clases
◦ import java.sql.DriverManager;
◦ import java.sql.Connection;
◦ import java.sql.Statement;
◦ import java.sql.ResultSet;
 Cargar la clase de forma dinámica
◦ Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //para
SQLServer
◦ Class.forName("org.gjt.mm.mysql.Driver");//para MySQL
 Registrar la conexión con el objeto Connection

29
◦ String url=“jdbc:sqlserver://localhost:1433”; //Sqlserver
◦ String url = "jdbc:mysql://localhost:3306/“; //MySQL
◦ String usuario=“usuarioBD”;
◦ String contasenia=“contraseñaBD”;
◦ Connection conexion = DriverManager.getConnection
(url,usuario,contrasenia);

EJECUTAR SENTENCIAS SQL EN JAVA


 Crear el objeto Statement para ejecutar instrucciones SQL (insert, select, delete,
update)
◦ Statement sentenciaSQL=conexion.createStatement();
 Utilizar el objeto ResultSet para recuperar información de la BD (select)
◦ ResultSet res = sentenciaSQL.executeQuery(“SELECT * FROM tabla”);
 Se utiliza los métodos necesarios de la clase ResultSet, según el tipo de información
de la columna de la tabla que se desee obtener
◦ // Iteramos sobre la hoja de resultados
while (res.next()) {
// Obtenemos el campo ‘nombre’ en forma de String
System.out.println(res.getString(“nombre”) );
}
 Cerrar los objetos y la conexión de la BD para liberar los recursos utilizados
◦ res.close();
◦ sentenciaSQL.close();
◦ conexion.close();

ENTORNOS DE DESARROLLO

30
REQUISITOS PARA LA CONEXIÓN LOCAL DE LA BD SQLSERVER USANDO JAVA
1) Diseñar la base de datos en la herramienta de BD:
◦ Modelo E/R
◦ Tablas y sus relaciones
2) Levantar el servidor de BD
3) Conocer y/o crear un usuario - contraseña en el servidor de BD
4) Habilitar la opción del protocolo TCP/IP en el servidor de BD para que acepte las peticiones
de conexión de la aplicación cliente.
5) Elegir el esquema de conexión :
o JDBC
6) En el caso de usar JDBC, descargar el driver respectivo de java para establecer la conexión
de la BD con la aplicación cliente.
7) Descargar y añadir el driver de java en la librería del programa para usarse en la aplicación
cliente, los objetos y métodos de la clase DriverManager.

SENTENCIAS BÁSICAS SQL


DDL: SENTENCIAS PARA DEFINICIÓN DE DATOS

31
CREATE DATABASE base_name;
USE base_name;

CREATE TABLE table1_name


(campo1 tipo_dato,
campo2 tipo_dato,
campoN tipo_dato,
PRIMARY KEY (campo1)
);

CREATE TABLE table2_name


(campo1 tipo_dato,
campo2 tipo_dato,
campoN tipo_dato,
PRIMARY KEY (campo1),
CONSTRAINT campo2 FOREIGN KEY (campo2) REFERENCES
table1_name(campo2)
);
//tipo_dato
int
varchar(longitud)
decimal(cantidad_digitos_enteros,cantidad_digitos_decimal)
auto_increment => para autoincrementar automáticamente el valor del campo
not null => cuando el campo no debe estar vacío

DML: SENTENCIAS PARA MANIPULACIÓN DE DATOS

32
INSERTAR DATOS

INSERT INTO table_name (column1,column2,column3,….)


VALUES (value1,value2,value3,…);
INSERT INTO table_name VALUES (value1,value2,value3,…);
NOTA: Recuerde que los varchar se almacenan en ‘ ‘
Ejemplo:
insert into cliente values (001,'juan andres','vera peña','sauces 5',30);

CONSULTAR DATOS
Con una tabla
SELECT * FROM table_name;
SELECT column1,colum2,…,columN FROM table_name;
SELECT * FROM table_name WHERE campo=valor_busqueda;
Ejemplo:
select * from cliente where apellido='vera peña';

Con dos tablas relacionadas

SELECT alias1.campo1_table1,alias1.campoN_table1,alias2.campo1_table2,
alias2.campoN_table2 table2_name FROM table1_name alias1, table2_name alias2 WHERE
alias1.camporelacion=alias2.campoconexion;

Ejemplo
select p.descripcion,c.descripcion categoria from pelicula p,categoria c where
p.idcate=c.idcate;

33
ACTUALIZAR DATOS

UPDATE table_name SET column1=value_new, column2=value_new


WHERE column1=valor_busqueda;
Ejemplo:
update cliente set direccion='albora X' where apellido='vera peña';

ELIMINAR DATOS

DELETE FROM table_name WHERE column1=value_busqueda;


Ejemplo:
delete from cliente where edad=30;

CAPITULO 6

HILOS Y MULTIHILOS

INTRODUCCION
¿Qué son Hilos (Threads)?
La mayoría de programas realizan una sola tarea, entendiéndose por tarea, un hilo de ejecución
o un thread, también denominados de flujo único, en contraste con los programas que realizan
más de una tarea, o de multitareas o multithreads, denominados de flujo múltiple.

34
 Específicamente una tarea se encarga de controlar un único aspecto, dentro de la
ejecución de un programa, por ejemplo el manejo de gráficos, las entradas/salidas de
archivos en disco, u otros.
 Las tareas: Comparten los mismos recursos del programa que las contiene
 Procesos: tienen en forma separada su código, así como sus datos.

USO DE HILOS DE EJECUCION


TIPOS DE HILOS

Flujo único: Un programa de flujo único (single-Thread) utiliza un solo hilo para controlar su
ejecución.
Por defecto, cualquier programa Aplicación Java, tiene un hilo denominado principal (Thread).
En estos programas este hilo no necesita explicitarse, pues por defecto son de flujo único.
Realizan las operaciones indicadas en un solo hilo o única tarea y terminan. En otros términos,
un programa en ejecución en Java es un hilo.

Flujo múltiple: Un programa de flujo múltiple o multitarea, utiliza varios contextos de


ejecución para realizar su trabajo.
Cada tarea se inicia y termina tan pronto como sea posible, lo cual es una facilidad para la
entrada de datos en sistemas en tiempo real, especialmente si estos son de diferentes fuentes.
En este caso, se dice que además del hilo principal del programa en ejecución, este tiene otros
hilos, o tareas paralelas en ejecución.

35
CICLO DE VIDA DE LOS HILOS

ESTADOS DE UN HILO

36
 New
 Método start()
 Runnable
 Método run()
 Not running
 Métodos: suspend(), sleep(), wait()
 Dead
 Método stop() siempre y cuando se haya ejecuta previamente método run()

MULTIHILOS Y SINCRONIZACION
CREAR HILOS EN JAVA

La clase Thread es la clase responsable de producir hilos funcionales para otras clases.
Para añadir la funcionalidad de hilo a una clase simplemente se herencia la clase Thread.
En el método run donde el procesamiento de un hilo toma lugar, y a menudo se refieren a él
como el cuerpo del hilo.

Interfaz Runnable Java no soporta herencia múltiple de forma directa, es decir, no se puede
derivar una clase de varias clases padre.
Esto nos plantea la duda sobre cómo podemos añadir la funcionalidad de Hilo a una clase que
hereda de otra clase, siendo ésta distinta de Thread.
Para lograr esto se utiliza la interfaz Runnable.

37
La interfaz Runnable proporciona la capacidad de añadir la funcionalidad de un hilo a una
clase simplemente implementando la interfaz, en lugar de heredarla de la clase Thread.
Existen diversos tipos de constructores a partir de los cuales se puede crear un hilo, algunos de
los más importantes son:
• Thread()
• Thread(objetoRunnable)
• Thread(objetoRunnable, String nombre)
• Thread(String nombre)

CREAR Y ARRANCAR EL HILO

 Para crear un hilo en java, primero debemos hacer una clase que implemente la interface
Runnable
public class MiRunnable implements Runnable {
public void run () {
System.out.println ("Esto se ejecuta en otro hilo");
}
}
 Lo que esté en el método run() es lo que se ejecutará en un hilo separado.
 Cuando queramos que empiece a ejecutarse, creamos una instancia de la clase Thread
pasándole una instancia de MiRunnable y la arrancamos
MiRunnable miRunnable = new MiRunnable();
Thread hilo = new Thread (miRunnable);
hilo.start();
// Aquí empieza a ejecutarse el hilo

DORMIR UN HILO

 Para dormir un hilo durante un cierto tiempo, basta con llamar al método sleep(). Puesto
que este método lanza una excepción, debemos capturarla.

try {
Thread.sleep (1000); // El tiempo en milisegundos
} catch (Exception e) {
38
// Tratamiento de la excepción }

Temporizador
Al programar es posible que nos veamos con la necesidad de realizar una tarea cada cierto
tiempo. Java nos proporciona dos clases distintas que nos ayudan a esta tarea. Son las clases
javax.swing.Timer y java.util.Timer.
A ambas clases les decimos cada cuánto queremos el aviso y ellas se encargan de llamar a un
método que nosotros hayamos implementado. El resultado es que ese método, se llamará cada
cierto tiempo.
javax.swing.Timer. Esta clase es más sencilla de usar. Basta con instanciarla pasándole cada
cuánto tiempo (en milisegundos) queremos que nos avise y un ActionListener, cuyo método
actionPerformed() se ejecutará periódicamente.
Luego sólo hay que llamar al método start() cuando queramos que el Timer empiece a contar.
Tenemos también el método stop() para parar el Timer, setRepeats(boolean) para hacer que
sea repetitivo o no, etc,

Import javax.swing.Timer;
Timer timer = new Timer (tiempoEnMilisegundos, new ActionListener () {
public void actionPerformed(ActionEvent e) {
// Aquí el código que queramos ejecutar.
}
});
...
timer.start();

java.util.Timer Esta clase es más general, tiene más opciones, pero es algo más compleja de
usar. Para arrancarlo hay que llamar a alguno de los métodos schedule().

Con los métodos schedule(), si por ejemplo, el aviso es repetitivo cada segundo, es posible
que el ordenador esté bastante ocupado haciendo otras tareas, con lo que el aviso nos puede
llegar con un retraso.
Con esta opción el retraso se acumula de una llamada a otra. Si el ordenador está muy atareado
y nos da avisos cada 1.1 segundos en vez de cada 1, el primer aviso lo recibimos en el segundo

39
1.1, el segundo en el 2.2, el tercero en el 3.3, etc. Si hacemos nuestro reloj de esta forma, cogerá
adelantos o retrasos importantes en poco tiempo

Con los métodos scheduleAtFixedRate(). Con estos métodos los avisos son relativos al
primer aviso, de esta forma, si hay retraso en un aviso, no influye en cuando se produce el
siguiente.
Igual que antes, si el ordenador está muy ocupado y da avisos cada 1.1 segundos en vez de cada
segundo, el primer aviso se recibirá en el segundo 1.1, el segundo en el 2.1, el tercero en el 3.1,
etc.
El retraso no se va acumulando.

import java.util.Timer ;
// Clase en la que está el código a ejecutar
Class Tarea extends TimerTask() {
public void run() {
// Aquí el código que queremos ejecutar.
} }
// Aquí se pone en marcha el timer cada segundo.
Timer timer = new Timer();
// Dentro de 0 milisegundos avísame cada 1000
milisegundos
timer.schedule(new Tarea(), 1*1000 );

CAPITULO 7

PROGRAMACION GENERICA

La programación genérica es una técnica que define algoritmos: 1. reusables 2.


implementadados como entidades de primer nivel(clases) 3. independientes de los datos sobre
los que opera Normalmente los algoritmos genéricos son utilizados sobre agregados de
elementos (pilas, colas, listas, conjuntos. …)

40
CAPITULO 8

INTERNACIONALIZACION

Es posible hacer que nuestras aplicaciones java cambien fácilmente de idioma. Si hacemos el
código java de la forma correcta, nuestra aplicación aparecerá en inglés si el sistema operativo
está en inglés y aparecerá en español si el sistema operativo está en español. Esto es lo que se
llama internacionalización en java, el conseguir que nuestra aplicación salga en el idioma
adecuado.

Para conseguirlo, evidentemente no podemos poner los textos alegremente en el código. Si


ponemos como etiqueta de un botón, por ejemplo

boton.setText("Abrir");

da igual el idioma del sistema operativo y da igual todo lo demás. Ese botón siempre mostrará
"Abrir".

¿Qué es lo que tenemos que hacer entonces?. Debemos en primer lugar, pensar un nombre para
cada una de las etiquetas, por ejemplo, para el botón anterior y dando nombres largos para no
equivocarnos, podemos decir que la etiqueta del botón abrir se va a llamar
"etiqueta_boton_abrir". El valor de esta etiqueta, en español, será "Abrir". En inglés, la etiqueta
será la misma, pero su valor sería "Open".

Una vez que tengamos todo esto decidido, debemos meter estas parejas de nombre de etiqueta
y valor de la etiqueta o bien en una clase o bien en un fichero de propiedades. Vamos a ver con
calma cómo se hace cada una de estas cosas.

ARCHIVOS DE PROPIEDAD
FICHERO DE PROPIEDADES CON LAS ETIQUETAS:

FICHERO.PROPERTIES

En primer lugar elegimos el idioma por defecto para nuestra aplicación. Supongo que lo normal
es que fuera inglés, pero a mí me gusta más el español. Creamos un fichero con el nombre que
queramos y extensión .properties. Yo, por ejemplo, haré un fichero Etiquetas.properties. En
este fichero pondremos varias líneas, todas las que hagan falta, con
"<nombre_etiqueta>=<valor_etiqueta>". En el caso de nuestro botón, el fichero podría ser así

# Contenido de Etiquetas.properties
etiqueta_boton_abrir=Abrir
etiqueta_boton_cerrar=Cerrar
etiqueta_error=Error en la aplicacion

41
En estos ficheros, las líneas que empiezan por # se consideran comentarios y se ignoran.
Además de la etiqueta del botón abrir, hemos puesto otras dos.

Una vez hecho esto, debemos empezar a crear ficheros similares para los idiomas que queramos
que nuestra aplicación muestre. Los ficheros deben llamarse igual que este, pero
añadiendo _xx o bien _xx_YY donde xx son dos letras que hacen referencia al idioma e YY dos
letras que hace referencia al país donde se habla idioma. Y por supuesto, esas dos letras son
estándar, así que no podemos inventárnoslas sobre la marcha. De esta forma, por ejemplo,
tendremos.

 Etiquetas_es.properties para el español, independientemente del país en el que se hable.


 Etiquetas_es_ES.properties para el español de ESpaña.
 Etiquetas_es_AR.properties para el español de ARgentina.
 Etiquetas_en.properties para el inglés, independientemente de dónde se hable.
 Etiquetas_en_US.properties para el "english" de "United States" -inglés de Estados
Unidos-.

Una pequeña cosa buena de java: no es necesario repetir todas las etiquetas en todos los
ficheros. Si, por ejemplo, el sistema operativo está en español de España, java buscará las
etiquetas en Etiquetas_es_ES.properties. Si no encuentra la etiqueta ahí, las buscará
en Etiquetas_es.properties. Y si no la encuentra ahí, la buscará en Etiquetas.properties.

Esto quiere decir que si Etiquetas.properties está en español de España, nos podemos ahorrar
los ficheros Etiquetas_es_ES.properties y Etiquetas_es.properties. Y es más, por ejemplo,
para el español de Argentina bastaría con que en Etiquetas_es_AR.properties pusiéramos sólo
aquellas etiquetas que en Argentina se dijeran de otra forma.

Por supuesto, si Etiquetas.properties está en español de España, tendremos que hacer


un Etiquetas_en.properties en inglés, por ejemplo, de Inglaterra. Luego bastaría con poner en
un Etiquetas_en_US.properties sólo aquellas etiquetas que se digan distinto en Estados Unidos
a como se dirían en Inglaterra.

CLASE CON LAS ETIQUETAS: LISTRESOURCEBUNDLE

Si decidimos usar clases, igual que hemos hecho con los ficheros, debemos elegir un idioma
por defecto para la aplicación. También tendremos que crear varias clases, con el mismo
critierio de nombres que los ficheros. Es decir, el nombre del idioma por defecto puede ser el
que queramos, por ejemplo Etiquetas.class, y luego deberemos crear
clases Etiquetas_es_ES.class, Etiquetas_es.class, etc.

Estas clases deben construirse de una forma especial. Deben heredar de la


clase ListResourceBundle y deben redefinir el método public Object[][] getContents() que es
abstracto en la clase padre. El array doble de objetos contendrá como primer índice tantas
posiciones como etiquetas haya. El segundo índice podrá ser 0 para obtener el nombre de la
etiqueta y 1 para obtener su valor.

Dicho de otra forma, una implementación de esta clase para el español de España podría ser
así

42
import java.util.*;

public class Etiquetas_es_ES extends ListResourceBundle


{
public Object[][] getContents()
{
return contenido;
}
private Object[][] contenido = {
{ "etiqueta_boton_abrir", "Abrir"},
{ "etiqueta_boton_cerrar", "Cerrar"},
{ "etiqueta_error", "Error en la aplicacion"}
};
}

Podemos poner o no la clase en un paquete. Deberíamos, además, igual que con los ficheros,
hacer varias clases con los distintos idiomas.

USAR FICHEROS Y CLASES DESDE JAVA

Bien, suponemos que ya tenemos todo esto preparado, bien clases, bien ficheros o incluso, por
qué no, una mezcla de las dos cosas o las dos a la vez. El código correcto para poner la etiqueta
a nuestro botón sería este

boton.setText
(ResourceBundle.getBundle("Etiquetas").getString("etiqueta_boton_abrir"));

¿ESTO QUÉ HACE EXACTAMENTE?.


En primer lugar, puesto que no se lo estamos pasando como segundo
parámetro, ResourceBundle.getBundle("Etiquetas") determina el idioma y país por defecto,
que suele ser el del sistema operativo. En mi caso, obtendría español de España, es
decir _es_ES. Al método getBundle() podríamos pasárle como segundo parámetro
el Locale que nos interese. Por ejemplo, si queremos inglés de Estados Unidos en vez del
idioma por defecto, podríamos poner ResourceBundle.getBundle("Etiquetas", Locale.US).

Luego, ResourceBundle.getBundle("Etiquetas") compone "Etiquetas" con el idioma y país,


para buscar una clase Etiquetas_es_ES.class que no esté en un paquete. Si hubiésemos
puesto ResourceBundle.getBundle("chuidiang.ejemplos.Etiquetas"), entonces buscaría en el
paquete chuidiang.ejemplos una clase Etiquetas_es_ES.class

Si no encuentra la clase, buscará un fichero Etiquetas_es_ES.properties en el directorio de


ejecución de nuestro programa. Si hubiésemos
puesto ResourceBundle.getBundle("chudiang.ejemplos.Etiquetas"), buscaría en el directorio
actual de ejecución de nuestro programa un subdirectorio chuidiang, debajo de ese un
subdirectorio ejemplos y debajo de ese un fichero Etiquetas_es_ES.properties.

43
Finalmente, ResouceBundle.getBundle("Etiquetas") devuelve una clase ResourceBundle con
todos los nombres de etiquetas y valores de las mismas. La llamada
a getString("etiqueta_boton_abrir") buscará la etiqueta de nombre "etiqueta_boton_abrir" y
devolverá su valor "Abrir". Si no la encuentra, probará con Etiquetas_es y si no hay suerte,
con Etiquetas.

Si nuestro idioma por defecto hubiera sido inglés de Estados Unidos, la misma llamada habría
buscado la clase o fichero Etiquetas_en_US y el
mismo getString("etiqueta_boton_abrir") habría devuelto "Open" o lo que quiera que
hubiésemos puesto en ese fichero o clase.

INSISTO EN ALGUNOS DETALLES

Aunque está más o menos contado, es importante la hubicación de los ficheros y de las clases.
Si buscamos getBundle("chudiang.ejemplos.Etiquetas"), las clases Etiquetas deben tener

package chuidiang.ejemplos;
public class Etiquetas_es_ES extends ListResourceBundle {
...
}

Y si son ficheros, deben estar en el directorio de ejecución en los subdirectorios adecuados

./aplicacion.jar
./chuidiang/ejemplos/Etiquetas.properties
./chuidiang/ejemplos/Etiquetas_es.properties
./chuidiang/ejemplos/...

44
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
REDES I

Elaborado por:
Ing. Raúl Tingo
Revisado por:
Ing. Darío Huilcapi

45
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPÍTULO 1 ..................................................................................................................... 3
ASPECTOS BASICOS DE NETWORKING ...................................................................... 3
1.1 TERMINOLOGIA DE NETWORKING ......................................................................... 3
Modelos De Networking ................................................................................................. 6
El entorno OSI ............................................................................................................. 10
Ancho de banda: .......................................................................................................... 14
Introducción a la transmisión de datos y teoría de la información ................................ 14
Medios Guíados ........................................................................................................... 14
Medios No Guíados ..................................................................................................... 14
CAPÍTULO 2 ................................................................................................................... 18
CAPA FÍSICA ................................................................................................................. 18
EL CABLE DE PAR TRENZADO SE UTILIZA SI: ........................................................ 19
UTP ............................................................................................................................. 19
STP.............................................................................................................................. 19
FTP .............................................................................................................................. 20
CLASES DE CABLE .................................................................................................... 20
CABLE COAXIAL......................................................................................................... 20
CABLE FIBRA ÓPTICA ............................................................................................... 20
Estándares y organizaciones de las LAN inalámbricas ................................................ 21
Medios no Guiados ...................................................................................................... 21
Medios no Guiados ...................................................................................................... 22
Señales y ruido ............................................................................................................ 25
Cableado de las LAN ................................................................................................... 30
Arquitectura de las LAN ............................................................................................... 30
CAPÍTULO 3 ................................................................................................................... 34
CAPA DE ENLACE DE DATOS ..................................................................................... 34
Tecnologías LAN ......................................................................................................... 34
CAPÍTULO 4 ................................................................................................................... 40
CAPA DE RED ................................................................................................................ 40
Direccionamiento ......................................................................................................... 40

2
CAPÍTULO 1

ASPECTOS BASICOS DE NETWORKING

1.1 TERMINOLOGIA DE NETWORKING


Sistemas de Comunicaciones
El lenguaje Por señas
El correo postal
La red de Telefonía (pública o privada)
Las redes de datos
Los sistemas de TV (público o privado)
El correo electrónico

¿Qué es lo común en estos sistemas de comunicaciones?

 Modelo elemental de comunicaciones


 Modelo Simplificado para las comunicaciones

Un Modelo de Comunicaciones

Fuente
◦Genera los datos a ser transmitidos

Transmisor
◦Convierte los datos en señales transmisibles

Sistema de Transmisión

3
◦Transporta los datos

Receptor
◦Convierte la señal recibida en datos

Destino
◦Toma los datos del receptor

Tareas en los sistemas de comunicaciones

Empleo del sistema de transmisión Direccionamiento


Implementación de la Interfaz Encaminamiento
Generación de la señal Recuperación
Sincronización Formato de los mensajes
Gestión del intercambio Seguridad
Detección y corrección de errores Gestión de red
Control de flujo

Tipo de información a ser transmitida


 Datos
 Voz
 Audio
 Video
 Imágenes

Modelo Simplificado para la comunicación de datos

Redes de transmisión de Datos


Situación ideal: Comunicación punto a punto entre la fuente y el destino

4
◦ Dispositivos muy distantes entre sí.
◦ Conjunto de dispositivos que necesitan conectarse entre ellos en instantes de tiempo
diferentes

La solución a este problema es la implementación de redes de Comunicaciones.


Dispositivos de Networking
Redes de transmisión de Datos

Según su cobertura se pueden clasificar en:

 LAN (Local Area Network)


 NAN (Neighborhood Area Network)
 MAN (Metropolitan Area Network)
 WAN (Wide Area Network)
 SAN (Storage Area Network)
 VPN (Virtual Private Network)

Redes de transmisión de Datos

Técnicas para la transmisión de datos

 Conmutación de circuitos
 Conmutación de paquetes

Conmutación de circuitos

5
Para interconectar dos estaciones se establece un camino dedicado a través de los nodos de la
red.

Conmutación de paquetes

No es necesario hacer una asignación a priori de recursos (capacidad de transmisión) en el


camino.

(a) conmutación de circuitos


(b) conmutación de paquetes

Modelos De Networking

¿Qué es un protocolo?

Se le llama protocolo de red o protocolo de comunicación al conjunto de reglas que controlan


la secuencia de mensajes que ocurren durante una comunicación entre entidades que forman
una red. En este contexto, las entidades de las cuales se habla son programas de computadora
o automatismos de otro tipo, tales y como dispositivos electrónicos capaces de interactuar en
una red.

Necesidad de una arquitectura de protocolos


 La fuente debe activar un camino directo de datos o bien proporcionar a la red de
comunicaciones la identificación del destino deseado.
 La fuente debe asegurarse que el destino esté preparado para recibir datos.
 La aplicación en el destino debe asegurarse que el programa gestor esté preparado para
aceptar el archivo para el usuario determinado.
 Traducción si los formatos son incompatibles.

Elementos claves de un protocolo:

 Sintaxis

6
Formato de los datos

 Semántica
Control de la Información y manejo de errores

 Temporización
Sintonización de velocidades y secuenciación
Arquitectura de protocolos

Tarea de comunicación estructurada en módulos. Por ejemplo, la transferencia de un archivo


podría usar los tres módulos siguientes:

•Aplicación para la transferencia del archivo


•Módulo del servicio de comunicaciones
•Módulo del acceso a la red

Arquitectura simplificada para transferencia de archivos

Un Modelo de tres Capas

 Capa de acceso a la Red


 Capa de Transporte
 Capa de Aplicación

Capa de acceso a la Red

 Intercambio de datos entre la computadora y la red.


 Proveer a la fuente la dirección de destino.
 Depende del tipo de red usada (conmutación de circuitos, de paquetes, LAN, etc.)

Capa de Transporte
7
 Intercambio de datos fiable
 Independiente de la red usada
 Independiente de la aplicación

Capa de Aplicación

 Soporte para diferentes aplicaciones de usuario


 Por ejemplo: e-mail, transferencia de archivos, navegación en internet, etc.
 Arquitectura de protocolos y Redes

Protocolos en una arquitectura simplificada

 Análisis de una red por capas


 Comparaciones de redes
 Comunicación entre capas

Protocol Data Units (PDU)

 En cada capa, los protocolos son usados para la comunicación


 La información de control es añadida a los datos de usuario en cada capa.
 La capa de transporte debe fragmentar los datos de usuario
 A cada fragmento a transportar se le ha de añadir:
o SAP destino
o Número de secuencia
o Código de detección de errores

8
Protocol Data Units (PDU)
Operación de una Arquitectura de Protocolos
Arquitecturas de Protocolos Estandarizadas
Requerido para comunicar dispositivos

Dos estándares:

OSI Reference model


Sólo referencial

TCP/IP protocol suite


Más usado
También: IBM Systems Network Architecture (SNA)

OSI
Open Systems Interconnection
Desarrollado por la Organización Internacional para la Estandarización.

Siete Capas
Un sistema teórico desarrollado demasiado tarde: en 1977 se estableció un subcomité.
La norma ISO final, ISO 7498, fue publicada recién en 1984
TCP/IP es el estándar de facto.
OSI – El modelo

Un modelo de capas
Cada capa realiza un subconjunto de tareas relacionadas entre sí.
Cada capa se sustenta en la capa inmediatamente inferior, la cual realizará funciones más
primitivas.
Cada capa provee servicios a la capa inmediatamente superior.
Cambios en una capa no requieren cambios en otra.

9
El entorno OSI

Normalización
 En cada capa se pueden desarrollar uno o más protocolos.
 El modelo define las funciones que se deben realizar en cada capa y simplifica
el procedimiento de normalización.

Las funciones de cada capa están bien definidas, el establecimiento de normas o estándares se
desarrolla independiente y simultáneamente.
Los cambios que se realicen en los estándares para una capa no afectan al software de las otras.

OSI como un modelo de referencia para las normalizaciones

OSI Layers (1)


Physical
Physical interface between devices
Mechanical
Electrical
Functional
Procedural
Data Link
Means of activating, maintaining and deactivating a reliable link
Error detection and control
Higher layers may assume error free transmission

OSI Layers (2)

Network

10
Transport of information
Higher layers do not need to know about underlying technology
Not needed on direct links
Transport
Exchange of data between end systems
Error free
In sequence
No losses
No duplicates
Quality of service

OSI Layers (3)


Session
Control of dialogues between applications
Dialogue discipline
Grouping
Recovery
Presentation
Data formats and coding
Data compression
Encryption
Application
Means for applications to access OSI environment

Use of a Relay

11
PDU´s en el modelo OSI
Dispositivos de capa física
Dispositivos de capa física
Dispositivos de capa de enlace
Dispositivos de capa de red

Arquitectura de protocolos TCP/IP

Desarrollada por la Agencia de Proyectos de Investigación Avanzada para la Defensa


(DARPA) para su red conmutada por paquetes (ARPANET) 1978

Usada por la Internet global


Trabaja con cinco capas
◦ Application layer
◦ Host to host or transport layer
◦ Internet layer
◦ Network access layer
◦ Physical layer

Physical Layer
Physical interface between data transmission device (e.g. computer) and transmission medium
or network

Characteristics of transmission medium


Signal levels
Data rates
etc.

Capa de Acceso a la Red


Intercambio de datos entre el sistema final y la red.
Proveer dirección de destino
12
Invocar servicios tales como prioridad.

Capa Internet (IP)


Servicios de enrutamiento a través de varias redes.
Implementado en los sistemas finales como en los routers intermedios.

Capa de Transporte (TCP)


Entrega confiable de datos.
Orden en la entrega de los datos.

Capa de Aplicación
Soporte para las aplicaciones de usuario.
e.g. http, SMPT

OSI v TCP/IP

TCP
Protocolo de transporte usual es el Transmission Control Protocol
◦ Conexión fiable
◦ Protocolo Orientado a Conexión
Conexión
◦ Asociación lógica temporal entre entidades en diferentes sistemas.
TCP PDU
◦ Llamado segmento TCP
◦ Incluye puerto fuente y destino(Socket)

Durante la conexión cada entidad seguirá la pista de los segmentos TCP que vengan y vayan
hacia la otra entidad, para así regular el flujo de segmentos y recuperar aquellos que se pierdan
o se dañen.

UDP
13
Una alternativa a TCP es el UDP (User Datagram Protocol)
Protocolo No orientado a conexión
No garantiza entrega
No garantiza el orden secuencial
No garantiza la protección frente a duplicados
Complejidad mínima
Añade puertos de direccionamiento para IP

TCP/IP Concepts
PDUs en TCP/IP
Some Protocols in TCP/IP Suite

Ancho de banda:

Introducción a la transmisión de datos y teoría de la información


Terminología (1)
o Transmisor
o Receptor
o Medio

Medios Guíados
e.g. par trenzado, fibra óptica

Medios No Guíados
e.g. aire, agua, vacío

Terminología (2)

14
Enlace Directo
No existen dispositivos intermedios, solo repetidores o amplificadores.

Punto a punto
Enlace directo

Sólo dos dispositivos comparten el medio.

Multi-punto
Más de dos dispositivos comparten el medio.

Terminología (3)

Simplex
Una dirección
e.g. Television

Half duplex
Ambas direcciones, pero sólo uno transmite a la vez
e.g. police radio
Full duplex
Ambas direcciones al mismo tiempo.
e.g. telephone

Frecuencia, Espectro y Ancho de Banda.


Conceptos en el dominio del tiempo

Señal Analógica
Varía suavemente en el tiempo

15
Señal Digital
Mantiene un nivel constante durante un intervalo de tiempo y luego cambia (en forma abrupta)
a otro valor constante.

Señal Periódica
Patrón repetitivo a lo largo del tiempo.

Señal aperiódica
Patrón no repetitivo a lo largo del tiempo.

Señales Analógicas y Digitales

Señales Periódicas

Onda Seno
Amplitud Pico (A)
◦ Máxima longitud de la señal
◦ Voltios
Frecuencia (f)
◦ Velocidad de cambio de la señal
◦ Hertz (Hz) o ciclos por segundo
◦ Periodo = tiempo para una repetición (T)
◦ T = 1/f
Fase ()
◦ Posición relativa en el tiempo

Ondas seno variantes


s(t) = A sin(2ft +)

Longitud de onda

16
Distancia ocupada por un ciclo
Siendo la velocidad de la señal v
◦ = vT
◦ f=v
◦ c = 3*108 ms-1 (velocidad de la luz en el espacio libre)

Conceptos en el dominio de la frecuencia


 Señales usualmente están compuestas de algunas frecuencias.
 Las componentes son ondas seno.
 Se puede demostrar por medio del Análisis de Fourier que cualquier señal está
constituida por componentes sinusoidales de distintas frecuencias.

Suma de componentes de frecuencia


(T=1/f)

Representaciones en el dominio de la frecuencia

Espectro y Ancho de Banda

Espectro
Rango de frecuencias contenidas en la señal
Ancho de banda absoluto

Ancho del espectro


Se mide en Hertz (ciclos por segundo)

Ancho de banda efectivo


Banda estrecha de frecuencia que contiene la mayor cantidad de energía.

17
DC Component
Componente de frecuencia cero.
Señal con Componente DC

Velocidad de transmisión y ancho de banda


 Cualquier sistema de transmisión tiene una banda limitada de frecuencias.
 Esto limita la velocidad de datos que pueden ser transportados.

Efecto del ancho de banda en las señales digitales.

CAPÍTULO 2

CAPA FÍSICA

MEDIOS DE TRANSMISIÓN GUIADOS


CARACTERÍSTICAS

Dentro de los medios de transmisión guiados, los más utilizados en el campo de las
comunicaciones y la interconexión de computadoras son:

 Cable par trenzado


 Cable coaxial
 Cable de fibra óptica

18
 Par trenzados

EL CABLE DE PAR TRENZADO SE UTILIZA SI:

 La LAN tiene una limitación de presupuesto.


 Se desea una instalación relativamente sencilla, donde las conexiones de los equipos
sean simples.

NO SE UTILIZA EL CABLE DE PAR TRENZADO SI

 La LAN necesita un gran nivel de seguridad y se debe estar absolutamente seguro de


la integridad de los datos.
 Los datos se deben transmitir a largas distancias y a altas velocidades.

UTP

 UTP (Unshielded Twisted Pair) o Cable trenzado sin apantallar.


 Son cables de pares trenzados sin apantallar que se utilizan para diferentes tecnologías
de red local.
 Son de bajo costo y de fácil uso, pero producen más errores que otros tipos de cable,
son muy sensibles a interferencias y tienen limitaciones para trabajar a grandes
distancias sin regeneración de la señal.

STP
 STP (Shielded Twisted Pair) o Par trenzado apantallado.
 Se trata de cables de cobre aislados dentro de una cubierta protectora, cada par va
envuelto por una malla metálica por lo que es robusto a interferencias
 Se utiliza en redes de ordenadores como Ethernet o Token Ring.
 Es más caro que la versión no apantallada o UTP.

19
FTP
 FTP (Foiled Twisted Pair) o Par trenzado con pantalla global o par trenzado encintado.
 Posee un recubrimiento metálico que protege el conjunto de pares del cable.
 Es utilizado cuando existen interferencias electromagnéticas.

CLASES DE CABLE

CABLE COAXIAL

El cable coaxial consta de un alambre de cobre duro en su parte central, es decir, que constituye
el núcleo, el cual se encuentra rodeado por un material aislante. Este material aislante está
rodeado por un conductor cilíndrico que frecuentemente se presenta como una malla de tejido
trenzado. El conductor externo está cubierto por una capa de plástico protector.

CABLE COAXIAL
 Este cable, aunque es más caro que el par trenzado, se puede utilizar a más larga
distancia, con velocidades de transmisión superiores, menos interferencias y permite
conectar más estaciones.
 Se suele utilizar para televisión, telefonía a larga distancia, redes de área local, conexión
de periféricos a corta distancia, etc. Se utiliza para transmitir señales analógicas o
digitales. Sus inconvenientes principales son: atenuación, ruido térmico, ruido de
intermodulación.

CABLE FIBRA ÓPTICA

 Fibra ultra delgada de vidrio o silicio fundido capaz de conducir energía de naturaleza
óptica.
 La fibra óptica es un medio de transmisión empleado habitualmente en redes de datos.

20
 Es el medio de transmisión más novedoso dentro de los guiados y su uso se está
masificando en todo el mundo reemplazando el par trenzado y el cable coaxial en casi
todos los campos. En estos días lo podemos encontrar en la televisión por cable y la
telefonía.

VENTAJAS

 No produce interferencias.
 Banda de paso muy ancha.
 Resistencia al calor o frío.
 Soportan choques y vibraciones extremos.
 Inmunidad a la interferencia eléctrica, electromagnética, radiofrecuencia.
DESVENTAJAS

 La alta fragilidad de las fibras.


 Necesidad de usar transmisores y receptores más caros.
 Los empalmes entre fibras son difíciles de realizar
 No existen memorias ópticas.

Estándares y organizaciones de las LAN inalámbricas

Medios no Guiados
 Microondas terrestres
 Suelen utilizarse antenas parabólicas. Para conexionas a larga distancia, se utilizan
conexiones intermedias punto a punto entre antenas parabólicas.
 Se suelen utilizar en sustitución del cable coaxial o las fibras ópticas ya que se necesitan
menos repetidores y amplificadores, aunque se necesitan antenas alineadas. Se usan
para transmisión de televisión y voz.
 La principal causa de pérdidas es la atenuación debido a que las pérdidas aumentan con
el cuadrado de la distancia (Con cable coaxial y par trenzado son logarítmicas).
 La atenuación aumenta con las lluvias.

21
 Las interferencias es otro inconveniente de las microondas ya que al proliferar estos
sistemas, pude haber más solapamientos de señales.

Medios no Guiados
 Microondas por satélite
 El satélite recibe las señales y las amplifica o retransmite en la dirección adecuada.
 Para mantener la alineación del satélite con los receptores y emisores de la tierra, el
satélite debe ser geoestacionario.

Se suele utilizar este sistema para:


 Difusión de televisión.
 Transmisión telefónica a larga distancia.
 Redes privadas.
 El rango de frecuencias para la recepción del satélite debe ser diferente del rango al que
este emite, para que no haya interferencias entre las señales que ascienden y las que
descienden.

Medios no Guiados
 Wireless (Comunicación Inalámbrica)
 La comunicación inalámbrica (inglés wireless, sin cables) es aquella en la que extremos
de la comunicación (emisor/receptor) no se encuentran unidos por un medio de
propagación físico, sino que se utiliza la modulación de ondas electromagnéticas a
través del espacio. En este sentido, los dispositivos físicos sólo están presentes en los
emisores y receptores de la señal, entre los cuales encontramos: antenas, computadoras
portátiles, PDA, teléfonos móviles, etc.

Medios no Guiados
 Infrarrojos
 Los emisores y receptores de infrarrojos deben estar alineados o bien estar en línea tras
la posible reflexión de rayo en superficies como las paredes. En infrarrojos no existen
problemas de seguridad ni de interferencias ya que estos rayos no pueden atravesar los
objetos ( paredes por ejemplo ). Tampoco es necesario permiso para su utilización ( en
microondas y ondas de radio si es necesario un permiso para asignar una frecuencia de
uso ).

22
Medios no Guiados

 El nombre de Bluetooth viene de Harald Bluetooth, un Vikingo y rey de Dinamarca a


de los años 940 a 981, fue reconocido por su capacidad de ayudar a la gente a
comunicarse. Durante su reinado unió Dinamarca y Noruega.

Medios no Guiados
 Bluetooth
 El Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal
(WPANs) que posibilita la transmisión de voz y datos entre diferentes dispositivos
mediante un enlace por radiofrecuencia en la banda ISM de los 2,4 GHz.
 Los principales objetivos que se pretenden conseguir con esta norma son:
 Facilitar las comunicaciones entre equipos móviles y fijos.
 Eliminar cables y conectores entre éstos.
 Ofrecer la posibilidad de crear pequeñas redes inalámbricas y facilitar la sincronización
de datos entre equipos personales.
 Los dispositivos que con mayor frecuencia utilizan esta tecnología pertenecen a
sectores de las telecomunicaciones y la informática personal, como PDA, teléfonos
móviles, computadoras portátiles, ordenadores personales, impresoras o cámaras
digitales.

Medios no Guiados

 Un láser (de la sigla inglesa LASER: Light Amplification by Stimulated Emission of


Radiation (amplificación de luz por emisión estimulada de radiación) es un dispositivo
que utiliza un efecto de la mecánica cuántica, la emisión inducida o estimulada, para
generar un haz de luz coherente de un medio adecuado y con el tamaño, la forma y la
pureza controlados.

Medios no Guiados
 Clasificación de láseres según UNE EN 60825-1 /A2-2002
 Según la peligrosidad de los láseres y en función del Límite de Emisión Accesible
(LEA) se pueden clasificar los láseres en las siguientes categorías de riesgo:

23
 Clase 1 Seguros en condiciones razonables de utilización.
 Clase 1M Como la Clase 1, pero no seguros cuando se miran a través de instrumentos
ópticos como lupas o binoculares.
 Clase 2 Láseres visibles (400 a 700 nm). Los reflejos de aversión protegen el ojo aunque
se utilicen con instrumentos ópticos.
 Clase 2M Como la Clase 2, pero no seguros cuando se utilizan instrumentos ópticos.
 Clase 3R Láseres cuya visión directa es potencialmente peligrosa pero el riesgo es
menor y necesitan menos requisitos de fabricación y medidas de control que la Clase
3B.
 Clase 3B La visión directa del haz es siempre peligrosa, mientras que la reflexión difusa
es normalmente segura.
 Clase 4 La exposición directa de ojos y piel siempre es peligrosa y la reflexión difusa
normalmente también. Pueden originar incendios.

Medios no Guiados

Ondas de Radio

Propagación Superficial
Las ondas abrazan la curvatura terrestre

Propagación Troposférica
Las ondas viajan en línea recta o rebotan en la troposfera

Propagación Ionosférica
Las ondas rebotan en la ionosfera (por el cambio de densidad)

Propagación Línea de vista

24
Las ondas viajan de antena a antena (antenas enfrentadas)

Propagación Espacial
Uso de satélites

Medios no Guiados
 Microondas
 No siguen la curvatura de la tierra
 Necesitan equipo de transmisión y recepción por visión directa
 Cuanto más altos están los transmisores más lejos llega la señal
 Uso de repetidores
 Uso de antenas (Parabólica y Cornete)

Medios no Guiados
Telefonía Celular
o Cada Célula (antena) cubre 2-20 Kilómetros
o Central de Conmutación de Telefonía Móvil (MTSO)

Transmisión
o El móvil busca un canal libre
o Envía Número a la célula y ésta al MTSO

Recepción
o MTSO pregunta célula por célula
o MTSO pregunta cada x tiempo por la cobertura:
o Si el móvil se mueve, el MTSO cambia la célula

Señales y ruido

Transmisión de datos analógicos y digitales


25
Dato
o Entidad capaz de transportar información

Señal
o Representación eléctrica o electromagnética de los datos

Transmisión
o Comunicación de datos mediante la propagación y el procesamiento de señales.

Datos Analógicos y Digitales


o Analógico
o Valores continuos dentro de un intervalo de tiempo
o Ejemplo: Sonido y video.

Digital
o Valores discretos
o Ejemplo: texto, enteros

Espectro Acústico (Analógico)


o Señales analógicas y digitales
o Medio por el cual los datos son propagados

Analógico
o Variable en forma continua
o Medios de transmisión

o Cable, fibra óptica, espacio.


o Ancho de banda de la voz: 100Hz a 7kHz
o Ancho de banda de canal telefónico: 300Hz a 3400Hz
o Ancho de banda video: 4MHz

26
Digital
o Usa dos componentes DC
Datos y señales (1)
o Usualmente se usan señales digitales para datos digitales y señales analógicas para
datos analógicos.
o Se pueden usar señales analógicas para transportar datos digitales

Módem
o Se pueden usar señales digitales para transportar datos analógicos.
o Compact Disc audio

o Señales Analógicas transportando datos analógicos y digitales


o Señales digitales transportando datos analógicos y digitales

Datos y señales (2)

Transmisión Analógica
o La transmisión analógica es una forma de transmitir señales analógicas
independientemente del contenido.
o Pueden ser datos analógicos o digitales
o Atenuación a grandes distancias
o Usan amplificadores para inyectar energía a la señal.
o Los amplificadores también inyectan energía a las componentes de ruido (distorsión).

Transmisión Digital
o Dependiente del contenido.
o Se usan repetidores.
o Los repetidores reciben la señal, extraen el patrón de bits y los retransmite.
o La atenuación es evitada.
o El ruido no es amplificado.

27
Ventajas de transmisión Digital
o Tecnología Digital
o Bajo costo LSI/VLSI technology
o Integridad de datos
o Grandes distancias sobre lineas de baja calidad
o Utilización de la capacidad
o Alto ancho de banda
o Seguridad y privacidad
o Encriptación
o Integración
o Pueden tratar datos analógicos y digitales similarmente

Ventajas y desventajas de técnicas digitales


o Más barato
o Menos susceptible al ruido
o Menor atenuación

Tratamiento de señales
Dificultades en la transmisión
o Atenuación
o Distorsión de retardo (jitter)
o Ruido

Atenuación
o La energía de la señal decae con la distancia
o Depende del medio
o El incremento de la atenuación es función de la frecuencia

Distorsión del retardo (Jitter)


o Debido a la velocidad de propagación de una señal a través de un medio guiado.
o La velocidad de propagación varía con la frecuencia.
28
o Para una señal limitada en banda, la velocidad tiende a ser mayor cerca de la
frecuencia central y disminuye al acercarse a los extremos de la banda
o Es particularmente crítico en la transmisión de datos digitales

Ruido
o Señales no deseadas que se insertan en algún punto entre el transmisor el
receptor que distorsionan la señal.
o El ruido es el factor de mayor importancia de entre los que limitan las
prestaciones de un sistema de comunicación.
o Ruido Térmico
o Ruido de intermodulación
o Diafonía
o Ruido impulsivo

Ruido térmico
o Se debe a la agitación térmica de los electrones. Es función de la temperatura

Ruido de intermodulación
o Cuando señales de distintas frecuencias comparten el mismo medio de
transmisión

Diafonía
o Acoplamiento no deseado entre líneas que transportan las señales

Ruido impulsivo
o No continuo y constituido por pulsos y picos irregulares de corta duración
o Afecta fundamentalmente en la comunicación digital de datos

Efecto del ruido en una señal digital

Fórmula de Shannon: Capacidad del Canal


Consider data rate,noise and error rate

29
Faster data rate shortens each bit so burst of noise affects more bits
At given noise level, high data rate means higher error rate
Relación Señal Ruido (en decibelios)
SNRdb=10 log10 (signal/noise)
Capacidad C=B log2(1+SNR)
Representa el máximo límite teórico que se puede conseguir.

Cableado de las LAN

Arquitectura de las LAN


• Topologías: La topología de red define la estructura de una red.
• Medios de Transmisión
• Control de Acceso al Medio

Topología Física (1)


o Disposición real de los cables o medios

•Bus: usa un solo cable backbone que debe terminarse en ambos extremos. Todos los hosts se
conectan directamente a este backbone.
•Anillo: La topología de anillo conecta un host con el siguiente y al último host con el primero.
Esto crea un anillo físico de cable.
•Estrella: Conecta todos los cables con un punto central de concentración.
•Estrella extendida: Conecta estrellas individuales entre sí mediante la conexión de hubs o
switches. Esta topología puede extender el alcance y la cobertura de la red
•Jerárquica: Similar a una estrella extendida, pero el sistema se conecta con un computador
central que conecta el tráfico.
•Mallada
Topologías Físicas (2)

Topología LÓGICA
Define la forma en que los hosts acceden a los medios para enviar datos.

30
•Modo de difusión (Broadcast): Cada host envía sus datos hacia todos los demás hosts del
medio de red. No existe una orden que las estaciones deban seguir para utilizar la red. Es por
orden de llegada

•Transmisión de tokens: Controla el acceso a la red mediante la transmisión de un token


electrónico a cada host de forma secuencial. Cuando un host recibe el token, ese host puede
enviar datos a través de la red. Si el host no tiene ningún dato para enviar, transmite el token al
siguiente host y el proceso se vuelve a repetir.

Topología BUS – Acceso BROADCAST


o Todas las estaciones se encuentran directamente conectadas.
o Medio de transmisión lineal.
o Transmisión full duplex.
o Los datos se propagan a través del medio y es recibido por todas las estaciones.
o Terminadores

Trama de Transmisión Bus LAN


Topología en anillo – Acceso por TOKENS
o Repetidores unidos por enlaces punto a punto formando un bucle cerrado.
o Recepción de datos a través del enlace y retransmitirlos.
o Enlaces unidireccionales.
o Estaciones conectadas a repetidores.
o Datos en Tramas
o Una trama que circula por el anillo pasa por todas las estaciones
o El destino reconoce la dirección y copia la trama
o La trama continua circulando hasta que alcanza de nuevo la estación origen.

Trama de Transmisión Ring LAN

Elección de la Topología
31
o Fiabilidad
o Escalabilidad
o Rendimiento
o Necesidades a considerar en contexto:
 Medio
 Cableado
 Control de acceso

Medios de Transmisión
o Par trenzado
o Cable Coaxial
o Fibra Óptica
o Aire

Arquitectura de Protocolos

o Capas inferiores del modelo OSI


- Física
- Enlace
o Modelo de referencia: IEEE 802

IEEE 802 vs OSI

Funciones de la capa física IEEE 802


o Codificación/Decodificación de señales
o Generación/Eliminación de preámbulo para sincronización.
o Transmisión/recepción de bits
o Medios de transmisión y topologías

Funciones de la capa de enlace


•En transmisión, ensamblado de datos en tramas con campos de dirección y detección de
errores.

32
•En recepción, desensamblado de tramas, reconocimiento de dirección y detección de errores.
•Control de acceso al medio LAN
•Interfaz con las capas superiores y control de errores y de flujo

Estándares IEEE 802


Operación de Ethernet IEEE 802.3

Medium Access Control


•En transmisión, ensamblado de datos en tramas con campos de dirección y detección de
errores.
•En recepción, desensamblado de tramas, reconocimiento de dirección y detección de errores.
•Control de acceso al medio LAN
•Se pueden ofrecer varias opciones MAC para el mismo LLC

Técnicas de Acceso al Medio


•Rotación Circular: Eficiente cuando las estaciones tienen datos para transmitir durante largos
periodos de tiempo.
•Reserva: Ejemplo TDM síncrona, adecuadas para tráfico continuo
•Contención: Apropiadas para tráfico a ráfagas. NO se realiza control para verificar de quien
es el turno. Principal ventaja, sencillas de implementar y eficientes en condiciones de baja carga
y moderada.

Logical Link Control: LLC


o Interface para los niveles superiores
o Control de flujo y de errrores
o Transmisión de los PDU´s de nivel de enlace entre dos estaciones.
o Debe soportar multiacceso de medios compartidos
o El direccionamiento en LLC implica la especificación de los usuarios LLC
origen y destino.

Dispositivos LAN
• Repetidores

33
• Hubs
• Puentes
• Switches

Repetidores
 Sólo regeneran la señal, no toman decisiones inteligentes acerca del envío de paquetes

Hubs
o Concentran las conexiones, esto sucede de manera pasiva sin que interfiera la
transmisión de datos. Los Hubs activos adicionalmente regeneran señal.

Puentes
o Interconectan las LAN, verifican los datos para determinar si les corresponde o
no cruzar el puente.

Switches
o Agregan inteligencia a la administración de transferencia de datos. No sólo son
capaces de determinar si los datos deben permanecer o no en una LAN, sino que
pueden transferir los datos únicamente a la conexión que necesita esos datos.

 Esquemas de transmisión (1)


 Esquemas de transmisión (2)
 Esquema general

CAPÍTULO 3

CAPA DE ENLACE DE DATOS

Tecnologías LAN
ETHERNET (1)
34
o La mayor parte del tráfico en Internet se origina y termina en conexiones de
Ethernet. Desde su comienzo en la década de 1970, Ethernet ha evolucionado
para satisfacer la creciente demanda de LAN de alta velocidad. En el momento
en que aparece un nuevo medio, como la fibra óptica, Ethernet se adapta para
sacar ventaja de un ancho de banda superior y de un menor índice de errores
que la fibra ofrece. El mismo protocolo que transportaba datos a 3 Mbps en
1973, ahora transporta datos a 10 Gbps.
o El éxito de Ethernet se debe a los siguientes factores:
 Sencillez y facilidad de mantenimiento.
 Capacidad para incorporar nuevas tecnologías.
 Confiabilidad
 Bajo costo de instalación y de actualización.

ETHERNET (2)

 Reglas del IEEE para la denominación de Ethernet (1)


o Ethernet no es una tecnología para networking, sino una familia de tecnologías
para networking que incluye Legacy, Fast Ethernet y Gigabit Ethernet.
o Las velocidades de Ethernet pueden ser de 10, 100, 1000 ó 10000 Mbps. El
formato básico de la trama y las subcapas del IEEE de las Capas OSI 1 y 2
siguen siendo los mismos para todas las formas de Ethernet.
o Cuando es necesario expandir Ethernet para agregar un nuevo medio o
capacidad, el IEEE publica un nuevo suplemento del estándar 802.3. Los nuevos
suplementos reciben una designación de una o dos letras, como por ejemplo:
802.3u

 Formato para describir Tecnologías ETHERNET ........................................................


 Reglas del IEEE para la denominación de Ethernet (2)

 10BROAD36 es el estándar IEEE para una red Ethernet 802.3 que usa cable coaxial
grueso a 10 Mbps como medio de transmisión de banda ancha
 Tecnologías ETHERNET (1)

Se incluyen tres categorías principales:


35
Ethernet Original.
Es el sistema más utilizado actualmente, transmite frames a 10 Mbps y está especificado por
los estándares IEEE 802.3 y Ethernet.

FastEthernet.
Es un sistema con un ancho de banda de 100 Mbps. Uno de los aspectos importantes de Fast
Ethernet, es que conserva el formato del frame Ethernet y la cantidad de datos que pueden ser
transmitidos en él, lo que lo hace ser compatible con la versión anterior.

GigabitEthernet.

Corresponde a una extensión más del estándar de Ethernet. Este sistema ofrece un ancho de
banda de 1000 Mbps, manteniendo absoluta compatibilidad con los nodos Ethernet ya
existentes.
 Tecnologías ETHERNET (2)
 Tecnologías ETHERNET (3)
 100BASE-T Options

Entramado Capa 2 (1)


Entramado Capa 2 (2)

Entramado Capa 2 (3)


 Las versiones más veloces de Ethernet son síncronas. Las versiones de 10 Mbps
y más lentas de Ethernet son asíncronas.

Transmisión asíncrona

 Mediante este tipo de transmisión se evita el problema de la temporización no


enviando cadenas largas de bits de forma ininterrumpida.
 Los datos se transmiten enviándolos carácter a carácter
 La temporización o sincronización se mantiene solamente durante la duración
del carácter
36
 El receptor tiene la oportunidad de resincronizarse al inicio de cada nuevo
carácter

Diagrama Transmisión Asíncrona

Entramado Capa 2 (4)


 Las implementaciones de 100 Mbps y de mayor velocidad de Ethernet son
síncronas.

Transmisión Síncrona

 Un Delimitador de Inicio de Trama es un campo de un octeto que marca el final


de la información de temporización y contiene la secuencia de bits 10101011
 Ethernet requiere que cada trama tenga entre 64 y 1518 octetos de longitud (sin
incluir los 8 bytes de preámbulo)
 Una FCS contiene un valor de verificación CRC de 4 bytes, creado por el
dispositivo emisor y recalculado por el dispositivo receptor para verificar la
existencia de tramas dañadas.
 Bloque de datos transmitidos sin emplear códigos de inicio o parada.
 Relojes (emisor y receptor) deben estar sincronizados
 Se puede usar una línea específica de reloj
 Bueno para cortas distancias
- Sujeta a perturbaciones
 Reloj embebido en la señal de datos
- Codificación Manchester
- Frecuencia de la portadora (analógico)

Transmisión Síncrona – Nivel de Bloque


Hace falta indicar el inicio y el final del bloque
Se usa el preámbulo y el carácter de cierre
Más eficiente (menor overhead) que la asíncrona
Ejemplo: HDLC
37
Acceso al medio en ETHERNET
 Ethernet es una tecnología de broadcast de medios compartidos. El método de acceso
CSMA/CD que se usa en Ethernet ejecuta tres funciones:
o Transmitir y recibir paquetes de datos
o Decodificar paquetes de datos y verificar que las direcciones sean válidas antes
de transferirlos las capas superiores del modelo OSI
o Detectar errores dentro de los paquetes de datos o en la red

Errores de ETHERNET (1)


 Colisión o runt: Transmisión simultánea que se produce antes de haber transcurrido la
ranura temporal.
 Colisión tardía: Transmisión simultánea que se produce después de haber transcurrido
la ranura temporal.
 Errores de intervalo, trama larga, jabber: Transmisión excesiva o ilegalmente larga.
 Trama corta, fragmento de colisión o runt: Transmisión ilegalmente corta.
 Error de FCS: Transmisión dañada
 Error de alineamiento: Número insuficiente o excesivo de bits transmitidos.
 Error de intervalo: El número real y el informado de octetos en una trama no concuerda.
 Fantasma o jabber: Preámbulo inusualmente largo o evento de congestión.
 Errores de ETHERNET (2)

Dominio de Colisión

Los dominios de colisión son los segmentos de red físicamente conectados, donde pueden
ocurrir colisiones. Las colisiones causan que la red sea ineficiente. Cada vez que ocurre una
colisión en la red, se detienen todas las transmisiones por un período de tiempo. La duración
de este período sin transmisión varía y depende de un algoritmo de postergación para cada
dispositivo de la red.

Regla 5-4-3-2-1

38
La regla 5-4-3-2-1 requiere que se cumpla con las siguientes pautas:
• Cinco segmentos de medios de red.
• Cuatro repetidores o hubs
• Tres segmentos de host de red
• Dos secciones de enlace (sin hosts)
• Un dominio de colisión grande

Extensión de dominios de colisión


División de un dominio de colisión

Dispositivos con dominios de colisión


• Los dispositivos de la capa 1 OSI (como los concentradores y repetidores) reenvían
todos los datos transmitidos en el medio y por lo tanto extienden los dominios de colisión.
• Los dispositivos de la capa 2 y 3 OSI (como los conmutadores) segmentan los dominios
de colisión.
• Los dispositivos de la capa 3 OSI (como los routers) segmentan los dominios de colisión
y difusión.

Dominio de Difusión (Broadcast) (1)

Un dominio de broadcast es un grupo de dominios de colisión conectados por dos dispositivos


de Capa 2. Dividir una LAN en varios dominios de colisión aumenta la posibilidad de que cada
host de la red tenga acceso a los medios. Efectivamente, esto reduce la posibilidad de colisiones
y aumenta el ancho de banda disponible para cada host. Pero los dispositivos de Capa 2 envían
broadcasts, y si son excesivos, pueden reducir la eficiencia de toda la LAN. Los broadcasts
deben controlarse en la Capa 3, ya que los dispositivos de Capa 1 y Capa 2 no pueden hacerlo.
El tamaño total del dominio del broadcast puede identificarse al observar todos los dominios
de colisión que procesan la misma trama de broadcast. En otras palabras, todos los nodos que
forman parte de ese segmento de red delimitados por un dispositivo de Capa 3. Los dominios
de broadcast están controlados en la Capa 3 porque los routers no envían broadcasts. Los
routers, en realidad, funcionan en las Capas 1, 2 y 3. Ellos, al igual que los dispositivos de Capa
1, poseen una conexión física y transmiten datos a los medios. Ellos tienen una
encapsulamiento de Capa 2 en todas las interfaces y se comportan como cualquier otro
dispositivo de Capa 2. Es la Capa 3 la que permite que el router segmente dominios de
broadcast
39
CAPÍTULO 4

CAPA DE RED

Direccionamiento
Existen dos esquemas de direccionamiento en dos diferentes capas del modelo OSI
En la capa 2 (Enlace) existe un direccionamiento de tipo “local” que, por ejemplo en el estándar
IEEE 802.3, se lo define a través de las direcciones MAC (48 bits)
En la capa 3 (Red) el direccionamiento es de tipo global (interredes) y se emplea el esquema
de direccionamiento jerárquico (Protocolo IP).

Protocolos de capa 2 y capa 3


Dispositivos de Capa 2
Dispositivos de Capa 2

Dispositivos de Capa 3
Protocolos de enrutamiento y protocolos enrutados.
Un protocolo enrutado permite que un Router envíe datos entre nodos (equipos terminales) de
diferentes redes.
- IPX
- IP
- Apple Talk
Un protocolo de enrutamiento permite a los routers elegir el mejor camino para llevar la
información:
- RIP
- EIGRP
- OSPF
DIRECCIONAMIENTO IP

El protocolo IP proporciona un esquema de direccionamiento jerárquico.


Protocolo no orientado a conexión, poco confiable y best effort (máximo esfuerzo)
Una dirección IP es una secuencia de unos y ceros de 32 bits

40
Aritmética Binaria

Direccionamiento jerárquico
Tipos de Direcciones IP (1)
Tipos de Direcciones IP (2)
Tipos de Direcciones IP (3)

Rango de Direcciones IP

Direcciones Clase A
Direcciones Clase B
Direcciones Clase C
Direcciones IP especiales y reservadas (1)

Dirección de red: Utilizada para identificar la red en sí.


Dirección de broadcast: Utilizada para realizar el broadcast de paquetes hacia todos los
dispositivos de una red.

Direcciones IP especiales

Direcciones IP especiales y reservadas (3)

Direcciones IP Reservadas (Intranets) (1)


Las direcciones de redes siguientes se encuentran reservadas para su uso en redes privadas
(intranets). Una dirección IP que pertenezca a una de estas redes se dice que es una dirección
IP privada.

Direcciones IP Reservadas (Intranets) (2)

41
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
REDES II

Elaborado por:
Ing. Darío Huilcapi

Revisado por:
Ing. Darío Huilcapi

42
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
PRINCIPIOS DE LA CAPA DE RED ......................................................................... 4
PROTOCOLOS DE LA CAPA DE RED ..................................................................... 5
CARACTERÍSTICAS DEL PROTOCOLO IP ............................................................. 5
ENCAPSULACIÓN DE IP.......................................................................................... 5
ENCABEZADO DE PAQUETES IPV4 ....................................................................... 6
DIRECCIONAMIENTO IP .......................................................................................... 8
NOTACIÓN BINARIA ................................................................................................ 8
SISTEMA DE NUMERACIÓN BINARIO .................................................................... 9
CONVERSIÓN DE UNA DIRECCIÓN IP ................................................................. 10
LA MÁSCARA DE SUBRED .................................................................................... 11
MÁSCARAS VÁLIDAS PARA UNA MÁSCARA DE RED......................................... 12
DIRECCIÓN DE RED .............................................................................................. 12
DIRECCIÓN DE HOST ........................................................................................... 12
DIRECCIÓN DE BROADCAST ............................................................................... 12
TIPOS DE DIRECCIONES IPV4 ............................................................................. 13
DIRECCIONAMIENTO CON CLASE ....................................................................... 14
DIVISIÓN EN SUBREDES ...................................................................................... 14
SWITCHING LAN .................................................................................................... 22
CARACTERÍSTICAS DE LOS SWITCH .................................................................. 22
FACTORES DE FORMA DEL SWITCH .................................................................. 22
SWITCHES DE CONFIGURACIÓN FIJA ................................................................ 22
SWITCHES MODULARES ...................................................................................... 22
SWITCHES APILABLES ......................................................................................... 23
ELEMENTOS CLAVES DE LAS REDES 802.3 ETHERNET ................................... 24
CONFIGURACIÓN DEL PUERTO DE SWITCH ...................................................... 25
DIRECCIONAMIENTO MAC Y TABLAS DE DIRECCIONES MAC DE LOS SWITCHES
................................................................................................................................ 25
DOMINIOS DE COLISIONES .................................................................................. 26
DOMINIOS DE BROADCAST ................................................................................. 26
MÉTODOS DE REENVÍO DEL SWITCH................................................................. 27
CONMUTACIÓN SIMÉTRICA Y ASIMÉTRICA ....................................................... 28
CONMUTACIÓN DE CAPA 2 Y CAPA 3 ................................................................. 30
VLAN ....................................................................................................................... 31
BENEFICIOS DE UNA VLAN .................................................................................. 31
RANGOS DE ID DE LA VLAN ................................................................................. 32
2
TIPOS DE VLAN ..................................................................................................... 33
VLAN DE DATOS ................................................................................................ 33
VLAN PREDETERMINADA ................................................................................. 33
VLAN NATIVA ..................................................................................................... 34
VLAN DE ADMINISTRACIÓN .............................................................................. 34
VLAN DE VOZ ..................................................................................................... 35
MODOS DE PUERTOS DE SWITCH DE VLAN ...................................................... 35
ENLACES TRONCALES 802.1Q ............................................................................ 36
ENRUTAMIENTRO ENTRE VLAN .......................................................................... 38
VTP ......................................................................................................................... 40
COMPONENTES DEL VTP..................................................................................... 41
DOMINIOS DEL VTP .............................................................................................. 42
PUBLICACIONES DEL VTP.................................................................................... 43
MODOS DEL VTP ................................................................................................... 44
ALGORITMO STP ................................................................................................... 45
FUNCIONES DE LOS PUERTOS ........................................................................... 47
ESTADOS DE LOS PUERTOS ............................................................................... 48
DISEÑO LAN........................................................................................................... 48
Modelo de Redes Jerárquicas.............................................................................. 49
Capa de acceso ................................................................................................... 49
Capa de distribución ............................................................................................ 49
Capa núcleo......................................................................................................... 49
BENEFICIOS DE UNA RED JERÁRQUICA ............................................................ 50
CARACTERÍSTICAS DEL SWITCH DE LA CAPA DE ACCESO............................. 50
CARACTERÍSTICAS DEL SWITCH DE CAPA DE DISTRIBUCIÓN ....................... 51
CARACTERÍSTICAS DEL SWITCH DE CAPA NÚCLEO ........................................ 51

3
PRINCIPIOS DE LA CAPA DE RED

El modelo OSI, permite referenciar los distintos procesos


que ocurren dentro de la transmisión en redes de datos, por
ello se lo conoce como un modelo de referencia. Se tomará
como punto de partida la capa de red donde se realiza la
asignación del direccionamiento lógico.
La capa de red se encarga de empaquetar las PDU para
direccionar a su destino, se describirá el contenido del
paquete así como las estrategias para un correcto
direccionamiento de la red basado en técnicas de
subnetting y VLSM.

Entre las funciones de la capa de red tenemos las siguientes:

Direccionamiento de dispositivos finales.- de la misma manera en que un teléfono tiene un


número telefónico único, los dispositivos finales deben configurarse con una dirección IP única
para su identificación en la red. Un dispositivo final con una dirección IP configurada se
denomina “host”.
Encapsulación.- la capa de red recibe una unidad de datos del protocolo (PDU) de la capa de
transporte. En un proceso denominado “encapsulación”, la capa de red agrega la información
del encabezado IP, como la dirección IP de los hosts de origen (emisor) y de destino (receptor).
Una vez que se agrega la información de encabezado a la PDU, esta se denomina “paquete”.
Enrutamiento.- la capa de red proporciona servicios para dirigir los paquetes a un host de
destino en otra red. Para que el paquete se transfiera a otras redes, lo debe procesar un router.
La función del router es seleccionar las rutas para los paquetes y dirigirlos hacia el host de
destino en un proceso conocido como “enrutamiento”. Un paquete puede cruzar muchos
dispositivos intermediarios antes de llegar al host de destino. Cada ruta que toma el paquete
para llegar al host de destino se denomina “salto”.
Desencapsulación.- cuando un paquete llega a la capa de red del host de destino, el host revisa
el encabezado IP del paquete. Si la dirección IP de destino en el encabezado coincide con su
propia dirección IP, se elimina el encabezado IP del paquete. Este proceso de eliminación de
encabezados de las capas inferiores se conoce como “desencapsulación”. Una vez que la capa
de red desencapsula el paquete, la PDU de capa 4 que se obtiene como resultado se transfiere
al servicio correspondiente en la capa de transporte.

4
PROTOCOLOS DE LA CAPA DE RED

Protocolos de capa de red comunes


 Protocolo de Internet versión 4 (IPv4)
 Protocolo de Internet versión 6 (IPv6)
Protocolos de capa de red antiguos
 Intercambio Novell de paquetes de internetwork (IPX)
 AppleTalk
 Servicio de red sin conexión (CLNS/DECNet)

CARACTERÍSTICAS DEL PROTOCOLO IP

Sin conexión: no se establece ninguna conexión con el destino antes de enviar los paquetes de
datos.
Máximo esfuerzo (no confiable): la entrega de paquetes no está garantizada.
Independiente de los medios: la operación es independiente del medio que transporta los
datos.

ENCAPSULACIÓN DE IP

5
El protocolo IP encapsula o empaqueta el segmento de la capa de transporte agregando un
encabezado IP. Este encabezado se utiliza para entregar el paquete al host de destino. El
encabezado IP permanece en su lugar desde el momento en que el paquete abandona la capa
de red del host de origen hasta que llega a la capa de red del host de destino.
El proceso de encapsulación de datos capa por capa permite el desarrollo y el escalamiento de
los servicios de las diferentes capas sin afectar otras capas. Esto significa que el protocolo IPv4
o IPv6, o cualquier protocolo nuevo que se desarrolle en el futuro, pueden empaquetar
fácilmente los segmentos de la capa de transporte.
Los routers pueden implementar estos diferentes protocolos de capa de red para operar al
mismo tiempo en una red desde y hacia el mismo host o hosts diferentes. El enrutamiento que
realizan estos dispositivos intermediarios solo tiene en cuenta el contenido del encabezado del
paquete que encapsula el segmento. En todos los casos, la porción de datos del paquete, es
decir, la PDU de la capa de transporte encapsulada, no se modifica durante los procesos de la
capa de red.

ENCABEZADO DE PAQUETES IPV4

Versión: contiene un valor binario de 4 bits que identifica la versión del paquete IP. Para los
paquetes IPv4, este campo siempre se establece en 0100.
Servicios diferenciados (DS): anteriormente denominado “Tipo de servicio” (ToS), se trata
de un campo de 8 bits que se utiliza para determinar la prioridad de cada paquete. Los primeros
6 bits identifican el valor del Punto de código de servicios diferenciados (DSCP), utilizado por
un mecanismo de calidad de servicio (QoS). Los últimos 2 bits identifican el valor de
Notificación explícita de congestión (ECN), que se puede utilizar para evitar que los paquetes
se descarten durante momentos de congestión de la red.
Tiempo de vida (TTL): contiene un valor binario de 8 bits que se utiliza para limitar la vida
útil de un paquete. Se especifica en segundos, pero comúnmente se denomina “conteo de
saltos”. El emisor del paquete establece el valor inicial de tiempo de vida (TTL), el que
disminuye un punto por cada salto, es decir, cada vez que el paquete es procesado por un router.
Si el campo TTL disminuye a cero, el router descarta el paquete y envía un mensaje del
protocolo de mensajes de control de Internet (ICMP) de Tiempo superado a la dirección IP de
origen. El comando traceroute utiliza este campo para identificar los routers utilizados entre el
origen y el destino.
Protocolo: este valor binario de 8 bits indica el tipo de contenido de datos que transporta el
paquete, lo que permite que la capa de red pase los datos al protocolo de capa superior
correspondiente. Los valores comunes incluyen ICMP (1), TCP (6) y UDP (17).
Dirección IP de origen: contiene un valor binario de 32 bits que representa la dirección IP de
origen del paquete.

6
Dirección IP de destino: contiene un valor binario de 32 bits que representa la dirección IP de
destino del paquete.

Limitaciones de IPv4
 Agotamiento de direcciones IP
 Expansión de la tabla de enrutamiento de Internet
 Falta de conectividad de extremo a extremo
Decisión de Reenvío de paquetes del host

Otra función de la capa de red es dirigir los paquetes entre los hosts. Un host puede enviar un
paquete:

 A sí mismo: en este caso, se utiliza una dirección IP especial, 127.0.0.1, que se denomina
“interfaz loopback”. Esta dirección de loopback se asigna automáticamente a un host
cuando se ejecuta TCP/IP. La capacidad de un host de enviarse un paquete a sí mismo
mediante la funcionalidad de la red resulta útil para realizar pruebas. Cualquier dirección
IP dentro de la red 127.0.0.0/8 se refiere al host local.

 A un host local: un host en la misma red que el host emisor. Los hosts comparten la
misma dirección de red.

 A un host remoto: un host en una red remota. Los hosts no comparten la dirección de
red.

Para determinar si un paquete está destinado a un host local o un host remoto, se compara la
combinación de la dirección IP y la máscara de subred del dispositivo de origen (o emisor) con
la dirección IP y la máscara de subred del dispositivo de destino.

7
Gateway Predeterminado
Los hosts deben poseer una tabla de enrutamiento local propia para asegurarse de que los
paquetes de la capa de red se dirijan a la red de destino correcta. La tabla local del host
generalmente contiene lo siguiente:
 Conexión directa
 Ruta de red local
 Ruta predeterminada local

DIRECCIONAMIENTO IP

NOTACIÓN BINARIA
Para la mayoría de las personas, una cadena de 32 bits es difícil de interpretar e incluso más
difícil de recordar. Por este motivo, representamos las direcciones IPv4 mediante el formato
decimal punteado en lugar del binario. Esto significa que vemos a cada byte (octeto) como
número decimal en el rango de 0 a 255. Para entender cómo funciona esto, es necesario tener
aptitudes para la conversión de sistema binario a decimal.
La notación binaria se refiere al hecho de que las PC se comunican mediante ceros y unos.
La conversión de valores binarios a decimales requiere la comprensión de los fundamentos
matemáticos de un sistema de numeración denominado “notación de posición”.

8
SISTEMA DE NUMERACIÓN BINARIO

En IPv4, las direcciones son números binarios de 32 bits. Sin embargo, para facilitar el uso por
parte de las personas, los patrones binarios que representan direcciones IPv4 se expresan en
formato decimal punteado. Esto primero se logra separando cada byte (8 bits) del patrón binario
de 32 bits, llamado “octeto”, con un punto. Se le llama octeto debido a que cada número
decimal representa un byte u 8 bits.

La dirección binaria:

11000000 10101000 00001010 00001010

Se expresa como decimal punteada de la siguiente manera:


192.168.10.10
En el sistema de numeración binaria la raíz es 2. Por lo tanto, cada posición representa
aumentos en potencias de 2. En números binarios de 8 bits, las posiciones representan estas
cantidades:

2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0

128 64 32 16 8 4 2 1

El sistema de numeración de base 2 solo tiene dos dígitos: 0 y 1.


Cuando se interpreta un byte como un número decimal, se obtiene la cantidad que esa posición
representa si el dígito es 1, y no se obtiene la cantidad si el dígito es 0,

9
CONVERSIÓN DE UNA DIRECCIÓN IP

Además de poder convertir de sistema binario a decimal, también es necesario comprender


cómo convertir de decimal a binario.
Dado que representamos las direcciones IPv4 mediante el formato decimal punteado, solo es
necesario analizar el proceso de conversión de valores binarios de 8 bits a valores decimales
de 0 a 255 para cada octeto en una dirección IPv4.
Para comenzar el proceso de conversión, empezaremos determinando si el número decimal es
igual a o mayor que nuestro valor decimal más grande representado por el bit más significativo.
En la posición más alta, se determina si el número de octeto es igual o superior a 128. Si el
número de octeto es inferior a 128, se coloca un 0 en la posición de bit para el valor decimal
128 y se avanza a la posición de bit para el valor decimal 64.
Si el número de octeto en la posición de bit para el valor decimal 128 es mayor o igual que 128,
se coloca un 1 en la posición de bit para el valor decimal 128 y se resta 128 del número de
octeto que se está convirtiendo. A continuación, comparamos el resto de esta operación con el
siguiente valor más pequeño, 64. Continuamos este proceso para todas las posiciones de bits
restantes.

10
LA MÁSCARA DE SUBRED

La máscara de subred permite identificar el número de subredes que una dirección puede tener,
así como la cantidad de host por cada una de estas subredes. La variación en la misma alterará
estos factores.

Para definir las porciones de red y de host de una dirección, los dispositivos utilizan un patrón
de 32 bits separado conocido como “máscara de subred”.
La máscara de subred no contiene realmente las porciones de red y de host de la dirección IPv4,
sino que tan solo indica dónde buscar estas porciones en una dirección IPv4 determinada.

11
MÁSCARAS VÁLIDAS PARA UNA MÁSCARA DE RED

Hay tres tipos de direcciones dentro del rango de direcciones de cada red IPv4:

 Dirección de red
 Dirección de host
 Dirección de broadcast

DIRECCIÓN DE RED
La dirección de red es una manera estándar de hacer referencia a una red. Al referirse a la
dirección de red, también es posible utilizar la máscara de subred o la duración de prefijo.

DIRECCIÓN DE HOST
Cada dispositivo final requiere una dirección única para comunicarse en la red. En direcciones
IPv4, los valores entre la dirección de red y la dirección de broadcast se pueden asignar a los
dispositivos finales en una red.

DIRECCIÓN DE BROADCAST
La dirección de broadcast IPv4 es una dirección especial para cada red que permite la
comunicación a todos los host en esa red. Para enviar datos a todos los hosts en una red a la
vez, un host puede enviar un único paquete dirigido a la dirección de broadcast de la red, y
cada host en la red que recibe este paquete procesa su contenido.
La dirección de broadcast utiliza la dirección más alta en el rango de la red. Ésta es la dirección
en la cual los bits de la porción de host son todos 1. Todos 1 en un octeto en forma binaria es
igual al número 255 en forma decimal.

12
En una red IPv4, los hosts pueden comunicarse de una de tres maneras:

 Unicast: proceso por el cual se envía un paquete de un host a un host individual.

 Broadcast: proceso por el cual se envía un paquete de un host a todos los hosts en la red.

 Multicast: proceso por el cual se envía un paquete de un host a un grupo seleccionado de


hosts, posiblemente en redes distintas.

Estos tres tipos de comunicación se utilizan con distintos objetivos en las redes de datos. En
los tres casos, se coloca la dirección IPv4 del host de origen en el encabezado del paquete como
la dirección de origen.

TIPOS DE DIRECCIONES IPV4

Los bloques de direcciones privadas son los siguientes:


Los hosts que no requieren acceso a Internet pueden utilizar direcciones privadas.
10.0.0.0 a 10.255.255.255 (10.0.0.0/8)
172.16.0.0 a 172.31.255.255 (172.16.0.0/12)
192.168.0.0 a 192.168.255.255 (192.168.0.0/16)
Direcciones de espacio de direcciones compartido
No son completamente enrutables.
Previstas solamente para su uso en redes de proveedores de servicios.
El bloque de direcciones es 100.64.0.0/10.
Uso especial de direcciones IPV4
Direcciones de red y de broadcast: no es posible asignar a hosts la primera ni la última
dirección de cada red.
Dirección de loopback: 127.0.0.1 es una dirección especial que los hosts utilizan para dirigir
tráfico a sí mismos (las direcciones de 127.0.0.0 a 127.255.255.255 están reservadas).
Dirección link-local: las direcciones de 169.254.0.0 a 169.254.255.255 (169.254.0.0/16) se
puede asignar automáticamente al host local.

13
Direcciones TEST-NET: las direcciones de 192.0.2.0 a 192.0.2.255 (192.0.2.0/24) se
reservan para fines de enseñanza y aprendizaje, y se utilizan en ejemplos de documentos y de
redes.
Direcciones experimentales: las direcciones de 240.0.0.0 a 255.255.255.254 se indican como
reservadas.

DIRECCIONAMIENTO CON CLASE

El nombre formal es “enrutamiento entre dominios sin clase” (CIDR, pronunciado “cider”).
Creó un nuevo conjunto de estándares que permitía que los proveedores de servicios asignaran
direcciones IPv4 en cualquier límite de bits de dirección (duración de prefijo) en lugar de solo
con una dirección de clase A, B o C.

DIVISIÓN EN SUBREDES
El proceso de segmentación de una red mediante su división en varios espacios de red más
pequeños se denomina “división en subredes”. Estas redes subordinadas se denominan
“subredes”. Los administradores de red pueden agrupar dispositivos y servicios en subredes
determinadas según la ubicación geográfica (por ejemplo, el tercer piso de un edificio), según
la unidad organizativa (quizá el departamento de ventas), según el tipo de dispositivo
(impresoras, servidores, WAN) o según cualquier otra división que tenga sentido para la red.
La división en subredes puede reducir el tráfico general de la red y mejorar su rendimiento.
Se necesita un router para que dispositivos en redes distintas puedan comunicarse. Los
dispositivos en una red utilizan la interfaz del router conectada a su LAN como gateway
predeterminado. El router procesa el tráfico destinado a un dispositivo en una red remota y lo
reenvía hacia el destino. Para determinar si el tráfico es local o remoto, el router utiliza la
máscara de subred.

14
En un espacio de red dividido en subredes, esto funciona exactamente de la misma manera.
Como se muestra en la ilustración, mediante la división en subredes se crean varias redes
lógicas a partir de un único bloque de direcciones o una única dirección de red. Cada subred se
considera un espacio de red independiente. Los dispositivos en la misma subred deben utilizar
una dirección, una máscara de subred y un gateway predeterminado que se correspondan con
la subred de la cual forman parte.
El tráfico no puede reenviarse entre subredes sin un router. Cada interfaz en el router debe tener
una dirección de host IPv4 que pertenezca a la red o a la subred a la cual se conecta la interfaz
del router.
Cada dirección de red tiene un rango válido de direcciones de host. Todos los dispositivos
conectados a la misma red tendrán una dirección de host IPv4 para esa red y una máscara de
subred o un prefijo de red común.
El prefijo y la máscara de subred son diferentes formas de representar lo mismo, la porción de
red de una dirección.
Las subredes IPv4 se crean utilizando uno o más de los bits de host como bits de red. Esto se
hace ampliando la máscara para tomar prestado algunos de los bits de la porción de host de la
dirección, a fin de crear bits de red adicionales. Cuantos más bits de host se tomen prestados,
mayor será la cantidad de subredes que puedan definirse. Por cada bit que se toma prestado, se
duplica la cantidad de subredes disponibles. Por ejemplo, si se toma prestado 1 bit, se pueden
crear 2 subredes. Si se toman prestados 2 bits, se crean 4 subredes; si se toman prestados 3 bits,
se crean 8 subredes, y así sucesivamente. Sin embargo, con cada bit que se toma prestado, se
dispone de menos direcciones de host por subred.
Los bits solo se pueden tomar prestados de la porción de host de la dirección. El proveedor de
servicios determina la porción de red de la dirección, la que no puede modificarse.

15
Cálculo de subredes

Use esta fórmula para calcular la cantidad de subredes:


2^n (donde “n” representa la cantidad de bits que se toman prestados)
Como se muestra en la figura, para el ejemplo 192.168.1.0/25, el cálculo es el siguiente:
2^1 = 2 subredes

Cálculo de hosts

16
Utilice la siguiente fórmula para calcular la cantidad de hosts por red:
2^n (donde “n” representa la cantidad de bits restantes en el campo de host)
Como se muestra en la figura, para el ejemplo 192.168.1.0/25, el cálculo es el siguiente:
2^7 = 128
Debido a que los hosts no pueden utilizar la dirección de red o a la dirección de broadcast de
una subred, dos de estas direcciones no son válidas para la asignación de hosts. Esto significa
que cada una de las subredes tiene 126 (128-2) direcciones de host válidas.

Cálculo de Subredes
Piense en una internetwork que requiere tres subredes.
Con el mismo bloque de direcciones 192.168.1.0/24, se deben tomar prestados bits de host para
crear, al menos, tres subredes. Tomar prestado un único bit proporcionaría solo dos subredes.
Para proporcionar más redes, se deben tomar prestados más bits de host. Calcule la cantidad de
subredes que se crean si se toman prestados 2 bits mediante la fórmula 2^cantidad de bits que
se toman prestados:
2^2 = 4 subredes
Si se toman prestados 2 bits, se crean 4 subredes, como se muestra en la figura.
Recuerde que la máscara de subred debe modificarse para que se muestren los bits prestados.
En este ejemplo, cuando se toman prestados 2 bits, la máscara se extiende 2 bits en el último
octeto. En formato decimal, la máscara se representa como 255.255.255.192, debido a que el
último octeto es 1100 0000 en formato binario.

17
Cálculo de Host
Para calcular la cantidad de hosts, examine el último octeto. Después de tomar prestados 2 bits
para la subred, restan 6 bits de host.
Aplique la fórmula de cálculo de host que se muestra en la figura.
2^6 = 64
Sin embargo, recuerde que todos los bits 0 que se encuentran en la porción de host de la
dirección forman la dirección de red, y que todos los bits 1 en la porción de host componen una
dirección de broadcast. Por lo tanto, hay solo 62 direcciones de host realmente disponibles para
cada subred.

18
Determinación de una máscara de subred
La decisión sobre cuántos bits de host se deben tomar prestados para crear subredes constituye
una decisión de planificación importante. Al planificar las subredes, deben considerarse dos
aspectos: la cantidad de direcciones de host que se requieren para cada red y la cantidad de
subredes individuales que se necesitan. En la animación, se muestran las posibilidades de
subredes para la red 192.168.1.0. La selección de una cantidad de bits para la ID de subred
afecta tanto la cantidad de subredes posibles como la cantidad de direcciones de host en cada
subred.
Observe que existe una relación inversa entre la cantidad de subredes y la cantidad de hosts:
cuantos más bits se toman prestados para crear subredes, menor es la cantidad de bits de host
disponibles, lo que tiene como resultado menos hosts por subred. Si se necesitan más
direcciones de host, se requieren más bits de host, lo que tiene como resultado menos subredes.

Máscara de Subred de Longitud Variable VLSM


Mediante la división en subredes tradicional, se asigna la misma cantidad de direcciones a cada
subred. Si todas las subredes tuvieran los mismos requisitos en cuanto a la cantidad de hosts,
estos bloques de direcciones de tamaño fijo serían eficaces. Sin embargo, esto no es lo que
suele suceder.
Por ejemplo, la topología que se muestra en siguiente figura requiere siete subredes, una para
cada una de las cuatro LAN y una para cada una de las tres conexiones WAN entre los routers.
Si se utiliza la división en subredes tradicional con la dirección dada 192.168.20.0/24, se
pueden tomar prestados 3 bits de la porción de host en el último octeto para cumplir el requisito
19
de siete subredes. Si se toman prestados 3 bits, se crean 8 subredes y quedan 5 bits de host con
30 hosts utilizables por subred. Mediante este esquema, se crean las subredes necesarias y se
cumplen los requisitos de host de la LAN más grande.

Si bien la división en subredes tradicional satisface las necesidades de la LAN más grande y
divide el espacio de direcciones en una cantidad adecuada de subredes, da como resultado un
desperdicio significativo de direcciones sin utilizar.
Por ejemplo, solo se necesitan dos direcciones en cada subred para los tres enlaces WAN. Dado
que cada subred tiene 30 direcciones utilizables, hay 28 direcciones sin utilizar en cada una de
estas subredes. Como se muestra en la siguiente figura, esto da como resultado 84 direcciones
sin utilizar (28x3).

20
Además, de esta forma se limita el crecimiento futuro al reducir el número total de subredes
disponibles. Este uso ineficiente de las direcciones es característico de la división en subredes
tradicional de redes con clase.
La aplicación de un esquema de división en subredes tradicional a esta situación no resulta muy
eficiente y genera desperdicio. De hecho, este ejemplo es un buen modelo para mostrar cómo
puede utilizarse la subdivisión de subredes para maximizar el uso de la dirección.

La subdivisión de subredes, o el uso de una máscara de subred de longitud variable (VLSM),


se diseñó para evitar que se desperdicien direcciones.

21
SWITCHING LAN
En este tema se describirán los componentes clave del estándar Ethernet que desempeñan un
importante papel en el diseño y en la implementación de las redes de conmutación. Se analizará
cómo funcionan las comunicaciones Ethernet y el papel que desempeñan los switches en el
proceso de comunicación.

CARACTERÍSTICAS DE LOS SWITCH

FACTORES DE FORMA DEL SWITCH

Al seleccionar un switch se necesita decidir entre una configuración fija o una configuración
modular y entre apilable y no apilable. Otra consideración es el grosor del switch expresado en
cantidad de bastidores. Por ejemplo, los Switches de configuración fija que se muestran en la
figura son todos de 1 bastidor (1U). Con frecuencia estas opciones se denominan factores de
forma del switch.

SWITCHES DE CONFIGURACIÓN FIJA


Los switches de configuración fija son sólo lo que podría esperarse: fijos en su configuración.
Esto significa que no se pueden agregar características u opciones al switch más allá de las que
originalmente vienen con él. El modelo en particular que se compra determina las
características y opciones disponibles. Por ejemplo, si se adquiere un switch fijo gigabit de 24
puertos, no se pueden agregar puertos cuando se les necesite. Habitualmente, existen diferentes
opciones de configuración que varían en cuanto al número y al tipo de puertos incluidos.

SWITCHES MODULARES
Los switches modulares ofrecen más flexibilidad en su configuración. Habitualmente, los
switches modulares vienen con chasis de diferentes tamaños que permiten la instalación de
diferentes números de tarjetas de líneas modulares. Las tarjetas de línea son las que contienen
los puertos. La tarjeta de línea se ajusta al chasis del switch de igual manera que las tarjetas de
expansión se ajustan en la PC. Cuanto más grande es el chasis, más módulos puede admitir.
Como se observa en la figura, es posible elegir entre muchos tamaños de chasis diferentes. Si
se compró un switch modular con una tarjeta de línea de 24 puertos, con facilidad se podría
agregar una tarjeta de línea de 24 puertos para hacer que el número de puertos ascienda a 48.

22
SWITCHES APILABLES
Los switches apilables pueden interconectarse con el uso de un cable especial del backplane
que otorga rendimiento de ancho de banda alto entre los switches. Como se observa en la figura,
los switches están apilados uno sobre el otro y los cables conectan los switches en forma de
cadena de margarita. Los switches apilados operan con efectividad como un switch único más
grande. Los switches apilables son convenientes cuando la tolerancia a fallas y la disponibilidad
de ancho de banda son críticas y resulta costoso implementar un switch modular. El uso de
conexiones cruzadas hace que la red pueda recuperarse rápidamente si falla un switch único.
Los switches apilables utilizan un puerto especial para las interconexiones y no utilizan puertos
de línea para las conexiones entre switches. Asimismo, las velocidades son habitualmente más
rápidas que cuando se utilizan puertos de línea para la conexión de switches.

Desempeño
Cuando se selecciona un switch para las capas de acceso, de distribución y núcleo, se debe
considerar la capacidad del switch para admitir los requerimientos de densidad de puerto, las
velocidades de reenvío y el agregado de ancho de banda de la red.

Densidad del puerto


La densidad del puerto es el número de puertos disponibles en un solo switch. Los switches de
configuración fija habitualmente admiten hasta 48 puertos en un único dispositivo, con
opciones de cuatro puertos adicionales para dispositivos de factor de forma pequeños
enchufables (SFP), según muestra la figura. Las altas densidades de puerto permiten un mejor
uso del espacio y de la energía cuando la fuente de ambos es limitada. Si tiene dos switches y
cada uno contiene 24 puertos, se podrían admitir hasta 46 dispositivos porque se pierde al
menos un puerto por switch para conectar cada switch al resto de la red. Además, se requieren
23
dos tomas de alimentación eléctrica. Por otro lado, si tiene un switch único con 48 puertos, se
pueden admitir 47 dispositivos con un sólo puerto utilizado para conectar el switch con el resto
de la red y sólo una toma de alimentación eléctrica es necesaria para incluir el switch único.

ELEMENTOS CLAVES DE LAS REDES 802.3 ETHERNET

Configuración de Dúplex
Se utilizan dos tipos de parámetros dúplex para las comunicaciones en una red Ethernet: half
duplex y full duplex. La figura muestra los dos parámetros dúplex que están disponibles en los
equipos de red modernos.
Half Duplex: La comunicación half-duplex se basa en un flujo de datos unidireccional en el
que el envío y la recepción de datos no se producen al mismo tiempo. Esto es similar a la
función de las radios de dos vías o dos walki-talkies en donde una sola persona puede hablar a
la vez. Si una persona habla mientras lo hace la otra, se produce una colisión. Por ello, la
comunicación half-duplex implementa el CSMA/CD con el objeto de reducir las posibilidades
de que se produzcan colisiones y detectarlas en caso de que se presenten. Las comunicaciones
half-duplex presentan problemas de funcionamiento debido a la constante espera, ya que el
flujo de datos sólo se produce en una dirección a la vez. Las conexiones half-duplex suelen
verse en los dispositivos de hardware más antiguos, como los hubs. Los nodos que están
conectados a los hubs y que comparten su conexión con un puerto de un switch deben funcionar
en el modo half-duplex porque las computadoras finales deben tener la capacidad de detectar
las colisiones. Los nodos pueden funcionar en el modo half-duplex si la tarjeta NIC no puede
configurarse para hacerlo en full duplex. En este caso, el puerto del switch también adopta el
modo half-duplex predeterminado. Debido a estas limitaciones, la comunicación full-duplex
ha reemplazado a la half duplex en los elementos de hardware más modernos.

Full duplex: En las comunicaciones full-duplex el flujo de datos es bidireccional, por lo tanto
la información puede enviarse y recibirse al mismo tiempo. La capacidad bidireccional mejora
el rendimiento, dado que reduce el tiempo de espera entre las transmisiones. Actualmente, la
mayoría de las tarjetas NIC Ethernet, Fast Ethernet y Gigabit Ethernet disponibles en el
mercado proporciona capacidad full-duplex. En el modo full-duplex, el circuito de detección
de colisiones se encuentra desactivado. Las tramas enviadas por los dos nodos finales
conectados no pueden colisionar, dado que éstos utilizan dos circuitos independientes en el
cable de la red. Cada conexión full-duplex utiliza un solo puerto. Las conexiones full-duplex
requieren un switch que admita esta modalidad o bien una conexión directa entre dos nodos
compatibles con el modo full duplex. Los nodos que se conecten directamente al puerto de un
switch dedicado con tarjetas NIC capaces de admitir full duplex deben conectarse a puertos
que estén configurados para funcionar en el modo full-duplex.

24
CONFIGURACIÓN DEL PUERTO DE SWITCH

El puerto de un switch debe configurarse con parámetros dúplex que coincidan con el tipo de
medio. Más adelante en este capítulo se configurarán los parámetros de dúplex. Los switches
cuentan con tres parámetros:
La opción auto establece el modo autonegociación de dúplex. Cuando este modo se encuentra
habilitado, los dos puertos se comunican para decidir el mejor modo de funcionamiento.
La opción full establece el modo full-duplex.
La opción half establece el modo half-duplex.
auto-MDIX
Las conexiones entre dispositivos específicos, como de switch a switch o de switch a router,
solían requerir el uso de ciertos tipos de cables (de conexión cruzada o de conexión directa).
Ahora, en cambio, se puede utilizar el comando de mdix auto de la CLI para habilitar la función
automática de conexión cruzada de interfaz dependiente del medio (auto-MDIX).
Al habilitar la función auto-MDIX, el switch detecta el tipo de cable que se requiere para las
conexiones Ethernet de cobre y, conforme a ello, configura las interfaces. Por lo tanto, se puede
utilizar un cable de conexión directa o cruzada para realizar la conexión con un puerto
10/100/1000 de cobre situado en el switch, independientemente del tipo de dispositivo que se
encuentre en el otro extremo de la conexión.

DIRECCIONAMIENTO MAC Y TABLAS DE DIRECCIONES MAC DE


LOS SWITCHES

Los switches emplean direcciones MAC para dirigir las comunicaciones de red a través de su
estructura al puerto correspondiente hasta el nodo de destino. La estructura del switch son los
circuitos integrados y la programación de máquina adjunta que permite controlar las rutas de
datos a través del switch. El switch debe primero saber qué nodos existen en cada uno de sus
puertos para poder definir cuál será el puerto que utilizará para transmitir una trama unicast.
El switch determina cómo manejar las tramas de datos entrantes mediante una tabla de
direcciones MAC. El switch genera su tabla de direcciones MAC grabando las direcciones
MAC de los nodos que se encuentran conectados en cada uno de sus puertos. Una vez que la
dirección MAC de un nodo específico en un puerto determinado queda registrada en la tabla
de direcciones, el switch ya sabe enviar el tráfico destinado a ese nodo específico desde el
puerto asignado a dicho nodo para posteriores transmisiones.
Cuando un switch recibe una trama de datos entrantes y la dirección MAC de destino no figura
en la tabla, éste reenvía la trama a todos los puertos excepto al que la recibió en primer lugar.
Cuando el nodo de destino responde, el switch registra la dirección MAC de éste en la tabla de
25
direcciones del campo dirección de origen de la trama. En las redes que cuentan con varios
switches interconectados, las tablas de direcciones MAC registran varias direcciones MAC
para los puertos que conectan los switches que reflejan los nodos de destino. Generalmente, los
puertos de los switches que se utilizan para interconectar dos switches cuentan con varias
direcciones MAC registradas en la tabla de direcciones.

DOMINIOS DE COLISIONES

Al expandir una LAN Ethernet para alojar más usuarios con mayores requisitos de ancho de
banda, aumenta la posibilidad de que se produzcan colisiones. Para reducir el número de nodos
en un determinado segmento de red, se pueden crear segmentos físicos de red individuales
llamados dominios de colisiones.
El área de la red donde se originan las tramas y se producen las colisiones se denomina dominio
de colisiones. Todos los entornos del medio compartido, como aquéllos creados mediante el
uso de hubs, son dominios de colisión. Cuando un host se conecta a un puerto de switch, el
switch crea una conexión dedicada. Esta conexión se considera como un dominio de colisiones
individual, dado que el tráfico se mantiene separado de cualquier otro y, por consiguiente, se
eliminan las posibilidades de colisión.

DOMINIOS DE BROADCAST

Si bien los switches hacen pasar por un filtro a la mayoría de las tramas según las direcciones
MAC, no hacen lo mismo con las tramas de broadcast. Para que otros switches de la LAN
obtengan tramas de broadcast, éstas deben ser reenviadas por switches. Una serie de switches
interconectados forma un dominio de broadcast simple. Sólo una entidad de Capa 3, como un
router o una LAN virtual (VLAN), puede detener un dominio de broadcast de Capa 3. Los
routers y las VLAN se utilizan para segmentar los dominios de colisión y de broadcast.
El dominio de broadcast de la Capa 2 se conoce como dominio de broadcast MAC. El dominio
de broadcast MAC incluye todos los dispositivos de la LAN que reciben broadcasts de tramas
a través de un host a todas las demás máquinas en la LAN.
Cuando un switch recibe una trama de broadcast la reenvía a cada uno de sus puertos, excepto
al puerto entrante en el que el switch recibió esa trama. Cada dispositivo conectado reconoce
la trama de broadcast y la procesa. Esto provoca una disminución en la eficacia de la red dado
que el ancho de banda se utiliza para propagar el tráfico de broadcast.
Latencia de Red

26
La latencia es el tiempo que le toma a una trama o a un paquete hacer el recorrido desde la
estación origen hasta su destino final. Los usuarios de las aplicaciones basadas en redes
experimentan la latencia cuando tienen que esperar varios minutos para obtener acceso a la
información almacenada en un centro de datos o cuando un sitio Web tarda varios minutos en
cargar el explorador. La latencia depende de al menos tres factores.

En primer lugar, el tiempo que le toma a la NIC de origen aplicar pulsos de voltaje en el cable
y el tiempo que le toma a la NIC de destino interpretar estos pulsos. Esto se denomina a veces
retraso de la NIC (por lo general, es de 1 microsegundo para una NIC 10BASE-T).

En segundo lugar, el retardo de propagación real, ya que la señal tarda en recorrer el cable.
Normalmente, éste es de unos 0.556 microsegundos por 100 m para Cat 5 UTP. Si la longitud
del cable es mayor y la velocidad nominal de propagación (NVP, Nominal Velocity of
Propagation) es menor, el retraso de propagación será mayor.

MÉTODOS DE REENVÍO DEL SWITCH

Los switches pueden funcionar de distintos modos y éstos pueden tener tanto efectos positivos
como negativos.
Conmutación por almacenamiento y envío
En este tipo de conmutación, cuando el switch recibe la trama la almacena en los búferes de
datos hasta recibir la trama en su totalidad. Durante el proceso de almacenamiento, el switch
analiza la trama para buscar información acerca de su destino. En este proceso, el switch
también lleva a cabo una verificación de errores utilizando la porción del tráiler de
comprobación de redundancia cíclica (CRC, Cyclic Redundancy Check) de la trama de
Ethernet.
La CRC utiliza una fórmula matemática, basada en la cantidad de bits (1) de la trama, para
determinar si ésta tiene algún error. Después de confirmar la integridad de la trama, ésta se
envía desde el puerto correspondiente hasta su destino. Cuando se detecta un error en la trama,
el switch la descarta. El proceso de descarte de las tramas con errores reduce la cantidad de
ancho de banda consumido por datos dañados. La conmutación por almacenamiento y envío se
requiere para el análisis de calidad de servicio (QoS) en las redes convergentes, en donde se
necesita una clasificación de la trama para decidir el orden de prioridad del tráfico. Por ejemplo:
los flujos de datos de voz sobre IP deben tener prioridad sobre el tráfico de exploración Web.

Conmutación por método de corte

27
En este tipo de conmutación, el switch actúa sobre los datos apenas los recibe, incluso si la
transmisión aún no se ha completado. El switch recopila en el búfer sólo la información
suficiente de la trama como para leer la dirección MAC de destino y así determinar a qué puerto
debe reenviar los datos. La dirección MAC de destino se encuentra en los primeros 6 bytes de
la trama después del preámbulo. El switch busca la dirección MAC de destino en su tabla de
conmutación, determina el puerto de la interfaz de salida y reenvía la trama a su destino
mediante el puerto de switch designado. El switch no lleva a cabo ninguna verificación de
errores en la trama. Dado que el switch no tiene que esperar que la trama se almacene de manera
completa en el búfer y que no realiza ninguna verificación de errores, la conmutación por
método de corte es más rápida que la de almacenamiento y envío. No obstante, al no llevar a
cabo ninguna verificación de errores, el switch reenvía tramas dañadas a través de la red. Las
tramas dañadas consumen ancho de banda mientras se reenvían. Al final, la NIC de destino
descarta las tramas dañadas.
A continuación, se presentan dos variantes de la conmutación por método de corte:
Conmutación por envío rápido: La conmutación por envío rápido ofrece el más bajo nivel
de latencia. La conmutación por envío rápido reenvía el paquete inmediatamente después de
leer la dirección de destino. Como la conmutación por envío rápido comienza a reenviar el
paquete antes de haberlo recibido en forma completa, es probable que a veces los paquetes se
entreguen con errores. Esto ocurre con poca frecuencia y el adaptador de red de destino descarta
los paquetes defectuosos en el momento de su recepción. En el modo de envío rápido, la
latencia se mide desde el primer bit recibido hasta el primer bit transmitido. La conmutación
por envío rápido es el típico método de corte.
Conmutación libre de fragmentos: En la conmutación libre de fragmentos, el switch
almacena los primeros 64 bytes de la trama antes de reenviarla. Este tipo de conmutación puede
ser vista como un acuerdo entre la conmutación por almacenamiento y envío y la conmutación
por método de corte. El motivo por el cual la conmutación libre de fragmentos almacena sólo
los primeros 64 bytes de la trama es que la mayoría de los errores y las colisiones de la red se
producen en esos primeros 64 bytes. El modo libre de fragmentos intenta mejorar la
conmutación por método de corte llevando a cabo una pequeña verificación de errores en los
primeros 64 bytes de la trama a fin de asegurar que no se han producido colisiones antes de
reenviar la trama. La conmutación libre de fragmentos supone un equilibrio entre el alto nivel
de latencia y la gran integridad que ofrece la conmutación por almacenamiento y envío, y el
bajo nivel de latencia y la reducida integridad que brinda la conmutación por método de corte.

CONMUTACIÓN SIMÉTRICA Y ASIMÉTRICA

28
La conmutación LAN se puede clasificar como simétrica o asimétrica según la forma en que el
ancho de banda se asigna a los puertos de conmutación.
La conmutación simétrica proporciona conexiones conmutadas entre puertos con el mismo
ancho de banda; por ejemplo, todos los puertos de 100 Mb/s o todos los puertos de 1000 Mb/s.
Un switch LAN asimétrico proporciona conexiones conmutadas entre puertos con distinto
ancho de banda; por ejemplo, una combinación de puertos de 10 Mb/s y puertos de 1000 Mb/s.
La figura muestra las diferencias entre la conmutación simétrica y la asimétrica.
Asimétrica
La conmutación asimétrica permite un mayor ancho de banda dedicado al puerto de
conmutación del servidor para evitar que se produzca un cuello de botella. Esto brinda una
mejor calidad en el flujo de tráfico, donde varios clientes se comunican con un servidor al
mismo tiempo. Se requieren buffers de memoria en un switch asimétrico. Para que el switch
coincida con las distintas velocidades de datos en los distintos puertos, se almacenan tramas
enteras en los búferes de memoria y se envían al puerto una después de la otra según se requiera.
Simétrica
En un switch simétrico, todos los puertos cuentan con el mismo ancho de banda. La
conmutación simétrica se ve optimizada por una carga de tráfico distribuida de manera
uniforme, como en un entorno de escritorio entre pares.
El administrador de la red debe evaluar la cantidad de ancho de banda que se necesita para las
conexiones entre dispositivos a fin de que pueda adaptarse al flujo de datos de las aplicaciones
basadas en redes. La mayoría de los switches actuales son asimétricos, ya que son los que
ofrecen mayor flexibilidad.

Búfer de memoria basado en puerto y búfer de memoria compartida


El switch analiza parte del paquete o su totalidad antes de reenviarlo al host de destino mediante
el método de reenvío. El switch almacena el paquete en un búfer de memoria durante un breve
período. En este tema se estudiará cómo se utilizan dos tipos de búferes de memoria durante el
reenvío.
Un switch Ethernet puede usar una técnica de búferes para almacenar tramas antes de enviarlas.
El almacenamiento en buffers también puede utilizarse cuando el puerto de destino está
29
ocupado debido a una congestión. El switch almacena la trama hasta el momento en que pueda
transmitirse. El empleo de memoria para almacenar datos se denomina almacenamiento en
buffers de memoria. El búfer de memoria está integrado al hardware del switch y, además de
aumentar la cantidad de memoria disponible, no puede configurarse.
Existen dos tipos de almacenamiento en búferes de memoria: memoria compartida y memoria
basada en puerto.

CONMUTACIÓN DE CAPA 2 Y CAPA 3

En este tema se revisará el concepto de conmutación de Capa 2 y se introducirá la conmutación


de Capa 3.
Un switch LAN de Capa 2 lleva a cabo los procesos de conmutación y filtrado basándose
solamente en la dirección MAC de la Capa de enlace de datos (Capa 2) del modelo OSI. El
switch de Capa 2 es completamente transparente para los protocolos de la red y las aplicaciones
del usuario. Recuerde que un switch de Capa 2 crea una tabla de direcciones MAC que utiliza
para determinar los envíos.
Un switch de Capa 3, como el Catalyst 3560, funciona de modo similar a un switch de Capa 2,
como el Catalyst 2960, pero en lugar de utilizar sólo la información de las direcciones MAC
de la Capa 2 para determinar los envíos, el switch de Capa 3 puede también emplear la
información de la dirección IP. En lugar de aprender qué direcciones MAC están vinculadas
con cada uno de sus puertos, el switch de Capa 3 puede también conocer qué direcciones IP
están relacionadas con sus interfaces. Esto permite que el switch de Capa 3 pueda dirigir el
tráfico a través de la red en base a la información de las direcciones IP.
Los switches de Capa 3 son también capaces de llevar a cabo funciones de enrutamiento de
Capa 3, con lo cual se reduce la necesidad de colocar routers dedicados en una LAN. Dado que
los switches de Capa 3 cuentan con un hardware de conmutación especializado, pueden
normalmente enviar datos con la misma rapidez con la que pueden conmutar.

30
VLAN

Una VLAN es una subred IP separada de manera lógica. Las VLAN permiten que redes de IP
y subredes múltiples existan en la misma red conmutada. La figura muestra una red con tres
computadoras. Para que las computadoras se comuniquen en la misma VLAN, cada una debe
tener una dirección IP y una máscara de subred consistente con esa VLAN. En el switch deben
darse de alta las VLAN y cada puerto asignarse a la VLAN correspondiente. Un puerto de
switch con una VLAN singular configurada en el mismo se denomina puerto de acceso.
Recuerde que si dos computadoras están conectadas físicamente en el mismo switch no
significa que se puedan comunicar. Los dispositivos en dos redes y subredes separadas se deben
comunicar a través de un router (Capa 3), se utilicen o no las VLAN. No necesita las VLAN
para tener redes y subredes múltiples en una red conmutada, pero existen ventajas reales para
utilizar las VLAN.
La fragmentación de un gran dominio de broadcast en varias partes más pequeñas reduce el
tráfico de broadcast y mejora el rendimiento de la red. La fragmentación de dominios en VLAN
permite además una mejor confidencialidad de información dentro de una organización. La
fragmentación de dominios de broadcast puede realizarse con las VLAN (en los switches) o
con routers. Cada vez que dispositivos en diferentes redes de Capa 3 necesiten comunicarse, es
necesario un router sin tener en cuenta si las VLAN están en uso.

BENEFICIOS DE UNA VLAN

La productividad del usuario y la adaptabilidad de la red son impulsores clave para el


crecimiento y el éxito del negocio. La implementación de la tecnología de VLAN permite que
una red admita de manera más flexible las metas comerciales. Los principales beneficios de
utilizar las VLAN son los siguientes:
Seguridad: los grupos que tienen datos sensibles se separan del resto de la red, disminuyendo
las posibilidades de que ocurran violaciones de información confidencial. Las computadoras
del cuerpo docente se encuentran en la VLAN 10 y están completamente separadas del tráfico
de datos del invitado y de los estudiantes.
Reducción de costos: el ahorro en el costo resulta de la poca necesidad de actualizaciones de
red caras y usos más eficientes de enlaces y ancho de banda existente.
Mejor rendimiento: la división de las redes planas de Capa 2 en múltiples grupos lógicos de
trabajo (dominios de broadcast) reduce el tráfico innecesario en la red y potencia el
rendimiento.
Mitigación de la tormenta de broadcast: la división de una red en las VLAN reduce el
número de dispositivos que pueden participar en una tormenta de broadcast. Como se analizó
en el capítulo "Configure un switch", la segmentación de LAN impide que una tormenta de
31
broadcast se propague a toda la red. En la figura puede observar que, a pesar de que hay seis
computadoras en esta red, hay sólo tres dominios de broadcast: Cuerpo docente, Estudiante e
Invitado.
Mayor eficiencia del personal de TI: las VLAN facilitan el manejo de la red debido a que los
usuarios con requerimientos similares de red comparten la misma VLAN. Cuando proporciona
un switch nuevo, todas las políticas y procedimientos que ya se configuraron para la VLAN
particular se implementan cuando se asignan los puertos. También es fácil para el personal de
TI identificar la función de una VLAN proporcionándole un nombre. En la figura, para una
identificación más fácil se nombró "Estudiante" a la VLAN 20, la VLAN 10 se podría nombrar
"Cuerpo docente" y la VLAN 30 "Invitado".
Administración de aplicación o de proyectos más simples: las VLAN agregan dispositivos
de red y usuarios para admitir los requerimientos geográficos o comerciales. Tener funciones
separadas hace que gestionar un proyecto o trabajar con una aplicación especializada sea más
fácil, por ejemplo una plataforma de desarrollo de e-learning para el cuerpo docente. También
es fácil determinar el alcance de los efectos de la actualización de los servicios de red.

RANGOS DE ID DE LA VLAN

Las VLAN de acceso están divididas en rango normal o rango extendido.

VLAN de rango normal


 Se utiliza en redes de pequeños y medianos negocios y empresas.
 Se identifica mediante un ID de VLAN entre 1 y 1005.
 Los ID de 1002 a 1005 se reservan para las VLAN Token Ring y FDDI.
 Los ID 1 y 1002 a 1005 se crean automáticamente y no se pueden eliminar. Aprenderá
más acerca de VLAN 1 más adelante en este capítulo.

32
 Las configuraciones se almacenan dentro de un archivo de datos de la VLAN,
denominado vlan.dat. El archivo vlan.dat se encuentra en la memoria flash del switch.
 El protocolo de enlace troncal de la VLAN (VTP), que ayuda a administrar las
configuraciones de la VLAN entre los switches, sólo puede asimilar las VLAN de rango
normal y las almacena en el archivo de base de datos de la VLAN.

VLAN de rango extendido


 Posibilita a los proveedores de servicios que amplíen sus infraestructuras a una cantidad
de clientes mayor. Algunas empresas globales podrían ser lo suficientemente grandes
como para necesitar los ID de las VLAN de rango extendido.
 Se identifican mediante un ID de VLAN entre 1006 y 4094.
 Admiten menos características de VLAN que las VLAN de rango normal.
 Se guardan en el archivo de configuración en ejecución.
 VTP no aprende las VLAN de rango extendido.

TIPOS DE VLAN

VLAN DE DATOS

Una VLAN de datos es una VLAN configurada para enviar sólo tráfico de datos generado por
el usuario. Una VLAN podría enviar tráfico basado en voz o tráfico utilizado para administrar
el switch, pero este tráfico no sería parte de una VLAN de datos. Es una práctica común separar
el tráfico de voz y de administración del tráfico de datos. La importancia de separar los datos
del usuario del tráfico de voz y del control de administración del switch se destaca mediante el
uso de un término específico para identificar las VLAN que sólo pueden enviar datos del
usuario: una "VLAN de datos". A veces a una VLAN de datos se le denomina VLAN de
usuario.

VLAN PREDETERMINADA

Todos los puertos de switch se convierten en un miembro de la VLAN predeterminada luego


del arranque inicial del switch. Hacer participar a todos los puertos de switch en la VLAN
predeterminada los hace a todos parte del mismo dominio de broadcast. Esto admite cualquier
dispositivo conectado a cualquier puerto de switch para comunicarse con otros dispositivos en
otros puertos de switch. La VLAN predeterminada para la mayoría de los switches es la VLAN
33
1. La VLAN 1 tiene todas las características de cualquier VLAN, excepto que no la puede
volver a denominar y no la puede eliminar. De manera predeterminada, el tráfico de control de
la Capa 2, como CDP, y el tráfico del protocolo spanning tree, están asociados con la VLAN
1. En la figura, el tráfico de la VLAN 1 se envía sobre los enlaces troncales de la VLAN
conectando los switches S1, S2 y S3. Es una optimización de seguridad para cambiar la VLAN
predeterminada a una VLAN que no sea la VLAN 1; esto implica configurar todos los puertos
en el switch para que se asocien con una VLAN predeterminada que no sea la VLAN 1. Los
enlaces troncales de la VLAN admiten la transmisión de tráfico desde más de una VLAN. A
pesar de que los enlaces troncales de la VLAN se mencionan a lo largo de esta sección, se
explican a detalle en la próxima sección.

VLAN NATIVA

Se asigna una VLAN nativa a un puerto troncal 802.1Q. Un puerto de enlace troncal 802.1 Q
admite el tráfico que llega de muchas VLAN (tráfico etiquetado) como también el tráfico que
no llega de una VLAN (tráfico no etiquetado). El puerto de enlace troncal 802.1Q coloca el
tráfico no etiquetado en la VLAN nativa. En la figura, la VLAN nativa es la VLAN 99. El
tráfico no etiquetado lo genera una computadora conectada a un puerto de switch que se
configura con la VLAN nativa. Las VLAN se establecen en la especificación IEEE 802.1Q
para mantener la compatibilidad retrospectiva con el tráfico no etiquetado común para los
ejemplos de LAN antigua. Para nuestro fin, una VLAN nativa sirve como un identificador
común en extremos opuestos de un enlace troncal. Es una optimización usar una VLAN
diferente de la VLAN 1 como la VLAN nativa.

VLAN DE ADMINISTRACIÓN

Una VLAN de administración es cualquier VLAN que se configura para acceder a las
capacidades administrativas de un switch. La VLAN 1 serviría como VLAN de administración
si no definió proactivamente una VLAN única para que sirva como VLAN de administración.
Se asigna una dirección IP y una máscara de subred a la VLAN de administración. Se puede
manejar un switch mediante HTTP, Telnet, SSH o SNMP. Debido a que la configuración lista
para usar de un switch por defecto tiene a VLAN 1 como la VLAN predeterminada, puede
notar que la VLAN 1 sería una mala opción como VLAN de administración; no querría que un
usuario arbitrario se conectara a un switch para que se configurara de manera predeterminada
la VLAN de administración. Recuerde que configuró la VLAN de administración como VLAN
99 en el capítulo Configuración y conceptos básicos de switch.

34
VLAN DE VOZ

Es fácil apreciar por qué se necesita una VLAN separada para admitir la Voz sobre IP (VoIP).
Imagine que está recibiendo una llamada de urgencia y de repente la calidad de la transmisión
se distorsiona tanto que no puede comprender lo que está diciendo la persona que llama. El
tráfico de VoIP requiere:
 Ancho de banda garantizado para asegurar la calidad de la voz
 Prioridad de la transmisión sobre los tipos de tráfico de la red
 Capacidad para ser enrutado en áreas congestionadas de la red
 Demora de menos de 150 milisegundos (ms) a través de la red
Puertos de switch
Los puertos de switch son interfaces de Capa 2 únicamente asociados con un puerto físico. Los
puertos de switch se utilizan para manejar la interfaz física y los protocolos asociados de Capa
2. No manejan enrutamiento o puenteo. Los puertos de switch pertenecen a una o más VLAN.

MODOS DE PUERTOS DE SWITCH DE VLAN

Cuando configura una VLAN debe asignarle un número de ID y le puede dar un nombre si lo
desea. El propósito de las implementaciones de la VLAN es asociar con criterio los puertos con
las VLAN particulares. Se configura el puerto para enviar una trama a una VLAN específica.
Como se mencionó anteriormente, el usuario puede configurar una VLAN en el modo de voz
para admitir tráfico de datos y de voz que llega desde un teléfono IP. El usuario puede
configurar un puerto para que pertenezca a una VLAN mediante la asignación de un modo de
membresía que especifique el tipo de tráfico que envía el puerto y las VLAN a las que puede
pertenecer. Se puede configurar un puerto para que admita estos tipos de VLAN:
 VLAN estática: los puertos en un switch se asignan manualmente a una VLAN. Las
VLAN estáticas se configuran por medio de la utilización de la CLI. Esto también se
35
puede llevar a cabo con las aplicaciones de administración de GUI. Sin embargo, una
característica conveniente de la CLI es que si asigna una interfaz a una VLAN que no
existe, se crea la nueva VLAN para el usuario. Para ver un ejemplo de configuración
de VLAN estática,.
 VLAN dinámica: este modo no se utiliza ampliamente en las redes de producción y no
se investiga en este curso. Sin embargo, es útil saber qué es una VLAN dinámica. La
membresía de una VLAN de puerto dinámico se configura utilizando un servidor
especial denominado Servidor de política de membresía de VLAN (VMPS). Con el
VMPS, asigna puertos de switch a las VLAN basadas en forma dinámica en la dirección
MAC de origen del dispositivo conectado al puerto. El beneficio llega cuando traslada
un host desde un puerto en un switch en la red hacia un puerto sobre otro switch en la
red. El switch asigna en forma dinámica el puerto nuevo a la VLAN adecuada para ese
host.
 VLAN de voz: el puerto está configurado para que esté en modo de voz a fin de que
pueda admitir un teléfono IP conectado al mismo. Antes de que configure una VLAN
de voz en el puerto, primero debe configurar una VLAN para voz y una VLAN para
datos. En la figura, la VLAN 150 es la VLAN de voz y la VLAN 20 es la VLAN de
datos. Se supone que la red ha sido configurada para garantizar que el tráfico de voz se
pueda transmitir con un estado prioritario sobre la red. Cuando se enchufa por primera
vez un teléfono en un puerto de switch que está en modo de voz, éste envía mensajes al
teléfono proporcionándole la configuración y el ID de VLAN de voz adecuado. El
teléfono IP etiqueta las tramas de voz con el ID de VLAN de voz y envía todo el tráfico
de voz a través de la VLAN de voz.

ENLACES TRONCALES 802.1Q

Un enlace troncal es un enlace punto a punto entre dos dispositivos de red que lleva más de
una VLAN. Un enlace troncal de VLAN le permite extender las VLAN a través de toda una
red. Se admite IEEE 802.1Q para la coordinación de enlaces troncales en interfaces Fast
Ethernet y Gigabit Ethernet. Aprenderá más adelante en esta sección acerca de 802.1Q.
Un enlace troncal de VLAN no pertenece a una VLAN específica, sino que es un conducto
para las VLAN entre switches y routers.
36
Etiquetado de trama 802.1Q
Recuerde que los switches son dispositivos de Capa 2. Sólo utilizan la información del
encabezado de trama de Ethernet para enviar paquetes. El encabezado de trama no contiene la
información que indique a qué VLAN pertenece la trama. Posteriormente, cuando las tramas
de Ethernet se ubican en un enlace troncal, necesitan información adicional sobre las VLAN a
las que pertenecen. Esto se logra por medio de la utilización del encabezado de encapsulación
802.1Q. Este encabezado agrega una etiqueta a la trama de Ethernet original y especifica la
VLAN a la que pertenece la trama.

Campo EtherType
Establecido al valor hexadecimal de 0x8100. Este valor se denomina valor de ID de protocolo
de etiqueta (TPID, por sus siglas en inglés). Con el campo EtherType configurado al valor
TPID, el switch que recibe la trama sabe buscar la información en el campo de información de
control de etiqueta.
Campo información de control de etiqueta

37
El campo información de control de etiqueta contiene:

 3 bits de prioridad del usuario: utilizado por el estándar 802.1p que especifica cómo
proporcionar transmisión acelerada de las tramas de la Capa 2. Una descripción de IEEE
802.1p está más allá del alcance de este curso; sin embargo el usuario aprendió algo
sobre esto anteriormente en el análisis sobre las VLAN de voz.
 1 bit de Identificador de formato ideal (CFI, por sus siglas en inglés): permite que las
tramas Token Ring se transporten con facilidad a través de los enlaces Ethernet.
 12 bits del ID de la VLAN (VID): números de identificación de la VLAN; admite hasta
4096 ID de VLAN.
Tramas etiquetadas en la VLAN nativa
Algunos dispositivos que admiten enlaces troncales etiquetan la VLAN nativa como
comportamiento predeterminado. El tráfico de control enviado en la VLAN nativa debe estar
sin etiquetar. Si un puerto de enlace troncal 802.1Q recibe una trama etiquetada en la VLAN
nativa, éste descarta la trama. Como consecuencia, al configurar un puerto de switch en un
switch, es necesario identificar estos dispositivos y configurarlos de manera que no envíen
tramas etiquetadas en la VLAN nativa. Los dispositivos de otros proveedores que admiten
tramas etiquetadas en la VLAN nativa incluyen: teléfonos IP, servidores, routers y switches
que no pertenezcan a una marca específica.
Tramas sin etiquetar en la VLAN nativa
Cuando un puerto de enlace troncal de switch recibe tramas sin etiquetar, éste envía esas tramas
a la VLAN nativa. Como debe recordar, la VLAN nativa predeterminada es la VLAN 1. Al
configurar un puerto de enlace troncal 802.1Q, se asigna el valor del ID de la VLAN nativa al
ID de la VLAN de puerto predeterminada (PVID). Todo el tráfico sin etiquetar que ingresa o
sale del puerto 802.1Q se envía en base al valor del PVID. Por ejemplo, si la VLAN 99 se
configura como la VLAN nativa, el PVID es 99 y todo el tráfico sin etiquetar se envía a la
VLAN 99. Si la VLAN nativa no ha sido configurada nuevamente, el valor de PVID se
configura para la VLAN 1.

ENRUTAMIENTRO ENTRE VLAN

Tradicionalmente, el enrutamiento de la LAN utiliza routers con interfaces físicas múltiples.


Es necesario conectar cada interfaz a una red separada y configurarla para una subred diferente.
En una red tradicional que utiliza VLAN múltiples para segmentar el tráfico de la red en
dominios de broadcast lógicos, el enrutamiento se realiza mediante la conexión de diferentes
interfaces físicas del router a diferentes puertos físicos del switch. Los puertos del switch
conectan al router en modo de acceso; en este modo, diferentes VLAN estáticas se asignan a
cada interfaz del puerto. Cada interfaz del switch estaría asignada a una VLAN estática
38
diferente. Cada interfaz del router puede entonces aceptar el tráfico desde la VLAN asociada a
la interfaz del switch que se encuentra conectada y el tráfico puede enrutarse a otras VLAN
conectadas a otras interfaces.
El enrutamiento entre VLAN tradicional requiere de interfaces físicas múltiples en el router y
en el switch. Sin embargo, no todas las configuraciones del enrutamiento entre VLAN
requieren de interfaces físicas múltiples. Algunos software del router permiten configurar
interfaces del router como enlaces troncales. Esto abre nuevas posibilidades para el
enrutamiento entre VLAN.
"Router-on-a-stick" es un tipo de configuración de router en la cual una interfaz física única
enruta el tráfico entre múltiples VLAN en una red. Como puede ver en la figura, el router se
conecta al switch S1 mediante una conexión de red física única.
La interfaz del router se configura para funcionar como enlace troncal y está conectada a un
puerto del switch configurado en modo de enlace troncal. El router realiza el enrutamiento entre
VLAN al aceptar el tráfico etiquetado de la VLAN en la interfaz troncal proveniente del switch
adyacente y enrutar en forma interna entre las VLAN, mediante subinterfaces. El router luego
reenvía el tráfico enrutado de la VLAN etiquetada para la VLAN de destino por la misma
interfaz física.
Las subinterfaces son interfaces virtuales múltiples, asociadas a una interfaz física. Estas
interfaces están configuradas en software en un router configurado en forma independiente con
una dirección IP y una asignación de VLAN para funcionar en una VLAN específica. Las
subinterfaces están configuradas para diferentes subredes que corresponden a la asignación de
la VLAN, para facilitar el enrutamiento lógico antes de que la VLAN etiquete las tramas de
datos y las reenvíe por la interfaz física. Aprenderá más acerca de las interfaces y las
subinterfaces en el siguiente tema.
Interfaces y Subinterfaces
Para superar las limitaciones de hardware del enrutamiento entre VLAN basado en interfaces
físicas del router, se utilizan subinterfaces virtuales y enlaces troncales, como en el ejemplo del
router-on-a-stick descrito anteriormente. Las subinterfaces son interfaces virtuales basadas en
software asignadas a interfaces físicas. Cada subinterfaz se configura con su propia dirección
IP, máscara de subred y asignación de VLAN única, lo que permite que una interfaz física
única sea parte en forma simultánea de múltiples redes lógicas. Esto resulta útil cuando se
realiza el enrutamiento entre VLAN en redes con múltiples VLAN y pocas interfaces físicas
del router.
Al configurar el enrutamiento entre VLAN mediante el modelo router-on-a-stick, la interfaz
física del router debe estar conectada al enlace troncal en el switch adyacente. Las subinterfaces
se crean para cada VLAN/subred única en la red. A cada subinterfaz se le asigna una dirección
IP específica a la subred de la cual será parte y se configura en tramas con etiqueta de la VLAN
para la VLAN con la cual interactuará la interfaz. De esa manera, el router puede mantener
separado el tráfico de cada subinterfaz a medida que atraviesa el enlace troncal hacia el switch.
Funcionalmente, el modelo router-on-a-stick para el enrutamiento entre VLAN es el mismo
que se utiliza para el modelo de enrutamiento tradicional, pero en lugar de utilizar las interfaces
físicas para realizar el enrutamiento, se utilizan las subinterfaces de una interfaz única.
39
Límites del puerto
Las interfaces físicas están configuradas para tener una interfaz por VLAN en la red. En las
redes con muchas VLAN, no es posible utilizar un único router para realizar el enrutamiento
entre VLAN. Los routers tienen limitaciones físicas para evitar que contengan una gran
cantidad de interfaces físicas. En cambio, si es una prioridad evitar el uso de subinterfaces,
puede utilizar múltiples routers para realizar el enrutamiento entre VLAN para todas las VLAN.
Las subinterfaces permiten ampliar el router para acomodar más VLAN que las permitidas por
las interfaces físicas. El enrutamiento entre VLAN en grandes entornos con muchas VLAN
puede acomodarse mejor si se utiliza una interfaz física única con muchas subinterfaces.

Desempeño
Debido a que no existe contención para ancho de banda en interfaces físicas separadas, las
interfaces físicas tienen un mejor rendimiento cuando se les compara con el uso de
subinterfaces. El tráfico de cada VLAN conectada tiene acceso al ancho de banda completo de
la interfaz física del router conectado a dicha VLAN para el enrutamiento entre VLAN.
Cuando se utilizan subinterfaces para el enrutamiento entre VLAN, el tráfico que se está
enrutando compite por ancho de banda en la interfaz física única. En una red ocupada, esto
puede causar un cuello de botella en la comunicación. Para balancear la carga de tráfico en una
interfaz física, las subinterfaces se configuran en múltiples interfaces físicas, lo que da como
resultado una menor contención entre el tráfico de la VLAN.

Puertos de acceso y puertos de enlace troncal


La conexión de las interfaces físicas para el enrutamiento entre VLAN requiere que los puertos
del switch estén configurados como puertos de acceso. Las subinterfaces requieren que el
puerto del switch esté configurado como un puerto de enlace troncal para que pueda aceptar el
tráfico etiquetado de la VLAN en el enlace troncal. Al utilizar subinterfaces, muchas VLAN
pueden enrutarse sobre un enlace troncal único, en lugar de utilizar una interfaz física única
para cada VLAN.

VTP

El VTP permite a un administrador de red configurar un switch de modo que propagará las
configuraciones de la VLAN hacia los otros switches en la red. El switch se puede configurar
en la función de servidor del VTP o de cliente del VTP. El VTP sólo aprende sobre las VLAN
de rango normal (ID de VLAN 1 a 1005). Las VLAN de rango extendido (ID mayor a 1005)
no son admitidas por el VTP.

40
El VTP permite al administrador de red realizar cambios en un switch que está configurado
como servidor del VTP. Básicamente, el servidor del VTP distribuye y sincroniza la
información de la VLAN a los switches habilitados por el VTP a través de la red conmutada,
lo que minimiza los problemas causados por las configuraciones incorrectas y las
inconsistencias en las configuraciones. El VTP guarda las configuraciones de la VLAN en la
base de datos de la VLAN denominada vlan.dat.

COMPONENTES DEL VTP

Dominio del VTP: consiste en uno o más switches interconectados. Todos los switches en un
dominio comparten los detalles de configuración de la VLAN con las publicaciones del VTP.
Un router o switch de Capa 3 define el límite de cada dominio.
Publicaciones del VTP: el VTP usa una jerarquía de publicaciones para distribuir y sincronizar
las configuraciones de la VLAN a través de la red.
Modos del VTP: un switch se puede configurar en uno de tres modos: servidor, cliente o
transparente.
Servidor del VTP: los servidores del VTP publican la información VLAN del dominio del
VTP a otros switches habilitados por el VTP en el mismo dominio del VTP. Los servidores del
VTP guardan la información de la VLAN para el dominio completo en la NVRAM. El servidor
es donde la VLAN puede ser creada, eliminada o redenominada para el dominio.
Cliente del VTP: los clientes VTP funcionan de la misma manera que los servidores VTP pero
no pueden crear, cambiar ni eliminar las VLAN en un cliente VTP. Un cliente del VTP sólo
guarda la información de la VLAN para el dominio completo mientras el switch está activado.
Un reinicio del switch borra la información de la VLAN. Debe configurar el modo de cliente
VTP en un switch.
VTP transparente: los switches transparentes envían publicaciones del VTP a los clientes
VTP y servidores VTP. Los switches transparentes no participan en el VTP. Las VLAN que se
crean, redenominan o se eliminan en los switches transparentes son locales a ese switch
solamente.
Depuración del VTP: la depuración del VTP aumenta el ancho de banda disponible para la
red mediante la restricción del tráfico saturado a esos enlaces troncales que el tráfico debe
utilizar para alcanzar los dispositivos de destino. Sin la depuración del VTP, un switch satura

41
el broadcast, el multicast y el tráfico desconocido de unicast a través de los enlaces troncales
dentro de un dominio del VTP aunque los switches receptores podrían descartarlos.

DOMINIOS DEL VTP

El VTP le permite separar su red en dominios de administración más pequeños para ayudarlo
a reducir la administración de la VLAN. Un beneficio adicional de configurar los dominios del
VTP es que limita hasta qué punto se propagan los cambios de configuración en la red si se
produce un error.
Un dominio del VTP consiste en un switch o varios switches interconectados que comparten
el mismo nombre de dominio del VTP. Un switch puede ser parte de sólo un dominio del VTP
a la vez. Hasta tanto especifique el nombre de dominio del VTP no puede crear ni modificar
las VLAN en un servidor del VTP y la información de la VLAN no se propaga a través de la
red.

Propagación del nombre de dominio del VTP


Para que un switch de cliente o servidor VTP participe en una red habilitada por el VTP, debe
ser parte del mismo dominio. Cuando los switches están en diferentes dominios de VTP no
intercambian los mensajes del VTP. Un servidor del VTP propaga el nombre de dominio del
42
VTP a todos los switches. La propagación del nombre de dominio usa tres componentes del
VTP: servidores, clientes y publicaciones.

PUBLICACIONES DEL VTP

Publicaciones de resumen
La publicación del resumen contiene el nombre de dominio del VTP, el número actual de
revisión y otros detalles de la configuración del VTP.
Se envían publicaciones de resumen:
 Cada 5 minutos por el servidor o cliente del VTP para informar a los switches vecinos
habilitados por el VTP del número de revisión actual de la configuración del VTP para
su dominio del VTP.
 Inmediatamente después de que se ha realizado una configuración.
Publicaciones de subconjunto
Una publicación de subconjunto contiene información de la VLAN. Los cambios que disparan
una publicación de subconjunto incluyen:
 La creación o eliminación de una VLAN
 La suspensión o activación de una VLAN
 El cambio de nombre de una VLAN
 El cambio de la MTU de una VLAN

43
Publicaciones de solicitud
Cuando una publicación de solicitud se envía al servidor del VTP en el mismo dominio del
VTP, el servidor del VTP responde con el envío de una publicación del resumen y luego una
publicación de subconjunto.

Las publicaciones de solicitud se envían si:

 El nombre de dominio del VTP se ha cambiado.


 El switch recibe una publicación de resumen con un número de revisión de
configuración más alto que el propio.
 Un mensaje de publicación de subconjunto se pierde por alguna razón.
 El switch se ha reconfigurado.

MODOS DEL VTP

Modo servidor
En modo servidor se pueden crear, modificar y eliminar las VLAN para el dominio completo
del VTP. El modo servidor del VTP es el modo predeterminado del switch. Los servidores del
VTP publican sus configuraciones de VLAN a otros switches en el mismo dominio del VTP y
sincronizan sus configuraciones de VLAN con otros switches basados en las publicaciones
recibidas sobre los enlaces troncales. Los servidores del VTP mantienen un registro de
actualizaciones por medio del número de revisión de configuración. Otros switches en el mismo
dominio del VTP comparan su número de revisión de configuración con el número de revisión
recibido desde un servidor del VTP para ver si necesitan sincronizar su base de datos de VLAN.

Modo cliente
Si un switch está en modo cliente, no se pueden crear, cambiar ni eliminar las VLAN. Además,
la información de configuración de la VLAN que el switch del cliente del VTP recibe del switch
del servidor del VTP se almacena en una base de datos de la VLAN, no en NVRAM.
Consecuentemente, los clientes del VTP requieren menos memoria que los servidores del VTP.
Cuando un cliente del VTP se desactiva y reinicia, envía una publicación de solicitud a un
servidor del VTP para actualizar la información de configuración de la VLAN.
Los switches configurados como clientes del VTP se encuentran generalmente en redes más
grandes, porque en una red que consiste de muchos cientos de switches es más difícil coordinar
las actualizaciones de la red. A menudo existen muchos administradores de red que trabajan a
diferentes horas del día. Si se dispone de sólo unos pocos switches que pueden físicamente
44
mantener las configuraciones de la VLAN, es más fácil controlar las actualizaciones de la
VLAN y rastrear qué administradores de red las realizaron.
Modo transparente
Los switches configurados en modo transparente envían publicaciones de VTP que reciben en
sus puertos de enlace troncal hacia otros switches en la red. Los switches en modo transparente
del VTP no publican su configuración de VLAN y no sincronizan su configuración de VLAN
con ningún otro switch. Configure un switch en modo transparente cuando tiene las
configuraciones de la VLAN que tienen significancia local y no deben compartirse con el resto
de la red.

Protocolo spanning-tree STP


La redundancia aumenta la disponibilidad de la topología de red al proteger la red de un único
punto de falla, como un cable de red o switch que fallan. Cuando se introduce la redundancia
en un diseño de la Capa 2, pueden generarse bucles y tramas duplicadas. Los bucles y las tramas
duplicadas pueden tener consecuencias graves en la red. El protocolo spanning tree (STP) fue
desarrollado para enfrentar estos inconvenientes.
STP asegura que exista sólo una ruta lógica entre todos los destinos de la red, al realizar un
bloqueo de forma intencional a aquellas rutas redundantes que puedan ocasionar un bucle. Un
puerto se considera bloqueado cuando el tráfico de la red no puede ingresar ni salir del puerto.
Esto no incluye las tramas de unidad de datos del protocolo de puentes (BPDU) utilizadas por
STP para evitar bucles. El bloqueo de las rutas redundantes es fundamental para evitar bucles
en la red. Las rutas físicas aún existen para proporcionar la redundancia, pero las mismas se
deshabilitan para evitar que se generen bucles. Si alguna vez la ruta es necesaria para
compensar la falla de un cable de red o de un switch, STP vuelve a calcular las rutas y
desbloquea los puertos necesarios para permitir que la ruta redundante se active.

ALGORITMO STP

STP utiliza el algoritmo de spanning tree (STA) para determinar los puertos de switch de la red
que deben configurarse para el bloqueo a fin de evitar que se generen bucles. El STA designa
un único switch como puente raíz y lo utiliza como punto de referencia para todos los cálculos
de rutas. En la figura, el puente raíz, el switch S1, se escoge a través de un proceso de elección.
Todos los switches que comparten STP intercambian tramas de BPDU para determinar el
switch que posee el menor ID de puente (BID) en la red. El switch con el menor BID se
transforma en el puente raíz en forma automática según los cálculos del STA.
La BPDU es la trama de mensaje que se intercambia entre los switches en STP. Cada BPDU
contiene un BID que identifica al switch que envió la BPDU. El BID contiene un valor de
prioridad, la dirección MAC del switch emisor y un ID de sistema extendido opcional. Se
45
determina el BID de menor valor mediante la combinación de estos tres campos. Aprenderá
más acerca del puente raíz, la BPDU y el BID en temas posteriores.
Después de determinar el puente raíz, el STA calcula la ruta más corta hacia el mismo. Todos
los switches utilizan el STA para determinar los puertos que deben bloquearse. Mientras el
STA determina las mejores rutas hacia el puente raíz para todos los destinos del dominio de
broadcast, se evita que todo el tráfico sea enviado a través de la red. El STA considera los
costos tanto de la ruta como del puerto cuando determina la ruta que debe permanecer
desbloqueada. El costo de la ruta se calcula mediante los valores de costo de puerto asociados
con las velocidades de los puertos para cada puerto de switch que atraviesa una ruta
determinada. La suma de los valores de costo de puerto determina el costo de ruta total para el
puente raíz. Si existe más de una ruta a escoger, el STA elige la de menor costo de ruta
Cuando el STA determina las rutas que deben permanecer disponibles, configura los puertos
de switch de acuerdo a distintas funciones. Las funciones de los puertos describen su relación
en la red con el puente raíz y si los mismos pueden enviar tráfico.
Puertos raíz: los puertos de switch más cercanos al puente raíz. En el gráfico, el puerto raíz
del switch S2 es F0/1, configurado para el enlace troncal entre el switch S2 y el switch S1. El
puerto raíz del switch S3 es F0/1, configurado para el enlace troncal entre el switch S3 y el
switch S1.
Puertos designados: todos los puertos que no son raíz y que aún pueden enviar tráfico a la red.
En el gráfico, los puertos de switch F0/1 y F0/2 del switch S1 son puertos designados. El switch
S2 también cuenta con su puerto F0/2 configurado como puerto designado.
Puertos no designados: todos los puertos configurados en estado de bloqueo para evitar los
bucles. En el gráfico, el STA configura al puerto F0/2 del switch S3 en la función no designado.
El puerto F0/2 del switch S3 se encuentra en estado de bloqueo.

46
FUNCIONES DE LOS PUERTOS
El puente raíz es elegido para la instancia de spanning-tree. La ubicación del puente raíz en la
topología de red determina la forma en que se calculan las funciones de los puertos.
Existen cuatro funciones de puertos distintas en las que los puertos de switch se configuran
automáticamente durante el proceso de spanning-tree.
Puerto raíz
El puerto raíz existe en los puentes que no son raíz y es el puerto de switch con la mejor ruta
hacia el puente raíz. Los puertos raíz envían el tráfico a través del puente raíz. Las direcciones
MAC de origen de las tramas recibidas en el puerto raíz pueden llenar por completo la tabla
MAC. Sólo se permite un puerto raíz por puente.
Puerto designado
El puerto designado existe en los puentes raíz y en los que no son raíz. Para los puentes raíz,
todos los puertos de switch son designados. Para los puentes que no son raíz, un puerto
designado es el switch que recibe y envía tramas hacia el puente raíz según sea necesario. Sólo
se permite un puerto designado por segmento. Si existen varios switches en el mismo segmento,
un proceso de elección determina el switch designado y el puerto de switch correspondiente
comienza a enviar tramas para ese segmento. Los puertos designados pueden llenar por
completo la tabla MAC.
Puerto no designado
El puerto no designado es aquel puerto de switch que está bloqueado, de manera que no envía
tramas de datos ni llena la tabla de direcciones MAC con direcciones de origen. Un puerto no
designado no es un puerto raíz o un puerto designado. Para algunas variantes de STP, el puerto
no designado se denomina puerto alternativo.
Puerto deshabilitado
El puerto deshabilitado es un puerto de switch que está administrativamente desconectado. Un
puerto deshabilitado no funciona en el proceso de spanning-tree.

47
ESTADOS DE LOS PUERTOS

STP determina la ruta lógica sin bucles a través de todo el dominio de broadcast. El spanning
tree se determina a través de la información obtenida en el intercambio de tramas de BPDU
entre los switches interconectados. Para facilitar el aprendizaje del spanning tree lógico, cada
puerto de switch sufre una transición a través de cinco estados posibles y tres temporizadores
de BPDU.
Bloquear: el puerto es un puerto no designado y no participa en el envío de tramas. El puerto
recibe tramas de BPDU para determinar la ubicación y el ID de raíz del switch del puente raíz
y las funciones de puertos que cada uno de éstos debe asumir en la topología final de STP
activa.
Escuchar: STP determina que el puerto puede participar en el envío de tramas de acuerdo a
las tramas de BPDU que el switch ha recibido hasta ahora. En este momento, el puerto de
switch no sólo recibe tramas de BPDU, sino que también transmite sus propias tramas de BPDU
e informa a los switches adyacentes que éste se prepara para participar en la topología activa.
Aprender: el puerto se prepara para participar en el envío de tramas y comienza a llenar la
tabla de direcciones MAC.
Reenviar: el puerto se considera parte de la topología activa, envía tramas y envía y recibe
tramas de BPDU.
Deshabilitado: el puerto de la Capa 2 no participa en el spanning tree y no envía tramas. El
estado deshabilitado se establece cuando el puerto de switch se encuentra administrativamente
deshabilitado.
Variantes STP

DISEÑO LAN

48
Modelo de Redes Jerárquicas
La construcción de una LAN que satisfaga las necesidades de empresas pequeñas o medianas
tiene más probabilidades de ser exitosa si se utiliza un modelo de diseño jerárquico. En
comparación con otros diseños de redes, una red jerárquica se administra y expande con más
facilidad y los problemas se resuelven con mayor rapidez.
El diseño de redes jerárquicas implica la división de la red en capas independientes. Cada capa
cumple funciones específicas que definen su rol dentro de la red general. La separación de las
diferentes funciones existentes en una red hace que el diseño de la red se vuelva modular y esto
facilita la escalabilidad y el rendimiento. El modelo de diseño jerárquico típico se separa en
tres capas: capa de acceso, capa de distribución y capa núcleo.

Capa de acceso
La capa de acceso interactúa con dispositivos finales, como PC, impresoras y teléfonos IP, para
proporcionar acceso al resto de la red. La capa de acceso puede incluir routers, switches,
puentes, hubs y puntos de acceso inalámbricos (AP). El propósito principal de la capa de acceso
es aportar un medio de conexión de los dispositivos a la red y controlar qué dispositivos pueden
comunicarse en la red.

Capa de distribución
La capa de distribución agrega los datos recibidos de los switches de la capa de acceso antes
de que se transmitan a la capa núcleo para el enrutamiento hacia su destino final. La capa de
distribución controla el flujo de tráfico de la red con el uso de políticas y traza los dominios de
broadcast al realizar el enrutamiento de las funciones entre las LAN virtuales (VLAN)
definidas en la capa de acceso. Las VLAN permiten al usuario dividir en segmentos el tráfico
sobre un switch en subredes separadas. Por ejemplo, en una universidad el usuario podría
separar el tráfico según se trate de profesores, estudiantes y huéspedes. Normalmente, los
switches de la capa de distribución son dispositivos que presentan disponibilidad y redundancia
altas para asegurar la fiabilidad. Aprenderá más acerca de las VLAN, los dominios de broadcast
y el enrutamiento entre las VLAN, posteriormente en este curso.

Capa núcleo
La capa núcleo del diseño jerárquico es la backbone de alta velocidad de la internetwork. La
capa núcleo es esencial para la interconectividad entre los dispositivos de la capa de
distribución, por lo tanto, es importante que el núcleo sea sumamente disponible y redundante.
El área del núcleo también puede conectarse a los recursos de Internet. El núcleo agrega el
tráfico de todos los dispositivos de la capa de distribución, por lo tanto debe poder reenviar
grandes cantidades de datos rápidamente.

49
BENEFICIOS DE UNA RED JERÁRQUICA

Diámetro de la red
Al diseñar una topología de red jerárquica, lo primero que debe considerarse es el diámetro de
la red. Con frecuencia, el diámetro es una medida de distancia pero en este caso se utiliza el
término para medir el número de dispositivos. El diámetro de la red es el número de
dispositivos que un paquete debe cruzar antes de alcanzar su destino. Mantener bajo el diámetro
de la red asegura una latencia baja y predecible entre los dispositivos.

CARACTERÍSTICAS DEL SWITCH DE LA CAPA DE ACCESO

Los switches de la capa de acceso facilitan la conexión de los dispositivos de nodo final a la
red. Por esta razón, necesitan admitir características como seguridad de puerto, VLAN, Fast
Ethernet/Gigabit Ethernet, PoE y agregado de enlaces.

50
La seguridad de puerto permite que el switch decida cuántos y qué dispositivos específicos se
permiten conectar al switch.
La velocidad de puerto es también una característica que se necesita considerar para los
switches de la capa de acceso. Según los requerimientos de rendimiento para su red, debe elegir
entre los puertos de switch Fast Ethernet y Gigabit Ethernet. Fast Ethernet permite hasta 100
Mb/s de tráfico por puerto de switch. Fast Ethernet es adecuada para telefonía IP y tráfico de
datos en la mayoría de las redes comerciales. Sin embargo, el rendimiento es más lento que el
de los puertos Gigabit Ethernet. Gigabit Ethernet permite hasta 1000 Mb/s de tráfico por puerto
de switch. La mayoría de los dispositivos modernos, como las estaciones de trabajo,
computadoras portátiles y teléfonos IP, admite Gigabit Ethernet. Esto permite transferencias
de datos más eficaces y permite a los usuarios ser más productivos. Gigabit Ethernet presenta
una desventaja: los switches que admiten Gigabit Ethernet son más costosos.

CARACTERÍSTICAS DEL SWITCH DE CAPA DE DISTRIBUCIÓN


Los switches de capa de distribución desempeñan una función muy importante en la red.
Recopilan los datos de todos los switches de capa de acceso y los envían a los switches de capa
núcleo. Aprenderá más adelante en este curso que el tráfico generado en la Capa 2 en una red
conmutada se necesita administrar o segmentar en las VLAN para no consumir ancho de banda
de forma innecesaria a través de la red. Los switches de capa de distribución proporcionan
funciones de enrutamiento entre las VLAN para que una VLAN pueda comunicarse con otra
en la red. Habitualmente, este enrutamiento se produce en la capa de distribución porque los
switches de capa de distribución presentan capacidades de procesamiento más altas que los
switches de capa de acceso. Los switches de capa de distribución reducen la necesidad de que
los switches núcleo realicen la tarea, debido a que el núcleo está ocupado con el manejo del
reenvío de volúmenes muy altos de tráfico. Debido a que el enrutamiento entre las VLAN se
realiza en la capa de distribución, los switches en esta capa necesitan admitir las funciones de
la Capa 3.

CARACTERÍSTICAS DEL SWITCH DE CAPA NÚCLEO


La capa núcleo de una topología jerárquica es una backbone de alta velocidad de la red y
requiere switches que pueden manejar tasas muy altas de reenvío. La velocidad de reenvío
requerida depende en gran medida del número de dispositivos que participan en la red.
Determine su velocidad de reenvío necesaria mediante la realización y el examen de varios
informes de flujo de tráfico y análisis de las comunidades de usuarios. En base a sus resultados,
puede identificar un switch apropiado para admitir la red. Tome la precaución de evaluar sus
necesidades para el presente y el futuro cercano. Si opta por un switch inadecuado para ejecutar
el núcleo de la red, enfrentará los potenciales problemas con cuellos de botella en el núcleo y
contribuirá a que todas las comunicaciones en la red se vuelvan más lentas.

51
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
TCP/IP

Elaborado por:
Ing. Darío Huilcapi

Revisado por:
Ing. Darío Huilcapi

52
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

53
Contenido
STACK TCP IPV6 ................................................................................................... 57
Direccionamiento IPv6 ......................................................................................... 57
GENERALIDADES DE LAS REDES ....................................................................... 62
Arquitectura de linux ............................................................................................ 62
Libertades del software ........................................................................................ 63
Linux como base de otros sistemas operativos .................................................... 63
Preparación del disco duro para instalación de un sistema operativo de red ....... 64
Partición swap ..................................................................................................... 65
SECUENCIA DE BOOTEO LINUX .......................................................................... 66
Inicialización del kernel y proceso init .................................................................. 66
Jerarquía de Directorios....................................................................................... 67
SERVICIOS BÁSICOS DE RED Y DE LOS SISTEMAS OPERATIVOS.................. 69
COMANDOS PARA MANIPULAR DIRECTORIOS Y ARCHIVOS ........................... 70
Administración de archivos .................................................................................. 73
Búsqueda de archivos ......................................................................................... 74
Edición de archivos .............................................................................................. 74
ADMINISTRACIÓN DE PROCESOS ...................................................................... 75
EMPAQUETAMIENTO Y COMPRESIÓN ............................................................... 76
INSTALACIÓN DE PAQUETES .............................................................................. 76
YUM .................................................................................................................... 78
ADMINISTRACIÓN Y GESTIÓN DE USUARIOS Y GRUPOS ................................ 79
Cuentas de Usuario USERADD ........................................................................... 81
Password PASSWD ............................................................................................ 82
Eliminar usuario - USERDEL ............................................................................... 82
Crear Grupos - GROUPADD ............................................................................... 82
Eliminar Grupos - GROUPDEL ............................................................................ 83
Administración de Usuarios ................................................................................. 83
PARÁMETROS DE CONFIGURACIÓN TCP-IP...................................................... 89
Configuracion del archivo /etc/resolv.conf ............................................................ 90
Configuracion del archivo /etc/sysconfig/network ................................................. 90
Configuración de la interfaz de red ...................................................................... 91
EL PROTOCOLO SSH ............................................................................................ 91
PROTOCOLO FTP .............................................................................................. 92
SERVICIO DHCP .................................................................................................... 96
54
SERVICIO DNS ...................................................................................................... 99
SERVIDOR SAMBA .............................................................................................. 102
SERVIDOR WEB APACHE ................................................................................... 104
SERVIDOR SENDMAIL ........................................................................................ 105
SERVIDOR PROXY .............................................................................................. 106
Configuración de Squid y ACL ........................................................................... 107
Controles de Acceso .......................................................................................... 108

55
56
STACK TCP IPV6

Direccionamiento IPv6

 El sistema hexadecimal es un sistema de base dieciséis.


 El sistema de numeración de base 16 utiliza los números del 0 al 9 y las
letras de la A a la F.
 Se pueden representar cuatro bits (medio byte) con un único valor
hexadecimal.

Representación de direcciones IPv6

 Tienen una longitud de 128 bits y se escriben como una cadena de valores
hexadecimales.
 En IPv6, 4 bits representan un único dígito hexadecimal. Una dirección IPv6
consta de 32 valores hexadecimales.
 2001:0DB8:0000:1111:0000:0000:0000:0200
 FE80:0000:0000:0000:0123:4567:89AB:CDEF
 “Hexteto” se utiliza para referirse a un segmento de 16 bits o cuatro valores
hexadecimales.

57
 Se pueden escribir en minúscula o mayúscula.

Regla 1: Omisión de ceros iniciales

 La primera regla que permite reducir la notación de direcciones IPv6 es que


se puede omitir cualquier 0 (cero) inicial en cualquier sección de 16 bits o
hexteto.
 01AB puede representarse como 1AB.
 09F0 puede representarse como 9F0.
 0A00 puede representarse como A00.
 00AB puede representarse como AB.

Regla 2: Omitir todos los segmentos 0

 Los dos puntos dobles (::) pueden reemplazar cualquier cadena única y
contigua de uno o más segmentos de 16 bits (hextetos) que estén compuestas
solo por ceros.
 Los dos puntos dobles (::) se pueden utilizar solamente una vez en una
dirección; de lo contrario, la dirección será ambigua.
 Esto se suele conocer como formato comprimido.
 Dirección incorrecta: 2001:0DB8::ABCD::1234.

58
Duración de prefijo IPv6

IPv6 no utiliza la notación decimal punteada de máscara de subred.


La duración de prefijo indica la porción de red de una dirección IPv6 mediante el
siguiente formato:

 Dirección/duración de prefijo IPv6


 La duración de prefijo puede ir de 0 a 128.
 La duración de prefijo típica es /64.

59
Estructura de una dirección IPv6 unicast global

Las direcciones IPv6 unicast globales son globalmente únicas y enrutables en Internet
IPv6.
Equivalen a las direcciones IPv4 públicas.
La ICANN asigna bloques de direcciones IPv6 a los cinco RIR.
Actualmente, solo se asignan direcciones unicast globales con los tres primeros bits de
001 o 2000::/3.

Estructura de una dirección IPv6 unicast global

Una dirección unicast global consta de tres partes:

Prefijo de enrutamiento global: porción de prefijo, o de red, de la dirección que asigna el


proveedor (por ejemplo, un ISP) a un cliente o a un sitio. En la actualidad, los RIR asignan
a los clientes el prefijo de enrutamiento global /48.
2001:0DB8:ACAD::/48 tiene un prefijo que indica que los primeros 48 bits
(2001:0DB8:ACAD) son la porción de prefijo o de red.

ID de subred

Utilizada por organizaciones para identificar subredes dentro de su ubicación.

ID de interfaz

Equivale a la porción de host de una dirección IPv4.

60
Se utiliza debido a que un único host puede tener varias interfaces, y cada una de estas
puede tener una o más direcciones IPv6.

Motivos para Usar IPV6

61
Encabezados

GENERALIDADES DE LAS REDES

Arquitectura de linux

El núcleo se encarga de ejecutar programas que permitan gestionar


los dispositivos de hardware, para esto se ayuda del Kernel.

Las aplicaciones Base GNU son los programas esenciales y


compiladores del sistema operativo que fueron diseñados por
el proyecto GNU. Además aquí residen las aplicaciones
instaladas por el usuario que pertenecen a diferentes
desarrolladores, tanto los programas base como los de usuario
se apoyan en un conjunto de librerías compartidas, las cuales son
rutinas para ejecución de estos.

El shell proporciona una interfaz entre el núcleo y el usuario. Se puede describir como un
intérprete: interpreta las órdenes que introduce el usuario y las envía al núcleo. La interfaz

62
del shell es muy sencilla. Normalmente consiste en un inductor desde el que se teclea una
orden y después se pulsa enter. En cierta forma, se está tecleando una orden en una línea.
A menudo, esta línea se conoce como la línea de órdenes.

Como una alternativa a la interfaz de la línea de órdenes, Linux proporciona una interfaz
gráfica de usuario GUI) llamada X-Windows, que cuenta con varios administradores de
ventanas que puede utilizar. Dos de los administradores de ventanas más populares son
el Free Virtual Window Manager (fvwm) y el Open Look Window Manager (olwm).

Libertades del software

Linux como base de otros sistemas operativos

Linux, al ser un sistema open source puede ser utilizado por múltiples sistemas operativos
como es el caso de Android. Cuenta con core que administra el hardware y driver básicos,
además contiene repositorios comunes para librerías compartidas, aplicaciones pre
configuradas del teléfono y las aplicaciones instaladas por el usuario.

63
Los sistemas operativos Linux tienen diferentes distribuciones y versiones, la distribución
se basa en el nombre que el desarrollador le dé, mientras que el kernel define la versión
que mantiene dicho sistema operativo.

Preparación del disco duro para instalación de un sistema


operativo de red

Generalmente el particionamiento de un disco duro no es considerado cuando se trata de


instalar un sistema operativo de escritorio, pero en el caso de un S.O. de red se debe tener
ciertas consideraciones para saber cuántas divisiones crear, que información alojar.

Un disco duro consta de:

MBR.- Master Boot Record, o también denominado pista cero, contiene el gestor de
arranque del sistema operativo.

PARTICIONES PRIMARIAS.- Son particiones booteables, cualquier sistema


operativo puede detectarlas y asignarle unidad de red, solo puede haber 4 de éstas o 3
primarias y una extendida. Depende de una tabla de particiones.

PARTICIONES EXTENDIDAS.- También conocida como partición secundaria es otro


tipo de partición que actúa como una partición primaria; sirve para contener múltiples
unidades lógicas en su interior.

PARTICIONES LÓGICAS.- Ocupa una porción de la partición extendida o la totalidad


de la misma, la cual se ha formateado con un tipo específico de sistema de archivos.

64
Los sistemas operativos Windows generalmente le asigna una letra como identificación
de la unidad creada, mientras que Linux le agrega una ruta y una nomenclatura donde
hace referencia a la carpeta que contiene a la partición, el tipo de dispositivo y el número
al que pertenece. La nomenclatura hda hace referencia a discos IDE y sda a discos SATA.

Dispositivo Nombre
Primera Disquetera (A:) /dev/fd0
Segunda Disquetera (B:) /dev/fd1
Primer disco duro (todo el disco) /dev/hda
Primer disco duro, partición primaria 1 /dev/hda1
Primer disco duro, partición primaria 2 /dev/hda2
Primer disco duro, partición primaria 3 /dev/hda3
Primer disco duro, partición primaria 4 /dev/hda4
Primer disco duro, partición lógica 1 /dev/hda5
Segundo disco duro (todo el disco) /dev/hdb
Segundo disco duro, partición primaria 1 /dev/hdb1
Segundo disco duro, partición primaria 2 /dev/hdb2
Segundo disco duro, partición primaria 3 /dev/hdb3
Segundo disco duro, partición primaria 4 /dev/hdb4
Primer disco duro SATA (Todo el disco) /dev/sda
Primer disco duro, partición primaria 1 /dev/sda1

Partición swap

La memoria swap o de intercambio utiliza espacio en el disco duro en lugar de en el


módulo de memoria RAM. La escritura en disco (al menos en los mecánicos) es lenta y
65
el uso de esta memoria puede causar un descenso de rendimiento en el sistema. Por otra
parte, es preferible que el ordenador vaya algo más lento a que empiece a cerrar
programas.

Si se desea usar espacio de intercambio en linux se tienen dos opciones, la primera es usar
un fichero de intercambio o pagineo que existe dentro de uno de los sistemas de ficheros
de Linux y la otra es crear una partición de intercambio, una partición reservada
exclusivamente como espacio swap.

SECUENCIA DE BOOTEO LINUX

1.- BIOS chequea el sistema físico


2.- El BIOS realiza la elección del dispositivo donde leerá el primer sector (pista cero)
MBR
3.- El MBR contiene programas tipo IPL (initial Program Loader) el cual le indica al
BIOS los datos exactos para encontrar el Kernel. (Lilo o Grub), Lilo dejo de ser usado.

Inicialización del kernel y proceso init

4.- El kernel es instalado y comprimido


5.- El Kernel chequea las unidades de almacenamiento y carga los driver
6.- Montar el File System (ntfs, refs, ext3, ext4)
7.- Modo de arranque (run level)
0 Apagado
1 Modo Monousuario sin servicios /etc/inittab
2 Modo Multiusuario sin NFS Archivo que
autoriza el modo
3 Modo Multiusuario full servicios sin gráficos
de arranque
4 Sin uso
5 Modo Multiusuario full servicios con gráficos
6 Modo de Reinicio

66
8.- Ejecutar el Script de inicialización

GRUB

Reside en el Master Boot Record permitiendo ejecutar el Kernel de Linux. Grub soporta
opciones avanzadas, incluyendo protección por password MD5, un método de edición del
menú en el momento dl boot y un Shell para aceptar comandos también a tiempo de boot.

Grub puede leer directamente desde los sistemas de archivo Linux, por lo tanto cuando
se realiza cambios en su archivo de configuración, no es necesario correr ningún comando
para instalarlo en el master boot record.

Jerarquía de Directorios

/ raiz (root) carpeta Padre


67
/bin.- abreviación de binaries o ejecutables. Es donde reside la mayoría de los programas
esenciales del sistema.

/dev.- los ficheros en dev son conocidos como controladores de dispositivos, son usados
para acceder a los dispositivos del sistema y recursos, como discos duros, tarjetas,
memorias, etc.

/etc.- contiene una serie de ficheros de configuración del sistema.

/sbin.- Se usa para almacenar programas esenciales del sistema, que usará el
administrador del sistema.

/home.- Contiene los directorios de los usuarios

/lib.- Contiene imágenes de las librerías compartidas. Estos ficheros contienen código que
compartirán con muchos programas. En lugar de que cada programa contenga una copia
propia de las rutinas estas estarán guardadas en un lugar común.

/proc.- Es un sistema de fichero virtual. Los ficheros que contiene residen realmente en
memoria y no en el disco duro.

/tmp.- Muchos programas tienen la necesidad de guardar archivos temporales, para ello
está esta carpeta.

/usr.- Contiene un conjunto de subdirectorios que tienen algunos de los más útiles
programas y ficheros de configuración usados en el sistema. Utilidades y aplicaciones
multiusuario.

/var.- contiene archivos y directorios de longitud variable


/root.- carpeta del súper usuario administrador

/media.- Punto de montaje para medios removibles

/mnt.- Punto de montaje temporal para sistemas de archivo

/opt.- Agregados adicionales de paquetes de software y aplicaciones

/srv.- Datos para los servicios provistos en el sistema

/boot.- Archivos de arranque

/lost+found.- Almacenamiento de archivos creados con errores (corruptos)

/sys.- Soporte para los dispositivos plug & play

/misc.- Guardar archivos misceláneos

/SELinux.- Contiene la configuración de política de seguridad de aplicaciones


68
SERVICIOS BÁSICOS DE RED Y DE LOS SISTEMAS
OPERATIVOS

Una de las primeras tareas a realizar cuando se instala un sistema operativo de red consiste
en desactivar los servicios innecesarios, se cita un ejemplo a continuación de los pasos
durante proceso.
1.- comando Setup
2.- Elegir servicios del sistema
3.- Desactiva servicios (con tecla space)

Los cambios se aplican luego de reiniciar el sistema operativo.

INICIAR MODO TEXTO


El modo texto nos proporciona todos los servicios que por defecto vienen instalados y
activados exceptuando al entorno gráfico Gnome, Kde o cualquier otro que proporcione
la distribución.
El comando init es un ejemplo de cómo invocar a un run level desde una terminal, por
ejemplo init 3.

69
USO DE CONSOLAS VIRTUALES
Existen consolas alternativas que no necesariamente son otro “run level” sino que se
derivan del modo gráfico para poder usarlas con sesiones diferentes
Para ingresar utilice ctrl + alt + F1  Se puede utilizar desde F1 a F6, con F7 se regresa
al modo gráfico

Usuario hostname (dominio) la carpeta actual en donde me encuentro


“$”, “#”, permisos del usuario

COMANDOS PARA MANIPULAR DIRECTORIOS Y ARCHIVOS

70
Pwd.- ubicación del directorio actual
[root@tcpip mail]#pwd  /var/log/mail
Cd.- Permite cambiarse de directorio
Cuando nos movemos a directorios principales (var, etc, root, etc,… etc) se debe
anteponer el “/”
[root@tcpip mail]# cd /etc  Moverse a directorio principal
[root@tcpip etc]#cd http  Moverse a subdirectorio
Podemos cambiarnos por referencia absoluta y referencia relativa
[root@tcpip /]# cd /var/spool/mail/dhuilcapi  absoluta
[root@tcpip dhuilcapi]#cd ../../../log/mail  relativa = [root@tcpip
dhuilcapi]#cd /var/log/mail  absoluta
Ls.- Listar contenidos de carpetas

-l Lista todos los archivos y directorios mostrando sus propiedades como dueño,
grupo encargado, fecha y hora de modificación y nombre de archivo.
-t Lista todos los archivos y directorios ordenados por la última fecha de
modificación.
-a Lista todos los archivos y directorios ocultos.
-p Agrega un barrita “/” al final de los directorios.
-u Lista todos los archivos y directorios ordenados por la última fecha de acceso.
-i Muestra el i nodo de los archivos y directorios.
-h Muestra el tamaño de un archivo y directorio en formato de KB/MB/GB
-r Lista todos lo archivo y directorios invertidos.
-S Lista todos los archivo y directorios por su tamaño
-X Lista todos los archivos ordenados por extensiones.

Cp.- Permite copiar contenidos


[root@tcpip mail]# cp –fr <origen> <destino>
-r  recursivo (todo el fichero)
-f  Evitar preguntar por cada copia de archivo
-p  Conserva los permisos originales
Mv.- Mover contenido mv <origen> <destino>
[root@tcpip mail]# mv <origen> <destino>
Touch.- Crear un archivo
[root@tcpip mail]# touch archivo1.txt

Mkdir.- Crear una carpeta


71
[root@tcpip mail]# mkdir /home/dario/carpeta
rm.- Borrar contenido
[root@tcpip mail]# rm –fr /home/dario/carpeta
*** Para borrar carpeta se debe colocar “-fr”
Se puede utilizar comodines para completar los caracteres que identifican a un archivo o
carpeta.
Los Wildcard ayudan a ejecutar acciones para un conjunto de archivos o carpetas que
coincidan con el atributo que se defina.
[root@tcpip mail]# rm /home/dario/temp[1-9][a-j][A-J]*
TS-0001-081115 rm /log/transacciones/TS-0001-??0[1-3]* TS-????-??0[1-3]*
Wildcard
[x-y]  Rango de numero o letras
?  Cualquier carácter
*  Todos los caracteres

Man.- Invocar a los manuales


[root@tcpip mail]#man <comando>
History.- Ver el historial de comandos
-c  se borrar el historial

72
Shutdown.- Apagar o reiniciar el equipo en un tiempo definido
[root@tcpip mail]# shutdown –h now  APAGAR AHORA
[root@tcpip mail]# shutdown –r now  REINICIAR AHORA
[root@tcpip mail]# shutdown –h 23:59  APAGAR A LAS 23:59
Clear.- Borrar pantalla

Administración de archivos
More.- muestra el contenido de un archivo en forma descendente, muestra el progreso en
porcentaje

Tail.- Muestra las últimas 10 líneas de un archivo por defecto


[root@tcpip mail]# tail archivo  por defecto 10 líneas
[root@tcpip mail]# tail -100 archivo  100 últimas líneas de un archivo
[root@tcpip mail]# tail –f archivo  muestra las 10 últimas líneas y se queda en ejecución
Less.- Permite recorrer de forma bidireccional un archivo
Cat.- Muestra el resultado a través de la terminal, no abre el fichero
Grep.- Concatenar comandos para filtrar una respuesta
[root@tcpip mail]# tail -1000 correos.log | grep dhuilcapi

73
Búsqueda de archivos

Find.- permite buscar archivos/directorios bajo una serie de criterios que nosotros le
argumentemos, esto con la finalidad de que la búsqueda sea lo más exacta posible
[root@tcpip mail]# find . -type f -name *php
./dir1/app.php
./dir1/calm.php
./dir1/test1.php
./dir2/foo.php
Locate.- Es un comando de búsqueda de archivos, bastante parecido al comando
anteriormente visto, el find. La diferencia de locate es que la búsqueda la hace en una
base de datos indexada para aumentar significativamente la velocidad de respuesta. Esto
quiere decir, que locate realmente no busca en el disco del sistema, sino que en un archivo
con la lista de todos los archivos que existen en el GNU/Linux.
[root@tcpip mail]# locate locate
/usr/bin/locate
/usr/lib/locate
/usr/lib/locate/bigram
/usr/lib/locate/code
/usr/lib/locate/frcode
/usr/share/doc/kde/HTML/en/kcontrol/kcmlocate.docbook.gz
/usr/share/doc/xlibs-dev/XdbeAllocateBackBufferName.3.html

Edición de archivos
Los sistemas operativos Linux cuentan con editores de archivos de texto, recordemos que
todo se basa en ellos, servicios y aplicaciones; entre los editores más utilizados están:
Gedit.- Es el editor de texto libre oficial del escritorio GNOME. Este editor se caracteriza
principalmente por su facilidad de uso, conseguida en gran parte gracias a una interfaz
gráfica claro y limpio, mostrando únicamente las funcionalidades principales que suelen
requerir la mayoría de usuarios.
[root@tcpip mail]#gedit nombre_archivo
74
Nano.- Es el un sencillo editor de textos para el terminal que viene instalado por defecto
en ciertas distribuciones. No es tan potente como Vim o Emacs pero es mucho más fácil
de manejar que estos. Así cualquier usuario por poco experimentado que sea es capaz de
empezar a usar Nano desde el primer momento gracias a las dos líneas de ayuda que
mantiene en su parte inferior.
[root@tcpip mail]#nano nombre_archivo
Vi.- A pesar de su ergonomía muy limitada, Vi es uno de los editores de texto más
populares de los sistemas Unix (con Emacs y pico). En Linux, hay una versión gratuita
de Vi denominada Vim (Vi Improved [mejorada]). Vi (que se pronuncia vi-ái) es un
editor completamente en modo texto, lo cual significa que todas las acciones se llevan a
cabo con la ayuda de comandos de texto.
[root@tcpip mail]#vi nombre_archivo
Dos modos: modo de edición y modo de comando
Comandos Vi:
:q!  salir sin guardar
:wq!  Salir guardando
:x  Salir guardando forzado
/criterio  buscar
dd  borrar una línea
uu  deshacer
yy  copiar
p  pegar
: set number  muestra número de líneas

ADMINISTRACIÓN DE PROCESOS

Top.- Mostrar procesos en ejecución


Kill.- Eliminar un proceso
Yes.- crear un proceso de prueba

75
EMPAQUETAMIENTO Y COMPRESIÓN

Tar.- Permite empaquetar archivos en un contenedor


[root@tcpip home]#tar –cvf var.tar /var  EMPAQUETAR
c= crear archivo
v= mostrar el proceso paso a paso
f= ponerle nombre al archivo
[root@tcpip home]#tar –xvf var.tar  DESEMPAQUETAR
x= extraer
v= mostrar el proceso paso a paso
f= ponerle nombre al archivo

Gzip.- para comprimir un paquete


[root@tcpip home]#gzip parquete.tar
Gunzip.- para descomprimir un paquete
[root@tcpip home]#gunzip parquete.tar

INSTALACIÓN DE PAQUETES

Instalar, actualizar o eliminar software en sistemas operativos linux diferirá de la forma


en como usted instalaba aplicaciones en sistemas operativos como Windows o Mac, esto
es debido a que la mayoría de las aplicaciones desarrolladas para Linux no cuentan con
un asistente de instalación sobre el cual hay que darle clic en siguiente, en cambio usted
tendrá que aprender a aplicar una serie de comandos en su equipo para poder llevar a cabo
tareas administrativas y de gestión para instalar, actualizar o eliminar aplicaciones.
La forma en que usted llevara a cabo esta administración y gestión de paquetes será
mediante el uso de dos herramientas:
 El Comando YUM
 El Comando RPM
Estas herramientas de administración y gestión de paquetes son utilizadas
específicamente por la familia de Sistemas Operativos Red Hat de las cuales, las más
representativas son Fedora y CentOS, una orientada a escritorio y otra orientada a
servidores.

76
RPM (Red Hat Package Manager) es una herramienta de administración y gestión de
paquetes orientada para sistemas operativos Linux, la cual es capaz de instalar, actualizar,
desinstalar y verificar paquetes.
El comando RPM funciona de 4 maneras diferentes
 En modo Instalación
 En modo desinstalación
 En modo actualización
 En modo consulta
Los paquetes RPM se pueden identificar por la terminación .rpm

Ejemplos:
virtualbox.rpm frostwire.rpm livnaf9.rpm skype.rpm

La forma en cómo se instalan los paquetes .rpm deberá ser siguiendo la siguiente sintaxis:
[root@ localhost ] #rpm -ivh paquete.rpm

Los parámetros ivh indican lo siguiente:

-i| --install Instalar el paquete RPM


-v| --verbose Mostrar los mensajes referentes a la instalación
-h| --hash Muestra el progreso de la instalación desplegando los caracteres (###)

Ejemplo:

[root@localhost ]# rpm -ivh frostwire-4.17.0.noarch.rpm


Preparando... ########################################### [100%]
el paquete frostwire-4.17.0-2.noarch ha sido instalado

Algunos paquetes .RPM suelen necesitar ciertos paquetes o dependencias para que estos
sean instalados de manera correcta. Si usted intenta instalar un paquete .RPM para el cual
se presenta el caso de una dependencia no resuelta, vera aparecer en la pantalla lo
siguiente:

[root@localhost ]# rpm -ivh –-replacepkgs frostwire-4.17.0.noarch.rpm


Preparando...
failed dependencies:
lame is needed by frostwire-4.17.0

77
La forma en cómo se desinstalan los paquetes .rpm deberán ser siguiendo la siguiente
sintaxis:

[root@ localhost ] #rpm -e paquete

El parámetro -e indica lo siguiente:

-e| --erase

La forma en cómo se actualizan los paquetes .rpm deberán ser siguiendo la siguiente
sintaxis:

[root@ localhost ] #rpm -Uvh paquete.rpm

Los parámetros Uvh indican lo siguiente:

-U| --upgrade Actualiza el paquete RPM


-v| --verbose Mostrar los mensajes referentes a la instalación
-h| --hash Muestra el progreso de la instalación desplegando los caracteres (###)

Consultar la base de datos del sistema es una manera sencilla de verificar que paquetes
están instalados en nuestro sistema. La manera en que se hace esta consulta es mediante
la siguiente sintaxis:

[root@ localhost ] #rpm -q paquete.rpm

Algunos de los parámetros extras que pueden utilizarse en conjunto con la letra q son:

-q| --
Busca en la base de datos del sistema paquetes RPM instalados
querry
Muestra información relativa al paquete como el nombre, la descripción, la
-i| --info
implementación, fecha en que fue instalado e información genérica
-l| --list Muestra la lista de ficheros que pertenecen al paquete que se está consultando
-s| --state Muestra el estado de todos los archivos contenidos en el paquete
-d| -- Muestra una lista de archivos registrados como documentación (Readme,
docfiles paginas man.etc)

YUM

Yum es una herramienta libre de gestión de paquetes para sistemas Linux basados en
RPM. Fue desarrollado por Seth Vidal y un grupo de programadores voluntarios.
78
La forma en cómo se instalan paquetes con yum sigue la siguiente sintaxis:
yum install -y [paquete1] [paquete2] [paquete3]

Ejemplo 1. Instalando firefox

[root@localhost ] # yum install -y firefox.i386

ADMINISTRACIÓN Y GESTIÓN DE USUARIOS Y GRUPOS

La importancia de tener bien definida la gestión de nuestros usuarios en nuestro sistema


operativo Linux le da la capacidad a usted como administrador de llevar un buen control
sobre los accesos de sus usuarios así como los recursos a los cuales estos acceden.

Así mismo, cada una de las cuentas creadas por el administrador, permitirá conceder o
retirar permisos sobre determinados ficheros, directorios, procesos, aplicaciones o
dispositivos lo cual incrementara en mayor medida la seguridad y estabilidad de su
servidor, lo cual hará menos vulnerable a su infraestructura.

El proceso de administración y gestión de usuarios en linux será llevado a cabo por el


usuario root del sistema operativo. Root tendrá la función de dar de alta usuarios así como
de asignarles sus respectivos permisos y limitantes.

La administración de grupos bajo linux otorga al administrador la posibilidad de integrar


a un conjunto de usuarios con ciertos privilegios y limitantes dentro de un grupo, en dicho
grupo podrá existir uno a más usuarios que estén integrados en otro grupo diferente al
inicial, todos estos de igual manera con más o menos privilegios o limitantes que los
anteriores.

Usualmente el sistema operativo hace uso de tres importantes ficheros durante el proceso
de alta de algun usuario en el sistema por parte del administrador (root), estos ficheros
son:

 /etc/passwd
 /etc/shadow
 /etc/group

Los cuales son editados por el sistema luego de haber sido creados los usuarios por el
administrador (root).

etc/passwd

En este fichero se encuentran almacenados los datos sobre los comandos y directorios de
cada usuario dado de alta en el sistema los cuales serán iniciados una vez que el usuario
entre al mismo.

79
La forma en que se presenta este fichero tiene la siguiente estructura

Usuario.-Nombre de la cuenta con la que el usuario se logeara para acceder al sistema

Password.-Contraseña de la cuenta del usuario que usara para logearse en el sistema

UID.-Identificador del Usuario

GID.-Identificador que indica a cual grupo pertenece el usuario

Información Adicional.-Información detallada del usuario

Home del Usuario.- Directorio de trabajo del usuario

Shell.- Bash particular con la que el usuario trabajara

etc/group

En este fichero se encuentran almacenados los datos sobre los grupos creados en el
sistema así como los miembros que pertenecen a cada grupo
La forma en que se presenta este fichero tiene la siguiente estructura

Grupo.-Nombre del grupo

Password.- Contraseña del grupo

GID.-Identificador que indica a cual grupo pertenece el usuario

Miembros.- Usuarios pertenecientes al grupo

etc/group

En este fichero se encuentran almacenados los datos sobre las contraseñas de cada usuario
del sistema.
La forma en que se presenta este fichero tiene la siguiente estructura

Usuario.-Nombre de la cuenta con la que el usuario se logeará para acceder al sistema

Password Cifrado.- Contraseña del usuario cifrada

Parámetros del Password.- Información particular sobre el alta de la cuenta y caducidad


de la cuenta

80
Cuentas de Usuario USERADD

Para dar de alta cuentas de usuario en el sistema usaremos el comando useradd el cual
deberá ser aplicado según la siguiente estructura

useradd [opciones] nombreDelUsuario

Las opciones que pueden utilizarse en conjunto con el comando useradd son las
siguientes:

Opciones Descripción
Carpeta de trabajo que será asignado al usuario
Ejemplos
-d | --home a) -d /home/usuario1
b) -d /home/cmartinez
c) -d /home/icastillo
Versión del Shell que será asigna al usuario, entre las opciones disponibles
están:
a) -s /bin/bash → Interprete de comandos de Linux equivalente a MS-DOS
-s | --shell
b) -s /sbin/nologin → El usuario no podrá logearse en el sistema. Ideal
para usuarios con acceso a Samba o FTP pero sin acceso al intérprete de
comandos
Grupo principal al cual puede ser asignado un usuario
Ejemplos
-g | --gid a) -g Desarrollo
b) -g Ventas
c) -g Soporte
Grupo secundario al cual puede ser asignado un usuario
Ejemplos
-G | --groups a) -G desarrolloJava
b) -G ventasMedicas
c) -G soportePHP
Identificador que será asignado al usuario\NOTA: Por defecto Linux
asignara UID's a partir del número 500
Ejemplos
-u | --uid
a) -u 501
b) -u 503
c) -u 504
Se usa para especificar la fecha en la cual expira la cuenta. Debe
especificarse en el siguiente formato Año-Mes-Dia.
-e | -- Ejemplos
expiredate a) -e 20100506
b) -e 20081224
c) -e 20090214

81
Password PASSWD

Ahora que ya sabe cómo dar de alta usuarios le mostraremos la forma de asignarle una
contraseña Para asignar contraseñas a las cuentas de usuario haremos uso del comando
passwd el cual deberá ser aplicado según la siguiente estructura

passwd nombreDelUsuario

Ejemplo 3: Asignar contraseña al usuario

 ilemus

 carlos

[root@localhost ~]# passwd ilemus


Cambiando la contraseña del usuario ilemus.
Nueva UNIX contraseña: xxxxxx
Vuelva a escribir la nueva UNIX contraseña: xxxxxx
passwd: todos los tokens de autenticación se actualizaron exitosamente.
[root@localhost ~]# passwd carlos
Cambiando la contraseña del usuario ilemus.
Nueva UNIX contraseña: xxxxxx
Vuelva a escribir la nueva UNIX contraseña: xxxxxx
passwd: todos los tokens de autenticación se actualizaron exitosamente.

Eliminar usuario - USERDEL

Para eliminar cuentas de usuario en el sistema usaremos el comando userdel el cual deberá
ser aplicado según la siguiente estructura

userdel [opciones] nombreDelUsuario

Las opciones que pueden utilizarse en conjunto con el comando useradd son las
siguientes:

Opciones Descripción
Fuerza a remover el usuario del sistema aunque este este activo en el
-f | --force
mismo
Elimina la carpeta de trabajo del usuario así como todo su contenido dentro
-r | --remove
de él

Crear Grupos - GROUPADD

82
Para dar de alta grupos en el sistema usaremos el comando groupadd el cual deberá ser
aplicado según la siguiente estructura

groupadd [opciones] nombreDelGrupo

Las opciones que pueden utilizarse en conjunto con el comando groupadd son las
siguientes:

Opciones Descripción
-g | --gid Define un GID para un grupo
Define un grupo del sistema.
-r | Un grupo del sistema es aquel que tiene un numero de identidad (GID) de
grupo por debajo del número 500
-f | --force Forzar al sistema a crear el grupo aunque este ya exista.

Eliminar Grupos - GROUPDEL

Para eliminar grupos en el sistema usaremos el comando groupdel el cual deberá ser
aplicado según la siguiente estructura

gruopdel nombreDelGrupo

Administración de Usuarios

Los comandos que usaremos para asignar permisos tanto a carpetas como a ficheros serán
los siguientes:

La forma es como deben ser usados estos comando será de la siguiente manera:

chmod#

Para modificar permisos de escritura, lectura y/o ejecución se deberá seguir la siguiente
estructura

chmod [permiso] archivo/directorio

chown#

Para modificar el grupo y/o propietario de un archivo o directorio se deberá seguir la


siguiente estructura
83
chown [nuevoPropietario:nuevoGrupo] [archivo/directorio]

chgrp#

A diferencia de chown este comando solo sirve para modificar el grupo de un archivo o
directorio, para hacer uso de este comando se debe seguir la siguiente estructura.

chown [nuevoGrupo] [archivo/directorio]

Para consolidar la administración de usuarios, grupos y permisos es


necesario resolver la siguiente actividad.

Ud va a crear 3 usuarios, asignándolos a grupos distintos y con password respectivamente.


El objetivo principal es que aprenda como administrar los usuarios y permisos de forma
autónoma.
Pueden realizarlo en parejas y consultarse entre Uds. En esta ocasión el profesor no le
ayudará para que se enfrente a una situación real de configuración de políticas de usuarios,
sin embargo tiene la siguiente guía detallada explícitamente que debe completar
aprendiendo por sí mismo.
Al terminarlo súbalo al AVAC en el enlace que se llama “taller de usuarios”
Cada paso vale “1” QUE SUMAN 10.

Pasos y detalle:
1.- Es necesario crear primero los grupos del sistema, para ello use los
siguientes comandos:
groupadd profesor
groupadd tcpip5761
groupadd tcpip5762
nota: podría resumirse en un solo comando fue asignado. También se usa useradd –c
“para agregar un comentario cuando se crea dicho usuario”

COLOQUE LA IMAGEN AQUI

84
2.-Crearemos los usuario y los asignaremos al grupo, para ello usaremos
el comando useradd con la bandera –g para asignar al grupo respectivo, se
usa G “mayúscula” para asignar un grupo secundario. Digite los
comandos:
useradd dhuilcapi –g profesor
useradd su_nombre –g 5761
useradd otro_nombre –g 5762

COLOQUE LA IMAGEN AQUI

En este momento debería estar creado tanto el usuario como el grupo al que
3.- Crearemos los password a los usuarios mediante el comando passwd.
Aplique los comandos:
passwd dhuilcapi
passwd su_nombre
passwd otro_nombre
Coloque a todos el password “salesiana”

4- Vamos a verificar que el usuario está creado asignado al grupo.

Usuario id user id grupo carpeta user permiso de login


Para ello aplique los siguientes comandos:
tail /etc/passwd passwd es el archivo donde se registran los usuarios

COLOQUE LA IMAGEN AQUI

85
tail /etc/group group es el archivo donde se registran los grupos

COLOQUE LA IMAGEN AQUI

Tail /etc/shadow shadow permite visualizar el archivo de claves (Encriptado)

COLOQUE LA IMAGEN AQUI

Hasta ahora ha conseguido crear usuarios y asignarlos además de asignarle un password


En esta sección aprenderá como administrar permisos, usuario dueño y grupo dueño
Los permisos tienen esta estructura.

Permisos Usuario Grupo Fecha de Nombre


r  lectura dueño dueño creación del
w  escritura del del archivo
x  ejecución archivo archivo
Tamaño
del
archivo

Note que en la sección de permisos tiene diez caracteres ejm. drwxrwxrwx eso quiere
decir lo siguiente.

86
Permisos del
resto de
usuarios que no
son ni el dueño
ni el grupo

Los tres primeros permisos pertenecen al usuario dueño, los tres siguientes a los permisos
del grupo (todos los usuarios de ese grupo tendrán esos permisos) y los tres finales
pertenecen al resto de usuarios.
Entonces ahora vamos a crear lo siguiente:

5.- Creación de los documentos, creará una capeta en /home llamada


“NOTAS” y dentro de ella creará dos archivos denominados 5761 y 5762,
escriba cualquier contenido dentro de esos archivos. Documente los
comandos ingresados
____________________________________
____________________________________
____________________________________
6.- consulte los permisos de la carpeta NOTAS, aplique
ls –lh /home/NOTAS y debe aparecer algo así

-rwx r-x r-x root root 5761


-rwx r-x r-x root root 5762

COLOQUE LA IMAGEN AQUI

Ahora el objetivo es que quede de la siguiente forma


-rwx r-x --- dhuilcapi tcpip5761 5761
87
-rwx r-x --- dhuilcapi tcpip5762 5762

7.- Cambiamos de usuario y grupo dueño de los archivos dentro de la


capeta “NOTAS”. Aplique los comandos.
chown dhuilcapi /home/NOTAS/5761  Estamos cambiado de usuario dueño a arch
5761
chgrp tcpip5761 /home/NOTAS/5761  Estamos cambiado de grupo dueño a arch
5761
Debemos realizar lo mismo para el archivo 5762
chown dhuilcapi /home/NOTAS/5762  Estamos cambiado de usuario dueño a arch
5761
chgrp tcpip5762 /home/NOTAS/5762  Estamos cambiado de grupo dueño a arch
5761
Aplique el comando: ls –lh /home/NOTAS y pegue el resultado donde se evidencie que
los archivos 5761 y 5762 cambiaron de usuario y grupo dueño. (Compare con la imagen
del paso 6 y observe las diferencias)

COLOQUE LA IMAGEN AQUI

8.- Ahora cambiaremos los permisos “rwx r-x r-w” para que tenga la nueva
estructura “rwx r-x ---“, lo que quiere decir que el usuario dueño tiene (rwx)
lectura escritura y ejecución, el grupo dueño tendrá solo (r x) lectura y
ejecución y el resto de usuarios no podrán ni editar, ni leer ni ejecutar el
archivo.
Para realizar esto debemos comprender que son los permisos octales, esto nos ayudará a
cambiar la estructura del permiso y consiste en lo siguiente.
PASOS PARA PERMISOS OCTALES:
8.1. Coloque “1” donde vea el permiso y “0” donde no esté el permiso, por ejemplo para
nuestro caso
r w x r - x - - -
1 1 1 1 0 1 0 0 0

8.2. Ahora transforme esa secuencia binaria en números en base 8 agrupándolos en tríos,
de la siguiente manera

88
r w x r - x - - -
1 1 1 1 0 1 0 0 0
7 5 0

Ahora estamos listos para colocar el comando para cambiar los permisos
Aplique el siguiente comando:
Chmod750 /home/NOTAS/5761
Chmod 750 /home/NOTAS/5762

Aquí se coloca el “750” debido a lo que se definió anteriormente en el permiso octal, para
permisos “rwx r-x ---“ el permiso que corresponde es el “750”.
Luego de aplicados los comandos ya podremos ver correctamente los permisos
cambiados de acuerdo a nuestra estructura.

Aplique el comando: ls –lh /home/NOTAS y pegue el resultado donde se evidencie que


los archivos 5761 y 5762 cambiaron de permisos.

COLOQUE LA IMAGEN AQUI

PARÁMETROS DE CONFIGURACIÓN TCP-IP

La configuración de la interfaz es importante en un servidor o equipo de escritorio. Los


principales archivos de configuración son:
89
/etc/hosts .- Este archivo de configuración contiene los nombres de equipos dentro de una
red local y se utilizar para resolver su nombre cuando no se tiene un servidor de DNS en
la red local, también este archivo define la dirección de loopback que representa al propio
equipo independientemente de la dirección IP que se le haya asignado.
/etc/resolv.conf.- Este archivo especifica las direcciones IP de los servidores DNS
/etc/sysconfig/networkscripts/ifcfg-<interfaz>.- Estos archivos de configuración son
utilizados para especificar la configuración de la tarjeta de red.
Configuración del archivo /etc/hosts

Este archivo de texto asocia las direcciones IP con el nombre del equipo (hostname). Este
archivo debe tener la siguiente forma:

Las modificaciones realizadas en este archivo de configuración son reflejados


inmediatamente

Configuracion del archivo /etc/resolv.conf

Este archivo de configuración contiene las direcciones IP de los servidores DNS. Sus
parámetros de configuración son:
Nameserver.- Define las direcciones IP de los servidores de nombre en los cuales se
deberán resolver las búsquedas. El archivo hosts solo permite hasta 3 servidores de
nombre diferentes

Configuracion del archivo /etc/sysconfig/network

Los parámetros que utiliza este este archivo son:


NETWORKING.- Los valores que admites son:\yes Permite la configuración de los
servicio de red.\no No permite la configuración de los servicio de red.
FORWARD_IPV4.- Habilita el reenvío de paquetes. Los valores que admite son yes o
no.
HOSTNAME.- Define el nombre del equipo, el cual debe de tener la forma del Fully
Qualified Domain Name (FQDN). Por ejemplo: equipo.ejemplo.net
GATEWAY.- Este parámetro define la dirección IP del Gateway

90
Configuración de la interfaz de red

El directorio de configuración de la interfaz de red se encuentra en:

Dentro de este directorio se encuentran los archivos de configuración de los dispositivos,


dependiendo del número de interfaces de red instaladas en el computadora será el número
de archivos de configuración, el nombre de estos archivos depende del tipo de dispositivo

Ethernetifcfg-eth0, ifcfg-eth1, ..., ifcfg-ethN.


Wi-Fi ifcfg-wlan0, ifcfg-wlan1, ..., Ifcfg-wlanN.
DEVICE Define el nombre del dispositivo físico
BOOTPROTO none No utiliza ningún protocolo de arranque.\static Se define de forma
manual los parámetros de red.\dhcp Obtiene los parámetros de red por medio de un
servidor de DHCP
IPADDR Define la dirección IP asignada a ese dispositivo.
NETMASK Define la máscara de red.
NETWORK Define el segmento de red
HWADDR Define la dirección MAC del dispositivo de red. Se recomienda que
modificar el valor de este parámetro.
GATEWAY Define la Dirección IP del Gateway en la red
ONBOOT Establece si el dispositivo debe activarse con los servicios de red
DNS1, DNS2 Define la direcciones de los servidores DNS primario y secundario a
utilizar.
DHCP_HOSTNAME Esta opción establece un nombre al equipo. Utilice esta opción si
el servidor DHCP requiere que el cliente especifique el nombre de su equipo antes de
recibir una dirección IP.

EL PROTOCOLO SSH

El protocolo SSH (Secure Shell) es una herramienta que nos permite conectarnos a
equipos remotos (Servidores en Producción) así mismo, nos da la capacidad de llevar a
cabo tareas administrativas dentro del mismo como, activar o apagar servicios. Además
de la conexión a otros equipos, SSH nos permite copiar datos de forma segura, gestionar
claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de
cualquier otra aplicación por un canal seguro tunelizado mediante SSH. Una clave RSA
(Sistema Criptográfico con Clave Publica) es un algoritmo que genera un par de llaves de
autenticación, la pública y la privada. La pública se distribuye en forma autenticada y la
privada que generalmente es guardada en secreto por el propietario. El protocolo SSH

91
(Secure Shell) esta implementado bajo el estándar TCP/IP, el cual a su vez se encuentra
dividido en 5 secciones:

 Nivel Físico
 Nivel De Enlace
 Nivel de Internet
 Nivel de Transporte
 Nivel de Aplicación

De manera predeterminada, el protocolo SSH atiende peticiones por el puerto 22. En este
capítulo haremos uso de OpenSSH la cual es la alternativa libre y abierta al programa
propietario SSH.

Archivos de configuración del lado del servidor

La ubicación de los ficheros referentes al servidor se encuentra en la ruta:

sshd_config El archivo de configuración para el demonio sshd.


ssh_host_dsa_key La clave privada DSA usada por el demonio sshd
ssh_host_dsa_key.pubLa clave pública DSA usada por el demonio sshd
ssh_host_key La clave privada RSA usada por el demonio sshd para la versión 1 del
protocolo SSH.
ssh_host_key.pub La clave pública RSA usada por el demonio sshd para la versión 1 del
protocolo SSH.
ssh_host_rsa_key La clave privada RSA usada por el demonio sshd para la versión 2 del
protocolo SSH.
ssh_host_rsa_key.pub La clave pública RSA usada por el demonio sshd para la versión
2 del protocolo SSH.

Conectándose a un equipo remoto a través de SSH

Para establecer una conexión con un servidor SSH remoto desde Centos haremos uso del
Bash, o también conocido como Terminal. La sintaxis para llevar a cabo esta operación
es la siguiente:

PROTOCOLO FTP

El protocolo FTP (File Transfer Protocol) es una de las herramientas más usadas entorno
a la administración de portales web y tiene como principal función la transferencia de
archivos. Esta transacción puede ser efectuada desde una LAN (Red de área local) o en
una WAN (Red de Área Amplia).
92
El protocolo FTP está basado principalmente en la arquitectura Cliente-Servidor el cual
consiste básicamente en un programa “Cliente” que realiza peticiones a otro programa
“Servidor” el cual responde a su petición. Visto de otra forma podemos entenderlo como
el equipo cliente que se conecta al servidor para descargar archivos desde el o para
enviarle archivos.

FTP hace uso del modelo TCP/IP y trabaja directamente sobre la capa de aplicación del
antes mencionado. Así mismo el protocolo FTP hace uso de los puertos 20 y 21 para la
comunicación y control de datos. Un problema básico de FTP es que está pensado para
ofrecer la máxima velocidad en la conexión, pero no la máxima seguridad, ya que todo el
intercambio de información, desde el login y password del usuario en el servidor hasta la
transferencia de cualquier archivo, se realiza en texto plano sin ningún tipo de cifrado,
con lo que un posible atacante puede capturar este tráfico mediante la ayuda de un sniffer
y acceder al servidor.

Funcionamiento del Protocolo FTP

Generalmente se origina cuando el cliente FTP envía la petición al servidor para indicarle
que requiere establecer una comunicación con él, entonces el cliente FTP inicia la
conexión hacia el servidor FTP mediante el puerto 21 el cual establecerá un canal de
control. A partir de este punto el cliente FTP enviara al servidor las acciones que este
debe ejecutar para poder llevar a cabo el envío de datos. Estas acciones incluyen
parámetros para la conexión de datos así como también la manera en cómo serán
gestionados y tratados estos datos.

Algunos de los parámetros enviados por el cliente FTP para la conexión de datos son los
siguientes:

 Puerto de datos
 Modo de transferencia
 Tipo de representación y estructura

Los parámetros relacionados a la gestión de datos son los siguientes:

 Almacenar
 Recuperar
 Añadir
 Borrar
 Obtener

El proceso de transferencia de datos desde el servidor hacia el cliente deberá esperar a


que el servidor inicie la conexión al puerto de datos especificado ( en modo activo ) y
luego de ello transferir los datos en función a los parámetros de conexión especificados
anteriormente.

93
Modos de conexión del cliente FTP
Modo Activo

El modo activo generalmente es conocido también como modo estándar y este opera de
la siguiente forma. Se establecen dos conexiones distintas, la primera conexión establece
una comunicación para la transmisión de comandos a través de un puerto aleatorio mayor
que el 1024 del cliente FTP hacia el puerto 21 del servidor FTP y por esa misma conexión
se le notifica al servidor FTP cual es el puerto de nuestro cliente FTP que está a la espera
de los datos.

Entonces y para comprender mejor, si usted descarga algún archivo mediante la ayuda de
algún cliente de FTP, es el servidor FTP el que inicia la transmisión de datos, desde su
puerto 20 al puerto que aleatoriamente el cliente FTP le ha indicado. Se le llama modo
activo porque la transmisión de datos es iniciada por el propio servidor FTP.

Modo Pasivo

Esto se logra cuando el cliente FTP inicia la conexión con el servidor FTP mediante el
envío del comando PASV en este punto el cliente FTP establece una comunicación
mediante un canal de control el cual generalmente utiliza un puerto aleatorio mayor al
1024 para comunicarse con el servidor FTP a través de su puerto 21. Al pasar a modo
pasivo el cliente FTP pedirá al servidor FTP que habrá un puerto, el cual deberá ser
aleatorio y mayor al 1024, recibida la contestación, será el cliente FTP el que establezca
la conexión de datos al servidor FTP a través del puerto especificado anteriormente.

Modos de acceso del cliente FTP

Un cliente FTP es la aplicación o software que servirá de intermediario entre el servidor


FTP y nuestro equipo, así mismo existen dos versiones de clientes FTP, los gráficos y los
que se usan a línea de comandos.

En la mayoría de los casos se implementaran clientes gráficos de FTP esto debido a que
son más fáciles y sencillos de manejar por el usuario. Nosotros recomendamos usar el
cliente FTP FileZilla.

FileZilla es un cliente FTP, gratuito, multiplataforma, libre y de código abierto. Sustenta


los protocolos FTP, SFTP y SFTP.

Así mismo, los clientes FTP pueden acceder a los servidores FTP de tres formas distintas,
estas son:

Acceso Anónimo.- El acceso anónimo a un servidor FTP se caracteriza porque este no


pide ningún tipo de autenticación al cliente FTP.

Acceso de Usuario.- Este tipo de acceso se caracteriza porque este si requiere


autenticación del cliente FTP ( login y password ) ante el servidor FTP

Acceso de Invitado.- El acceso de invitado bien podría ser un híbrido entre el acceso
anónimo y el acceso de usuario, ya que en este tipo de acceso de requiere autenticación
94
del cliente FTP (login y password ) ante el servidor FTP, lo que lo diferencia de los
últimos dos es que el usuario FTP solo podrá trabajar en un directorio de trabajo destinado
exclusivamente para él, evitando así que el usuario FTP tenga acceso a otras partes del
sistema operativo, pero sin restringir los privilegios que tiene sobre su propio directorio
de trabajo.

Archivos de configuración de VSFTPD

La configuración de VSFTPD se realizara sobre dos ficheros distintos, uno de


configuración general propia de VSFTPD y otro para especificar al servidor FTP los
usuarios que harán uso del acceso de invitado.

El primer fichero de configuración de VSFTPD lo encontramos en la siguiente ruta

El segundo fichero de configuración debe ser creado por usted mismo ya que de otra
forma nunca podrá especificar al servidor FTP los usuarios que harán uso del acceso de
invitado. La ruta en la que se debe crear dicho fichero es la siguiente:

Y será nombrado con el nombre siguiente:

A este fichero deberán ser agregados los nombres de los usuarios de FTP que trabajaran
en su directorio de trabajo, de esta manera se restringe a estos usuarios el acceso a otras
partes del sistema operativo, cualquier otro usuario no agregado a este archivo podrá
acceder a cualquier parte del sistema operativo, lo cual es un grave fallo de seguridad.

Creación de cuentas de usuario en el servidor FTP


95
Accediendo al servidor FTP

Luego de que el cliente haya establecido un comunicacioncon con el servidor FTP este le
pedirá que se autentique. En este punto el usuario deberá teclear su nombre de usuario así
como también su contraseña:

Para transferencia de archivos se utiliza “Put” para envío y “Get” para importar un
documento

SERVICIO DHCP

DHCP (Dinamic Host Control Protocol) es un protocolo de red utilizado para asignar una
serie de
configuraciones TCP/IP (dirección IP, nombre de la máquina ,dominio al que pertenece,
routeador, servidor DNS, gateway) a los equipos que forman parte de una red de área
local LAN (Local Área Network).

96
El DHCP es un protocolo de tipo cliente/servidor que se comunica por el puerto 67 y 68
a través de UDP, generalmente un servidor DHCP posee una lista de direcciones IP
dinámicas y las va asignando a las maquinas clientes conforme estas van estando
disponibles.

Sin el uso de un servidor DHCP, cada dirección IP se tendría que configurar manualmente
en cada equipo y, si el equipo se mueve a otra subred, la IP del equipo sería diferente a la
establecida antes. El DHCP le permite al administrador supervisar y distribuir de forma
centralizada las direcciones IP necesarias y, automáticamente, asignar y enviar una nueva
IP si el equipo es conectado en un lugar diferente de la red.

El paso siguiente es cuando la maquina cliente se conecta a la red, en este fase, la maquina
cliente hace uso del sistema básico de comunicación BOOTP. El BOOTP (Bootstrap
Protocol) es un protocolo de red UDP utilizado para obtener la dirección IP
automáticamente y usualmente es iniciado cuando se realiza en el proceso de boteo de
una computadora o sistema operativo. Cuando el DHCP recibe el paquete de transmisión
este contestará con otro paquete de transmisión que contiene toda la información
solicitada por el maquina cliente.

Algunos de esos paquetes que se transmiten del cliente al servidor DHCP y viceversa son
los siguientes:

DHCP Discovery. La máquina cliente envió este paquete para ubicar los servidores
DHCP disponibles en la red interna, una vez recibido este paquete, el servidor DHCP
almacena la dirección Ethernet de quien genera la petición.
DHCP Offer. Respuesta del servidor DHCP al paquete DHCP Discover la cual contiene
los parámetros de red interna.
DHCP Request. El cliente selecciona la configuración de los paquetes recibidos de
DHCP Offer. Una vez más, el cliente solicita una dirección IP específica que indicó el
servidor.
DHCP Acknowledge. Cuando el servidor DHCP recibe el mensaje DHCP Request del
cliente, este inicia la fase final del proceso de configuración .Esta fase implica el
reconocimiento DHCP Pack el envío de un paquete al cliente. En este punto, la
configuración TCP/IP se ha completado. El servidor reconoce la solicitud y se lo envió al
cliente.
DHCP Release. La máquina cliente envió una petición al servidor DHCP informándole
sobre la liberación de su dirección IP
DHCP Ack. Respuesta del Servidor DHCP a la maquina cliente la cual envió los
parámetros de red Como por ejemplo la dirección IP que le corresponde a la misma.

Configuración del fichero dhcpd.conf

El primer paso para configurar el servidor de DHCP será editar el fichero dhcp.conf al
cual le añadiremos la información de nuestra LAN. El archivo de configuración puede
contener tabulaciones o líneas en blanco adicionales para facilitar el formato. Las palabras
clave no distinguen entre mayúsculas y minúsculas. Las líneas que empiezan con el
símbolo numeral (#) se consideran comentarios.

97
ignore/allow client-updates Permite la actualización de las asignaciones de un
cliente a requerimiento de este, o bien las
asignaciones se actualizan cuando el servidor así lo
requiera (ignore).
shared-network redLocal Parámetro que describe las subredes que compartirán
la misma red física las cuales se especifican dentro de
esta declaración
Subnet Segmento de subred sobre el cual actuara el dhcp
Netmask Mascara de red de la subred
option routers Parámetro que especifica mediante IP la ubicación del
router
option subnet-mask Mascara de red de la subred
Range Rango sobre el cual el DHCP asignara direcciones IP
hardware Ethernet Parámetro que describe la dirección MAC asociada a
la tarjeta ethernet del equipo
fixed-address Parámetro que describe la dirección IP destinada a un
equipo
ddns-domainname <nombre> Mediante el uso de este parámetro, se añadirá
<nombre> al final del nombre de la máquina cliente,
para formar un nombre de dominio totalmente
cualificado (FQDN).
range ip-menor ip-mayor una declaración de subred, este parámetro define el
rango de direcciones que serán asignadas. Pueden
darse
dos instrucciones range seguidas del modo:
range 192.168.0.11 192.168.0.100;
range 192.168.0.125 192.168.0.210;

98
SERVICIO DNS

En la mayoría de las redes modernas, incluyendo la Internet, los usuarios localizan


páginas web por su nombre de dominio (ej. www.google.com),esto permite al usuario
acceder a las millones de páginas web de la Internet sin necesidad de recordar todas y
cada una de las direcciones IP asociadas al nombre de la página que desea visitar.

Una forma de solucionar este problema es mediante la complementación de un


mecanismo que al momento que un usuario pregunte por el nombre de una página web
este servidor conozca qué dirección IP le corresponde al sitio web por el cual pregunta el
usuario. El mecanismo del cual hablamos es un servidor de nombres mayormente
conocido como servidor DNS (Domain Name Server) Así mismo un servidor DNS tiene
la función de almacenar la información asociada a los nombres de dominio existentes.

Falsamente se asocia a un DNS con una base de datos, cosa que es totalmente falso, pues
los principios fundamentales de las bases de datos especifican que no pueden contener
datos redundantes es decir, los datos no pueden ser la misma información la cual es
almacenada varias veces en la misma base de datos.

99
FQDN (acrónimo de Fully Qualified Domain Name o Nombre de Dominio Plenamente
Calificado) es un Nombre de Dominio ambiguo que especifica la posición absoluta del
nodo en el árbol jerárquico del DNS. Se distingue de un nombre regular porque lleva un
punto al final.

Componentes de un DNS

Un DNS se compone de tres componentes básicos, los cuales son:

 Cliente DNS
 Servidor DNS
 Zonas de Autoridad

Cliente DNS

Cuando hablamos del cliente DNS nos referimos al host o usuario que hace la petición; o
sea, a la computadora del usuario la cual genera la petición al DNS preguntando por el
nombre de algún dominio existente en internet.

Servidor DNS

Existen 3 tipos de servidores básicos de un DNS los cuales son:

 Servidor Maestro
 Servidor Esclavo
 Servidor de Cache

Servidor Primario o Maestro

Un servidor DNS maestro almacena los registros de las zonas originales y de autoridad.
Además el servidor DNS maestro es el encargado de responder a las peticiones hechas
por otros servidores DNS.

Servidor Secundario o Esclavo

Un servidor DNS esclavo también tiene la capacidad de responder a las peticiones hechas
por un Cliente DNS así como otro servidor de DNS, la diferencia radica en que los
servidores esclavos obtienen la información acerca de los nombres de dominio desde los
servidores maestros.

Servidor De Cache

100
Este ofrece servicios de resolución de nombres como respuesta a las peticiones hechas
por los clientes de dns, dichos servicios de resolución de nombres son guardados cierto
espacio de tiempo para poder acceder a dicha información más rápidamente.

Este tipo de servidores no tiene ninguna autoridad sobre las zonas de autoridad.

Los servidores DNS son los encargados de hacer las consultas producto de las peticiones
solicitadas por los clientes DNS. Para ello el servidor DNS hace uso de 2 tipos de
consultas.

 Consultas Iterativas
 Consultas Recursivas

Consultas Iterativas

Una consulta iterativa funciona de la siguiente manera:

Imagine que tenemos un cliente DNS el cual hace la petición a nuestro servidor dns-1
sobre el dominio “www.ejemplo.com”, nuestro servidor dns-1 no sabe quién es
“www.ejemplo.com” pero él conoce quien puede tener ese dominio por lo que ahora dns-
1 le hace la petición a dns-2, dns-2 le responde a dns-1 que no sabe quién es
“www.ejemplo.com” pero él sabe quién puede tener ese dominio registrado, por lo que
ahora dns-2 le hace la petición a dns-3, dns-3 responde la petición hecha por dns-2
contestando que el si conoce quien es “www.ejemplo.com” por lo que dns-3 envía la
dirección IP asociada a “www.ejemplo.com” a dns-2, dns-2 le responde la petición a dns1
y dns-1 a su vez le responde al cliente DNS.

Consultas Recursiva

Una consulta recursiva funciona de la siguiente manera:

Imagine que tenemos un cliente DNS el cual hace la petición a nuestro servidor dns-1
sobre el dominio “www.ejemplo.com”, nuestro servidor dns-1 no sabe quién es
“www.ejemplo.com” pero él conoce quien puede tener ese dominio por lo que dns-1 le
responde al Cliente DNS que le pregunte al dns-2, dns-2 no sabe quién es
“www.ejemplo.com” pero él conoce quien puede tener ese dominio por lo que dns-2 le
responde al Cliente DNS que le pregunte al dns-3, dns-3 sabe quién es
“www.ejemplo.com” por lo que dns-3 responde a la petición hecha por el cliente
DNS devolviendo la IP que le corresponde a “www.ejemplo.com”.

Zonas de Autoridad

Las zonas de autoridad contienen las características sobre las cuales nuestro dominio
actuara, en ella se configuran los aspectos importantes así como las opciones específicas
de cada zona, estas configuraciones hechas a las zonas son cargadas desde el servidor
maestro.

101
La información de cada Zona de Autoridad es almacenada de forma local en un fichero
en el Servidor DNS. Este fichero puede incluir varios tipos de registros como pueden ser:

Ficheros de configuración del servidor DNS

Creación de los ficheros de zona

SERVIDOR SAMBA

Samba es una implementación libre del protocolo de archivos compartidos de Microsoft


Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas
de tipo UNIX. De esta forma, es posible que ordenadores con Linux o Mac actúen como
clientes en redes de Windows. Samba también permite validar usuarios haciendo de
Controlador Principal de Dominio, como miembro de dominio e incluso como un
dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir
colas de impresión, directorios compartidos y autenticar con su propio archivo de
usuarios.

Samba configura directorios Unix-Linux (incluyendo sus subdirectorios) como recursos


para compartir a través de la red. Para los usuarios de Microsoft Windows, estos recursos
aparecen como carpetas normales de red.

102
Fichero /etc/samba/smb.conf

La configuración básica de Samba se hará sobre el fichero localizado en:

Configuración de parámetros globales

1.- Con la ayuda de algún editor de textos busque la siguiente línea

2.- Busque las siguientes líneas

103
Alta de usuarios en Samba

Para dar de alta cuentas de usuario en Samba usaremos el comando useradd el cual deberá
ser aplicado según la siguiente estructura

Para asignar contraseñas a los usuarios en Samba usaremos el comando smbpaaswd el


cual deberá ser aplicado según la siguiente estructura.

SERVIDOR WEB APACHE

Es un programa que gestiona cualquier aplicación en el lado del servidor realizando


conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente
generando una respuesta en cualquier lenguaje o aplicación en el lado del cliente. El
código recibido por el cliente suele ser compilado y ejecutado por un Navegador Web.
Para la transmisión de todos estos datos se utiliza algún protocolo. Generalmente se utiliza
el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación
del Modelo OSI. El término también se emplea para referirse al ordenador que ejecuta el
programa.

Este servidor no es compatible con páginas jsp y asp, sin embargo trabaja muy bien con
php

Archivos de configuración

El fichero de configuración principal “httpd.conf” de apache lo encontramos en la


siguiente ruta

Para levantar el servidor es necesario configurar las siguientes líneas

104
DocumentRoot.- Le indica al servidor donde se encuentra el directorio web de donde debe
levantar las páginas.

Listen.- Puerto por el cual escuchará el servidor web, por defecto es el 80 de http

DirectoryIndex.- Directiva que le indica al servidor web como se llama la página de inicio
de/los sitios web que se levanten.

DirectoryIndex Inicio.html index.html index.php

Por defecto las páginas web se almacenan en /var/www/html, pero puede elegirse
cualquier ruta siempre que se la configure en el servidor.

SERVIDOR SENDMAIL

Protocolo SMTP

Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo, es


un protocolo de la capa de aplicación. Protocolo de red basado en texto utilizado para el
intercambio de mensajes de correo electrónico entre computadoras u otros dispositivos
SMTP se basa en el modelo cliente-servidor, donde un cliente envía un mensaje a uno o
varios receptores. La comunicación entre el cliente y el servidor consiste enteramente en
líneas de texto compuestas por caracteres ASCII. El tamaño máximo permitido para estas
líneas es de 1000 caracteres.

Protocolo POP3

POP3 está diseñado para recibir correo, no para enviarlo; le permite a los usuarios con
conexiones intermitentes ó muy lentas (tales como las conexiones por módem), descargar
su correo electrónico mientras tienen conexión y revisarlo posteriormente incluso estando
desconectados. Cabe mencionar que la mayoría de los clientes de correo incluyen la
opción de dejar los mensajes en el servidor, de manera tal que, un cliente que utilice POP3
se conecta, obtiene todos los mensajes, los almacena en la computadora del usuario como
mensajes nuevos, los elimina del servidor y finalmente se desconecta. En contraste, el
protocolo IMAP permite los modos de operación conectado y desconectado.

105
Los clientes de correo electrónico que utilizan IMAP dejan por lo general los mensajes
en el servidor hasta que el usuario los elimina directamente. Esto y otros factores hacen
que la operación de IMAP permita a múltiples clientes acceder al mismo buzón de correo.
La mayoría de los clientes de correo electrónico soportan POP3 ó IMAP; sin embargo,
solo unos cuantos proveedores de internet ofrecen IMAP como valor agregado de sus
servicios.

Protocolo IMAP

Internet Message Access Protocol, o su acrónimo IMAP, es un protocolo de red de acceso


a mensajes electrónicos almacenados en un servidor. Mediante IMAP se puede tener
acceso al correo electrónico desde cualquier equipo que tenga una conexión a Internet.
IMAP tiene varias ventajas sobre POP, que es el otro protocolo empleado para obtener
correo desde un servidor. Por ejemplo, es posible especificar en IMAP carpetas del lado
servidor. Por otro lado, es más complejo que POP ya que permite visualizar los mensajes
de manera remota y no descargando los mensajes como lo hace POP.

DOVECOT

Dovecot es un servidor de IMAP y POP3 de código abierto para


sistemas GNU/Linux / UNIX-like, escrito teniendo en mente la seguridad. Desarrollado
por Timo Sirainen, fue publicado por primera vez en julio del año 2002. Los objetivos
principales de Dovecot es ser ligero, rápido, fácil de instalar y sobre todo seguro.

SERVIDOR PROXY

Un servidor proxy es en principio un equipo que actúa como intermediario entre los
equipos de una red de área local (a veces mediante protocolos, con excepción del
protocolo TCP/IP) e Internet.

Generalmente el servidor proxy se utiliza para la Web. Se trata entonces de un


proxy HTTP. Sin embargo, puede haber servidores proxy para cada protocolo de
aplicación (FTP, etc.).

El principio operativo básico de un servidor proxy es bastante sencillo: se trata de un


servidor que actúa como "representante" de una aplicación efectuando solicitudes en
106
Internet en su lugar. De esta manera, cuando un usuario se conecta a Internet con una
aplicación del cliente configurada para utilizar un servidor proxy, la aplicación primero
se conectará con el servidor proxy y le dará la solicitud. El servidor proxy se conecta
entonces al servidor al que la aplicación del cliente desea conectarse y le envía la
solicitud. Después, el servidor le envía la respuesta al proxy, el cual a su vez la envía a la
aplicación del cliente.

Entre sus características están:

 Almacenamiento en caché

 Filtrado

 Servidor de proxy Inversos

Tipos de Proxies

 Proxy web.

 Proxy inverso.

 Proxy NAT.

 Proxy transparente.

 Proxy abierto.

Squid

Squid es un Servidor Intermediario de alto desempeño utilizado entre los sistemas


operativos como GNU/Linux y derivados de Unix. Es muy confiable, robusto y versátil
y se distribuye bajo los términos de la Licencia Pública General GNU (GNU/GPL).
Siendo equipamiento lógico libre, está disponible el código fuente para quien así lo
requiera.

Entre sus utilidades está la de mejorar el rendimiento de las conexiones de empresas y


particulares a Internet guardando en caché peticiones recurrentes a servidores web y DNS,
acelerar el acceso a un servidor web determinado o añadir seguridad realizando filtrados
de tráfico.

Configuración de Squid y ACL

Para la configuración de Squid utilizaremos las restricciones proxy en el servidor, que


vienen por defecto, una vez de no haber tocado las restricciones añadiremos tantas
expresiones como deseemos en este caso se han incluido al menos 5 url de contenido
pornográfico por medio de un buscador cualquiera, al igual que unos 2 url de contenido
de redes sociales ya sea facebook, y whats app, una vez que nosotros configuramos a

107
gusto nuestro archivo guardamos el contenido (ctrl + o) y salimos (ctrl + x).Podemos
rectificar las paginas o url restringidas en la terminal, una vez logrado lo anterior nos
vamos a la pestaña Proxy Restrictions damos clic en ella y creamos dos reglas de control
de acceso en nuestro caso la primera de ellas va a ser ‘allow’ la autorizamos y enseguida
seleccionaremos acl ‘all’ con esto conseguiremos una regla en la que todos tengan acceso,
sin que se realice ninguna comprobación de expresión.

Es importante conocer que las directivas principales de configuración son:

http_port, define el puerto 3128 por defecto, pero se puede utilizar http alternativo 8080,
además se puede utilizar el parámetro “transparent” cuando se realizará un nateo de
puertos para transparentar la salida a internet.

Controles de Acceso

TIPOS DE ACL
src Especifica una dirección origen de una conexión en formatio
IP/máscara.
Por ejemplo, utilizaremos una acl de tipo src para especificar la
red local:
acl red_local src 192.168.1.0/24
También podemos especificar rangos de direcciones mediante
una acl de tipo src:
acl jefes src 192.168.1.10-192.168.1.25/32
Dst Especifica una dirección destino de una conexión en formato
IP/máscara.
acl google_es dst 216.239.0.0/24
También podemos especificar hosts concretos mediante una acl
de tipo dst:
acl google_es2 dst 216.239.59.104/32 216.239.39.104/32
216.239.57.104/32
Las definiciones son idénticas a las acl de tipo src salvo que se
aplican al destino de las conexiones, no al origen.
srcdomain y Estos tipos de acl especifican un nombre de dominio.
dstdomain En el caso de srcdomain es el dominio origen y se determina por
resolución DNS inversa de la IP de la máquina, es decir,
tendremos que tener bien configurado el DNS de la red local.
En el caso de dstdomain el nombre del dominio se comprueba
con el dominio que se haya especificado en la petición de página
web.

108
Por ejemplo:
acl google_com dstdomain google.com
srcdom_regex y Especifican una expresión regular que verifican los dominio
dstdom_regex origen o destino. La expresión regular hace distinción entre
mayúsculas y minúsculas salvo que incluyamos la oción "-i" que
evita dicha distinción.

Por ejemplo

acl google_todos dstdom_regex -i google\..*

Observamos como al incluir "-i" estamos indicando que no haga


distinción entre mayúsculas y minúsculas.
Time Este tipo de acl perimite especificar una franja horaria concreta
dentro de una semana. La sintaxis es la siguientes
acl nombre_acl_horaria time [dias-abrev] [h1:m1-h2:m2]
Donde la abreviatura del día es:
S - Sunday (domingo)
M - Monday (lunes)
T - Tuesday (martes)
W - Wednesday (miércoles)
H - Thursday (jueves)
F - Friday (viernes)
A - Saturday (sábado)
además la primera hora especificada debe ser menor que la
segunda, es decir h1:m1 tiene que ser menor que h2:m2
Por ejemplo
acl horario_laboral time M T W H F 8:00-15:00
Estarímos especificando un horario de 8 a 15 y de lunes a viernes.
url_regex Permite especificar expresiones regulares para comprobar una url
completa, desde el http:// inicial.
Por ejemplo, vamos a establecer una acl que se verifique con
todos los servidores cuyo nombre sea adserver:
url_regex serv_publicidad ^http://adserver.*
En otro ejemplo podemos ver una acl que verifique las peticiones
de ficheros mp3:
url_regex ficheros_mp3 -i mp3$
req_mime Las acl de tipo req_mime se utilizan para comprobar el tipo de
petición mime que realiza un cliente, y se puede utilzar para
detectar ciertas descargas de ficheros o ciertas peticiones en
túneles HTTP.
Esta acl sólo comprueba las peticiones que realiza el cliente, no
comprueba la respuesta del servidor. Esto es importante para
tener claro qué estamos haciendo y qué no.
Por ejemplo
acl subida req_mime -i ^multipart/form-data$
acl javascript req_mime -i ^application/x-javascript$
acl estilos req_mime -i ^text/css$
acl audiompeg req_mime -i ^audio/mpeg$
109
rep_mime_type Este tipo de acl se utiliza para verificar el tipo de respuesta
recibida por el proxy. Este tipo de acl, analiza una respuesta del
servidor por lo que sólo le afectas las reglas de respuesta como
http_reply_access y no las reglas http_access que se aplican a las
peticiones.
Por ejemplo
acl javascript rep_mime_type -i ^application/x-javascript$
acl ejecutables rep_mime_type -i ^application/octet-stream$
acl audiompeg rep_mime_type -i ^audio/mpeg$

http_access allow|deny [!]acl ...


Observamos como cada acl puede ir precedida por un signo "!"
que indicaría que la acl no se verifica.
Por ejemplo, para permitir acceso fuera del horario laboral, según
una acl que definimos anteriormente:
http_access allow ! horario_laboral

Ejemplo de implementación de filtros ACL

110
Cuarto de PRESIDENCIA RRHH
CALL CENTER Bodega
Telecomunicaciones 1 presidente 1 jefe, 1 secretaria
1 jefe, 1 secretaria
y servidores 1 vicepresidente 8 usuarios 1 jefe de bodega
5 operadores
1 secretaria

SISTEMAS
1 Jefe
1 Secretaria Sala de espera
7 operadores Hasta 20 usuarios wifi

Sala de Juntas
BAÑOS H
SOPORTE Recepción
12 usuarios wifi
1 Jefe 2 Recepcionistas
5 operadores
Contabilidad
12 usuarios, 1 jefe, 1 secretaria
BAÑOS M

Políticas de la red

El presidente, vicepresidente, gerentes tienen acceso total en todo horario (su rango de direcciones es 192.168.1.100 – 192.168.1.124)
Fuera de horario de oficina se puede navegar sin restricción (HOF: 8:00 am -18:00, HFO: 18:01 – 23:59)
La siguientes restricciones se aplican al horario de oficina de lunes a viernes:
Los jefes departamentales tienen acceso a todo, excepto ciertas paginas definidas en un archivo “paginas_bloqueadas” (192.168.1.84-192.168.1.99)
Los operadores de sistema y RRHH (192.168.1.50-192.168.1.83) acceden a todo, con excepción de páginas bloqueadas y descargas de archivos (use un archivo externo)
Los usuarios de Contabilidad (192.168.1. 30 – 192.168.1.49) solo pueden acceder a la página “sri.com” en todo horario
Las secretarias y recepcionistas (192.168.1.125-192.168.1.200) no podrán acceder a páginas
1 bloqueadas, extensiones bloqueadas, Messenger
Los usuarios de la wifi (ip 201 a 254) tienen igual privilegio que las secretarias
Acl toda_red src 192.168.1.0/24
acl mandos_altos src 192.168.1.100/32 – 192.168.1.124/32
acl horario_oficina TIME MTWHF 08:00-18:00
acl horario_fuera_oficina TIME MTWHF 18:01-23:59
acl jefes_departamentales src 192.168.1.84/32 – 192.168.1.99/32
acl pag_bloqueadas url_reges “paginas_bloqueadas.acl!
acl contabilidad src 192.168.1.30/32 – 192.168.1.49/32
acl opsis_rrhh src 192.168.1.50/32 – 192.168.1.83/32
acl ext_bloqueadas urlpath_regex “extensiones_bloqueadas.acl”
acl sri url_regex sri.gov.ec
acl msn
acl sec_recep src 192.168.1.125/32 – 192.168.1.200/32
acl wifi src 192.168.1.201/32 – 192.168.1.254/32
http_access allow sri
http_access deny contabilidad
http_access allow mandos_altos
http_access allow horario_fuera_oficina
http_access deny pag_bloqueadas
http_access allow jefes_departamentales
http_access deny ext_bloqueadas
http_access allow opsis_rrhh
http_access deny msn
http_access allow sec_recep wifi
http_access deny toda red

1
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
SISTEMAS DE INFORMACION I

Elaborado por:
Ing. Aura Romero
Revisado por:
Ing. Miguel Quiroz

2
[30/Septiembre/2016] – versión 1.0
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
UNIDAD 1 4
INTRODUCCIÓN GENERAL. 4
INFORMACIÓN Y SISTEMA DE INFORMACIÓN ....................................................... 4
CONCEPTOS ............................................................................................................. 4
CLASIFICACIÓN DE LA INFORMACIÓN. .................................................................. 4
CARACTERÍSTICAS DE LA INFORMACIÓN ............................................................. 5
FLUJO DE LA INFORMACIÓN ................................................................................... 5
MOTIVOS PARA USAR UN SISTEMA DE INFORMACIÓN ....................................... 6
COMPONENTES DE UN SISTEMA DE INFORMACIÓN ........................................... 6
CARACTERÍSTICAS DE LOS SISTEMAS DE INFORMACIÓN .................................. 7
CLASIFICACIÓN DE LOS SISTEMAS DE INFORMACIÓN ........................................ 7
USO DE LOS SISTEMAS DE INFORMACIÓN. .......................................................... 8
UNIDAD 2 8
GERENCIA ESTRATÉGICA Y SISTEMAS DE INFORMACIÓN 8
PROCESO ESTRATÉGICO........................................................................................ 8
PIRÁMIDE EMPRESARIAL ........................................................................................ 9
METODOLOGÍA ESTRATÉGICA ............................................................................... 9
VINCULACIÓN DE LOS SISTEMAS DE INFORMACIÓN A LA ESTRATEGIA
EMPRESARIAL. ....................................................................................................... 10
UNIDAD 3 11
CONTROL DEL RECURSO HUMANO COMO COMPONENTE BÁSICO DEL S.I. 11
EL DEPARTAMENTO DE TI CONSTA DE CUATRO SECCIONES .......................... 11
Sección de Infraestructuras de TI: ofrece infraestructuras centralizadas: .................. 12
CARGOS EN UNDEPARTAMENTO DE SISTEMAS: ............................................... 13
UNIDAD 4 14
CICLO DE VIDA DE UN SISTEMA DE INFORMACIÓN.14
DEFINICIÓN DE CICLO DE VIDA ............................................................................ 14
FASES DEL CICLO DE VIDA DE UN SISTEMA DE INFORMACIÓN ....................... 14
UNIDAD 5 17
FASE DE PLANIFICACIÓN 17
DESCRIPCIÓN DE LA FASE.................................................................................... 18
FACTIBILIDAD TÉCNICA. ........................................................................................ 18
FACTIBILIDAD OPERACIONAL. .............................................................................. 18
FACTIBILIDAD ECONÓMICA. .................................................................................. 19
UNIDAD 6 19

2
FASE DE ANÁLISIS Y DISEÑO PARTE 1 19
DESCRIPCIÓN DE LA FASE.................................................................................... 20
METODOLOGÍAS DE ANÁLISIS Y DISEÑO. ........................................................... 20
UML COMO METODOLOGÍA DE ANÁLISIS Y DISEÑO. ......................................... 20
VISTAS Y DIAGRAMAS DEL UML. .......................................................................... 20
DIAGRAMA DE CASOS DE USO. ............................................................................ 20
DIAGRAMA DE CLASES. ......................................................................................... 21
DIAGRAMA DE SECUENCIA. .................................................................................. 22
DIAGRAMA DE COLABORACIÓN. .......................................................................... 23
DIAGRAMA DE ACTIVIDAD ..................................................................................... 24
DIAGRAMA DE ESTADOS ....................................................................................... 25
DIAGRAMA DE COMPONENTES. ........................................................................... 26
DIAGRAMA DE DESPLIEGUE. ................................................................................ 27

3
UNIDAD 1

INTRODUCCIÓN GENERAL.

INFORMACIÓN Y SISTEMA DE INFORMACIÓN

CONCEPTOS

INFORMACIÓN
La información es un conjunto organizado de datos procesados, que constituyen un mensaje
que cambia el estado de conocimiento del sujeto o sistema que recibe dicho mensaje.
 Los DATOS por sí solos no son de utilidad, luego de agrupados, clasificados
y ordenados, es decir, PROCESADOS obtenemos la INFORMACIÓN.
 La Información "es el resultado deseado luego de procesar los datos "

SISTEMA DE INFORMACIÓN
Es un conjunto de componentes interrelacionados que recolectan procesan almacenan y
distribuyen información, para apoyar procesos de análisis, toma de decisiones, coordinación,
el control y evaluación en una organización.

CLASIFICACIÓN DE LA INFORMACIÓN.
La tarea de clasificar se define como la actividad de agrupar los elementos de información de
acuerdo a atributos o propiedades comunes entre ellos. Pueden ser:
Según el tiempo al que se refiere la información, puede ser:
 Histórica si es de acontecimientos ya ocurridos y sirve para hacer
comparaciones con la información actual, de modo de establecer tendencias
 Actual si se refiere a sucesos que están ocurriendo o que han ocurrido
recientemente, esta información es indispensable para tomar decisiones.
 Predictiva es la que se elabora suponiendo que van a ocurrir determinados
hechos y sirve para efectuar previsiones y para planear determinadas acciones.

4
CARACTERÍSTICAS DE LA INFORMACIÓN
Los sistemas de información, son alimentados con información que debe cumplir con las
siguientes características:
 Relevancia: Proporción de datos necesarios para la aplicación.
 Facilidad: Obtención fácil de los datos a ingresarse en la aplicación.
 Claridad: Términos claramente definidos en los datos, sin ambigüedades o confusión.
 Totalidad: Inclusión de todos los elementos de datos necesarios, que no estén
incompletos.
 Identificación: Facilidad de identificación de las entidades a utilizarse al momentos de
ingresar los datos.
 Robustez: Estructura suficientemente amplia en los datos como para no requerir
cambios periódicos.
 Flexibilidad: Facilidad para la modificación cuando se requiera.
 Homogeneidad: Definición de los tipos de entidad con los atributos necesarios, es decir
que haya consistencia entre atributos y entidades.

FLUJO DE LA INFORMACIÓN

Una eficaz gestión de la información exige no sólo conocer las fuentes, servicios y sistemas,
su ciclo de vida y sus criterios de calidad, sino tener bien definidas las políticas en torno al
papel de cada cual en el manejo de información y el flujo de cada información, desde su
generación hasta su utilización.
El verdadero valor y uso de la información se manifiesta cuando es compartida con los
clientes/usuarios adecuadamente lo que contribuirá a que puedan ejecutar decisiones y resolver
diferentes problemáticas.
Representar el flujo de información de un sistema, nos permite plasmar en un modelo lógico
los procesos, independientemente de las restricciones del entorno.
Los flujos de información tienen su representación a través de los Diagramas de Flujos y están
compuestos por los siguientes elementos:
 Entidad externa: representa un ente ajeno al sistema que proporciona o recibe
información del mismo. Puede hacer referencia a departamentos, personas,
máquinas, recursos u otros sistemas.
 Proceso: representa las funciones que realiza el sistema para transformar o
manipular datos. El proceso debe ser capaz de generar los flujos de datos de salida
a partir de los de entrada. El proceso puede transformar un flujo de datos de entrada

5
en varios de salida y siempre es necesario como intermediario entre una entidad
externa y un almacén de datos.
 Almacén de datos: representa la información en reposo utilizada por el sistema
independientemente del sistema de gestión de datos (por ejemplo un fichero, base
de datos, archivador, etc.). Contiene la información necesaria para la ejecución del
proceso.
 Flujo de datos: representa el movimiento de los datos, y establece la comunicación
entre los procesos y los almacenes de datos o las entidades externas.

MOTIVOS PARA USAR UN SISTEMA DE INFORMACIÓN

 Resolver un problema
Disminuir el número excesivo de errores en los datos de entrada, eliminando la introducción
manual de los datos de las ventas.

 Aprovechar una oportunidad


Buscar un cambio para que la empresa sea más competitiva.

 Dar respuestas a directivos


Entregar semestralmente un informe por concepto de intereses en pólizas de acumulación.

COMPONENTES DE UN SISTEMA DE INFORMACIÓN

6
Un sistema de información debe cumplir con los siguientes componentes básicos interactuando
entre sí:

 el hardware, equipo físico utilizado para procesar y almacenar datos,


 el software y los procedimientos utilizados para transformar y extraer información,
 los datos que representan las actividades de la empresa,

CARACTERÍSTICAS DE LOS SISTEMAS DE INFORMACIÓN


Pueden darse según los siguientes enfoques
Enfoque Conductual: Una parte importante de los sistemas de información concierne a
aspectos de conducta que surgen en el desarrollo y mantenimiento a largo plazo de los sistemas
de información y como estos afectan a las personas que trabajan en la organización.
Enfoque Técnico: pone de relieve los modelos basados en las matemáticas para el estudio de
los sistemas de información, así como la tecnología física y las capacidades formales de estos
sistemas.
Ciencias de la computación
Ciencias de la administración,
Investigación de operaciones.

CLASIFICACIÓN DE LOS SISTEMAS DE INFORMACIÓN

7
Sistemas de clasificación exactos
Estos sistemas agrupan los contenidos en secciones perfectamente definidas y diferenciadas
del resto.
Por ejemplo cuando el usuario va a realizar una búsqueda o navegación por elementos
conocidos.
Sistemas de clasificación ambiguos
Estos sistemas ofrecen a los usuarios acceder a los contenidos a través de enlaces no conocidos,
de tal forma que el usuario explorando visualmente estas opciones deberá encontrar los
contenidos de su interés.

USO DE LOS SISTEMAS DE INFORMACIÓN.

Los Sistemas de Información a lo largo del tiempo tienen diferentes usos que ayudan a
mejorar los procesos de diversas organizaciones.

Es por ello que algunos autores mencionan que los usos que se dan a los sistemas de
información dentro de las organizaciones son los siguientes:

• “Respaldo a procesos operativos u operaciones empresariales

• Generación de información de apoyo al proceso de toma de decisiones

• Obtención de ventajas competitivas mediante su implantación y uso”.

Los sistemas de información forman el sistema nervioso de las organizaciones, pues si el


sistema de información de la organización no es eficiente, no se llevan a cabo las etapas de los
ciclos administrativos y económicos, sino se cumplen tarde o en forma deficiente.

UNIDAD 2

GERENCIA ESTRATÉGICA Y SISTEMAS DE INFORMACIÓN

PROCESO ESTRATÉGICO.

 Establecer objetivos
 Análisis
 Formulación de la estrategia
 Implementación de la estrategia
 Evaluación y control

8
PIRÁMIDE EMPRESARIAL

 Nivel superior o estratégico: Elabora las políticas y estrategias. Determina los


objetivos a largo plazo y el modo en que la organización ha de interactuar con otras
entidades.
 Nivel medio o táctico: Coordina las actividades que se desarrollan en el nivel inferior
u operativo, así como las decisiones que se toman y que afectan a un sector, área o
departamento específico.
 Nivel inferior u operativo: Su función es realizar en forma eficaz las tareas que se
realizan en la organización. Se realizan tareas rutinarias programadas previamente por
el nivel medio.

METODOLOGÍA ESTRATÉGICA

Con las Metodologías se identifican las necesidades de información, planificación y


adquisiciones para satisfacer esas necesidades. Estas metodologías pueden ser diferentes, pero
cada una propone un enfoque estructurado completo para identificar las necesidades de
información y analizar como satisfacerlas.

La planeación estratégica de los sistemas de información es un enfoque sistemático y


disciplinado para determinar los métodos más efectivos y eficientes para satisfacer las
necesidades de información, para que sea exitoso, debe emplear procesos técnicos y gerenciales
en el contexto de ingeniera de software.

9
Bajo este enfoque, las características del hardware y software del sistema, instalaciones, datos
y personal son identificados y definidos a través de un diseño y análisis detallado para lograr
un sistema que sea el más efectivo en costos para satisfacer las necesidades de la organización.

El proceso debe considerar la gestión del ciclo de vida del sistema, las políticas de la
organización y presupuesto como factores integrales e importantes, e incluye a todos los
participantes de la organización a través del proceso.

VINCULACIÓN DE LOS SISTEMAS DE INFORMACIÓN A LA


ESTRATEGIA EMPRESARIAL.

Los sistemas de información son desarrollados con propósitos diferentes dependiendo de las
necesidades del negocio. Los sistemas de procesamiento de transacciones (TPS) se dedican a
la administración y manejo de datos producido por una transacción, funcionan al nivel
operacional de la organización, los sistemas de automatización de oficina (OAS) y los sistemas
de trabajo de conocimiento (KWS) que dan cabida al trabajo a nivel de conocimiento.

Los sistemas de más alto nivel incluyen a los sistemas de apoyo a decisiones (DSS) así como
a los sistemas de información gerencial (MIS). Los sistemas expertos aplican la experiencia de
los tomadores de decisiones para resolver problemas específicos estructurados. Al nivel
estratégico de la administración encontramos sistemas de apoyo a ejecutivos (ESS).

10
UNIDAD 3

CONTROL DEL RECURSO HUMANO COMO COMPONENTE


BÁSICO DEL S.I.

Existen 2 objetivos básicos para un sistema de información:

1. Reducir costos y tiempo de procesamiento de información.


2. Brindar soporte para la toma de decisiones.

Por lo tanto los RRHH de un Sistema de información están destinados a atender a todos los
usuarios de manera simultánea.

La información es considerada actualmente un recurso estratégico de gran importancia para las


organizaciones. Contar con la información necesaria posibilita tomar las mejores decisiones,
de ahí que el estudio de los sistemas de información constituye una prioridad empresarial.

EL DEPARTAMENTO DE TI CONSTA DE CUATRO SECCIONES:

• Sección Helpdesk: punto único de contacto para usuarios internos y externos.


• Sección de Infraestructuras de TI: ofrece infraestructuras centralizadas.
• Sección de Desarrollo: diseña y crea aplicaciones de TI.
• Oficina de Gestión de Proyectos (PMO).

Sección Helpdesk: punto único de contacto para usuarios internos y externos:

Ayuda a los usuarios a solucionar sus problemas y responde a las solicitudes de información
en los distintos ámbitos de las TI (hardware, software, telecomunicaciones e infraestructura).

Gestiona el software, los consumibles y los equipos (PC, portátiles, teclados, ratones, pantallas,
teléfonos fijos y móviles, impresoras, fotocopiadoras, escáneres, etc.).

Ofrece toda una serie de servicios que los usuarios pueden solicitar cuando sea necesario
(instalación, traslado o desinstalación de equipos y software, distribución de derechos de
acceso, archivado y restauración de datos, formaciones personalizadas, etc.).

Garantiza una arquitectura de TI de cliente coherente y de alto rendimiento y se encarga de


proyectos relacionados con el estudio y la implementación de nuevos equipos, sistemas
operativos y software para estaciones de trabajo.

11
Realiza pruebas para garantizar que las aplicaciones específicas del Centro, desarrolladas
internamente, se implementan con éxito.

Sección de Infraestructuras de TI: ofrece infraestructuras


centralizadas:

Diseña, implementa y garantiza el funcionamiento correcto de los equipos y recursos


centralizados (servidores, software e infraestructura de conexión).

Garantiza la disponibilidad diaria de los sistemas y se encarga de implementar los


procedimientos técnicos necesarios cuando se retoma la actividad después de un fallo del
sistema.

 Gestiona las distintas bases de datos.

Define y mantiene los sistemas de telecomunicación que conectan al Centro con sus socios
(agencias, instituciones, traductores externos) y asegura el funcionamiento correcto de todas
las medidas de seguridad (encriptación, cortafuegos, etc.)

 Sección de Desarrollo: diseña y crea aplicaciones de TI:

Estudia, desarrolla y mantiene las aplicaciones y bases de datos internas necesarias para el
funcionamiento del Centro.

 Gestiona el mantenimiento de las aplicaciones de terceros.

Participa en el estudio y la implementación de aplicaciones externas, como las que proponen


otras instituciones, y de paquetes de software elegidos por el Centro.

 Oficina de Gestión de Proyectos (PMO):

Garantiza la implementación de los proyectos transversales más importantes del Centro.

Actúa como interfaz entre el Departamento de TI y los proyectos.

Recopila y analiza las necesidades para desarrollar la actividad y redacta especificaciones


funcionales para proyectos horizontales.

 Gestiona la cartera de proyectos.


 Evalúa proyectos.
 Evalúa los riesgos.

Ejemplo Organigrama Departamento de Sistemas

12
CARGOS EN UNDEPARTAMENTO DE SISTEMAS:

1. Puesto de Analista Programador


2. Puesto de Analista de Sistemas
3. Puesto de Asistente de Sistemas
4. Puesto de Auditor de Sistemas
5. Puesto de Director de Sistemas
6. Puesto de Gerente de Informática
7. Puesto de Jefe de Informática
8. Puesto de Operador de Sistemas
9. Puesto de Programador
10. Puesto de Soporte Técnico
11. Puesto de Técnico en Internet
12. Puesto de Web Master

13
UNIDAD 4

CICLO DE VIDA DE UN SISTEMA DE INFORMACIÓN.

DEFINICIÓN DE CICLO DE VIDA

EL CICLO DE VIDA
Sostiene que los sistemas son desarrollados de mejor manera mediante el uso de un ciclo
específico de actividades del analista y del usuario de un sistema de información.

CICLO DE VIDA DEL SOFTWARE

Cuando el proceso implica la construcción de algún producto, solemos referirnos al proceso


como un ciclo de vida. Entonces el proceso de desarrollo del software suele denominarse
ciclo de vida del software

FASES DEL CICLO DE VIDA DE UN SISTEMA DE INFORMACIÓN


Existen tres estrategias para el desarrollo de sistemas:

• El método clásico del ciclo de vida de desarrollo de sistemas.


• El método de desarrollo por análisis estructurado.
• Método de construcción de prototipos de sistemas

FASES PARA EL MÉTODO CLÁSICO.


1. INVESTIGACIÓN

2. REQUERIMIENTOS

• ¿Qué es lo que hace?


• ¿Cómo se hace?
• ¿Con que frecuencia se presenta?
• ¿Qué tan grande es el volumen de transacciones o decisiones?
• ¿Cuál es el grado de eficiencia con el que se efectúan las tareas?
• ¿Existe algún problema? ¿Qué tan serio es? ¿Cuál es la causa que lo origina?

3. Diseño del sistema

4. Desarrollo del software

5. prueba

14
6. Implementación.

MODELO DE CASCADA CLASICO

Análisis de los requisitos: El proceso de recopilación de los requisitos se centra e intensifica


especialmente en lo que el usuario desea del software. El ingeniero de software debe
comprender el modelo de negocio, interfaces requeridas y alcance para satisfacer las
necesidades del cliente.

Diseño del sistema: El diseño del software se enfoca en tres atributos distintos del programa:
la estructura de los datos, la arquitectura del software y el detalle procedimental. El proceso de
diseño traduce los requisitos en una representación del software con la calidad requerida antes
de que comience la codificación.

Diseño del programa: Proceso de recopilación de los requisitos y la caracterización de la


interfaz, tiene que contener una vista agradable al usuario, que no genere molestia y sea de un
manejo rápido.

Codificación: El diseño debe traducirse en una forma legible para la maquina a través de la
codificación utilizando una herramienta de programación. Si el diseño se realiza de una manera
detallada la codificación puede realizarse de una forma fácil y mecánica.

Prueba Unitaria: Una vez que se ha generado el código comienza la prueba del programa. La
prueba se centra en la lógica interna del software, y en las funciones externas, realizando
pruebas que aseguren que la entrada definida produce los resultados que realmente se requieren,
por ejemplo revisar los cálculos en una facturación.

Pruebas integración: Se realizan una vez que las pruebas unitarias fueron concluidas
exitosamente, se debe asegurar que el sistema completo funcione correctamente con los
subsistemas o módulos que lo integran es decir las piezas individuales grandes del software
funcionen correctamente al operar e inter-operar en conjunto, por ejemplo al facturar una venta
se debe crear en línea el asiento contable en contabilidad

15
Prueba/sistema: Ejecutadas por desarrolladores o equipos de prueba, en un ambiente
controlado. Deben demostrar que los sistemas en su totalidad cumplen con los requerimientos
detallados en los documentos de especificaciones de funcionalidad, calidad y eficiencia.

Prueba de aceptación: El uso de cualquier producto de software tiene que estar justificado por
las ventajas que ofrece, antes de empezar a usarlo es muy difícil determinar si sus ventajas
realmente justifican su uso. El mejor instrumento para esta determinación es la llamada 'prueba
de aceptación'. En esta prueba se evalúa el grado de calidad del software con relación a todos
los aspectos relevantes para que el uso del producto se justifique.

Implementación y operación: La implementación y operación de un Sistema de Gestión se


basa en la estructuración de las competencias y la identificación de las necesidades y
requerimientos que deben cumplirse por parte de todos quienes se encuentran involucrados,
para ello es fundamental la capacitación y el seguimiento en producción.

MÉTODO DE DESARROLLO POR ANÁLISIS ESTRUCTURADO

Permite a las personas que observen los elementos lógicos separados de los componentes
físicos

MÉTODO DE CONSTRUCCION PROTOTIPO DE SISTEMAS

La construcción de prototipos representa una estrategia de desarrollo, cuando no es posible


determinar todos los requerimientos del usuario. Es por ello que incluye el desarrollo
interactivo o en continua evolución, donde el usuario participa de forma directa en el proceso.

MODELO DE CASCADA CON PROTIPO

16
Ventajas relevantes en el uso del Prototipo:

1. Modificación del Sistema en Etapas tempranas de su desarrollo.

2. Los cambios iniciales durante el desarrollo de un proyecto son menos costosos

3. la flexibilidad y adaptabilidad son su esencia

4. Eliminación de SISTEMAS indeseables.

5. Diseño de Sistemas acorde a las necesidades y expectativas de los usuarios

6. Permite que los usuarios se involucren desde el principio y lo hace participar en


forma activa.

UNIDAD 5

FASE DE PLANIFICACIÓN

17
DESCRIPCIÓN DE LA FASE

En la descripción se organiza los recursos para alcanzar los objetivos que se ha encontrado en
la evaluación de necesidades.
Cuanto mayor sea la participación de los destinatarios en esta fase el resultado del proyecto
estará más cercano a cubrir las necesidades

Factibilidad

Se refiere a la disponibilidad de los recursos necesarios para llevar acabo los objetivos o metas
señalados. Un estudio de factibilidad permite determinar si se cuenta con el mercado suficiente
para cumplir las proyecciones financieras de un negocio.

La factibilidad se apoya en 3 aspectos básicos:

• Económico
• Técnico
• Operativo

FACTIBILIDAD TÉCNICA.

El análisis de factibilidad técnica evalúa si el equipo y software están disponibles y si tienen


las capacidades técnicas requeridas por cada alternativa

• Los estudios de factibilidad técnica consideran las interfaces entre los sistemas actuales
y nuevos.
• Mejora del sistema actual.
• Disponibilidad de tecnología que satisfaga las necesidades.

Puede ser aplicada a proyectos nuevos o en la restructuración o modernización de ya existentes


y por tanto es útil para cualquier tipo de actividad humana.

Se basa en la evaluación de los recursos disponibles y en el arreglo lógico de los procesos que
permitan la transformación de una situación actual en una mejor situación en el futuro.

Emplea para ello el conocimiento y experiencia del proyectista y de los recursos financieros
del inversionista.

FACTIBILIDAD OPERACIONAL.

Esta factibilidad comprende una determinación de la probabilidad de que un nuevo sistema se


use como se supone.

18
Deberían considerarse cuatro aspectos de la factibilidad operacional:

• Primero, un nuevo sistema puede ser demasiado complejo para los usuarios
de la organización o los operadores del sistema. Si lo es, los usuarios pueden
ignorar el sistema o bien usarlo en tal forma que cause errores o fallas en el
sistema.
• Segundo, un sistema nuevo puede hacer que los usuarios se resistan a él como
consecuencia de una técnica de trabajo, miedo a ser desplazados, intereses en
el sistema antiguo u otras razones.
• Tercero, un nuevo sistema puede introducir cambios demasiado rápido para
permitir al personal adaptarse a él y aceptarlo. Si la factibilidad operacional
indica que tal vez los usuarios no aceptarán el sistema o que su uso resultará
en muchos errores o en una baja en la moral, el sistema no debe implantarse.
• Cuarta, es la probabilidad de la obsolescencia del sistema. La tecnología que
ha sido anunciada pero que aún no está disponible puede ser preferible a la
tecnología que se encuentra en una o más de las alternativas que se están
comparando.

FACTIBILIDAD ECONÓMICA.

Se refiere a que se dispone del capital en efectivo o de los créditos de financiamiento necesario
para invertir en el desarrollo del proyecto.

Pero ese proyecto deberá haber probado que sus beneficios a obtener son superiores a sus costos
en que incurrirá al desarrollar e implementar el proyecto o sistema.

Para esto se determinan los recursos para desarrollar, implantar y mantener en operación el
sistema programado, haciendo una evaluación donde se manifiesta el equilibrio existente entre
los costos del sistema y los beneficios.

• Costos del Sistema actual, que corresponde a los costos generales de materiales de
oficina necesarios para realizar los procesos.
• Costos de personal
• Salarios del personal actual
• Costo del Sistema Propuesto
• Costo de Hardware y Software
• Costo del Nuevo personal o capacitación del
• antiguo
• Análisis de costo-beneficio del sistema propuesto
• y el sistema actual

UNIDAD 6

FASE DE ANÁLISIS Y DISEÑO PARTE 1

19
DESCRIPCIÓN DE LA FASE.

METODOLOGÍAS DE ANÁLISIS Y DISEÑO.

UML COMO METODOLOGÍA DE ANÁLISIS Y DISEÑO.

 UML es un lenguaje para especificar construir, visualizar y documentar la información


generada por procesos de un sistema de software.

VISTAS Y DIAGRAMAS DEL UML.

State
State
Use
UseCase
Case Diagramas de State
Diagrams
Use
UseCase
Case Diagramas
Diagrams de Diagrams
Clases State
Diagramas de
Diagramas
Diagrams de Diagrams
Casos de Uso Diagrams
Diagrams
Diagrams
Secuencia Objetos
Scenario
Scenario State
State
Diagramas
Diagrams de Diagramas de
Diagrams
Diagrams
Colaboración Mod Diagrams
Componentes
Scenario Component
Component
Scenario
Diagramas de Diagramas de
Diagrams
Diagrams
Diagrams Diagramas de
Diagrams
Estados Distribución
Actividad

DIAGRAMA DE CASOS DE USO.

Un caso de uso es una secuencia de acciones realizadas por el sistema, que producen un
resultado observable y valioso para un usuario en particular, es decir, representa el
comportamiento del sistema con el fin de dar respuestas a los usuarios. Toma en cuenta:

 Relaciones entre elementos. Include, extend


 Relaciones entre actores: generalización
 Relaciones entre actores y casos de uso: comunicación.

20
Ejemplo:

DIAGRAMA DE CLASES.

Los diagramas de clases son de estructura estática que muestran las clases del sistema y sus
interrelaciones (incluyendo herencia, agregación, asociación, etc.). Los diagramas de clase son
el pilar básico del modelado con UML, siendo utilizados tanto para mostrar lo que el sistema
puede hacer (análisis), como para mostrar cómo puede ser construido (diseño). Las clases se
documentan con una descripción de lo que hacen, sus métodos y sus atributos. Las relaciones
entre clases se documentan con una descripción de su propósito, sus objetos que intervienen en
la relación y su opcionalidad (cuando es opcional la intervención del objeto en una relación).

• Clase

Es la unidad básica que encapsula toda la información de un Objeto (un objeto es una
instancia de una clase)

21
Ejemplo:

DIAGRAMA DE SECUENCIA.

Los diagramas de secuencia ilustran la interacción entre objetos y el orden secuencial en el que
ocurren dichas interacciones, es decir cómo se comunican los objetos entre sí.

Los objetos se comunican mediante interfaces, para poder invocar a una operación.

• En los Casos de Uso se modelan las características del sistema y se desarrollan


escenarios.
• El diagrama de secuencias proporciona un camino a partir de los escenarios para
describir las operaciones en una forma más detallada

22
Para construir el diagrama se debe:

• Identificar a los objetos participantes


• Dibujar una línea vertical bajo cada objeto, que representa la línea de tiempo
• Cada mensaje se convierte en una línea horizontal del objeto que manda al que recibe.
• Para un mensaje síncrono o procedimiento de llamada se requiere una respuesta.
• Los asíncronos no necesitan respuesta.

DIAGRAMA DE COLABORACIÓN.

Un Diagrama de Colaboración muestra una interacción organizada basándose en los


objetos que toman parte en la interacción y los enlaces entre los mismos (en cuanto a la
interacción se refiere).

UML –Interacciones

 Los objetos interactúan entre sí pasándose mensajes.


 Los objetos se conectan a través de enlaces.

Mensaje: especifica transmisión de información entre objetos.

Enlace: especifica un camino a lo largo del cual un objeto puede enviar un mensaje a otro
objeto.

 Es una conexión semántica entre objetos.


 Es una instancia de una relación.
 El Diagrama de Colaboración modela la interacción entre los objetos de un Caso de
Uso
 Los objetos están conectados por enlaces (links) en los cuales se representan los
mensajes enviados acompañados de una flecha que indica su dirección
 El Diagrama de Colaboración ofrece una mejor visión del escenario cuando el analista
está intentando comprender la participación de un objeto en el sistema

Ejemplo

23
:Socio

:Video

2: verificar situación socio

1: prestar(video, socio) 3: verificar situación video


:WInPréstamos

5: entregar recibo
: Encargado 4: registrar préstamo

:Préstamo

DIAGRAMA DE ACTIVIDAD

En un diagrama de actividades se muestra un proceso de negocio o un proceso de software


como un flujo de trabajo a través de una serie de acciones. Estas acciones las pueden llevar a
cabo personas, componentes de software o equipos.

• Puede usar un diagrama de actividades para describir procesos de diversos tipos, como
los ejemplos siguientes:
– Un proceso de negocio o un flujo de trabajo entre los usuarios y el sistema.
– Los pasos realizados en un caso de uso.
– Las secuencias de interacciones permitidas entre los componentes.
– Un algoritmo de software.
• El Diagrama de Actividades puede especificar:
• El comportamiento de los objetos de una clase
• La lógica de una operación (método)
• Parte o toda la descripción de un Caso de uso
• La descripción de un Flujo de Trabajo

Ejemplo:

24
Buscar Bebida [ no hay café ] [ no zumo ]

[ hay café ]
[ hay zumo ]

Poner café Añadir agua Coger taza


en filtro al depósito Coger
zumo

Poner filtro
en máquina

Encender
máquina

/ cafetera.On

Café en
preparación

indicador de fin

Servir café Beber

DIAGRAMA DE ESTADOS

Un estado es una condición o situación en la vida de un objeto durante la cual satisface una
condición, realiza alguna actividad o espera algún evento. Es decir pasa a otro estado por medio
de un evento.

Un evento es la especificación de un acontecimiento significativo que ocupa un lugar en el


tiempo y en el espacio.

Una transición es una relación entre 2 estados

Diferencia entre estado y actividad


Ejemplo:

25
DIAGRAMA DE COMPONENTES.

"Los diagramas de componentes se generan a partir del diagrama de clases”

• Pasos para la elaboración de un diagrama de componentes:


• Previamente al diagrama de componentes debemos tener hecho el diagrama de las
clases.
• Se debe identificar a todas las clases que participaran en el sistema o sub sistema a
desarrollar.
• Una vez identificadas las clases, se procede a identificar sus métodos.
• Estos métodos pasaran a ser módulos con líneas de código independientes.
• Estos módulos serán los componentes de nuestro diagrama.
• Estos componentes se relacionan entre si por medio de sus interfaces

Ejemplo:

26
DIAGRAMA DE DESPLIEGUE.

Un Diagrama de Despliegue modela la arquitectura en tiempo de ejecución de un sistema. Esto


muestra la configuración de los elementos de hardware (nodos) y muestra cómo los elementos
y artefactos del software se trazan en esos nodos.

Nodo
Un Nodo es un elemento de hardware o software

Instancia
Una instancia de nodo se puede distinguir desde un nodo por el hecho de que su nombre esta
subrayado y tiene dos puntos antes del tipo de nodo base.

Asociación
En el contexto del diagrama de despliegue, una asociación representa una ruta de comunicación
entre los nodos. Ejemplo

27
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Sistemas de Informacion II

Elaborado por:
Ing. Aura Romero

Revisado por:
Ing. Miguel Quiroz

[30/Septiembre/2016] – versión 1.0


28
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

1
Contenido
CAPITULO1 ...........................................................................................................................5
INTERFACES DE SISTEMAS DE INFORMACIÓN ........................................................... 5
MODELO CASCADA PARA EL DESAROLLO DEL SOFTWARE ..................................... 6
Analogía cómica del desarrollo de un S.I. ......................................................................... 7
Arquitectura de un Sistema de Información ....................................................................... 7
Introducción ....................................................................................................................... 8
Definiciones de la Ingeniería de Requisitos ....................................................................... 8
Técnicas y Herramientas utilizadas en las actividades de Ingeniería de Requisitos: ......... 8
CAPÍTULO2 METODOLOGÍA DE IMPLANTACIÓN ....................................................18
Proceso de administración en la implantación de proyectos ............................................ 19
Estructura Organizacional ............................................................................................... 19
Metodología .................................................................................................................... 19
Implantar Aplicaciones .................................................................................................... 19
Etapas del Proyecto (Cronograma General) .................................................................... 20
Etapa I: Inicio................................................................................................................... 20
Etapa II: Análisis Detallado .............................................................................................. 21
Etapa III: Ajustes ............................................................................................................. 21
Etapa IV: Migración de Datos .......................................................................................... 21
Etapa V: Capacitación ..................................................................................................... 22
Etapa VI: Instalación y Pruebas ....................................................................................... 22
Etapa VII: Producción y Paralelo ..................................................................................... 22
Etapa VIII: Entrega y Aceptación ..................................................................................... 23
CAPÍTULO3 FASE DE IMPLEMENTACIÓN MIGRACIÓN DE DATOS ....................23
Migración de Datos.......................................................................................................... 23
DISEÑO LÓGICO: MODELO ENTIDAD .......................................................................... 23
NORMALICE: .................................................................................................................. 24
Migración de datos .......................................................................................................... 25
Etapas de Migración de Datos: ........................................................................................ 25
Producción y Paralelo...................................................................................................... 26
Entrega y Aceptación ...................................................................................................... 26
Prueba del Sistema ......................................................................................................... 27
Pasos en el Proceso de Prueba ...................................................................................... 27
Plan de Pruebas de Aceptación ...................................................................................... 27
Revisión de requerimientos ............................................................................................. 27
2
Plan de Pruebas de Aceptación ...................................................................................... 28
Plan de Pruebas de Aceptación ...................................................................................... 28
Instrucciones de la prueba:.............................................................................................. 28
Granularidad.................................................................................................................... 29
Pruebas con granularidad fina: ........................................................................................ 29
Pruebas con granularidad gruesa: ................................................................................... 29
Uso de pruebas de aceptación: ....................................................................................... 29
CAPITULO 4 ........................................................................................................................29
EJECUCIÓN DE UN MODELO DE NEGOCIO BAJO E-COMMERCE..........................29
CAPÍTULO5 ANÁLISIS POST-IMPLEMENTACIÓN ....................................................42
Post-Producción: Garantía .............................................................................................. 42
Post-Producción: Soporte Técnico .................................................................................. 42
Servicios (Nuevos requerimientos) .................................................................................. 42
Estándares utilizados ...................................................................................................... 42
Esquema ......................................................................................................................... 43
Resultado: Solución vertical ............................................................................................ 43
Evaluación de Sistemas Socio-Técnicos ......................................................................... 43
Propiedades Emergentes ................................................................................................ 43
Evaluación de Sistemas Críticos ..................................................................................... 44
Conceptos Generales ...................................................................................................... 44
Evaluación de Sistemas Críticos ..................................................................................... 44
Confiabilidad de Sistemas Críticos .................................................................................. 44
Atributos de la Confiabilidad en los Sistemas Críticos ..................................................... 44
Tipos de Mantenimiento .................................................................................................. 45
El Control del Cambio...................................................................................................... 46
AUDITORIA DE SISTEMAS ............................................................................................ 47
Tipos de Auditoría de Sistemas. ...................................................................................... 47
C APITULO 6 .......................................................................................................................51
ARQUITECTURA DE TECNOLOGIAS DE INFORMACION.........................................51
Arquitectura de TI ............................................................................................................ 51
ARQUITECTURA DE SISTEMAS DE INFORMACION ................................................... 53
Arquitectura VS Diseño ................................................................................................... 55
CAPITULO 7 ........................................................................................................................55
Mantenimiento del Software .................................................................................................55
Definición ........................................................................................................................ 55
3
TIPOS DE MANTENIMIENTO ......................................................................................... 56
Mantenimiento Correctivo ................................................................................................ 56
Mantenimiento Adaptativo ............................................................................................... 57
Mantenimiento Perfectivo ................................................................................................ 57
Mantenimiento Preventivo ............................................................................................... 58
ACTIVIDADES DE MANTENIMIENTO ............................................................................ 58
Tipos de Actividades del mantenimiento.......................................................................... 59
Prueba del Sistema de un Sistema de Información ......................................................... 59
Niveles de Pruebas ......................................................................................................... 60
Pruebas de aceptación .................................................................................................... 61
Ambiente de Pruebas ...................................................................................................... 61
Procedimiento de Pruebas .............................................................................................. 61
Ejemplo de Pruebas ........................................................................................................ 62
Proyecto de construcción de software para apoyo al Juego Gerencial ........................... 62
Estrategia de Pruebas ..................................................................................................... 62
Carga de datos ................................................................................................................ 62
Validación de simulaciones ............................................................................................. 63
Pilotos de Pruebas .......................................................................................................... 63

4
CAPITULO1
FASE DE ANÁLISIS Y DISEÑO DE S.I.

INTERFACES DE SISTEMAS DE INFORMACIÓN

5
Módulos para el Control Administrativo y Contable

Interfase en línea entre los programas

MODELO CASCADA PARA EL DESAROLLO DEL SOFTWARE

6
Analogía cómica del desarrollo de un S.I.

Arquitectura de un Sistema de Información


Arquitectura de Sistemas de Información es una serie de principios, líneas guía y reglas usadas
por una empresa u organismo en la realización de los procesos de compra, construcción,

7
modificación e interconexión de los sistemas de información a través de la organización,
incorporando progresivamente criterios de industrialización y reutilización de componentes.

Arquitectura de un Sistema de Información


El método de arquitectura de planeación de los Sistemas de Información es un plan de selección
de la tecnología de información y el desarrollo de los sistemas de información necesarios para
apoyar el cometido de la empresa. Los componentes principales son:
– Arquitectura de Datos.
– Arquitectura de Redes.
– Arquitectura de Actividades (Arquitectura de Aplicaciones).
– Arquitectura de Personas (Estructura de la organización).
– Arquitectura de Tecnología (Para usar en las Aplicaciones y en su desarrollo).

Introducción

• El desarrollo del software es una de las actividades más complejas y más orientadas al
cliente de las desarrolladas por la industria en nuestros días.
• Para poder resolver la complejidad creciente de los sistemas, y obtener la calidad
demandada por los clientes, los desarrolladores de sistemas de información han de
seguir métodos más rigurosos de ingeniería y dirección de los proyectos de software.
• El primer paso para la consecución del éxito en el desarrollo de software es una correcta
especificación de los requisitos.

Definiciones de la Ingeniería de Requisitos

 La Ingeniería de Requisitos ayuda a los ingenieros de software a entender mejor el


problema en cuya solución trabajarán. Incluye el conjunto de tareas que conducen a
comprender cuál será el impacto del software sobre el negocio, qué es lo que el cliente
quiere y cómo interactuarán los usuarios finales con el software. [Pressman, 2006: 155]
 La Ingeniería de Requisitos es el proceso de desarrollar una especificación de software.
Las especificaciones pretenden comunicar las necesidades del sistema del cliente a los
desarrolladores del sistema. [Sommerville, 2005: 82]
 La Ingeniería de Requisitos se define, como un conjunto de actividades en las cuales,
utilizando técnicas y herramientas, se analiza un problema y se concluye con la
especificación de una solución (a veces más de una). [Ortas 1997]

Técnicas y Herramientas utilizadas en las actividades de Ingeniería


de Requisitos:

8
 Entrevistas y cuestionarios
 Sistemas existentes
 Grabaciones de video y de audio
 Brainstorming (tormenta de ideas)
 Arqueología de documentos
 Aprendiz.
 Observación
 Run Use Case WorkShop (talleres de trabajo basados en los Casos de Uso)
 Prototipos
 Análisis FODA (Fortalezas, Oportunidades, Debilidades y Amenazas)
 Cadena de valor
 Modelo de clase conceptual, Diagrama Conceptual, Diagrama de Clases Conceptual
 Diagrama de pescado (Ishikawa Diagram, Cause-and-Effect o Fishbone Diagram)
 Glosario
 Diagrama de actividad
 Lista de requerimientos
 Casos de uso
 Casa de calidad o QFD (Quality Function Deployment)
 Checklist (lista de verificación)

9
10
11
12
13
14
15
16
17
CAPÍTULO2
METODOLOGÍA DE IMPLANTACIÓN

18
Proceso de administración en la implantación de proyectos

Organización de proyectos.
Una Metodología
Objetivos y metas claras y completas.
Controles continuos del proceso.
Conocimiento del cliente, soporte y experiencia de la tecnología a utilizar.
Conclusión

Estructura Organizacional
Comité del
proyecto

Usuarios Sistemas

Jefe
Proyecto

DBA Especialistas

Consultores

Técnicos

Metodología

Ha sido desarrollada a partir de estándares, técnicas y métodos aceptados globalmente,


y mejorada constantemente a partir de nuestras experiencias.

Implantar Aplicaciones

Núcleo
19
 Administración y Seguridades
 Parámetros Generales
 Clientes y Contratos
WorkFlow
Gestión de Clientes
Convenios de Pago
Depósitos en Garantía
Facturación
Recaudación
Infraestructura y órdenes de trabajo
Lecturas y Mediciones
Utilitarios
Interfaces

Etapas del Proyecto (Cronograma General)

Etapa I: Inicio

Revisión de la metodología
Definición del Comité Ejecutivo (Semanal)
Definición del Grupo de Usuarios

20
Elaboración del Plan Inicial del Proyecto
Preparación del Ambiente de Trabajo
Instalación de la Aplicación

Entregables:
Cronograma General
Cronograma detallado de Análisis
Informe Semanal de Avance
Informe de Novedades
Acta de Comité Técnico
Acta de Instalación inicial

Etapa II: Análisis Detallado

Estudio detallado de Interfaces


Revisión del ambiente de Producción
Revisión de Modelos Conceptuales base
Preparar Modelos Conceptuales Revisados

Entregables:
Modelos Conceptual Revisados (MCR)

Etapa III: Ajustes

Revisión del diseño


Ajuste de Aplicaciones
Ajuste y desarrollo de Interfaces
Ajuste a Procesos

Entregables:
Cronograma detallado de Ajustes

Etapa IV: Migración de Datos

Adecuación de Plantillas
Preparación de Datos
Carga de Datos
Prueba y aceptación de datos

21
Entregables:
Guías de Carga de Datos
Modelos E-R
Plantillas de Datos
Informe de Migración

Etapa V: Capacitación

Capacitación de Usuarios
Capacitación Técnica
Evaluación a estudiantes
Evaluación a instructor

Entregables:
Cronograma de Capacitación
Plan de Capacitación
Evaluación Informe final

Etapa VI: Instalación y Pruebas

Instalación en Producción
Elaboración del Plan de Pruebas y detallar los criterios de aceptación
Pruebas con usuarios
Aceptación de las aplicaciones

Entregables:
Guías de Instalación
Programas y documentación ajustados (para pruebas)
Plan de Pruebas y Criterios de Aceptación
Resultados de Pruebas

Etapa VII: Producción y Paralelo

Migración Final de datos


Soporte en el Paralelo

Entregables:

22
Acta Entrega/Recepción Provisional

Etapa VIII: Entrega y Aceptación

Entrega de Programas y manuales versión final


Entrega del Proyecto

Entregables:

Manual de Usuarios Manual de Diseño Programas fuentes y ejecutables


Acta de Entrega/Recepción final.

CAPÍTULO3
FASE DE IMPLEMENTACIÓN MIGRACIÓN DE DATOS

Migración de Datos

Adecuación de Plantillas
Preparación de Datos
Carga de Datos
Prueba y aceptación de datos

Entregables:
Guías de Carga de Datos
Modelos E-R
Plantillas de Datos
Informe de Migración

DISEÑO LÓGICO: MODELO ENTIDAD

23
NORMALICE:

24
Migración de datos

Para realizar la migración de datos, es muy importante establecer los datos que se requieren en
el nuevo sistema y la ubicación de los datos en el antiguo sistema. También es necesario,
conocer el(los) dueño(s) de la información y los criterios de depuración que tendrán los datos
seleccionados, para asegurar una óptima calidad de ellos.

Etapas de Migración de Datos:

Levantamiento de Información: Esta etapa contempla la definición de los datos que requiere
el nuevo sistema y la identificación de la fuente de origen.
Análisis de Calidad: En esta etapa se verifica la calidad de los datos, con el propósito de
establecer los tiempos reales de las etapas de Transformación, Limpieza y Mapeo de Datos.
Transformación/Mapeo de datos: Esta etapa, contempla la definición de los diccionarios con
las reglas de transformación y el mapeo de campos entre las fuentes de origen y destino.
Limpieza de Datos: Esta etapa contempla la depuración de los datos en las fuentes de origen.
Construcción ETCL: Esta etapa, se realiza la construcción de los extractores, transformadores
e inyectores de datos.
Pruebas: En esta etapa, se realizan las pruebas funcionales de la migración de datos,
determinando que la información sea traspasada con éxito al nuevo sistema.
Simulación de Cargas: En esta etapa, se pretende identificar los inconvenientes que se podrían
tener en las cargas reales, a través de la simulación del proceso real.
Cargas Reales: En esta etapa, se realiza la migración real de los datos desde el antiguo sistema
al nuevo sistema.

25
Revisión de Resultados: En esta etapa, se realiza la revisión final de la información cargada
al nuevo sistema.

Producción y Paralelo

Migración Final de datos


Soporte en el Paralelo

Entregables:
Acta Entrega/Recepción Provisional

Entrega y Aceptación

Entrega de Programas y manuales versión final


Entrega del Proyecto

Entregables:
Manual de Usuarios Manual de Diseño Programas fuentes y ejecutables
Acta de Entrega/Recepción final.

26
Prueba del Sistema

El proceso de prueba del sistema

La prueba de un sistema involucra varios pasos:


1. prueba de función
2. prueba de rendimiento
3. prueba de aceptación
4. prueba de instalación

Pasos en el Proceso de Prueba

Pruebas del Sistema


Las pruebas de función verifica que el sistema integrado realice las funciones
especificadas en los requerimientos referentes a la actualización de datos.
La prueba de rendimiento o perfomance compara el rendimiento de los componentes
integrados con los requerimientos no funcionales del sistema (Velocidad, confiabilidad,
exactitud, etc.).
La prueba de aceptación asegura a los clientes que el sistema que pidieron es el sistema
que se construyó para ellos (pruebas alfa y beta).
La prueba de instalación permite que los usuarios ensayen las funciones del sistema y
documenten todos los problemas adicionales surgidos de la puesta del sistema en el
sitio real.

Plan de Pruebas de Aceptación

Revisión de requerimientos
• Cómo el cliente valida que el sistema desarrollado satisface sus requerimientos?
27
• Cómo el equipo de desarrollo verifica que:
• Los modelos de análisis satisfacen los requerimientos?
• Los modelos de diseño satisfacen los requerimientos?
• La implementación satisface los requerimientos?
Mediante un plan de pruebas.

Plan de Pruebas de Aceptación

Plan de pruebas
• Los casos de prueba deben ser establecidos desde la perspectiva del cliente.
• El plan de casos de pruebas de aceptación es parte del contrato.
• Si el sistema pasa todas las pruebas del plan de aceptación, el cliente ACEPTARA que el
sistema satisface los requerimientos.
• El contrato es satisfecho.
• El cliente paga (US$).

Plan de Pruebas de Aceptación

Para cada caso de Prueba de aceptación se debe tener en cuenta:


• Nombre del grupo de prueba: Grupo lógico de pruebas
• Número de prueba: Identificador único para el caso de prueba.
• Pre-requisitos: Una descripción de la situación (contexto) en el cual la prueba será corrida.
• Instrucciones de configuración: Como fijar el contexto de la prueba.
 Instrucciones de la prueba: Como correr la prueba.
 Comportamiento aceptable: Descripción del comportamiento que el sistema
debe mostrar para indicar que ha satisfecho los requerimientos.
 Prueba desarrollada en: Fecha y hora cuando la prueba fue efectuada.
 Resultado de la prueba: Pasó o falló la prueba.

Instrucciones de la prueba:

• Empleado ingresa número de membresía de Raúl.


• Sistema muestra la información de Raúl, indicando que tiene buen crédito.
• Empleado ingresa información de la copia del video
• Sistema muestra la cantidad a cancelar por la renta
• Empleado ingresa la información de pago
Comportamiento aceptable:
• Sistema actualiza la información para indicar que Raúl tiene rentada una copia de
Terminator IV.
28
• Sistema imprime un recibo indicando la renta y la cantidad pagada.

Granularidad

Pruebas con granularidad fina:

• Realizar una prueba por cada escenario de un caso de uso. Al facturar se valida al cliente,
existencia de artículos y forma de pago.
• Incluye pruebas de la interface con el usuario, aplicable al escenario.

Pruebas con granularidad gruesa:

• Una prueba cubre la funcionalidad de muchos casos de uso.


• Incluye pruebas de la interface con el usuario, aplicable a la funcionalidad definida en los
casos de uso involucrados. Se compran artículos y se venden, los mismos que afectan el stock.

Uso de pruebas de aceptación:

Durante análisis y diseño:


 Si está disponible un prototipo, utilícelo para realizar las pruebas que orienten al
cliente.
 Utilice modelos de análisis y diseño para determinar cómo va a trabajar el sistema para
proveer y soportar la funcionalidad
 Chequear la consistencia entre modelos

Cuando está disponible una aplicación:

 Use ejecutables para desarrollar la prueba


 Chequear la consistencia entre los modelos y la implementación

CAPITULO 4

EJECUCIÓN DE UN MODELO DE NEGOCIO BAJO E-COMMERCE

29
30
31
32
33
34
35
36
37
38
39
40
41
CAPÍTULO5
ANÁLISIS POST-IMPLEMENTACIÓN

Post-Producción: Garantía

Generalmente es de seis meses, depende del proceso de negociación.


Consultas de soporte telefónico, fax, correo electrónico o comunicación remota.
Atención de inconsistencias encontradas a través de actualización de paquetes.
Asistencia técnica en sitio condicionada.

Post-Producción: Soporte Técnico

Generalmente es contratada una vez terminada la garantía técnica, incluye:


 Actualizaciones de Versión
 Consultas de soporte telefónico, fax, correo electrónico o comunicación remota.
 Atención de inconsistencias encontradas a través de actualización de paquetes.
 Se debe establecer un contrato de mantenimiento.

Servicios (Nuevos requerimientos)

Entrega de requerimientos.
Levantamiento de información (Definición de requerimientos del cliente).
Entregamos propuesta de requerimientos nuevos.
Proceso de análisis y diseño del ajuste (Definición de requerimientos de software).
Entrega y recepción de requerimientos.

Estándares utilizados

Estándar de diseño
Estándar de desarrollo de software
Estándar de pantallas
Estándar de reportes
Estándar de iconos

42
Esquema

Resultado: Solución vertical

Evaluación de Sistemas Socio-Técnicos

Propiedades Emergentes
 Volumen: El espacio total ocupado varía dependiendo de cómo están ordenados y
conectados los montajes de los componentes de hardware, software, políticas y
personas.
 Fiabilidad: Depende la fiabilidad de los componentes, interacciones inesperadas en los
procesos pueden causar nuevos tipos de fallos y afectar la confianza del usuario hacia
el sistema.
 Protección: Es la capacidad para resistir ataques, es una propiedad compleja que no se
puede medir fácilmente. Los ataques pueden ser ideados de forma que no fueron
previstos por los diseñadores y así vencer las protecciones incorporadas.
 Reparabilidad: Poder arreglar un problema con el sistema una vez que haya sido
descubierto. Depende de la posibilidad de diagnosticar el problema, acceder a los
componentes defectuosos y modificarlos o reemplazarlos.
 Usabilidad: Refleja cómo es de fácil usar el sistema. Dependiendo de los componentes
técnicos del sistema, sus operarios y su entorno de operaciones.

43
Evaluación de Sistemas Críticos

Conceptos Generales
 Sistemas Críticos: Son aquellos sistemas en donde un fallo de funcionamiento puede
provocar pérdidas económicas importantes, daños físicos o amenazas a la vida humana.
 Clases de Sistemas Críticos:
 A) Sistemas de seguridad crítico: Sistemas cuyo fallo de funcionamiento puede
provocar perjuicio, pérdidas de vida, o daños al medio ambiente. Ej: Planta de
fabricación de productos químicos o armamento militar.
 B) Sistemas de misión críticos: Sistemas cuyo fallo de funcionamiento puede provocar
errores en actividades dirigidas por objetivos. Ej: Sistema de navegación para los
aviones o naves espaciales.
 C) Sistemas de negocios críticos: Sistemas cuyo fallo de funcionamiento puede
provocar costos muy elevados para el negocio que los utiliza, ya sea por errores en los
cálculos o manejo de dinero electrónico. Ej: Sistema de manejo de cuentas bancarias,
facturación o roles de pago.

Evaluación de Sistemas Críticos

Confiabilidad de Sistemas Críticos


 Confiabilidad: Propiedad que refleja el grado de confianza que el usuario tiene sobre
el sistema. Los atributos más importantes de la confiabilidad son la disponibilidad,
fiabilidad, seguridad y protección.
 Ejemplos de confiabilidad:
 Un servidor de internet proporcionado por un ISP con miles de clientes. Quality of
service (calidad de servicio).
 Un escalpelo controlado por computadora usada para practicar incisiones en
operaciones quirúrgicas.
 Un sistema de control direccional usada en el lanzamiento de un vehículo espacial.
 Un sistema de gestión de finanzas personales, a través de internet.

Evaluación de Sistemas Críticos

Atributos de la Confiabilidad en los Sistemas Críticos


 Disponibilidad: Atributo que el sistema posee para poder entregar los servicios a los
usuarios cuando se le soliciten en cualquier momento. Ej: Los sistemas que utilizan las
44
entidades públicas y privadas para el cobro de facturas de acuerdo al horario. Los
servicios de internet, cajeros automáticos y telefónicos con horarios 24x7.
 Fiabilidad: Atributo del sistema para entregar los servicios de acuerdo a lo
especificado, de forma correcta, sin fallas o caídas. Si un sistema no es fiable es difícil
asegurar su seguridad o protección.
 Seguridad: Atributo que refleja la capacidad del sistema para funcionar normalmente,
sin amenazar o provocar daños a las personas, al negocio o al entorno del sistema, aún
si éste fallase.
 Protección: Atributo que refleja la capacidad para protegerse o resistir ataques
externos que pueden ser accidentales, negligentes o provocados.

Tipos de Mantenimiento

EL desarrollo de software involucra 4 tipos de mantenimiento


 Mantenimiento Correctivo: Mantener el control sobre las funciones diarias del
sistema y su normal operación.
 Mantenimiento Adaptivo: Mantener el control sobre las modificaciones del sistema
para que se adapte a nuevos ambientes o entornos.
 Mantenimiento Perfectivo: Perfeccionar las funciones aceptables existentes en lo que
respecta a velocidad, rendimiento y efectividad.
45
 Mantenimiento Preventivo: Impedir que el desempeño del sistema se degrade a
niveles inaceptables

El Control del Cambio

Dentro de todo proceso de mantenimiento de Software es necesario Gestionar los


cambios de manera eficaz conociendo primeramente las respuestas a las siguientes
preguntas:
Sincronización: ¿Cuándo se hizo el cambio?
Identificación: ¿Quién lo hizo?
Denominación: ¿Qué componentes del sistema se cambiaron?
Autenticación: ¿Fue hecho correctamente?
Autorización: ¿Quién autorizó la realización del cambio?
Ruta seguida: ¿Quién fue notificado del cambio?
Cancelación: ¿Quién puede cancelar la solicitud de cambio?
Delegación: ¿Quién es el responsable por el cambio?
Valoración: ¿Cuál es la prioridad del cambio ?

46
AUDITORIA DE SISTEMAS

• La auditoría informática es un proceso llevado a cabo por profesionales especialmente


capacitados para el efecto, y que consiste en recoger, agrupar y evaluar evidencias para
determinar si un sistema de Información salvaguarda el activo empresarial, mantiene la
integridad de los datos, lleva a cabo eficazmente los fines de la organización, utiliza
eficientemente los recursos, y cumple con las leyes y regulaciones establecidas.

Los objetivos de la auditoría Informática son:


- El análisis de la eficiencia de los Sistemas Informáticos
- La verificación del cumplimiento de la Normativa en este ámbito
- La revisión de la eficaz gestión de los recursos informáticos.

La auditoría informática sirve para mejorar ciertas características en la empresa como:


Desempeño, Fiabilidad, Eficacia, Rentabilidad, Seguridad y Privacidad.

Tipos de Auditoría de Sistemas.

Dentro de la auditoría informática destacan los siguientes tipos (entre otros):


• Auditoría de la gestión: la contratación de bienes y servicios, documentación de los
programas, etc.
• Auditoría legal del Reglamento de Protección de Datos: Cumplimiento legal de las
medidas de seguridad exigidas por el Reglamento de desarrollo de la Ley Orgánica de
Protección de Datos.
• Auditoría de los datos: Clasificación de los datos, estudio de las aplicaciones y análisis
de los flujogramas.
• Auditoría de las bases de datos: Controles de acceso, de actualización, de integridad
y calidad de los datos.
• Auditoría de la seguridad: Referidos a datos e información verificando disponibilidad,
integridad, confidencialidad, autenticación y no repudio.
• Auditoría de la seguridad física: Referido a la ubicación de la organización, evitando
ubicaciones de riesgo, y en algunos casos no revelando la situación física de esta.

47
También está referida a las protecciones externas (arcos de seguridad, vigilantes, etc.)
y protecciones del entorno.
• Auditoría de la seguridad lógica: Comprende los métodos de autenticación de los
sistemas de información.
• Auditoría de las comunicaciones. Se refiere a la auditoria de los procesos de
autenticación en los sistemas de comunicación.
• Auditoría de la seguridad en producción: Frente a errores, accidentes y fraudes.

48
49
50
CAPITULO 6
ARQUITECTURA DE TECNOLOGIAS DE INFORMACION

Arquitectura de TI

• Se conoce como tecnología de información (TI) a la utilización de tecnología,


específicamente computadoras y ordenadores electrónicos, para el manejo y
procesamiento de información, como la captura, transformación, almacenamiento,
protección, y recuperación de datos e información.

51
• El departamento o equipo que dentro de una organización ejerce las funciones de TI se
encarga de estudiar, diseñar, desarrollar, implementar y administrar los sistemas de
información utilizados para el manejo de datos e información de toda la organización.
Estos sistemas, a su vez, comprenden aplicaciones o software, y equipos o hardware.
• La arquitectura de TI se compone de dominios tecnológicos que facilitan sus estudio,
aplicación y análisis estructurado.

Dentro de sus Dominios encontramos los siguientes:


• Aplicativo
• Colaboración
• Datos y Data Warehouse
• Telecomunicaciones
• Cómputo
• Seguridad
• Internet/Extranet
• Administración de Sistemas

• “Sistema que guía la selección, modificación y uso de los recursos de TI de forma que
cumple con las necesidades del negocio”
• Al diseñar la arquitectura de TI es necesario considerar los requerimientos de procesos,
aplicaciones y datos de la organización.
• La Arquitectura de TI engloba tres arquitecturas que deben ser consideradas dentro de
su diseño:
• Arquitectura de Procesos de negocio.
• Arquitectura de Aplicaciones.
• Arquitectura de Datos.
• Arquitectura de Procesos de negocio.
• Define la estrategia del negocio, sus políticas, organizaciones y procesos clave.
• Por lo cual la Arquitectura de Tecnologías de Información necesita sustentar los
objetivos de la institución.
• Arquitectura de Aplicaciones.
• Define el diseño de los sistemas y aplicaciones que serán desarrolladas, sus
interacciones y sus relaciones con los procesos de la organización.
• Las aplicaciones usan los servicios de la arquitectura de TI para lograr
características tales como interoperabilidad, seguridad, etc.
• Arquitectura de Datos.
• Describe la estructura de datos física y lógica de una organización y los recursos
para administrar los datos.
• La arquitectura de TI deberá sustentar requerimientos tales como de
almacenamiento, acceso, distribución y seguridad.

52
ARQUITECTURA DE SISTEMAS DE INFORMACION

SISTEMAS DE INFORMACION
• Un sistema de información es un conjunto de elementos orientados al tratamiento y
administración de datos e información, organizados y listos para su uso posterior,
generados para cubrir una necesidad u objetivo. Dichos elementos formarán parte de
alguna de las siguientes categorías:
• Personas.
• Datos.
• Actividades o técnicas de trabajo.
• Recursos materiales en general (generalmente recursos informáticos y de
comunicación, aunque no necesariamente).

• Hay tres actividades en un sistema de información que producen la información que


esas organizaciones necesitan para tomar decisiones, controlar operaciones, analizar
problemas y crear nuevos productos o servicios. Estas actividades son:
• Entrada: captura o recolecta datos en bruto tanto del interior de la organización
como de su entorno externo.
• Procesamiento: convierte esa entrada de datos en una forma más significativa.
• Salida: transfiere la información procesada a la gente que la usará o a las
actividades para las que se utilizará.
• La primera clasificación se basa en la jerarquía de una organización y se llamó el
modelo de la pirámide. Según la función a la que vayan destinados o el tipo de usuario
final del mismo, los SI pueden clasificarse en:
• Sistema de procesamiento de transacciones (TPS).- Gestiona la información
referente a las transacciones producidas en una empresa u organización, también se le
conoce como Sistema de Información operativa.
• Sistemas de información gerencial (MIS).- Orientados a solucionar problemas
empresariales en general.
• Sistemas de soporte a decisiones (DSS).- Herramienta para realizar el análisis de las
diferentes variables de negocio con la finalidad de apoyar el proceso de toma de
decisiones.
• Sistemas de información ejecutiva (EIS).- Herramienta orientada a usuarios de nivel
gerencial, que permite monitorizar el estado de las variables de un área o unidad de la
empresa a partir de información interna y externa a la misma. Es en este nivel cuando
los sistemas de información manejan información estratégica para las empresas.

53
• Diseño particular que la Tecnología de Información toma en una organización
específica para alcanzar las metas o funciones seleccionadas.

• Impactos positivos de los sistemas de Información:

• Pueden efectuar cálculos o procesar documentos mucho más rápido que la


persona
• Pueden ayudar a que la organización aprenda sobre las preferencias de sus
usuarios
• Propician nuevos rendimientos mediante servicios novedosos (marcado de
tarjeta, etc.)
• Internet distribuye información al instante a millones de personas

• Impactos negativos de los sistemas de Información:

• Al automatizar procesos, crea desempleo


54
• Posibilita a la organización recolectar detalles personales de la gente
• Una paralización del sistema puede generar paro de la organización y de la
comunidad
• Los usuarios que utilizan intensivamente los SI pueden tener problemas de
salud (stress técnico, etc.)
• Internet se puede utilizar para distribuir piratería anulando la propiedad
intelectual

Arquitectura VS Diseño

• La arquitectura envuelve un conjunto de decisiones estratégicas de diseño,


lineamientos, reglas y patrones que restringen el diseño y la implementación de un
software.

CAPITULO 7
Mantenimiento del Software

Definición

El estándar IEEE 1219 [IEEE, 1993] define el Mantenimiento del Software como “la
modificación de un producto software después de haber sido entregado [a los usuarios o
clientes] con el fin de corregir defectos, mejorar el rendimiento u otros atributos, o adaptarlo a
un cambio en el entorno”.
55
Funcionamiento

TIPOS DE MANTENIMIENTO

Mantenimiento Correctivo

El mantenimiento correctivo tiene por objetivo localizar y eliminar los posibles defectos de los
programas.
Es aquel que corrige los defectos observados en los equipamientos o instalaciones, en la forma
más básica de mantenimiento y consiste en localizar averías o defectos y corregirlos o
repararlos.
Un defecto en un sistema es una característica del sistema con el potencial de causar un fallo.
Un fallo ocurre cuando el comportamiento de un sistema es diferente del establecido en la
especificación.

Entre otros, los fallos en el software pueden ser de:


56
 Procesamiento, por ejemplo, salidas incorrectas de un programa.
 Rendimiento, por ejemplo, tiempo de respuesta demasiado alto en una búsqueda de
información.
 Programación, por ejemplo, inconsistencias en el diseño de un programa.
 Documentación, por ejemplo, inconsistencias entre la funcionalidad de un programa y
el manual de usuario.

Mantenimiento Adaptativo

Este tipo de mantenimiento consiste en la modificación de un programa debido a cambios en


el entorno (hardware o software) en el cual se ejecuta.
Estos cambios pueden afectar al sistema operativo (cambio a uno más moderno), a la
arquitectura física del sistema informático (paso de una arquitectura de red de área local a
Internet/Intranet) o al entorno de desarrollo del software (incorporación de nuevos elementos
o herramientas como ODBC).
El tipo de cambio necesario puede ser muy diferente: desde un pequeño retoque en la estructura
de un módulo hasta tener que re escribir prácticamente todo el programa para su ejecución en
un ambiente distribuido en una red.
Los cambios en el entorno software pueden ser de dos clases:
 En el entorno de los datos, por ejemplo, al dejar de trabajar con un sistema de ficheros
clásico y sustituirlo por un sistema de gestión de bases de datos relacionales.
 En el entorno de los procesos, por ejemplo, migrando a una nueva plataforma de
desarrollo con componentes distribuidos, Java, ActiveX, etc.

Mantenimiento Perfectivo

Perfeccionar las funciones aceptables existentes en lo que respeta a velocidad, rendimiento y


efectividad.
Cambios en la especificación, normalmente debidos a cambios en los requisitos de un producto
software, implican un nuevo tipo de mantenimiento llamado perfectivo.
Desde algo tan simple como cambiar el formato de impresión de un informe, hasta la
incorporación de un nuevo módulo aplicativo.
Podemos definir el mantenimiento perfectivo como el conjunto de actividades para mejorar o
añadir nuevas funcionalidades requeridas por el usuario.

57
Algunos autores dividen este tipo de mantenimiento en dos:

 Mantenimiento de Ampliación: orientado a la incorporación de nuevas


funcionalidades.
 Mantenimiento de Eficiencia: que busca la mejora de la eficiencia de ejecución.

Este tipo de mantenimiento aumenta cuando un producto software tiene éxito comercial y es
utilizado por muchos usuarios, ya que cuanto más se utiliza un software, más peticiones de los
usuarios se reciben demandando nuevas funcionalidades o mejoras en las existentes.

Mantenimiento Preventivo

Este último tipo de mantenimiento consiste en la modificación del software para mejorar sus
propiedades (por ejemplo, aumentando su calidad y/o su mantenimiento) sin alterar sus
especificaciones funcionales.
Por ejemplo, se pueden incluir sentencias que comprueben la validez de los datos de entrada,
re estructurar los programas para mejorar su legibilidad, o incluir nuevos comentarios que
faciliten la posterior comprensión del programa. Este tipo de mantenimiento es el que más
partido saca de las técnicas de ingeniería inversa y reingeniería.
En algunos casos se ha planteado el Mantenimiento para la Reutilización, consistente en
modificar el software (buscando y modificando componentes para incluirlos en bibliotecas)
para que sea más fácilmente reutilizable.
En realidad este tipo de mantenimiento es preventivo, especializado en mejorar la propiedad
de reusabilidad del software.

ACTIVIDADES DE MANTENIMIENTO

58
Las actividades del mantenimiento son similares a aquéllas del desarrollo. El mantenimiento
enfoca simultáneamente cuatro aspectos mayores de la evolución del sistema:
 Mantener el control sobre las funciones diarias del Mantener el control sobre las
funciones diarias del sistema
 „Mantener el control sobre las modificaciones del sistema
 „Perfeccionar las funciones aceptables existentes
 „Impedir que el desempeño del sistema se degrade a niveles inaceptables.

Tipos de Actividades del mantenimiento

 Análisis de impacto y de costes/beneficios: se dedica esta actividad a analizar


diferentes alternativas de implementación y/o a comprobar su impacto en la
planificación, coste y facilidad de operación.
 Comprensión del cambio: puede consistir en localizar el error y determinar su causa,
o en comprender los requisitos de una mejora solicitada.
 Diseño del cambio: se refiere al diseño propuesto para el cambio, pudiéndose incluir
un rediseño del sistema.
 Codificación y pruebas unitarias: se codifica y prueba el funcionamiento de cada
componente modificado.
 Inspección, certificación y consultoría: esta actividad se dedica a inspeccionar el
cambio, comprobar otros diseños, reuniones de inspección, etc.
 Pruebas de integración: se refiere a comprobar la integración de los componentes
modificados con el resto del sistema.
 Pruebas de aceptación: en esta actividad, el usuario comprueba, junto al personal
encargado del mantenimiento, la adecuación del cambio a sus necesidades.
 Pruebas de regresión: en esta actividad se somete el software modificado a casos de
pruebas previamente almacenados ypor los que ya pasó.
 Documentación del sistema: se revisa y reescribe, en caso necesario, la documentación
del sistema para que se ajuste al producto software ya modificado.
 Otra documentación (del usuario, por ejemplo): se revisa y reescribe, en caso necesario,
los diferentes manuales de usuario y otra documentación, excepto la documentación del
sistema.
 Otras actividades, como las dedicadas a la gestión del proyecto de mantenimiento.

Prueba del Sistema de un Sistema de Información

59
Es necesario comprobar que el sistema de información desarrollado funciona como es debido,
en definitiva se trata de ejecutar los programas para encontrar errores. Las pruebas se
consideran satisfactorias si se encuentra algún error. Es el método más habitual para determinar
si el equipo lógico funciona como debe.
El proceso de prueba generalmente implica que el organismo electoral trabaje de manera
conjunta con los proveedores para asegurar que los bienes o servicios son los adecuados para
los objetivos establecidos.

Niveles de Pruebas
 Pruebas unitarias.
 Pruebas de integración.
 Pruebas del sistema.
 Pruebas de implantación.
 Pruebas de aceptación.

 Pruebas unitarias comprenden las verificaciones asociadas a cada componente del


sistema de información. Su realización tiene como objetivo verificar la funcionalidad y
estructura de cada componente individual.
 Pruebas de integración comprenden verificaciones asociadas a grupos de
componentes, generalmente reflejados en la definición de subsistemas de construcción
o en el plan de integración del sistema de información. Tienen por objetivo verificar el
correcto ensamblaje entre los distintos componentes.
 Pruebas del sistema son pruebas de integración del sistema de información
completo. Permiten probar el sistema en su conjunto y con otros sistemas con los que
se
relaciona para verificar que las especificaciones funcionales y técnicas se cumplen.
 Pruebas de implantación incluyen las verificaciones necesarias para asegurar que el
sistema funcionará correctamente en el entorno de operación al responder
satisfactoriamente a los requisitos de rendimiento, seguridad y operación, y
coexistencia con el resto de los sistemas de la instalación, y conseguir la aceptación del
sistema por parte del usuario de operación.
60
Pruebas de aceptación van dirigidas a validar que el sistema cumple los requisitos de
funcionamiento esperado, recogidos en el catálogo de requisitos y en los criterios de
aceptación del sistema de información, y conseguir la aceptación final del sistema por
parte del usuario.

Ambiente de Pruebas
Básicamente se interpreta como "Ambiente de Prueba" al conjunto formado por:
 Recursos físicos (equipamiento, almacenamiento de discos, etc)
 Conjunto de Lotes de Prueba
 Escenarios de Prueba

El ambiente de prueba deberá ser aislado del de producción y soportar el cambio de la fecha
del sistema, sin afectar:
 Autorizaciones
 Seguridad
 Licencias
 Archivos y Bases de datos
 Acceso de red
 Aplicaciones activadas por fecha y hora

Procedimiento de Pruebas

 Fase de integración: Cada ciclo de pruebas empieza con esta fase. En esta fase, se
instala el hardware requerido, se conectan los cables de red y se completa otra
configuración de hardware.
 Fase de pruebas de verificación de la generación: El equipo de pruebas realiza la
configuración de la solución utilizando los documentos de la solución y los casos de la
prueba de verificación de la generación. Esto asegura que los sistemas se integren y se
configuren. Integrar pruebas rápidamente expone los errores humanos que se comete
en la guía así como los errores en la finalización de la guía de implementación que tuvo
como resultado servicios que no funcionaban adecuadamente.
 Fase de pruebas funcionales: Una vez que se completa la prueba, el equipo de pruebas
se enfoca en verificar las funciones clave de los productos y la solución.
 Fase de pruebas de administración: Las pruebas de administración verifican que los
requisitos de la estrategia de administración remota se cubrieron dentro de la
configuración y el diseño de la solución.
 Fase de prueba de escritura técnica: Estas pruebas aseguran que el estilo de
documentación y los vínculos de la documentación eran correctos y consistentes.
61
 Fase de pruebas de seguridad: La fase de pruebas de seguridad es la última fase en
cada ciclo de pruebas. Esta fase asegura que se ejecuten todos los casos de prueba de
seguridad que se generaron, en el ambiente completo de estado final.

Ejemplo de Pruebas

Proyecto de construcción de software para apoyo al Juego


Gerencial

Estrategia Pruebas:
 Carga de Datos
 Validación de simulaciones
 Pilotos pruebas
 Pruebas de rendimiento

Estrategia de Pruebas
 Facilitar la carga de datos para probar el sistema en un estado no inicial
 Ofrecer un mecanismo para validar la simulación
 Poder ejecutar varios pilotos antes de poner en producción

Carga de datos
 Escenario cargado desde archivos Excel a BD
 Desarrollo de una Infraestructura completa para soportar la carga de datos

62
Validación de simulaciones
 El además debe poder ser útil para los USUARIOS finales
 Estrategia general

Pilotos de Pruebas

 Probar escenarios completos de ejecución


 6 semanas recolectando datos de industria
 2 semanas definiendo empresa y decisiones a ejecutar
 1 semana en ejecución
 4 semanas de ajustes con respecto a la ejecución

Pruebas de rendimiento
 Pruebas de rendimiento:A nivel de consulta de EJB (EJB Tests)
 Pruebas Web (Web Tests)

63
64
UNIVERSIDAD POLITÉCNICA SALESIANA

Carrera de Ingeniería de Sistemas

Sede Guayaquil, Campus El Centenario

Material de Estudio para


exámenes complexivos

[Unidad de Titulación Especial,


Coordinación Sistemas]
Materia:
Sistemas Distribuidos

Elaborado por:
Ing. Vanessa Jurado

Revisado por:
Ing. Miguel Quiroz

65
Datos del Generales del Informe y Control de Versiones

Carrera: Ingenieria de Sistemas


Sede: Guayaquil
Campus: Centenario
Fec. Emisión: 01/05/2017
Director: Msig. Javier Ortiz

Control de Versiones:
Versión 1.0

66

[30/Septiembre/2016] – versión 1.0


Contenido
1. FUNDAMENTOS DE LOS SISTEMAS DISTRIBUIDOS ........................................68
1.1. Definición de un Sistema Distribuido ....................................................................68
1.2. Objetivos de un Sistema Distribuido .....................................................................69
1.3. TIPOS DE SISTEMAS DISTRIBUIDOS ..............................................................72
2. ARQUITECTURAS ................................................................................................75
2.1. Estilos (Modelos) Arquitectónicos ........................................................................76
2.2. Arquitecturas de Sistemas, centralizadas, descentralizadas, híbridas .................78
2.3. Arquitectura y Middleware ....................................................................................80
2.4. Auto administración en sistemas Distribuidos ......................................................81
3. PROCESOS ..........................................................................................................81
3.1. Hilos en Sistemas Distribuidos .............................................................................81
3.2. Virtualización........................................................................................................83
3.3. Clientes ................................................................................................................84
3.4. Servidores ............................................................................................................85
4. COMUNICACIÓN ..................................................................................................87
4.1. Fundamentos .......................................................................................................87
4.2. Llamadas a procedimientos remotos ....................................................................91
4.3. Comunicación orientada a mensajes....................................................................94
4.4. Comunicación orientada a flujos ..........................................................................99
4.5. Comunicación por multitransmisión ....................................................................101
5. SINCRONIZACIÓN..............................................................................................103
5.1. Sincronización del reloj ......................................................................................103
5.2. Relojes lógicos ...................................................................................................108
5.3. Exclusión mutua en sistemas distribuidos ..........................................................111
5.4. Posicionamiento global de los nodos .................................................................116
5.5. Algoritmos de elección de coordinador...............................................................117

67
6. SISTEMAS DE ARCHIVOS DISTRIBUIDOS .......................................................120
6.1. Arquitectura........................................................................................................120
6.2. Procesos ............................................................................................................125
6.3. Comunicación ....................................................................................................126
6.4. Asignación de nombres ......................................................................................129
6.5. Sincronización ....................................................................................................133
6.6. Consistencia y Replicación ................................................................................136
6.7. Tolerancias a fallos ............................................................................................141
6.8. Seguridad ..........................................................................................................142

1. FUNDAMENTOS DE LOS SISTEMAS DISTRIBUIDOS


Existe una tendencia inevitable al desarrollo de aplicaciones distribuidas.
El procesamiento distribuido permite dispersar los procesadores, datos y otros elementos de
una aplicación.

La dispersión ofrece un sistema más sensible a las necesidades de los usuarios, capaz de ofrecer
tiempos de respuesta mejores y minimizar los costes de comunicación.

1.1. Definición de un Sistema Distribuido

Un sistema distribuido consiste de un gran número de CPUs conectados por medio de una red.
Un sistema distribuido se encarga del procesamiento cooperativo de solicitudes mediante una
colección de computadoras independientes que aparecen ante los usuarios del sistema como
una única computadora.
Un sistema distribuido es una colección de computadoras independientes que dan al usuario la
impresión de constituir un único sistema coherente.
Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en
red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un
objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema
cliente-servidor.
Un sistema de computación distribuido consta de múltiples procesadores autónomos que no
comparten memoria principal, sino que cooperan a través de una red de comunicaciones que
los interconecta.
Colección de elementos de cómputo autónomo que se encuentran físicamente separados y no
comparten una memoria común, se comunican entre sí a través del intercambio de mensajes
utilizando un medio de comunicación.
68
Con el objeto de dar soporte a computadoras y redes heterogéneas mientras se ofrece la vista
de un sistema único, los sistemas distribuidos se organizan a menudo en términos de una capa
de software, esto es, vienen colocados de manera lógica entre una capa de alto nivel que consta
de usuarios y aplicaciones, y una capa subyacente constituida por sistemas operativos y
recursos básicos de comunicación.

1.2. Objetivos de un Sistema Distribuido


Un sistema distribuido:
● debe hacer que los recursos sean fácilmente accesibles
● debe ocultar de manera razonable el hecho de que los recursos están
distribuidos por toda la red
● debe ser abierto
● debe ser escalable

Cómo hacer accesibles los recursos

El principal objetivo de un sistema distribuido es facilitar a los usuarios (y a las aplicaciones)


el acceso a los recursos remotos (impresoras, computadoras, dispositivos de almacenamiento,
datos, archivos, páginas web, redes, etc.) y compartirlos de manera controlada y eficiente.
Beneficios: facilita la colaboración y el intercambio de información
Desventajas: mientras la conectividad y el intercambio aumentan, la seguridad se vuelve cada
vez más importante:
Claves y otra información sensible se envían como texto sin codificar (es decir, sin encriptar)
a través de la red rastrear comunicaciones para construir un perfil de preferencias para un
usuario específico viola de manera explícita la privacidad, especialmente cuando se hace sin
notificarle al usuario comunicación no deseada, tal como el correo basura, con frecuencia
llamado spam.

Transparencia en la distribución

69
Un objetivo importante de un sistema distribuido es ocultar el hecho de que sus procesos y
recursos están físicamente distribuidos a través de múltiples computadoras

TIPOS DE TRANSPARENCIA:

Grado de apertura

Un sistema distribuido abierto es un sistema que ofrece servicios de acuerdo con las reglas
estándar que describen la sintaxis y la semántica de dichos servicios.
En los sistemas distribuidos, los servicios se especifican a través de interfaces, las cuales a
menudo se definen como lenguaje de definición de interfaz (IDL)
las definiciones de las interfaces deben ser completas y neutrales para lograr la
interoperabilidad y portabilidad.
La interoperabilidad define la extensión mediante la cual dos implementaciones de sistemas o
componentes de fabricantes distintos pueden coexistir y trabajar juntos si únicamente se apoyan
en sus servicios mutuos tal como se especifica mediante un estándar común. .
La portabilidad define la extensión mediante la cual una aplicación desarrollada para un sistema
distribuido A se pueda ejecutar, sin modificación, en un sistema distribuido B que comparte la
misma interfaz que A.
Un sistema distribuido abierto debe ser también extensible, en un sistema extensible, debiera
ser relativamente fácil agregar nuevos componentes o reemplazar los existentes sin afectar a
70
los existentes, dicha flexibilidad es más fácil de decir que de alcanzar

Escalabilidad
La escalabilidad de un sistema se puede medir de acuerdo con al menos tres dimensiones
(Neuman, 1994).
Un sistema puede ser escalable con respecto a su tamaño, lo cual significa que podemos
agregarle fácilmente usuarios y recursos.
Un sistema escalable geográficamente es aquel en el cual usuarios y recursos pueden radicar
muy lejos unos de los otros.
Un sistema puede ser escalable administrativamente; esto es, puede ser fácil de manejar incluso
si involucra muchas organizaciones administrativas diferentes.
Desafortunadamente, con frecuencia un sistema escalable en una o más de estas dimensiones
exhibe alguna pérdida de rendimiento al escalarlo.

Problemas de escalabilidad
Escalabilidad relativa al tamaño: servicios, datos, y algoritmos centralizados
Escalabilidad geográfica: comunicación síncrona, comunicación inherentemente no fiable,
soluciones centralizadas
Escalar un sistema a través de múltiples dominios administrativamente independientes

Técnicas de escalamiento
Ocultar las latencias de:

1. Comunicación: intentar evitar lo más posible la espera por respuestas de peticiones remotas
(y potencialmente distantes) de servicios:
a) comunicación asíncrona
b) uso de hilos
c) reducir el volumen general de la comunicación
2. Distribución: significa tomar un componente, dividirlo en partes más pequeñas, y en
consecuencia dispersar dichas partes a lo largo del sistema

3. Replicación: no solamente incrementa la disponibilidad, sino que además ayuda a balancear


la carga entre los componentes para obtener un mejor rendimiento. Ej. Uso de caché, el caché
y la replicación provocan problemas de consistencia (incoherencia en la información).

Trampas

71
Peter Deutsch, en aquel entonces de Sun Microsystems, formuló estos errores como las
siguientes falsas suposiciones que todos hacemos al desarrollar por primera vez un sistema
distribuido:

1. La red es confiable.
2. La red es segura.
3. La red es homogénea.
4. La topología no cambia.
5. La latencia es igual a cero.
6. El ancho de banda es infinito.
7. El costo de transporte es igual a cero.
8. Existe un administrador.

1.3. TIPOS DE SISTEMAS DISTRIBUIDOS

● SISTEMAS DISTRIBUIDOS DE CÓMPUTO


● SISTEMAS DISTRIBUIDOS DE INFORMACIÓN
● SISTEMAS DISTRIBUIDOS EMBEBIDOS.

SISTEMAS DISTRIBUIDOS DE CÓMPUTO

Utilizada para realizar tareas de cómputo de alto rendimiento.

Sistemas de cómputo en cluster: la computación en cluster se utiliza para la programación


en paralelo donde un solo programa (de cálculo intensivo) corre paralelamente en múltiples
máquinas. Son homogéneas.

72
Sistemas de cómputo en grid: tienen un alto grado de heterogeneidad. Una cuestión clave en
un sistema de cómputo en grid es reunir los recursos de diferentes organizaciones para permitir
la colaboración de un grupo de personas o instituciones. Tal colaboración se realiza en la forma
de una organización virtual.
La mayor parte del software para elaborar un sistema de cómputo en grid evoluciona alrededor
del otorgamiento de privilegios a los recursos desde diferentes dominios administrativos. Con
frecuencia la atención está puesta en asuntos de arquitectura.

La capa más baja, de fabricación, proporciona interfaces para recursos locales ubicados en un
sitio específico. Por lo general, proporcionan funciones para consultar el estado y las
capacidades de un recurso, junto con funciones para la administración real de un recurso.
La capa de conectividad consiste en protocolos de comunicación para dar soporte a las
transacciones del grid que abarcan el uso de múltiples recursos. Además, contiene protocolos
de seguridad para autentificar a usuarios y recursos.
La capa de recursos es responsable de la administración de un solo recurso. Utiliza las
funciones proporcionadas por la capa de conectividad y llama de manera directa a las interfaces
puestas a disposición mediante la capa de fabricación.
La capa colectiva se encarga de manipular el acceso a múltiples recursos y, por lo general,
consta de servicios para descubrir recursos, ubicación y calendarización de tareas dentro de
múltiples recursos, replicación de datos. La capa colectiva pudiera consistir en muchos
protocolos diferentes para muchos propósitos diferentes.
La capa de aplicaciones consta de aplicaciones que operan dentro de una organización virtual
y hacen uso del ambiente de cómputo en grid.

73
Sistemas distribuidos de información

Esta clase de sistemas distribuidos se encuentran en organizaciones que fueron confrontadas


con aplicaciones de red saludables:
● programas remotos, llamados clientes.
● Peticiones, posiblemente para distintos servidores, dentro de una sola petición
más grande y ejecutarla como una transacción distribuida.
● Esto ha derivado en una gran industria que se concentra en la integración de
aplicaciones empresariales

Sistemas distribuidos de información:

Sistemas de procesamiento de transacciones

BEGIN_TRANSACTION y END_TRANSACTION se utilizan para delimitar el alcance de


una transacción. Las operaciones entre estas primitivas forman el cuerpo de la transacción.
La característica clásica de una transacción es que, o se ejecutan todas sus operaciones, o no se
ejecuta ninguna operación. Las operaciones pueden ser llamadas del sistema, procedimientos
de biblioteca, o instrucciones de un lenguaje encerradas entre paréntesis, según la
implementación.

De manera más específica, las transacciones son:


1. Atómicas: para el mundo exterior, la transacción es indivisible.
2. Consistentes: la transacción no viola sistemas invariantes.
3. Aisladas: las transacciones concurrentes no interfieren entre sí.
4. Durables: una vez que se confirma una transacción, los cambios son
permanentes

Sistemas distribuidos de información:


Integración de aplicaciones empresariales

La idea principal fue que aplicaciones existentes pudieran intercambiar información de manera
directa.

74
Existen diversos tipos de comunicación middleware:
● llamadas a procedimientos remotos (RPC)
● invocaciones a métodos remotos (RMI)
● middleware orientado a mensajes, o MOM
● sistemas de publicación- suscripción

Sistemas distribuidos masivos

Con frecuencia los dispositivos se caracterizan por ser pequeños, de baterías, portátiles, y tienen
sólo una conexión inalámbrica, aunque no todas estas características son aplicables a todos los
dispositivos.

Una característica importante es su carencia general de control administrativo humano:


● Sistemas caseros
● Sistemas electrónicos para el cuidado de la salud
● Redes de monitoreo.

2. ARQUITECTURAS
Arquitectura de software establece cómo son organizados varios componentes del software y
cómo interactúan entre ellos.
Los sistemas distribuidos son comúnmente piezas complejas de software cuyos componentes
están dispersos en máquinas múltiples
Un objetivo importante de los sistemas distribuidos es separar las aplicaciones de las
plataformas subyacentes mediante una capa de middleware.

75
2.1. Estilos (Modelos) Arquitectónicos
El estilo arquitectónico está formulado en términos de componentes, la forma en que estos
componentes están conectados unos con otros y los datos intercambiados entre ellos.

Los estilos más importantes son:


● Arquitecturas en capas
● Arquitecturas basadas en objetos
● Arquitecturas centradas en datos
● Arquitecturas basadas en eventos

Arquitecturas en capas
Los componentes están organizados en forma de capas, en la que un componente en una
determinada capa puede llamar a componentes en la capa inmediata inferior.

Arquitecturas basadas en objetos


Cada objeto corresponde a lo que hemos definido como componente, y estos componentes
están conectados mediante un mecanismo RPC.
Esta arquitectura de software se adapta al modelo cliente-servidor

76
Arquitecturas centradas en datos
Evolucionan en torno a la idea de que los procesos se comunican a través de un repositorio o
medio común, ya sea pasivo o activo.

Arquitecturas basadas en eventos


Los procesos se comunican esencialmente por medio de la propagación de eventos, los cuales
de manera opcional pueden llevar datos consigo
La idea básica es que los procesos publican eventos tras los cuales el middleware asegura que
sólo esos procesos que se subscribieron a esos eventos, los recibirán. La ventaja principal de
esta arquitectura es que los procesos están acoplados flojamente. En principio, no se requiere
una referencia explícita de proceso a proceso. A esto se le conoce como desacoplamiento en
el espacio o referencialmente desacoplados.

77
2.2. Arquitecturas de Sistemas, centralizadas, descentralizadas,
híbridas
El determinar qué componentes de software se usarán, cómo interactúan y cómo se distribuirán
es lo que se conoce como una instancia de arquitectura de software, también llamada
arquitectura de sistema.
Podemos diferenciar las siguientes:
● Arquitecturas Centralizadas
● Arquitecturas Descentralizadas
● Arquitecturas Híbridas

Arquitecturas Centralizadas
Aplican el modelo básico cliente-servidor, donde los procesos en un sistema distribuido están
divididos en dos grupos.
Un servidor es un proceso que implemente un servicio específico.
Un cliente es un proceso que solicita un servicio a un servidor.
La interacción cliente-servidor, también conocida como solicitud-respuesta

78
Implementación de aplicaciones en capas
Se usa esencialmente el estilo arquitectónico en capas:
● El nivel de interfaz de usuario.
● El nivel de procesamiento.
● El nivel de datos.

El nivel de interfaz de usuario contiene todo lo necesario para establecer una interfaz directa
con el usuario
El nivel de procesamiento típicamente contiene las aplicaciones.
El nivel de datos administra los datos sobre los cuales se está trabajando.

Arquitecturas Descentralizadas

Distribución horizontal: un cliente o un server puede estar físicamente dividido en partes


lógicamente equivalentes, pero cada parte opera con su propio conjunto integral de datos,
balanceando (equilibrando) la carga del sistema. (Sistemas peer to peer).

79
Arquitecturas Híbridas
Combinan las características de arquitecturas cliente-servidor y arquitecturas peer-to-peer.

2.3. Arquitectura y Middleware


El middleware forma una capa entre las plataformas de aplicación y distribución. Un propósito
importante es proveer un cierto nivel de transparencia en la distribución, ocultando en lo
posible la distribución de datos, el procesamiento y el control de la aplicación.
Cuando se consideran los aspectos arquitectónicos que se han considerado hasta el momento,
uno debe preguntarse dónde entra el middleware.
Lo que comúnmente pasa es que el middleware sigue un estilo arquitectónico específico.
El moldear el middleware a un estilo arquitectónico específico tiene la ventaja de diseñar
aplicaciones más simples. Sin embargo, una desventaja es que el middleware puede volverse
dejar de ser óptimo para lo que el desarrollador tenía en mente.
Aunque se supone que el middleware tiene como propósito transparentar la distribución,
generalmente se requiere que el middleware se adapte a las aplicaciones. Una solución sería
desarrollar varias versiones del middleware y otra sería el crear middleware fácilmente
configurable y adaptable, según lo requiera la aplicación.

80
2.4. Auto administración en sistemas Distribuidos
Los sistemas distribuidos y el middleware asociado a ellos requieren proveer soluciones
generales orientadas a crear un escudo contra condiciones indeseables inherentes a la red, de
tal manera que puedan brindar soporte a tantas aplicaciones como sea posible. Los sistemas
distribuidos deben ser adaptivos, más en cuanto a su comportamiento de su ejecución y no en
cuanto a los componentes de software que lo conforman.
Cuando se requiere de adaptación automática, existe una fuerte interrelación entre las
arquitecturas del sistema y las arquitecturas del software. Por otro lado, se requiere organizar
los componentes de un sistema distribuido en tal forma que se pueda implementar el monitoreo
y ajuste del sistema; también decidir dónde deben ejecutarse los procesos para facilitar la
adaptabilidad.

3. PROCESOS
Se define como un programa en ejecución. Desde la perspectiva de un sistema operativo:
La administración y la calendarización de los procesos son quizá los asuntos más
importantes.
En sistemas distribuidos, tenemos que otros temas resultan ser igualmente o más importantes:
● Hilos
● Virtualización
● Clientes
● Servidores
● Migración de procesos entre diferentes máquinas (sistemas distribuidos de
área amplia).

3.1. Hilos en Sistemas Distribuidos


Hilos
Igual que un proceso, un hilo ejecuta su propio segmento de código, independientemente de
otros hilos
No se hace ningún intento por lograr un alto grado de transparencia de concurrencia
Un sistema de hilos mantiene generalmente sólo un mínimo de información para permitir que
la CPU sea compartida por varios hilos
La información que no es estrictamente necesaria para manipular múltiples hilos es ignorada
Se deja por completo a los desarrolladores la protección de los datos en contra de los accesos
inapropiados dentro de un proceso único.
Hacen posible retener la idea de procesos secuenciales que emiten llamadas de bloqueo de
sistema (por ejemplo, un RPC para comunicarse con el disco) y aún así lograr el paralelismo.
Las llamadas de bloqueo del sistema vuelven más fácil la programación, y el paralelismo
mejora el rendimiento.
El servidor de un solo hilo mantiene la facilidad y la simplicidad de las llamadas de bloqueo
del sistema, pero cede algo del rendimiento
81
El método de la máquina de estado finito logra un alto rendimiento a través del paralelismo,
pero utiliza llamadas sin bloqueo, por tanto es más difícil de programar

Hilos en Sistemas Distribuidos


Proporcionan un medio conveniente para permitir llamadas de bloqueo de sistema sin
bloquear todo el proceso en que se ejecuta el hilo.

Clientes Multihilos
En redes de área amplia, los ciclos tienen retrasos de cientos de milisegundos, o incluso
segundos.
La manera más común de ocultar las latencias de comunicación es iniciar la comunicación y
proceder de inmediato con alguna otra cosa

Servidores Multihilos
El principal uso de la tecnología multihilos está del lado del servidor
Consideremos la organización de un servidor de archivos que ocasionalmente se tiene que
bloquear en espera del disco

82
3.2. Virtualización
La separación entre tener una sola CPU y ser capaz de pretender que existen más unidades de
procesamiento se puede extender también a otros recursos, ello origina lo que conocemos como
virtualización de recursos
La virtualización trata con la extensión o el reemplazo de una interfaz existente de modo que
imite el comportamiento de otro sistema.

Importancia Virtualización

Software heredado puede ejecutarse sobre el costoso hardware de una mainframe.


La virtualización puede aportar las interfaces heredadas hacia nuevas plataformas, y de esta
manera dar paso inmediato a lo más reciente en cuanto a grandes clases de programas existentes
La diversidad de plataformas y máquinas se puede reducir si, en esencia, dejamos que cada
aplicación se ejecute en su propia máquina virtual, posiblemente incluyendo las bibliotecas
relacionadas y el sistema operativo, el cual, a su vez, se ejecute en una plataforma común
proporcionando un alto grado de portabilidad y flexibilidad.

Arquitecturas de máquinas virtuales

83
Los sistemas de cómputo ofrecen cuatro tipos de interfaz distintos, y en cuatro niveles
diferentes:
1. Una interfaz entre el hardware y el software, constituida por instrucciones máquina que se
pueden invocar desde cualquier programa.
2. Una interfaz entre el hardware y el software, constituida por instrucciones máquina que se
pueden invocar solamente desde programas privilegiados, tales como los sistemas operativos.
3. Una interfaz que consta de llamadas de sistema como las que ofrece un sistema operativo.
4. Una interfaz que consta de llamadas a bibliotecas, las cuales forman, por lo general, lo que
conocemos como interfaz de programación de aplicaciones (API, por sus siglas en inglés). En
muchos casos, las llamadas de sistema ya mencionadas están ocultas por una API La esencia
de la virtualización es imitar el comportamiento de estas interfaces

La virtualización puede tener lugar en dos formas diferentes:


máquina virtual de proceso, lo cual enfatiza que la virtualización se implementa esencialmente
solamente para un proceso, el emulador tendrá que imitar el comportamiento de las llamadas
de sistema
monitor de la máquina virtual, proporciona un sistema que básicamente se implementa como
una capa que cubre por completo al hardware original, pero que ofrece todo un conjunto de
instrucciones del mismo (o de otro hardware) como una interfaz. Resulta crucial el hecho de
que se puede ofrecer esta interfaz de manera simultánea a diferentes programas. Como
resultado, ahora es posible tener múltiples y diferentes sistemas operativos que se ejecutan de
distinto modo y concurrentemente sobre la misma plataforma.

3.3. Clientes
Las máquinas cliente proporcionan los medios necesarios para que los usuarios interactúen con
servidores remotos. Existen básicamente dos maneras soportadas para efectuar esta
interacción:
1. Para cada servicio remoto, la máquina cliente tendrá una contraparte por separado que puede
contactar el servicio sobre una red (protocolo específico).

84
2. Proporcionar acceso directo a servicios remotos solamente con la oferta de una interfaz de
usuario adecuada. En efecto, esto significa que la máquina cliente sólo se utiliza como terminal
sin necesidad de almacenamiento local(protocolo independiente).

3.4. Servidores

85
Tipos de servidores
Existen distintas maneras de organizar servidores:

Servidor iterativo:
Manipula la petición, la resuelve y si es necesario devuelve la respuesta a dicha petición del
cliente.

Servidor concurrente:

No manipula, está basado en hilos, lo transmite al hilo y cambia su estado en espera de otra
instrucción.
El hilo manipula la petición y es el responsable de enviar la respuesta de esa petición.
Cuando un cliente realiza un a petición este es enviado a un puerto o punto final, muchos
servicios no requieren de dicho puerto. Aquellos que no utilizan dichos puertos son
considerados dinámicos para aquello debe de usarse un demonio donde el cliente contacta al
demonio, solicita el puerto y contacta al servidor especificado.

Súper-servidor:
Es implementado debido a que un solo servidor no puede atender a tantas peticiones y eso
significa una gran pérdida de recursos.

Servidores de clústeres

86
Es una colección de máquinas conectadas a través de una red, donde cada máquina ejecuta uno
o más servidores, estos ofrecen un gran ancho de banda y latencia muy pequeña.

Servidores Distribuidos
Conjunto de máquinas que cambian de manera dinámica, y posiblemente también con más de
un punto de acceso, pero que sin embargo, aparecen ante el mundo como una sola y poderosa
máquina. Beneficia a los clientes a partir de un servidor fuerte, estable y de alto rendimiento.

Estados en servidores

Servidor sin estado:


No almacena de los datos con respecto al estado del cliente pero puede modificar su estado sin
necesidad de informar a los clientes. Aunque de manera momentánea almacena dicha
información que considera relevante para decidir si un documento debe ser replicado y hacia
donde si se llegase a perder esta información no afecta en nada su funcionamiento a esto
también es considerado como un Estado suave.

Servidor con estados:


Mantiene información de persistentes de sus clientes, es decir que el servidor necesita eliminar
información de forma explícita. La tablas permite mantener una actualización reciente de la
información si esta se llega a perder se recupera la información tal como estaba antes de
arruinarse a esto también se considera como un proceso de estado de sesión.

4. COMUNICACIÓN

4.1. Fundamentos
En los sistemas distribuidos, la comunicación siempre se basa en el paso de mensajes de bajo
nivel
Expresar la comunicación a través del paso de mensajes, es más difícil que utilizar primitivas
basadas en memoria compartida, como se hace en plataformas no distribuidas

Protocolos en capas

87
Debido a la ausencia de memoria compartida en los sistemas distribuidos, toda la comunicación
se basa en el envío y la recepción (de bajo nivel) de mensajes
Para facilitar el manejo de varios niveles y cuestiones involucradas en la comunicación, la ISO
desarrolló un modelo de referencia (el modelo OSI)que identifica claramente los diversos
niveles involucrados, les proporciona nombres estándar, y señala qué nivel debe hacer cuál
trabajo.
El modelo OSI está diseñado para permitir que los sistemas abiertos se comuniquen
Sistema abierto, permite comunicarse con cualquier otro sistema abierto mediante reglas
estándar (protocolos) que regulen formato, contenido, y significado de los mensajes enviados
y recibidos.
protocolos orientados a conexión, antes de intercambiar datos, el remitente y el destinatario
primero establecen explícitamente una conexión, y posiblemente negocian el protocolo a
utilizar
protocolos orientados a no conexión, no se necesita una configuración por adelantado. El
remitente sólo transmite el primer mensaje cuando está listo
En el modelo OSI, la comunicación se divide en siete niveles o capas. Cada capa maneja un
aspecto específico de la comunicación
Cada capa proporciona una interfaz hacia la siguiente capa superior

Cuando el proceso A de la máquina 1 debe comunicarse con el proceso B de la máquina 2,


elabora un mensaje y lo pasa hacia la capa de aplicación localizada en su máquina
Cuando éste toca el fondo, la capa física transmite entonces el mensaje colocándolo en un
medio de transmisión física.
Cuando el mensaje llega a la máquina 2, pasa hacia arriba, quitando cada capa y examinando
su propio encabezado. Por último, el mensaje llega al destinatario, el proceso B, el cual puede
reutilizando la ruta inversa.

88
Protocolos de bajo nivel
Las tres capas más bajas de la suite de protocolos de OSI juntas implementan las funciones
básicas que forman una red de computadoras

Capa Física:
● se ocupa de transmitir ceros y unos
● define cuántos volts se utilizan para un 0 y cuántos para un 1, cuántos bits por
segundo se pueden enviar, y si la transmisión puede ocurrir simultáneamente en
ambas direcciones
● maneja la estandarización eléctrica y mecánica y la señalización de interfaces
Capa de Enlace:
● agrupa los bits en unidades(tramas), y ve que cada trama se reciba correctamente
● coloca un patrón especial de bits al inicio y al final de cada trama para marcarlas,
y calcula una suma de verificación
Capa de Red:
 elige la mejor ruta (enrutamiento)

Protocolos de transporte
Implementa todos aquellos servicios no proporcionados en la interfaz de la capa de red
(transforma la red subyacente en algo que un desarrollador de aplicaciones puede utilizar.)
El comportamiento de comunicación fin a fin (recibir mensajes sin daños y en el mismo orden
en que se enviaron) es un aspecto importante de la capa de transporte.
El protocolo de transporte de internet es conocido como TCP (Protocolo para el Control de
Transmisiones)
Protocolo de Transporte en Tiempo Real (RTP) para soportar la transferencia de datos en

89
tiempo real Protocolo de transporte orientado a no conexión – UDP (Protocolo Universal
Datagram).
Protocolos de más alto nivel

Capa de sesión:
Versión mejorada de la capa de transporte
Proporciona:
1. control de diálogo para seguimiento a la parte que está comunicando
2. herramientas de sincronización

Capa de presentación:
Tiene que ver con el significado de los bits
Se definen registros que contengan campos, y después se hace que el remitente notifique al
destinatario que un mensaje contiene un registro particular en cierto formato

Capa de aplicación:
Contenedor de todas las aplicaciones y protocolos que, de una u otra manera, no encajan en
una de las capas subyacentes

Protocolos middleware
El middleware es una aplicación que lógicamente reside (la mayor parte del tiempo) en la capa
de aplicación, pero que contiene muchos protocolos de propósito general.
Los protocolos de autenticación no están muy relacionados con alguna aplicación específica,
pero pueden estar integrados en un sistema middleware como un servicio general
Los protocolos de autorización mediante los cuales se garantiza el acceso a usuarios y procesos
autenticados
Los protocolos de confirmación establecen que, en un grupo de procesos, o todos los procesos
realizan una operación en particular o la operación no se realiza en absoluto(atomicidad)
protocolo distribuido de aseguramiento mediante el cual un recurso puede ser protegido contra
accesos simultáneos
Los protocolos de comunicación middleware soportan servicios de comunicación de alto nivel
servicios de comunicación middleware de alto nivel:
1. llamadas a procedimientos remotos,
2. servicios de cola de mensajes,
3. soporte para comunicación de medios continuos a través de flujos,
multitransmisión.

90
Tipos de Comunicación

 comunicación persistente: el middleware de comunicación almacena el


mensaje.
 comunicación transitoria: el sistema de comunicación almacena un mensaje
sólo mientras las aplicaciones remitente y destinataria se ejecutan.
 Comunicación asíncrona: el remitente continúa inmediatamente después de
que ha pasado su mensaje para transmisión
 Comunicación sincrónica: el remitente es bloqueado hasta que se sabe que su
petición es aceptada
 Comunicación discreta: las partes se comunican a través de mensajes, y cada
mensaje forma una unidad completa de información.
 Comunicación por flujo involucra el envío de varios mensajes, uno después
de otro, y los mensajes se relacionan entre sí por el orden en que se envían, o
porque existe una relación temporal.

4.2. Llamadas a procedimientos remotos

Permiten que los programas llamen a procedimientos ubicados en otras máquinas


Cuando un proceso de la máquina A llama a un procedimiento de la máquina B, el proceso que
llama desde A se suspende, y la ejecución del procedimiento llamado ocurre en B
La información se transporta en parámetros desde quien llama hasta el que es llamado, y puede
regresar en el procedimiento resultante.
Ningún mensaje de paso es visible para el programador

Resguardos del cliente y servidor


La idea tras la RPC es hacerla parecer como una llamada local:
Resguardo del cliente: Cuando se llama a un procedimiento remoto, se coloca en la biblioteca
una versión diferente del procedimiento.
A este resguardo se lo llama similar a un procedimiento local, igualmente se hace una llamada
al sistema operativo local. Sólo no solicita datos al sistema operativo. En vez de eso, empaca
los parámetros en un mensaje y solicita que el mensaje sea enviado al servidor
Resguardo del servidor: es el equivalente a un resguardo del cliente, del lado del servidor
(parte de código que transforma las peticiones entrantes a la red en llamadas a procedimientos
locales).
Cuando el mensaje llega al servidor, el sistema operativo lo pasa al resguardo del servidor.

91
Pasos para una llamada a un procedimiento remoto
1. El procedimiento cliente llama al resguardo del cliente de manera normal.
2. El resguardo del cliente construye un mensaje y llama al sistema operativo local.
3. El sistema operativo del cliente envía el mensaje al sistema operativo remoto.
4. El sistema operativo remoto da el mensaje al resguardo del servidor.
5. El resguardo del servidor desempaca los parámetros y llama al servidor.
6. El servidor realiza el trabajo y devuelve el resultado al resguardo.
7. El resguardo del servidor empaca el resultado en un mensaje y llama a su
sistema operativo local.
8. El sistema operativo del servidor envía el mensaje al sistema operativo del
cliente.
9. El sistema operativo del cliente da el mensaje al resguardo del cliente.
10. El resguardo desempaca el resultado y lo regresa al cliente.

Paso de parámetros
La función del resguardo del cliente es tomar sus parámetros, empacarlos en un mensaje, y
enviarlos a la matriz servidor.

Paso de parámetros de valor


Empacar parámetros en un mensaje se conoce como ordenamiento de parámetros.

El resguardo del cliente toma los parámetros y los coloca en un mensaje


También coloca el nombre o el número del procedimiento
Cuando el mensaje llega al servidor, el resguardo lo examina para ver qué procedimiento se
necesita y realiza entonces la llamada adecuada
La llamada real del resguardo al servidor parece la llamada cliente original, excepto por que
los parámetros son variables inicializadas desde el mensaje entrante
Cuando el servidor ha terminado, el resguardo del servidor obtiene nuevamente el control; toma
el resultado enviado por el servidor y lo empaca en un mensaje. Este mensaje es enviado de
vuelta al resguardo del cliente, que lo desempaca para extraer el resultado y regresa el valor al
92
procedimiento cliente en espera

Paso de parámetros de referencia


Un apuntador tiene significado sólo dentro del espacio dirección del proceso en el que se utiliza
estrategia: copiar el arreglo que hay en el mensaje y enviarlo al servidor. El resguardo del
servidor puede llamar entonces al servidor con un apuntador hacia este arreglo
Los cambios que hace el servidor utilizando el apuntador afectan directamente al bufer de
mensaje dentro del resguardo del servidor.
Cuando el servidor termina, el mensaje original puede enviarse de vuelta al resguardo del
cliente, la cual después lo copia y regresa al cliente (llamada por copia-restauración)

Especificación de parámetros y generación de resguardos


Ambos lados de una RPC deben seguir el mismo protocolo, o la RPC no funcionará
correctamente
Definir el formato del mensaje es un aspecto de un protocolo RPC, pero no es suficiente.
También necesitamos que el cliente y el servidor coincidan en la representación de estructuras
de datos sencillas, tales como enteros, caracteres, booleanos, etc. (reglas de codificación)
Hacer que quien llame y el llamado coincidan en el intercambio real de mensajes (protocolo
RPC)
implementar los resguardos del cliente y servidor (difieren sólo en sus interfaces con las
aplicaciones)

Interfaces
Una interfaz consiste en una colección de procedimientos que pueden ser llamados por un
cliente, y que son implementados por un servidor.
Las interfaces con frecuencia se especifican mediante un Lenguaje de Definición de Interfaces
Una interfaz especificada en un IDL, posteriormente se compila en un resguardo del cliente y
en un resguardo del servidor, junto con las interfaces adecuadas de tiempo de compilación o
de tiempo de ejecución.
La práctica muestra que utilizar un lenguaje de definición de interfaces simplifica de manera
importante las aplicaciones cliente-servidor basadas en RPC.
Debido a que es fácil generar completamente resguardos del cliente y servidor, todos los
sistemas middleware basados en RPC ofrecen un IDL para dar soporte al desarrollo de
aplicaciones.

RPC asíncrona
Cliente continúa trabajando de inmediato después de emitir la petición RPC
al momento en que recibe la petición de RPC, el servidor envía inmediatamente una respuesta
hacia el cliente y después llama al procedimiento solicitado
93
La respuesta representa un acuse de recibo para el cliente de que el servidor va a procesar la
RPC. El cliente continuará su trabajo sin mayor bloqueo tan pronto reciba el acuse del servidor

RPC tradicional vs RPC asíncrona

Combinar dos RPC asíncronas algunas veces se conoce como RPC síncrona diferida.
Existen variantes de RPC asíncronas en las que el cliente continúa con su ejecución
inmediatamente después de enviar la petición al servidor
cliente no espera un acuse del servidor por haber aceptado la petición. A una RPC como ésta
la conocemos como RPC de una vía

4.3. Comunicación orientada a mensajes


Permite a las aplicaciones distribuidas comunicarse mediante el envío de mensajes
Está directamente relacionado a la capa de transporte.

94
Comunicación transitoria orientada a mensajes - Sockets
Un socket es un punto final de comunicación en el que una aplicación puede escribir
información destinada a enviarse fuera de la red subyacente, y desde el cual puede leerse
información entrante. Un socket forma una abstracción sobre el punto final real de
comunicación, el cual utiliza el sistema operativo local para un protocolo de transporte
específico.

Primitivas de socket para TCP/IP

Interfaz de paso de mensajes (MPI)


MPI está diseñada para aplicaciones paralelas, y como tal, fue confeccionada para
comunicación transitoria
Asume que fallas serias, tal como caídas de procesos o particiones de red, son fatales y no
requieren recuperación automática
MPI asume que la comunicación ocurre dentro de un grupo conocido de procesos, MPI se
comunica en grupos con su identificador, además cada proceso también tiene un identificador
local
Un par (IDGrupo, IDProceso) identifica la fuente o el destino del mensaje.
EL MPI en el centro de su mensaje se encuentra las primitivas para soportar la comunicación
transitoria

95
Primitivas de la MPI

Comunicación persistente orientada a mensajes - sistemas de colas de mensajes


Los sistemas de colas de mensajes proporcionan un amplio soporte para comunicación
asíncrona persistente. La esencia de estos sistemas es que ofrecen capacidad de
almacenamiento de término medio para mensajes, sin la necesidad de que el remitente o el
destinatario estén activos durante la transmisión del mensaje

Modelo de colas de mensajes


● Las aplicaciones se comunican insertando mensajes en colas específicas
● Un mensaje se transfiere directamente hacia un servidor destino
● Cada aplicación tiene su propia cola privada a la que otras aplicaciones pueden
enviar mensajes
● Es posible que varias aplicaciones compartan una sola cola
● Al remitente sólo se le garantiza que su mensaje se insertará en algún momento
en la cola del destinatario
● El remitente y el destinatario pueden ejecutarse completamente independientes
uno del otro

96
Los mensajes pueden contener cualquier información. El único aspecto importante a cubrir
desde la perspectiva del middleware es que los mensajes se direccionen adecuadamente.
El direccionamiento se hace proporcionando un nombre único de la cola de destino. En algunos
casos el tamaño del mensaje puede limitarse, aunque también es posible que el sistema
subyacente se encargue de fragmentar y ensamblar grandes mensajes de manera
completamente transparente para las aplicaciones.

Arquitectura general de un sistema de colas de mensajes


Los mensajes sólo pueden colocarse en colas que sean locales para el remitente, o en una
máquina cercana (LAN) que puede ser alcanzada eficientemente a través de una RPC(cola
fuente)
Los mensajes sólo pueden leerse desde colas locales
Un mensaje colocado en una cola contendrá la especificación de una cola de destino a la que
debe ser transferido. Es responsabilidad del sistema de colas de mensajes proporcionar colas a
los remitentes y destinatarios, y encargarse de que los mensajes se transfieren desde su cola
fuente hasta su cola destino.

97
La colección de colas se distribuye a través de diversas máquinas.
Para que un sistema de colas de mensajes transfiera mensajes, es necesario que mantenga un
mapa de las colas para localización en la red para lo cual debe mantener una base de datos
(probablemente distribuida) de los nombres de las colas para localizarlas en la red

Las colas son manejadas por administradores de colas.


Un administrador de colas interactúa directamente con la aplicación que está enviando o
recibiendo un mensaje.
Hay administradores especiales de colas que operan como ruteadores, o retransmisores: éstos
retransmiten mensajes entrantes hacia otros administradores de colas.
Un sistema de colas de mensajes puede convertirse en toda una red sobrepuesta, al nivel de
aplicaciones, en el nivel superior de una red de computadoras existente.
Los retransmisores pueden ayudar a construir sistemas escalables de colas de mensajes,
permiten el procesamiento secundario de mensajes, pueden utilizarse con propósitos de
multitransmisión.

Agentes de mensajes

98
Un agente de mensaje actúa como una puerta de enlace al nivel de aplicaciones en un sistema
de colas de mensajes. Su propósito principal es convertir los mensajes entrantes de tal manera
que la aplicación de destino pueda comprenderlos
Para un sistema de colas de mensajes, un agente de mensaje es sólo otra aplicación, no se
considera parte integral del sistema de colas

Un agente de mensajes puede ser tan sencillo como un reformateador de mensajes.


Es común utilizar un agente de mensajes para la integración de aplicaciones empresariales,
donde en lugar de (sólo) convertir mensajes, un agente es responsable de hacer coincidir
aplicaciones basadas en los mensajes que se están intercambiando
En el núcleo de un agente de mensaje se encuentra un depósito de reglas y programas que
pueden transformar un mensaje del tipo T1 en uno del tipo T2.

4.4. Comunicación orientada a flujos

Soporte para medios continuos


Es el soporte para intercambiar información dependiente del tiempo con frecuencia
Un medio se refiere al recurso mediante el cual se transmite la información (medios de
almacenamiento y transmisión, medios de presentación, etc.)
Un tipo importante de medio es la forma en que se representa la información.
En medios continuos, las relaciones temporales entre diferentes elementos de datos resultan
fundamentales para interpretar correctamente lo que significan en realidad los datos
(reproducción de una onda sonora)
los medios discretos se caracterizan por el hecho de que las relaciones temporales entre
elementos de datos no son fundamentales para interpretar correctamente los datos

99
(representaciones de texto y fotogramas)

Flujo de datos
Para captar el intercambio de información dependiente del tiempo, los sistemas distribuidos
generalmente proporcionan soporte para flujos de datos
Un flujo de datos es una secuencia de unidades de datos que pueden aplicarse tanto a medios
discretos como a medios continuos
La sincronización resulta crucial para los flujos continuos de datos
modo de transmisión asíncrona, los elementos de datos de un flujo se transmiten uno después
de otro, pero no hay más restricciones de sincronización en cuanto a cuándo debe ocurrir la
transmisión de elementos. Éste generalmente es el caso para los flujos discretos de datos.
modo de transmisión síncrono, existe un retraso máximo fin a fin para cada unidad del flujo
de datos. Si una unidad de datos se transfiere mucho más rápido que el retraso máximo tolerado
no es importante.
En el modo de transmisión isócrono es necesario que las unidades de datos se transfieran a
tiempo. Esto significa que la transferencia de datos está sujeta a un retraso máximo y mínimo
fin a fin, también conocido como inestabilidad limitada (retraso) (sistemas multimedia
distribuidos).
Los flujos pueden ser simples o complejos. Un flujo simple consiste únicamente en una sola
secuencia de datos, mientras que un flujo complejo consta de varios flujos simples
relacionados, llamados subflujos. La relación entre los subflujos de un flujo complejo a menudo
también depende del tiempo.

Flujos y calidad del servicio


Los requerimientos de sincronización (y otros no funcionales) se expresan generalmente como
requerimientos de Calidad del Servicio (QoS). Estos requerimientos describen lo que se
necesita del sistema distribuido subyacente y de la red para garantizar calidad.
La QoS para flujos continuos de datos tiene que ver principalmente con puntualidad, volumen,
y confiabilidad
Para especificar la QoS requerida, desde la perspectiva de una aplicación, en muchos casos esto
se reduce a especificar algunas propiedades importantes
1. La velocidad de bits requerida a la que deben transportarse los datos.
2. El retraso máximo hasta que se haya configurado una sesión (es decir, cuando una aplicación
puede comenzar el envío de datos).
3. El retraso máximo fin a fin (es decir, cuánto tiempo le llevará a una unidad de datos llegar
hasta un destinatario).
4. La varianza del retraso máximo, o inestabilidad.
5. El retraso máximo de un ciclo.

100
Cómo imponer la QoS
Un sistema distribuido puede intentar ocultar lo más posible la carencia de calidad del servicio:
Internet proporciona recursos para diferenciar las clases de datos mediante sus servicios
diferenciados
Un servidor de envío puede marcar paquetes de salida como pertenecientes a una o a varias
clases, incluyendo la clase de reenvío expedito que esencialmente especifica que un paquete
debe reenviarse mediante el ruteador actual con absoluta prioridad
También hay una clase de reenvío garantizado, por el cual el tráfico se divide en cuatro
subclases, junto con tres formas para eliminar paquetes si la red se congestiona
Un sistema distribuido también puede ayudar a que los destinatarios envíen información
Es útil el uso de un búfer para reducir la inestabilidad.
Si suponemos que los paquetes se retrasan con cierta varianza cuando se transmiten por la red,
el destinatario simplemente los almacena en un búfer durante un tiempo máximo. Esto
permitirá al destinatario pasar paquetes a la aplicación con regular velocidad con la certeza de
que siempre habrá suficientes paquetes entrando al búfer para su reproducción a esa velocidad.

4.5. Comunicación por multitransmisión

Funcionamiento.
Enviar datos a varios destinatarios.
Los nodos se organizan en una red sobrepuesta, que se utiliza para diseminar la información.

A nivel de aplicación
Los nodos se organizan en una red sobrepuesta.
Las conexiones entre los nodos de la red sobrepuesta puede cruzar diversas uniones físicas y
por tal razón los mensajes pueden ser no óptimos.

Construcción de la red sobrepuesta


Dos métodos:
● Organización en árbol (existirá una ruta única entre cada par de nodos).
● Organización en red acoplada (cada nodo tendrá varios vecinos y existen
múltiples rutas entre cada par de nodos).
Tolerancia a fallos.

101
Calidad de un árbol

Tres Métricas.

Primera
Tensión del vínculo: mide la frecuencia con que un paquete cruza el mismo vínculo.
Una tensión de vínculo >1 proviene de que aunque a nivel lógico un paquete puede reenviarse
a lo largo de dos conexiones diferentes, parte de esas conexiones puede en realidad
corresponder al mismo vínculo físico.

Segunda
Estiramiento o RDP(castigo relativo por retraso): mide la relación que hay entre dos nodos de
la sobrepuesta y el retraso en la red sobrepuesta.
Por ejemplo al enviar un mensaje de B a C:
Traviesa la ruta: B, Rb, Ra, Rc, C-> costo 59 unidades.
O la ruta B, Rb, Rd, Rc, C -> costo 47 unidades. Estiramiento: 59/47=1.255

Tercera
Costo del árbol: minimización de costos agregados de los vínculos.

Diseminación de datos basado en el gossip.

Modelo epidémico
El objetivo principal de los protocolos epidémicos es propagar rápidamente información entre
una gran colección de nodos utilizando sólo información local.
102
Tipos de nodos en un sistema distribuido:
Infectados: Mantiene información que vale la pena propagar.
Susceptible: Nodo que aún no ha visto la información.
Eliminado: Nodo infectado que no está dispuesto o no es capaz de propagar la información.

Modelo Antientropía
En este modelo, un nodo P elige al azar a otro nodo Q, y posteriormente intercambia
actualizaciones con Q. Existen tres métodos para intercambiar actualizaciones:
1.P sólo empuja sus propias actualizaciones hacia Q
2.P sólo jala nuevas actualizaciones desde Q
3.P y Q se envían actualizaciones entre sí.

Gossiping.
Funciona de la siguiente manera. Si el nodo P se acaba de actualizar con el elemento de datos
x, contacta a cualquier otro nodo Q e intenta empujar la actualización en Q. Sin embargo, es
posible que Q ya haya sido actualizado por otro nodo. En ese caso, P podría perder el interés
en propagar la actualización nuevamente. En otras palabras, la actualización se elimina.

Una ventaja de los modelos epidémicos es su escalabilidad.


Propagar la eliminación de un dato es difícil. Cuando un datos es eliminado de un Nodo, dicho
nodo recibirá en algún momento viejas copias del dato y la interpretará como actualizaciones.

5. SINCRONIZACIÓN

5.1. Sincronización del reloj


Se dice que en un sistema no puede haber tiempos ambiguos, al momento que dos procesos
(compartiendo recursos) en secuencia realicen una petición al sistema para saber la hora, el
segundo proceso no puede tener una hora menor que el primer proceso, esto puede ocasionar
muchos problemas ya que al no estar sincronizados no podrán llegar a una convergencia entre
los procesos ya que no se tiene un tiempo global al cual apegarse.
Para un mejor entendimiento expongamos el caso del programa make de UNIX, en UNIX
cuando un programa es grande se divide en varios archivos fuentes esto ayuda al programador
en el momento que el desee realizar una modificación no tendrá que compilar todos los archivos
de ese programa solo el archivo que modificó, teniendo esto en cuenta imaginemos el siguiente
caso:
Imaginemos que dos archivos están enlazados pero se ejecutan en máquinas diferentes las
cuales tienen horas ligeramente diferentes y que el archivo B depende del archivo A, si el
archivo A tiene una fecha mayor a B pero B hizo la última modificación pero el sistema en
donde está corriendo B tiene una fecha menor que el sistema donde está corriendo A habría un
103
conflicto ya que no se guardaran las modificaciones de B porque no hubo una sincronización
correcta.

Relojes Físicos
Casi todas las computadoras tienen un circuito para dar seguimiento al tiempo. A pesar del
amplio uso de la palabra “reloj” para hacer referencia a estos dispositivos, en realidad no son
relojes en el sentido usual. Tal vez cronómetro sea una mejor palabra con la cual designarlos.
Un cronómetro de computadora, en general, es un cristal de cuarzo mecanizado con precisión.
Cuando este dispositivo se mantiene sujeto a tensión, los cristales de cuarzo oscilan en una
frecuencia bien definida que depende del tipo de cristal, de la forma de su corte, y de la cantidad
de tensión. Hay dos registros asociados con cada cristal, un contador y un registro de
mantenedor. Cada oscilación del cristal disminuye el contador en uno. Cuando el contador llega
a cero, se genera una interrupción y el contador se reinicia a partir del registro de mantenedor.
De esta manera, es posible programar un cronómetro para generar una interrupción 60 veces
por segundo, o a cualquier otra frecuencia deseada. A cada interrupción se le conoce como
marca de reloj.
Con una sola computadora y un solo reloj, no importa mucho si este reloj está desfasado por
una pequeña cantidad. Debido a que todos los procesos de la máquina utilizan el mismo reloj,
cuando se introducen varias CPU, cada una con su propio reloj, la situación cambia
radicalmente. Aunque la frecuencia con la que oscila un cristal es en general bastante estable,
resulta imposible garantizar que los cristales de los diferentes computadores funcionen
exactamente con la misma frecuencia. En la práctica, cuando un sistema tiene n computadoras,
los n cristales funcionarán velocidades ligeramente diferentes, lo cual ocasiona que los relojes
(software) se salgan gradualmente de sincronía y arrojen diferentes valores cuando se leen.
Esta diferencia en valores se conoce como distorsión de reloj.
En algunos sistemas (por ejemplo, sistemas de tiempo real), la hora del reloj real es importante.
Bajo estas circunstancias, los relojes físicos externos son necesarios. Por razones de eficiencia
y redundancia, generalmente se considera deseable tener varios relojes, lo cual genera dos
problemas:
(1) ¿Cómo los sincronizamos con relojes reales?, y (2) ¿Cómo los sincronizamos entre sí?

Sistema de posicionamiento global


En respuesta a la interrogante ¿cómo determinar nuestra posición geográfica en cualquier parte
del planeta?, y en conjunto con la búsqueda de la solución del problema de sincronizado de
relojes, se ha determinado que el problema de
Posicionamiento se resuelve por sí mismo a través de un sistema distribuido altamente
específico y dedicado llamado GPS (por sus siglas en inglés Global Positioning System)

Definición y características del GPS:


104
● GPS significa sistema de posicionamiento global.
● El GPS es un sistema distribuido basado en un satélite puesto en órbita en 1978.
● Aunque ha sido utilizado principalmente en aplicaciones militares, en años
recientes ha encontrado su camino para muchas aplicaciones civiles,
principalmente en la navegación.
● En otras palabras, una medición GPS proporcionará además un conteo del
tiempo.
Campos de Aplicación:
● Los teléfonos GPS ahora permiten a quienes llaman rastrear la posición del otro,
una característica que puede ser extremadamente útil cuando se está perdido o
en problemas. Este principio puede aplicarse fácilmente para rastrear otras
cosas, incluso mascotas, niños, automóviles, naves, etc.
¿Cómo funciona el GPS?
● El GPS utiliza 29 satélites que circulan cada uno en una órbita situada a una
altura aproximada de 20 000 km.
● Cada satélite tiene hasta cuatro relojes atómicos que son calibrados
regularmente desde estaciones especiales ubicadas en la Tierra.
● Un satélite transmite su posición de manera continua, y registra el tiempo de
cada mensaje con su tiempo local.
● Esta transmisión permite a cada receptor localizado en la Tierra calcular
exactamente su propia posición, empleando en principio sólo tres satélites.

Desventajas:
Hasta el momento hemos asumido que las mediciones son perfectamente exactas, pero no es
así.
● El GPS no considera segundos vacíos, es decir, existe una desviación
sistemática del UTC, la cual a partir del 1 de enero de 2006 es de 14 segundos.
Tal error puede compensarse fácilmente en el software.
● Los relojes atómicos satelitales no siempre se encuentran en perfecta sincronía,
la posición de un satélite no se conoce con precisión, el reloj del receptor tiene
una exactitud finita, la velocidad de propagación de la señal no es constante,
etc.
● La Tierra no es una esfera perfecta, lo que nos lleva a necesitar más
correcciones.

Algoritmos de sincronización de relojes


En los últimos años se ha abordado el problema de la sincronización de relojes de computadoras
desde diferentes puntos de vista. En esta sección se exponen los principales algoritmos que
resuelven el problema. Hay, además de los presentados, otros algoritmos derivados de los
105
expuestos. En todos los casos, para la comunicación de las referencias de tiempo, se utiliza el
sistema de comunicaciones ya existente entre las computadoras que se desea sincronizar.

Algoritmo de Lamport
El algoritmo de Lamport es uno de los primeros propuestos para la sincronización de sistemas
distribuidos y se basa en la relación “sucede antes” más la utilización de los mensajes entre las
computadoras como indicadores precisos de esta relación. Más específicamente, un mensaje
no puede ser recibido antes de ser enviado y, por lo tanto, si se tienen marcas de tiempo de los
envíos de los mensajes se puede verificar si el tiempo actual es coherente con la definición de
la relación “antes de”. Para ello se definen relojes lógicos. Un resumen de lo que realiza el
algoritmo sería: Se analiza qué sucede antes
● a-->b significa a antes de b
● Si en un proceso el evento b sucede después de a, entonces a>b es verdadero
● Si a identifica el evento de enviar un mensaje y b el de recibirlo, a>b es
verdadero (no puede ser recibido antes de ser enviado)
● Si asigno valores en el tiempo C(a) y C(b), C(a) < C(b)
● Si no se cumple, adicionar el valor necesario a C(b). Nunca resto, ya que el
tiempo debe ser siempre creciente
● En un mismo proceso, para dos eventos a y b C(a) debe ser diferente de C(b)
(exigencia de resolución de reloj)

Las tareas a llevar a cabo en cada computadora son relativamente sencillas, aunque afectan, en
cierta manera, la forma en que se procesan los mensajes:

1. Se tiene un reloj local.


2. Cada vez que se envía un mensaje, se le agrega al mismo una marca de tiempo
(timestamp) con el tiempo local del queenvía.
3. Cada vez que llega un mensaje, se analiza la marca de tiempo del que envió, y si
la marca de tiempo es menor que eltiempo local, se asume que las computadoras
están sincronizadas,si la marca de tiempo es mayor o igual que el tiempo local, se
cambia el tiempo local con la marca de tiempo del mensaje que se recibió más 1
(asumiendo, por ejemplo, que la transmisión necesita 1 unidad de tiempo)

Algoritmo de Cristian
Cristian definió los conceptos de sincronización interna y externa, ya vistos. Recordamos que
sincronización interna se refiere a mantener un grupo de relojes sincronizados, no importa qué
hora tengan pero que en el grupo sea la misma, o con un margen de diferencias acotado a algún
valor conocido. La sincronización externa podría definirse como mantener sincronización
interna con alguna fuente fiable de hora tipo UTC.En este marco de definición, Cristian
106
propone sincronizar un conjunto de relojes de máquinas a partir de una que esté sincronizada
externamente (tiempo u hora real), a través de la red de comunicaciones de datos entre
computadoras.
El algoritmo de Cristian es probabilístico ya que no garantiza que un procesador pueda leer un
reloj remoto con una precisión específica. Sin embargo, intentando una cantidad de veces
suficiente, la hora recuperada puede ser leída con una precisión dada, con una probabilidad
cerca de uno, según lo deseado.
Por otro lado, no se sabe cuánto es el máximo tiempo de envío de un mensaje entre dos
computadoras. Algunos algoritmos suponen un tiempo máximo de envío. Son algoritmos
determinísticos en el sentido que suponen que siempre llega el mensaje con la referencia en un
tiempo menor al tiempo máximo. No pueden ser usados para sincronizar sistemas asincrónicos,
ya que es imposible determinar el tiempo máximo.
Estos algoritmos suponen un intercambio de mensajes, para n procesos a sincronizar, de n2.
Esto dificulta la escalabilidad en redes con gran número de nodos.
Cristian asume que:
1) El tiempo mínimo de demora de un mensaje min t es conocido.
2) La función de distribución de la demora en los mensajes es conocida.
Pueden ocurrir tres tipos de fallas en un proceso que trata de sincronizar:
● Por rotura: cuando ante la pérdida de un evento no puede recuperarse
● Por performance: cuando reacciona ante el evento muy lentamente,
posiblemente por culpa del sistema operativo y excede la demora σ.
● Arbitraria: Son las demás fallas. Por ejemplo un proceso que reacciona
demasiado rápido o que envía información errónea.
El algoritmo de Cristian presenta ciertos inconvenientes:
● Al contar con un servidor de hora, si este falla, queda sin referencia. Cristian
propone que los clientes hagan los requerimientos a varios servidores y se
queden con la referencia que llegue primero.
● La segunda cuestión es con relación al ajuste del reloj. Si la hora de referencia
recibida desde el máster es menor a la que se desea ajustar, dicho ajuste implica
un atraso, con lo cual dicho reloj pasa dos veces por la misma hora. Esto traería
aparejados múltiples inconvenientes; entre otros , uno bastante grave: la hora de
actualización de archivos. En algunos aparecerán en el futuro modificaciones
del pasado, con los inconvenientes que ello presenta, por ejemplo, para
utilidades como make. En las implementaciones de este algoritmo, para atrasar,
se baja la frecuencia del reloj durante el tiempo necesario para atrasarlo sin
escalones.
● Tiene los problemas de escalabilidad de toda arquitectura cliente servidor.

107
Algoritmo de Berkeley

El algoritmo pasa por tres fases:


1) El servidor (máster) es activo, pregunta a cada cliente (slave) por su hora.
2) Calcula el promedio, descontando los que están lejos del mismo.
3) Informa a cada cliente cómo debe cambiar la hora.
Estos intercambios de información se realizan a través de paquetes de datos que circulan por la
red de interconexión entre las computadoras que se desea sincronizar, con las demoras
correspondientes. Estas demoras deberán tenerse en cuenta a la hora de evaluar la corrección
para sincronizar los relojes.

5.2. Relojes lógicos


No es posible reunir toda la información sobre el sistema en un punto y que luego algún proceso
la examine y tome las decisiones.
Si para asignar un recurso de E/S un proceso debe recolectar información de todos los procesos
para tomar la decisión esto implica una gran carga para este proceso y su caída afectaría en
mucho al sistema.
Idealmente, un sistema distribuido debería ser más confiable que las máquinas individuales.
Alcanzar la sincronización sin la centralización requiere hacer cosas en forma distinta a los
sistemas operativos tradicionales.
● La sincronización de relojes está naturalmente relacionada con el tiempo real.
● Para ejecutar make resulta adecuado que dos nodos acuerden que input.o sea
actualizado por una nueva versión de input.c.

108
● Lamport (1978) mostró que aunque la sincronización de relojes es posible, no
necesita ser absoluta.
● Lo más importante no es que todos los procesos coincidan con el tiempo sino
que coincidan en el orden en que ocurren los eventos.

Relojes lógicos de Lamport


Lamport definió a>b y se lee “a ocurre antes de b” que indica que todos los procesos coinciden
en que primero ocurre a y después b >Se cumple: – Si a y b son dos eventos en el mismo
proceso y a ocurre antes que b, entonces a>b es verdadero – Si a es el evento del envío de un
mensaje por un proceso y b es el evento de la recepción del mensaje por otro proceso, entonces
a>b es verdadero
De qué forma podemos sincronizar relojes lógicos? – Necesitamos una forma de asociar a cada
evento a un valor de tiempo C(a) en el que todos los procesos estén de acuerdo – Los valores
de tiempo deben tener la propiedad de que si a>b entonces C(a)
Algorítmo de Lamport – Cada mensaje acarrea el tiempo de envío, de acuerdo con el reloj del
emisor. – Cuando un mensaje llega y el reloj del receptor muestra un valor anterior al tiempo
en que se envió el mensaje, el receptor adelanta su reloj para que tenga una unidad más que el
tiempo de envío. – Entre dos eventos cualesquiera, el reloj debe marcar al menos una vez. –
Dos eventos no deben ocurrir exactamente al mismo tiempo.

109
Relojes vectoriales
Mattern y Fidge desarrollaron relojes vectoriales para mejorar la deficiencia de los relojes de
Lamport, del hecho que no podemos deducir que un reloj vectorial para un sistema de N
procesos es un vector de N enteros.
Cada proceso mantiene su propio reloj vectorial Vi, que utiliza para colocar marcas de tiempo
en los sucesos locales. Como las marcas de tiempo de Lamport, cada proceso adhiere el vector
de marcas de tiempo en los mensajes que envía al resto, y hay unas reglas sencillas para
actualizar los relojes.

Los vectores de marcas de tiempo tienen la desventaja, comparados con las marcas de tiempo
de Lamport, de precisar una cantidad de almacenamiento y de carga real de mensajes que es
proporcional a N, el número de procesos.
Reloj Vectorial: Los relojes vectoriales se construyen de manera que cada proceso Pi mantenga
un vector VCi con las dos siguientes propiedades:
VCi[i] es el número de eventos que han ocurrido hasta el momento en Pi. En otras palabras,
VCi[i] es el reloj lógico del proceso Pi.
Si VCi[j] = k, entonces Pi sabe que han ocurrido k eventos en Pj. Así, éste es el conocimiento
de Pi del tiempo local en Pj.
Propiedades:
● La primera propiedad se mantiene incrementando VCi[i] ante la ocurrencia de
cada nuevo evento en el proceso Pi.
● La segunda propiedad se mantiene encimando los vectores junto con los
mensajes que se envían.

Pasos de la Segunda Propiedad


Antes de ejecutar un evento (es decir, enviar un mensaje por la red, entregar un mensaje a una
aplicación,o algún otro evento interno),Pi ejecuta VCi[i] ←VCi[i] _ 1.
Cuando el proceso Pi envía un mensaje m a Pj, éste establece el registro de tiempo de m, ts
(m), igual a VCi después de haber ejecutado el paso anterior.
Una vez que se recibe el mensaje m, el proceso Pj ajusta su propio vector configurando VCj[k]
← máx{VCj[k], ts(m)[k]} para cada k, después de lo cual ejecuta el primer paso y libera el
mensaje a la aplicación.
Imposición de la comunicación causal: Al utilizar relojes vectoriales, ahora ya es posible
garantizar que un mensaje sea entregado sólo si todos los mensajes que causalmente lo
preceden también han sido recibidos.

110
Transmisión causalmente ordenada: Si dos mensajes no están relacionados de ninguna manera,
no nos interesa el orden en que se entregan a las aplicaciones; pueden incluso entregarse en
diferente orden en diferentes ubicaciones.
Una nota sobre la entrega ordenada de mensajes
Existen dos problemas principales con dejar que el middleware trate con el ordenamiento de
mensajes.
● El middleware no puede decir qué contiene un mensaje, sólo captura la potencial
causalidad.
● Una desventaja de tener únicamente soluciones al nivel de aplicación es que el
desarrollador se ve obligado a concentrarse en las cuestiones que no se
relacionan de inmediato con la funcionalidad central de la aplicación.

5.3. Exclusión mutua en sistemas distribuidos


Para los sistemas distribuidos resultan fundamentales la concurrencia y la colaboración entre
diversos procesos. En muchos casos, esto significa también que los procesos necesitarán de
acceso Simultáneo a los mismos recursos. Para evitar que tales accesos concurrentes corrompan
los recursos, o que los vuelvan inconsistentes, se necesita encontrar soluciones que garanticen
que los procesos tengan acceso mutuamente exclusivo.
Los algoritmos distribuidos de exclusión mutua pueden clasificarse en dos diferentes
categorías.
● Soluciones basadas en token, la exclusión mutua se logra pasando entre los
procesos un mensaje especial conocido como token. Sólo hay un token
disponible, y quien lo tenga puede acceder al recurso compartido. Cuando
termina, el token pasa al siguiente proceso. Si un proceso tiene el token pero no
está interesado en acceder al recurso, simplemente lo pasa.
Las soluciones basadas en token tienen algunas propiedades importantes:
● Primero, de acuerdo con la organización de los procesos, éstos pueden
garantizar fácilmente que todos tendrán la oportunidad de acceder a los
recursos. En otras palabras, evitar la inanición.
● Segundo, el interbloqueo mediante los cuales diversos procesos se esperan unos
a otros para continuar pueden evitarse fácilmente, contribuyendo a su
simplicidad.
● Método basado en permisos. En este caso, un proceso que desea el primer
acceso a los recursos requiere el permiso de los otros

Algoritmo Centralizado
En un sistema distribuido, la manera más directa de lograr la exclusión mutua es simular lo que
se hace en un sistema de un procesador. Se elige un proceso como coordinador. Siempre que

111
un proceso desea acceder a un recurso compartido, envía un mensaje de petición al coordinador
mencionando el recurso al que desea acceder, y solicita permiso. Si ningún otro proceso está
accediendo al recurso en ese momento, el coordinador devuelve una respuesta en la que otorga
el permiso, como se muestra en la figura 614(a). Cuando la respuesta llega, el proceso
solicitante puede continuar.

El método centralizado también tiene defectos. El coordinador es un solo punto de falla, por lo
que si falla, todo el sistema puede irse abajo. Si los procesos normalmente se bloquean después
de hacer una petición, no pueden distinguir un coordinador desactivado de un “permiso
negado” ya que, en ambos casos, ningún mensaje regresa. Además, en un sistema grande, un
solo coordinador puede volverse un cuello de botella en cuanto a rendimiento. Sin embargo,
los beneficios provenientes de su simplicidad pesan más que las potenciales desventajas.

Algoritmo Descentralizado
Con frecuencia, tener un solo coordinador es un mal método. Demos un vistazo a una solución
totalmente descentralizada. Se supone que cada recurso se replica n veces. Cada réplica tiene
su propio coordinador para controlar el acceso de procesos concurrentes. Sin embargo, siempre
que un proceso desee acceder al recurso, éste simplemente tendrá que lograr una votación
mayoritaria a partir de m > n/2 coordinadores. A diferencia del esquema centralizado que
explicamos antes, asumimos que cuando un coordinador no otorga el permiso para acceder a
un recurso (lo que hará cuando haya otorgado el permiso a otro proceso), se lo informa al
solicitante. Este esquema básicamente hace que la solución original centralizada sea menos
vulnerable ante las fallas de un solo coordinador. La suposición es que cuando un coordinador
falla, se recupera rápidamente pero habrá olvidado cualquier voto otorgado antes de fallar. Otra
forma de ver esto es que el coordinador se reinicia a sí mismo en cualquier momento. El riesgo
que corremos es que un reinicio hará que el coordinador olvide los permisos otorgados
previamente a algunos procesos para acceder al recurso. En consecuencia, después de su
recuperación puede nuevamente otorgar, de manera incorrecta, permiso a otro proceso.
Sea p la probabilidad de que un coordinador se reinicie durante un intervalo de tiempo t. La
probabilidad, P[k], de que cada k de m coordinadores se reinicie durante el mismo intervalo es:

112
Un algoritmo distribuido
No es suficiente con un algoritmo probabilísticamente correcto por lo que investigadores han
elaborado algoritmo algoritmos distribuidos deterministas de exclusión mutua, el artículo de
Lamport en 1978 presento el primer algoritmo sobre la sincronización de relojes.
En 1981 Ricart y Agrawala realizaron un algoritmo más eficiente que requiere un ordenamiento
total de todos los eventos del sistema, el algoritmo funciona de la siguiente manera cuando un
proceso desea acceder a un recurso compartido, elabora un mensaje que contiene el nombre del
recurso, su número de proceso, y el tiempo actual (lógico).
● Entonces envía el mensaje a todos los demás procesos, incluyéndose de manera
conceptual. Se supone que el envío de los mensajes es confiable; es decir, no se
pierde mensaje alguno.
● Cuando un proceso recibe un mensaje de petición de otro proceso, la acción que
tome dependerá de su propio estado con respecto al recurso mencionado en el
mensaje. Se deben distinguir claramente tres casos:
1. Si el destinatario no accede al recurso y no desea acceder a él, envía un
mensaje de OK al remitente.
2. Si el destinatario ya cuenta con acceso al recurso, simplemente no
responde. En vez de eso, coloca la petición en una cola.
3. Si el receptor también quiere acceder al recurso, pero aún no lo ha hecho,
compara el registro de tiempo del mensaje entrante con el del mensaje que
ya ha enviado a todos. El menor gana. Si el mensaje entrante tiene un
registro de tiempo menor, el receptor envía de vuelta un mensaje de OK.
Si su propio mensaje tiene un registro menor, el destinatario coloca en la
cola el mensaje entrante y no envía nada.
● Después de pedir permiso y enviar las peticiones, un proceso espera hasta que
todos los demás tengan permiso. Tan pronto como todos los permisos están
dentro, el proceso puede continuar. Cuando termina, envía un mensaje de OK a
todos los procesos de su cola y elimina todos los demás.

Ejemplo

113
El proceso 0 envía a todos una petición con un registro de tiempo de 8, mientras que al mismo
tiempo, el proceso 2 envía a todos una petición con registro de 12. El proceso 1 no está
interesado en el recurso, de manera que envía OK a ambos remitentes. Los procesos 0 y 2 ven
el conflicto y comparan los registros de tiempo. El proceso 2 ve que perdió, de manera que le
concede permiso a 0 al enviar OK. Ahora el proceso 0 forma en la cola a la petición de 2, para
su posterior procesamiento y acceso al recurso. Cuando termina, elimina la petición de 2 de su
cola y envía un mensaje de OK para procesar 2, permitiendo a este último seguir adelante,
El algoritmo funciona debido a que, en caso de un conflicto, el menor registro de tiempo gana
y todos los demás coinciden en el orden de los registros, la exclusión mutua se garantiza sin
interbloqueos o inanición, el número de mensajes requerido por entrada ahora es 2(n 1), en
donde n es el número total de procesos.
Lo mejor de todo es que son posibles muchas mejoras menores para este algoritmo, Por
desgracia, el único punto de falla se reemplazó por n puntos de falla. Si alguno de los procesos
falla, fallará en responder las peticiones lo cual bloqueará todos los intentos posteriores de los
procesos para entrar a las regiones críticas. No obstante, este algoritmo es más lento, más
complicado, más caro, y menos robusto que el original centralizado.
El algoritmo se puede parchar mediante un truco. Cuando llega una petición, el destinatario
siempre envía una respuesta, ya sea autorizando o negando el permiso. Cada vez que se pierde
una petición o una respuesta, el remitente agota el tiempo y continúa hasta que obtiene una
respuesta, o el remitente concluye que el destinatario está desactivado. Después de que se niega
una petición, el remitente debe lanzar un bloqueo y esperar un mensaje posterior de OK.

UN ALGORITMO DE ANILLO DE TOKEN

114
Cuando se inicia el anillo, al proceso 0 se le asigna un token. El token circula alrededor del
anillo. Se pasa desde el proceso k al proceso k + 1 (modula el tamaño del anillo) en los mensajes
punto a punto. Cuando un proceso adquiere el token de su vecino, verifica si necesita acceder
al recurso compartido. Si es así, el proceso sigue adelante, hace el trabajo que requiere hacer,
y libera los recursos. Una vez que ha terminado, pasa el token a lo largo del anillo. No está
permitido acceder de inmediato de nuevo al recurso mediante el uso del mismo token.
Si un proceso no necesita ningún recurso la señal circula a alta velocidad por el anillo, el grado
de exactitud de este algoritmo es fácil por lo que solo un proceso tiene el token por lo que
solamente él puede llegar al recurso. Cuando un proceso accede al recurso, los demás recursos
deben esperar.

Comparación de los cuatro algoritmos

● El algoritmo centralizado es el más simple y también el más eficiente. Sólo


requiere de tres mensajes para entrar y salir de una región crítica: una petición,
un permiso para entrar, y una liberación para salir.
115
● El caso descentralizado, vemos que estos mensajes necesitan ser realizados por
cada uno de los m coordinadores, pero ahora es posible que se necesiten varios
intentos (para ello introducimos la variable k).
● El algoritmo distribuido requiere n – 1 mensajes de petición, uno para cada uno
de los demás procesos, y los n _ 1 mensajes adicionales de autorización, para
un total de 2(n – 1). (Suponemos que solamente se utilizan los canales de
comunicación punto a punto.)
● El algoritmo de anillo de token, el número es variable. Si cada proceso requiere
entrar de manera constante a una región crítica, entonces cada token arrojará
como resultado una entrada y una salida, para un promedio de un mensaje por
región crítica introducida. Por otra parte, en ocasiones el token puede circular
por horas sin que ningún proceso se interese en él. En este caso, el número de
mensajes por entrada a una región crítica es ilimitado.

5.4. Posicionamiento global de los nodos


Cuando aumenta el número de nodos en un sistema distribuido, se vuelve cada vez más difícil
para cualquier nodo dar seguimiento a los demás. En redes geométricas sobrepuestas, a cada
nodo se le asigna una posición dentro de un espacio geométrico m- dimensional, tal que la
distancia entre dos nodos en dicho espacio refleja una métrica de rendimiento en el mundo real.
El ejemplo más simple, y más aplicado, es en donde la distancia se corresponde con la latencia
internodal. En otras palabras, dados dos nodos P y Q, entonces la distancia d (P, Q) refleja el
tiempo que le toma a un mensaje viajar desde P hacia Q y viceversa.

Hacer contacto solamente con un nodo le dirá a P el círculo sobre el que se localiza; hacer
contacto con sólo dos nodos le informará con respecto a la posición de la intersección de los
dos círculos (lo que por lo general consta de dos puntos); contactar un tercer nodo permitirá de
manera subsiguiente que P calcule su ubicación real.
El nodo P puede calcular sus propias coordenadas (Xp,Yp) mediante la resolución de las tres
ecuaciones con las incógnitas Xp y Yp :

116
5.5. Algoritmos de elección de coordinador

La elección de algoritmos intenta localizar el proceso que tenga el número más grande y
designar como coordinador. El objetivo de un algoritmo de elección es garantizar que cuando
inicie una elección, ésta concluya con todos los procesos de acuerdo con el que será el nuevo
coordinador.

Algoritmos de elección tradicional


El algoritmo del abusón (Bully)
Cuando cualquier proceso advierte que el coordinador ya no está respondiendo peticiones,
inicia una elección. Un proceso, P, celebra una elección de la siguiente manera:
1. P envía un mensaje de ELECCIÓN a todos los procesos con números superiores.
2. Si ningún proceso responde, P gana la elección y se convierte en el coordinador.
3. Si uno de los procesos superiores responde, toma el mando. El trabajo de P está
hecho.
En cualquier momento, un proceso puede recibir un mensaje de ELECCIÓN de alguno de sus
colegas con número menor. Cuando llega un mensaje de este tipo, el destinatario envía un
mensaje de OK de vuelta al remitente para indicarle que está activo y que tomará el control. El
destinatario celebra entonces una elección, a menos que ya tenga una. En algún momento, todos
los procesos se rinden menos uno, que es entonces el nuevo coordinador. Este anuncia su
victoria enviando un mensaje a todos los procesos en el que les indica que a partir de ese
momento es el nuevo coordinador.

117
Un algoritmo de anillo
Este algoritmo no utiliza un token.
Cuando cualquier proceso advierte que el coordinador no funciona, elabora un mensaje de
elección que contiene su propio número de proceso y envía el mensaje a su sucesor y así
sucesivamente hasta que localice un proceso en ejecución.
El mensaje regresa al proceso que inició todo. Ese proceso reconoce este evento cuando recibe
un mensaje entrante que contiene su propio número de proceso. En ese punto, el tipo de mensaje
cambia a COORDINADOR y circula una vez más, para informar a todos que es el coordinador
y cuáles son los miembros del nuevo anillo.

Elecciones en ambientes inalámbricos


Los algoritmos tradicionales de elección generalmente se basan en suposiciones que no son
reales en ambientes inalámbricos.

118
Una propiedad importante de su solución es que el mejor líder puede elegirse, en lugar de
hacerlo al azar.
Considere una red inalámbrica a la medida. Para elegir un líder, cualquier nodo de la red,
llamado fuente, puede iniciar una elección enviando un mensaje de ELECCIÓN a sus vecinos
inmediatos (es decir, a los nodos de su rango). Cuando un nodo recibe una ELECCIÓN por
primera vez, designa al remitente como su padre, y posteriormente envía un mensaje de
ELECCIÓN a sus vecinos inmediatos, con excepción del padre. Cuando un nodo recibe un
mensaje de ELECCIÓN de otro nodo que no sea su padre, simplemente acusa de recibido.

Cuando el nodo R ha designado al nodo Q como su padre, éste reenvía el mensaje de


ELECCIÓN a sus vecinos inmediatos (excepto a Q) y espera la llegada de los acuses antes de
enviar acuse de recibo del mensaje de ELECCIÓN de Q.
Esta espera tiene una importante consecuencia.
Primero, observe que los vecinos que ya han seleccionado un padre de inmediato responden a
R. De manera más específica, si todos los vecinos ya tienen un padre, R es un nodo hoja y
podrá responder rápidamente a Q. Al hacerlo, también reporta información tal como el tiempo
de vida de la pila y otras capacidades de los recursos.
Esta información permitirá más tarde a Q comparar las capacidades de R con las de otros nodos,
y seleccionar al mejor nodo para que sea el líder. Por supuesto, Q ha enviado un mensaje de
ELECCIÓN sólo porque su padre, P, lo ha hecho también. A su vez, cuando Q en algún
momento acuse la recepción del mensaje de ELECCIÓN previamente enviado por P, éste
pasará también el nodo más elegible a P. De este modo, la fuente deberá saber en algún
momento cuál es el mejor nodo para seleccionarlo como líder, y después transmitirá esta
información a los demás nodos.

Elecciones en sistemas de gran escala

119
En sistemas distribuidos de tamaño medio y grande existen situaciones en las que el algoritmo
necesita la elección de varios nodos, como es el caso de los superpuntos de las redes punto a
punto.
Para la elección de los superpuntos, es necesario cumplir los siguientes requerimientos:
● Los nodos normales deben tener acceso de baja latencia a los superpuntos.
● Los superpuntos deben distribuirse uniformemente a través de la red
sobrepuesta.
● Debe haber una porción predefinida de superpuntos, relativa al número total de
nodos de la red sobrepuesta.
Cada superpunto no debe necesitar servir a más de un número fijo de nodos normales.

6. SISTEMAS DE ARCHIVOS DISTRIBUIDOS

6.1. Arquitectura
Teniendo en cuenta que en un sistema distribuido los sistemas de archivos distribuidos son
fundamentales para muchas aplicaciones podremos explicar que la arquitectura de estos
sistemas en su mayoría sigue un esquema cliente-servidor pero existen otras soluciones
descentralizadas que cumplen la misma función las cuales veremos más adelante.

Arquitecturas cliente-servidor
Cuando de sistemas de archivos se trata la arquitectura cliente-servidor tomando como ejemplo
el sistema de archivo de red (NFS), es la más usada en los sistemas basados en UNIX.
● Existe un modelo que sirve como fundamento al NFS y a sistemas similares el
cual es de un servicio de archivos remoto, el cual solo ofrecen al cliente una
interfaz que contiene varias operaciones de archivos y el servidor tiene que
interpretarlas, este modelo también se lo conoce como modelo de acceso
remoto.
● Existe otro modelo el cual es denominado modelos de carga y descarga el cual
consiste en que un cliente accede a un archivo localmente después de haberlo
descargado del servidor, cuando el cliente termina con el archivo se vuelve a
cargar en el servidor para que otro cliente pueda hacer uso de él.

120
Para todos los sistemas UNIX modernos el NFS generalmente se implementa siguiendo una
arquitectura en capa donde un cliente accede al sistemas de archivos usando las invocaciones
a sistemas provista por su SO local. Sin embargo esto es remplazado por una interfaz para
comunicarse con el sistema de archivos virtual el cual es el estándar para comunicarse con
sistemas de archivos distribuidos diferentes.
● En los sistemas de archivos (NFS) las operaciones de interfaz se transfieren o a
un sistema de archivo local o a otro componente conocido como cliente NFS, el
cual maneja el acceso a los archivos guardados en un servidor remoto. La idea
completa del VFS es ocultar las diferencias entre varios sistemas de archivo.
● El servidor NFS se encarga de manejar las solicitudes de clientes. El resguardo
de RPC desempaqueta las solicitudes y el servidor NFS las transforma en
operaciones con archivos VFS regulares que posteriormente se transfieren a la
capa VFS, el VFS se encarga de implementar un sistema de archivo local donde
los archivos están guardados.

Una ventaja de este esquema es que el NFS es independiente de los sistemas de archivo locales,
no importa si el sistema operativo en el lado del cliente o del servidor implementa un sistema
de archivo UNIX, un sistema de archivo Windows 2000. Lo único importante es que estos
sistemas de archivo cumplan con el modelo de sistema de archivo ofrecido por el NFS.

En estos modelos de sistema de archivos existen varias operaciones con las cuales se manejan
los archivos las cuales son:
121
Sistemas de archivo distribuido basados en clúster
El NFS es un ejemplo típico de muchos sistemas de archivo distribuidos, los cuales
generalmente se organizan con arreglo a una arquitectura cliente-servidor tradicional.
Esta arquitectura a menudo se mejora agrupando los servidores con pocas diferencias. Dichos
servidores a menudo se utilizan en aplicaciones en paralelo, no sorprende que sus sistemas de
archivo asociados se ajusten como corresponde.
● Una técnica muy conocida es desplegar técnicas de distribución de archivos,
mediante las cuales un archivo se distribuye a través de múltiples servidores,
distribuyendo un archivo grande entre múltiples servidores, ya que es posible
buscar sus diferentes partes en paralelo.
● Particionar el sistema de archivo en su totalidad y simplemente guardar los
diferentes archivos en diferentes servidores, pero no particionar un solo archivo
a través de múltiples servidores.

Más interesantes son los casos en que se debe organizar un sistema de archivos distribuidos
para grandes centros de datos, tales como los utilizados por compañías como Amazon y

122
Google. Estas compañías ofrecen servicios a clientes web cuyo resultado son lecturas y
actualizaciones de un número masivo de archivos distribuidos a través de literalmente decenas
de miles de computadoras. Es de esperarse que en cualquier momento falle una computadora.
Estas observaciones, junto con el hecho de que las fallas de servidor son la norma en lugar de
la excepción, llevaron a la construcción de grupos de servidores tal como se muestra en la
figura 115.

¿Cómo funciona el GFS (Google File System)?


1. Cada grupo de GFS se compone de un servidor maestro junto con múltiples
servidores fragmentados.
2. Cada archivo GFS es dividido en fragmentos de 64 Mbytes cada uno.
3. Los fragmentos se distribuyen a través de los servidores llamados
fragmentados.

Una característica interesante es que el GFS maestro no intenta llevar la cuenta precisa de las
ubicaciones de los fragmentos. En cambio, de vez en cuando se pone en contacto con los
servidores fragmentados para ver qué fragmentos tienen guardados.

Ventaja
Principalmente la simplicidad ya que el servidor maestro controla la asignación de los
fragmentos a los servidores fragmentados. Además, éstos llevan la cuenta de lo que tienen
guardado. Por consiguiente, una vez que el servidor maestro obtiene las ubicaciones de los
fragmentos, tiene una imagen precisa de dónde están guardados los datos. ¿Por qué se agranda
este esquema?
Un importante tema de diseño es que el servidor maestro está en control en gran medida, pero
que no forma un cuello de botella a causa del trabajo que necesita realizar.

Medidas para manejar la escalabilidad

123
1. Que la mayor parte del trabajo sea realizada por servidores fragmentados.
Cuando un cliente necesita acceder a datos, se pone en contacto con el servidor
maestro para indagar qué servidores contienen los datos. Después de eso, se
comunica sólo con los servidores fragmentados. Los fragmentos se replican de
acuerdo con un esquema de respaldo primario.
2. El nombre de espacio (jerárquico) para archivos, se implementa con una tabla de
nivel único simple, en la cual los nombres de ruta se dirigen a metadatos
(equivalentes a los nodos de los sistemas de archivo tradicionales). Además, toda
la tabla se mantiene en la memoria principal, junto con la dirección de los archivos
ubicados en las secciones.

Arquitecturas simétricas
Existen organizaciones totalmente simétricas basadas en técnicas punto a punto. Todas las
propuestas actuales utilizan un sistema basado en DHT de distribución de datos, combinado
con un mecanismo de búsqueda basado en una clave. Una importante diferencia es decidir si
construyen un sistema de archivos sobre una capa de almacenamiento distribuido, o si archivos
completos deben guardarse en los nodos participantes.

Un ejemplo del primer tipo de sistema de archivo es Ivy, un sistema de archivo distribuido
construido con un sistema basado en cuerdas DHT. Ivy se describe en Muthitacharoen y
colaboradores. En esencia, su sistema se compone de tres capas tal como se muestra en la figura
116. La capa más baja está formada por un sistema de cuerdas que proporciona operaciones de
búsqueda descentralizadas básicas. La capa de en medio es una capa de almacenamiento
totalmente orientada a bloques distribuidos. Finalmente, en la parte de arriba se encuentra una
capa que implementa un sistema de archivo a la manera del NFS.

124
En Ivy el almacenamiento de datos es realizado por un sistema de almacenamiento distribuido
orientado a bloques llamado DHash (Dabek y cols., 2001). En esencia, el sistema DHash es
bastante simple. Sólo maneja bloques de datos, cada bloque es de 8 KB. Ivy utiliza dos clases
de bloques de datos. Un bloque que contiene un hash tiene una clave asociada, el cual se calcula
como el hash seguro del contenido del bloque. De esta manera, siempre que se busca un bloque,
un cliente puede verificar de inmediato si ha buscado el bloque correcto, o si le fue regresada
otra versión o una versión corrupta. Además, Ivy también utiliza bloques de clave pública, los
cuales son bloques que tienen una clave pública como clave de búsqueda y cuyo contenido ha
sido firmado con la clave privada asociada.

Para incrementar la disponibilidad, DHash replica cada bloque B a los k sucesores inmediatos
del servidor responsable de guardar B. Además, los bloques buscados también se guardan en
la memoria caché junto con la ruta que siguió la solicitud de búsqueda.
Existen diferentes tipos de registros, que corresponden aproximadamente a las diferentes
operaciones soportadas por NFS. Por ejemplo, cuando se actualiza una operación en un archivo,
se crea un registro de escritura que contiene el identificador del archivo junto con el
desplazamiento del apuntador de pila y los datos que se están escribiendo.
Asimismo, existen registros para crear archivos (es decir, agregar un nuevo nodo índice),
manipular directorios, etcétera.
La desventaja potencial de este método es que un nodo puede quedarse sin espacio de disco
para guardar todos los archivos contenidos en el subdirectorio responsable de hacerlo. De nueva
cuenta, una solución simple es colocar una rama de dicho subdirectorio en otro nodo y crear
un vínculo simbólico hacia donde esté guardada entonces la rama.

6.2. Procesos

Cuando se trata de procesos, los sistemas de archivo distribuidos no tienen propiedades


inusuales.

125
En muchos casos, habrá diferentes tipos de procesos cooperadores: servidores de
almacenamiento y gestores de archivos, justo como ya describimos para las diversas
organizaciones.
El aspecto más interesante con respecto a procesos de sistemas de archivo es si deberán o no
ser sin estado. El NFS es un buen ejemplo que ilustra los compromisos.
La ventaja principal del método sin estado es la simplicidad. Por ejemplo, cuando un servidor
sin estado se congela, esencialmente no hay necesidad de entrar a una fase de recuperación
para llevarlo a un estado previo. Sin embargo, se sigue teniendo en cuenta que al cliente no se
le pueden dar garantías sobre si en realidad su solicitud ha sido o no realizada.
El método sin estado en el protocolo NFS no siempre se puede seguir a cabalidad en
implementaciones prácticas. Por ejemplo, no es fácil que un servidor sin estado bloquee un
archivo. En el caso de NFS, se utiliza un gestor de bloqueo aparte para manejar esta situación.
Asimismo, ciertos protocolos de autenticación (o autentificación) requieren que el servidor
mantenga el estado en sus clientes. No obstante, los servidores NFS generalmente podían
diseñarse de tal forma que sólo era necesario mantener muy poca información sobre los
clientes. En su mayor parte, el esquema funcionaba adecuadamente.
A partir de la versión 4, se abandonó el método sin estado, aunque el nuevo protocolo fue
diseñado de tal forma que un servidor no tiene que mantener mucha información sobre sus
clientes, otra razón muy importante es que se espera que el NFS funcione a través de redes de
área amplia. Esto requiere que los clientes sean capaces de hacer un uso efectivo de los cachés,
y a su vez demanda un protocolo de consistencia de caché eficiente.
La diferencia más evidente con las versiones previas es el soporte de la operación open.
Además, el NFS soporta procedimientos de retorno de llamadas mediante los cuales un servidor
puede realizar una RPC a un cliente. Claramente, los retornos de llamadas también requieren
que un servidor no pierda de vista a sus clientes.
Un razonamiento similar ha afectado el diseño de otros sistemas de archivo distribuidos. Con
mucho, resulta que mantener un diseño totalmente sin estado puede ser bastante difícil, y a
menudo conduce a construir soluciones con estado como mejora, ese es el caso con el bloqueo
de archivos NFS.

6.3. Comunicación
Es como en los procesos, no existe nada especial o inusual acerca de la comunicación en
sistemas de archivo distribuidos. Muchos de estos sistemas están basados en llamadas a
procedimientos remotos (RPC), aunque se hicieron algunas mejoras para soportar casos
especiales.
La razón principal para seleccionar un mecanismo de RPC es hacer que el sistema sea
independiente de los sistemas operativos subyacentes, de redes, y de protocolos de transporte.

RPC en NFS

126
En NFS (Sistema de archivos de red) toda la comunicación entre un cliente y el servidor ocurre
a lo largo de un protocolo RPC de computación de red abierta (ONC RPC), el cual se define
formalmente en Srinivasan (1995a), junto con un estándar para la representación de datos
(Srinivasan, 1995b). Cada operación NFS puede ser implementada como una llamada a un
procedimiento remoto única realizada a un servidor de archivos. Hasta el NFSv4, el cliente era
responsable de hacer la vida del servidor tan fácil como fuera posible manteniendo las
solicitudes relativamente simples. Por ejemplo, para leer datos de un archivo por primera vez,
un cliente normalmente debía buscar el manejador del archivo con una operación lookup,
después de lo cual podría emitir una solicitud read.

Este método requería dos RPC sucesivas. La desventaja fue evidente cuando se consideró el
uso del NFS en un sistema de área amplia. En ese caso, la latencia extra de una segunda RPC
degradó el desempeño. Para evitar esos problemas, el NFSv4 soporta procedimientos
compuestos mediante los cuales varias RPC pueden agruparse en una sola solicitud.
En el ejemplo, el cliente combina la solicitud de búsqueda y lectura en una sola RPC. En el
caso de la versión 4, también es necesario abrir el archivo antes de que pueda ocurrir la lectura.
Después de que se ha buscado el manejador de archivo, se transfiere a la operación open, luego
de lo cual el servidor continúa con la operación read.
El efecto en este ejemplo es que sólo se tienen que intercambiar dos mensajes entre el cliente
y el servidor.
No existen semánticas transaccionales asociadas con los procedimientos compuestos.
Las operaciones agrupadas en un procedimiento compuesto simplemente se manejan en el
orden en que fueron solicitadas.
Si existen operaciones concurrentes de clientes externos, entonces no se toman medidas para
evitar conflictos.
Si por cualquier razón falla una operación, entonces ya no se ejecutan más operaciones en el
procedimiento compuesto, y los resultados encontrados hasta ese momento se regresan al
cliente.

El subsistema RPC2

127
El RPC2 es un paquete que ofrece RPC confiables encima del protocolo UDP (no confiable).
Cada vez que un procedimiento remoto es invocado, el código de cliente RPC2 inicia un nuevo
hilo que envía una solicitud de invocación al servidor y posteriormente se bloquea hasta que
recibe una respuesta.

Un aspecto interesante del RPC2 es su soporte de efectos colaterales. Un efecto colaterales un


mecanismo mediante el cual el cliente y el servidor pueden comunicarse usando un protocolo
específico de una aplicación.

El RPC2 permite que el cliente y el servidor establezcan una conexión distinta para transferir
a tiempo los datos de video al cliente. El establecimiento de la conexión ocurre como un efecto
colateral de una RPC al servidor. Con esta finalidad, el sistema en tiempo de ejecución RPC2
proporciona una interfaz de rutinas de efecto colateral que tiene que ser implementada por el
desarrollador de la aplicación.

Cuando un archivo se modifica, un servidor invalida las copias locales al notificar a los clientes
apropiados mediante una RPC. Claramente, si un servidor puede notificar a sólo un cliente a la
vez, la invalidación de todos los clientes puede llevarse algo de tiempo.

128
RPC paralelas se implementan por medio del sistema MultiRPC, el cual es parte del paquete
RPC2.
En esencia, el MultiRPC se implementa ejecutando múltiples RPC puestas en paralelo. Esto
significa que quien llama envía explícitamente una solicitud RPC a cada receptor. Sin embargo,
en lugar de ponerse a esperar de inmediato una respuesta, aplaza el bloqueo hasta que todas las
solicitudes han sido enviadas

Comunicación orientada a archivos en Plan 9


El Plan 9(Pike y cols., 1995) no es tanto un sistema de archivo distribuido, sino más bien un
sistema distribuido basado en archivos. Todos los recursos son accesados de igual modo, es
decir, con sintaxis y operaciones como de archivo, incluidos recursos tales como procesos e
interfaces de red. Esta idea se heredó de UNIX, el cual también intenta ofrecer interfaces como
de archivo para comunicarse con los recursos, aunque se ha explotado de manera adicional y
más consistentemente en Plan 9.

● El archivo ctl se utiliza para enviar comandos de control a la conexión.


● El archivo data se utiliza para intercambiar datos simplemente con realizar las
operaciones read y write. Estas operaciones siguen la semántica UNIX usual
para operaciones con archivos.
● El archivo listen se utiliza para esperar solicitudes de establecimiento de
conexión.

6.4. Asignación de nombres


Desempeña un rol importante en los sistemas de archivo distribuidos, consideraremos otra vez
el NFS como representativo de cómo se maneja la asignación de nombres en sistemas de
archivo distribuidos

129
CONSTRUCCIÓN DE UN GRAN SISTEMA DE NOMBRES GLOBAL
Los grandes sistemas distribuidos comúnmente se construyen reuniendo varios sistemas
heredados en uno solo. En la actualidad, los sistemas de archivo se abren principalmente para
compartir mediante el uso de medios primitivos tales como el acceso a través de FTP.
Los sistemas de archivo distribuidos verdaderamente de área amplia siguen métodos más
complejos, aunque a menudo requieren modificaciones en el kernel de cada sistema operativo
para ser adoptados.
Por consiguiente, los investigadores han estado buscando métodos para integrar sistemas de
archivo existentes en un solo espacio de nombre global, pero utilizando soluciones sólo a nivel
del usuario. Un sistema de ese tipo, llamado simplemente servicio global de nombre de espacio
(GNS) no proporciona interfaces para acceder a archivos.
Con esta finalidad, un cliente GNS mantiene un árbol virtual donde cada nodo es o un directorio
o una unión, Una unión es un nodo especial que indica que otro proceso se encargó de la
resolución de nombre.
Existen cinco tipos diferentes de uniones:

Una unión GNS simplemente se refiere a otra instancia GNS, la cual es simplemente otro árbol
virtual alojado en posiblemente otro proceso, desde luego, una unión deberá contener toda la
información requerida para continuar la resolución de nombre, existen muchas formas de
hacerlo, pero existen varios sistemas de archivos, por lo que demandara su implementación.
Afortunadamente, existen también formas comunes de acceder a archivos remotos, incluidos
protocolos de comunicación con servidores NFS, servidores FTP y máquinas basadas en
Windows (principalmente CIFS).
GNS tiene la ventaja de desacoplar la asignación de nombres a partir de su ubicación existente,
de ninguna manera un árbol virtual tiene que ver con la ubicación física de archivos y
directorios.

Asignación de nombres en NFS


La idea fundamental que constituye la base del modelo de asignación de nombres NFS es
proporcionar a los clientes un acceso completamente transparente a un sistema de archivo
remoto mantenido por un servidor. Esta transparencia se logra permitiendo que el cliente sea

130
capaz de montar un sistema de archivo remoto en su propio sistema de archivo local, como se
muestra en la figura 11-11.

La desventaja de usar este método en un sistema de archivo distribuido es que compartir


archivos se vuelve mucho más difícil.
Existen varias formas de resolver este problema, pero la más común es proporcionar a cada
cliente un espacio de nombre estandarizado en parte. Un servidor NFS, por sí mismo, puede
montar directorios exportados por otros servidores. Sin embargo, no se permite que los exporte
a sus propios clientes.

Manejadores de archivo
Un manejador de archivo es una referencia a un archivo localizado dentro de un sistema de
archivo. Es independiente del nombre del archivo al que se refiere. El servidor que aloja el
sistema de archivo crea un manejador de archivo único con respecto a todos los sistemas
exportados por él.
De modo ideal, un manejador de archivo es implementado como un verdadero identificador
para un archivo con respecto a un sistema de archivo. Entre otras cosas, esto significa que en
tanto exista el archivo, deberá tener uno y el mismo manejador. Este requerimiento de
persistencia permite que un cliente guarde un manejador de archivo una vez que el archivo
asociado ha sido buscado por medio de su nombre.

● Un beneficio es el desempeño:
● Como la mayoría de las operaciones con archivos requiere un manejador de
archivo en lugar de un nombre, el cliente puede evitar tener que buscar un
nombre repetidamente antes de realizar cada operación. Otro beneficio de este
131
método es que así el cliente puede acceder al archivo independientemente de
sus nombres (actuales).

Automontaje
Como se mencionó, el modelo de asignación de nombre NFS esencialmente proporciona a los
usuarios su propio espacio de nombre. En este modelo, compartir puede volverse difícil si los
usuarios nombran el mismo archivo en forma diferente. Una solución a este problema es
proporcionar a cada usuario un espacio de nombre local parcialmente estandarizado, y luego
montar sistemas de archivo remotos de igual modo para cada usuario.
En NFS, un automontador se encarga del montaje conforme a la demanda de un sistema de
archivo remoto (o en realidad un directorio exportado), el cual funciona como un proceso
distinto en la máquina del cliente.
Suponga que para cada usuario, los directorios de inicio de todos los usuarios están disponibles
a través de un directorio local /home, tal como ya se describió. Cuando una máquina cliente se
inicia, el automontador empieza el montaje de este directorio. El efecto de este montaje local
es que siempre que un programa intente acceder a /home, el kernel de UNIX emitirá una
operación lookup al cliente NFS, quien en este caso remitirá la solicitud al automontador en su
rol de servidor NFS, como se muestra en la figura 1113

El problema con este método es que el automontador deberá intervenir en todas las operaciones
de archivo para garantizar la transparencia. Si un archivo referido no está localmente disponible
porque aún no se ha montado el sistema de archivo correspondiente, el automontador tendrá
que saberlo.
Una solución simple es permitir que el automontador monte directorios en un subdirectorio
especial e instale un vínculo simbólico para cada directorio montado. Este método se muestra
en la figura 11-14.

132
6.5. Sincronización
Prosigamos nuestro análisis enfocándonos en los temas de sincronización relacionados con los
sistemas de archivo distribuidos.
Existen varios aspectos que requieren atención. En primer lugar, implementar la
sincronización.
En los sistemas de archivo no sería un problema si los archivos no fueran compartidos. Sin
embargo, en un sistema distribuido, la semántica de archivos compartidos se vuelve un poco
engañosa cuando el desempeño está en peligro.
Con esta finalidad, se han propuesto diferentes soluciones de las cuales analizamos las más
importantes a continuación.

Semántica de archivos compartidos


Cuando dos o más usuarios comparten el mismo archivo al mismo tiempo, es necesario definir
con precisión la semántica de lectura y escritura para evitar problemas.
La semántica establece normalmente que una operación read sigue a una operación write.
Todas las operaciones read y write se van directamente al servidor de archivos, el cual las
procesa estrictamente en secuencia.
El sistema hace que se cumpla un ordenamiento en tiempo absoluto en todas las operaciones y
siempre regresa el valor más reciente.

Semántica de Sesión:
La mayoría de los sistemas distribuidos implementan semántica de sesión. Esto significa que,
aunque en teoría siguen el modelo de acceso remoto, la mayoría de las implementaciones
utilizan cachés locales, que efectivamente implementan el modelo de carga y descarga.

Semántica de compartimiento de archivos:


133
En un sistema distribuido es hacer que todos los archivos sean inmutables. No existe, por tanto,
ninguna forma de abrir un archivo para escribir.

● Las únicas operaciones en archivos son créate y read. Por lo tanto, aunque llega
a ser imposible modificar el archivo x, sigue siendo posible reemplazar
atómicamente x con uno nuevo.
● Un problema un tanto más difícil es qué hacer si un archivo es reemplazado
mientras otro proceso está ocupado leyéndolo.
● Una solución es disponer las cosas de algún modo para que el lector continúe
utilizando el archivo viejo, aun cuando ya no se encuentre en el directorio.
● UNIX permite a un proceso que tiene un archivo abierto continuar utilizándolo,
incluso después de que ha sido borrado de todos los directorios.
● Otra solución es detectar que el archivo ha cambiado y hacer que fallen intentos
subsiguientes de leerlo.
● Una cuarta forma de ocuparse de los archivos compartidos en un sistema
distribuido es utilizar transacciones atómicas.

Bloqueo de archivos
En arquitecturas de cliente-servidor con servidores sin estado, se cuenta con medios para
sincronizar el acceso a archivos compartidos; utilizando un gestor de bloqueo que sigue el
esquema de bloqueo centralizado.
En el bloqueo de archivos en NFSv4 es muy simple existen cuatro operaciones relacionadas
con el bloqueo. El NFSv4 distingue los bloqueos de lectura de los bloqueos de escritura.

● La operación lock se utiliza para solicitar un bloqueo de lectura o escritura a lo


largo de un intervalo consecutivo de bytes en un archivo.
● La operación lockt se utiliza para comprobar si existe un bloqueo conflictivo y
no existe la necesidad de abrir un archivo.
● la operación locku realiza la eliminación de un bloqueo de un archivo.
● la operación renew renueve el contrato de un bloqueo específico (y, de hecho,
también de otros recursos).

134
Además de estas operaciones, también existe una forma implícita de bloquear un archivo,
conocida como compartimiento de reservación.
El compartimiento de reservación es totalmente independiente del bloqueo y puede ser
utilizado para implementar el NFS en sistemas basados en Windows.

Compartimiento de archivos en Coda


En NFS las semánticas de sesión dictan que el último proceso que cierre un archivo propagará
sus cambios al servidor.
Para la compartimentación de archivos el sistema de archivo Coda utiliza un esquema de
asignación especial que guarda similitudes con reservaciones de compartimiento en NFS.
 Cuando un cliente abre con éxito un archivo f, una copia completa de éste
se transfiere a la máquina del cliente. El El servidor registra que el cliente
tiene una copia de f.
 Cuando el cliente A abrió el archivo f para escritura. Cuando otro cliente
B también desee abrirlo, el archivo fallará.
 Cuando el cliente A hubiera abierto f para lectura, y si un cliente B desea
obtener una copia del servidor para lectura tendría éxito.
 Cuando varias copias de f se guardaron localmente en varios clientes. Sólo
un cliente será capaz de modificar f.

135
6.6. Consistencia y Replicación
El almacenamiento en la memoria caché y la replicación desempeña un rol muy importante en
sistemas de archivo distribuidos, más notoriamente cuando están diseñados para que operen en
redes de área amplia.
En lo que sigue, examinaremos varios aspectos relacionados con el almacenamiento en la
memoria caché del lado del cliente del archivo de datos, así como la replicación de servidores
de archivo.
También, analizamos el rol de la replicación en el sistema de compartimiento de archivos punto
a punto.

Almacenamiento en la memoria caché del lado del cliente


Para ver cómo se realiza el almacenamiento en la memoria caché del lado del cliente es el NFS
y Coda.
Almacenamiento en la memoria caché en NFS
El NFSv3 se dejó principalmente fuera del protocolo. Este método conduce a la
implementación de diferentes políticas de almacenamiento en la memoria caché, la mayoría de
las cuales nunca garantizan consistencia.
El NFSv4 resuelve algunos de estos problemas de consistencia, pero esencialmente continúa
dejando que la consistencia de la memoria caché sea manejada en una forma dependiente de
una implementación.

136
● Cuando un cliente cierra el archivo, el NFS requiere que si las modificaciones
se han llevado a cabo, los datos guardados en caché sean devueltos de inmediato
al servidor.
● El NFS requiere que siempre que un cliente abra un archivo previamente
cerrado que haya sido guardado en caché, el cliente debe revalidar de inmediato
los datos guardados en caché.
La revalidación: Ocurre al verificar cuándo fue modificado por última vez el archivo e
invalidando la memoria caché en caso de que contenga datos obsoletos.
El servidor: Se encarga de verificar si la apertura de un archivo debe tener éxito o no, el servidor
seguirá manejando las solicitudes de bloqueo de clientes ubicados en otras máquinas
simplemente con negar el acceso al archivo a esos clientes.

Almacenamiento de Memoria Caché Cliente


El almacenamiento en la memoria caché del lado del cliente es crucial para la operación de
Coda por dos razones.
● En primer lugar, la finalidad del almacenamiento en caché es lograr
escalabilidad.
● En segundo lugar, el almacenamiento en caché proporciona un alto grado de
tolerancia a fallas ya que el cliente se vuelve menos dependiente de la
disponibilidad del servidor.
Actualiza su copia local del archivo

137
● Cuando un cliente actualiza su copia local del archivo por primera vez, lo
notifica al servidor, el cual, a su vez, envía un mensaje de invalidación a los
demás clientes. Tal mensaje de invalidación se conoce como ruptura del retorno
de llamada.
● El servidor desechará entonces la promesa de retorno de llamada que mantenía
para el cliente al que acaba de enviar una invalidación.
● El cliente deberá comprobar con el servidor si la promesa sigue siendo válida.
De ser así, no existe la necesidad de transferir el archivo otra vez del servidor al
cliente.

Almacenamiento de dispositivos portátiles


Es importante el desarrollo para muchos sistemas distribuidos que no se pueda asumir, que
muchos dispositivos de almacenamiento están permanentemente conectados al sistema a través
de una red.
Los usuarios tienen varios tipos de dispositivos de almacenamiento semipermanentemente
conectados.
Por ejemplo: mediante bases o estaciones, computadoras portátiles dispositivos multimedia
portátiles tales como reproductores de películas y audio.
En la mayoría de los casos, se utiliza un modelo explícito de carga y descarga para mantener
los archivos en dispositivos de almacenamiento portátiles. Las cosas se simplifican si el
dispositivo de almacenamiento es visto como parte del sistema de archivo distribuido.

Técnicas de Dispositivos
Existen varias técnicas para garantizar con una alta probabilidad de éxito que probablemente
los archivos a utilizar en realidad sí están guardados localmente en el dispositivo.
Comparar el método de transferencia de datos Esquemas de almacenamiento en memoria caché
Técnicas de pre-búsqueda de archivos.
Dispositivos de almacenamiento portátiles
El usuario utilizará programas especiales para preinstalar archivos en el dispositivo.

Replicación del lado del servidor


En sistemas de archivo distribuidos la replicación del lado del servidor es menos común, solo
se aplica cuando la disponibilidad está en riesgo. Un problema en esta replicación es en cuanto
al desempeño (alto grado de replicación y una baja proporción de lectura y escritura).
Tienen que sincronizarse las operaciones concurrentes, lo cual conduce a más comunicación y
más reducción del desempeño. Por estas razones, los servidores de archivos se replican
generalmente para tolerancia a fallas.
138
Replicación del servidor en Coda
Coda permite que los servidores se repliquen. La unidad de replicación es un conjunto de
archivos llamado volumen (corresponde a una partición de disco UNIX).
El conjunto de servidores Coda que guardan una copia de un volumen se conoce como grupo
de almacenamiento de volumen (VSG). En la presencia de fallas, es posible que un cliente no
pueda acceder a todos los servidores incluidos en un VSG de volumen. Un grupo de
almacenamiento de volumen accesible (AVSG) de cliente consta de aquellos servidores
presentes en el VSG de volumen que el cliente puede contactar al momento. Si el AVSG está
vacío, se dice que el cliente está desconectado. Coda utiliza un protocolo de escritura replicado
para mantener la consistencia de un volumen replicado.
Este esquema funciona bien en tanto no ocurran fallas, es decir, para cada cliente, su AVSG de
un volumen es el mismo que su VSG. Sin embargo, en presencia de fallas, las cosas pueden ir
mal. Consideremos un volumen replicado a través de tres servidores S1, S2 y S3. Para el cliente
A, suponga que su AVSG comprende los servidores S1 y S2 en tanto que el cliente B tiene
acceso únicamente al servidor S3.

Coda utiliza una estrategia optimista para la replicación de archivos. La solución adoptada por
Coda es desplegar un esquema generador de versiones.

Replicación en sistemas de archivo punto a punto

● La replicación desempeña un rol importante para acelerar las solicitudes de


búsqueda, pero también para equilibrar la carga entre nodos.
● Una propiedad importante incluida en estos sistemas es que virtualmente todos
los archivos son de sólo lectura.
139
Sistemas punto a punto no estructurados
● La búsqueda de datos se reduce a buscarlos en la red o a sus vecinos.
● Para la transmisión se tienen que tomar medidas especiales para evitar
problemas de desempeño.
● Un extremo es para replicar un archivo en todos los nodos implicaría que la
búsqueda de cualquier archivo pueda ser realizada de modo local.
● Forma de asignación de copias de un archivo a los nodos:
● ...................................................................................................... U
na política es distribuir uniformemente n copias de cada archivo a través de toda
la red, ignora que pueden tener diferentes tasas de solicitud los archivos.
● ...................................................................................................... O
tra política es replicar archivos de acuerdo que tan menudo son buscados:
mientras más popular, más réplicas se crean y distribuyen a través de la
sobrecapa.
● ...................................................................................................... L
a replicación sucede cuando los usuarios descargan archivos a partir de otros
usuarios y luego los ponen a disposición de la comunidad.

Sistemas estructurados punto a punto


La replicación es desplegada principalmente para equilibrar la carga entre los nodos.
Métodos para balancear la carga:
● Un método aplicado es replicar la ruta que una búsqueda siguió desde su origen
hasta su destino. Sin embargo no toma en cuenta la carga de otros nodos, y
puede conducir a un sistema desbalanceado.
● Gopalakrishnan y colaboradores proponen un esquema que toma en cuenta
carga actual de nodos a lo largo de la ruta de búsqueda. Su idea es guardar
réplicas en el nodo origen de una búsqueda, y guardar los apuntadores a tales
réplicas en la memoria caché en nodos.
● La diseminación de información sobre dónde están guardadas las réplicas es
importante para que este esquema funcione.

140
Replicación de archivos en sistemas de Malla (Grid)
Muchos de los datos de aplicaciones Grid son de sólo lectura, producidos por sensores o con
otras aplicaciones, pero rara vez son actualizados o modificados después de que son producidos
y guardados. Por consiguiente, la replicación de datos puede ser aplicada en abundancia, y esto
es exactamente lo que sucede.
El tamaño de los conjuntos de datos en ocasiones es tan enorme que se deben tomar medidas
especiales para evitar que los proveedores de datos se sobrecarguen debido a la cantidad de
datos que tienen que transferir a través de la red.

En los sistemas de malla (Grid), la replicación evolucionó principalmente en torno al problema


de localizar las mejores fuentes para copiar datos.

6.7. Tolerancias a fallos

Manejo de fallas bizantinas


La mayoría de los sistemas no considera las fallas bizantinas.
Castro y Liskov (2002) idearon una solución (protocolo) para manejar fallas bizantinas que
también puede operar en redes tales como internet. La idea básica es aplicar la replicación
activa construyendo un conjunto de máquinas de estado finito y hacer que los procesos no
defectuosos presentes en este conjunto ejecuten operaciones en el mismo orden
Suponiendo que cuando mucho k procesos fallan a la vez, un cliente envía una operación a
todo el grupo y acepta la respuesta de por lo menos k + 1 procesos diferentes.
Para lograr protección contra fallas bizantinas, el grupo de servidores debe componerse de por
lo menos 3k + 1 procesos. La parte difícil para lograr esta protección es asegurarse de que todos
los procesos no defectuosos ejecuten todas las operaciones en el mismo orden. Una forma
simple de alcanzar este objetivo es asignar un coordinador que simplemente ponga en serie
todas las operaciones anexando un número de secuencia a cada solicitud. El problema, desde
luego, es que el coordinador puede fallar.
Una parte importante del protocolo depende de que las solicitudes pueden ordenarse
correctamente. Con este objeto, se utiliza un mecanismo de quórum: siempre que un proceso
recibe una solicitud de ejecutar una operación o con el número n en la visión v, envía esta
información a todos los procesos y espera hasta que recibe la confirmación de por lo menos 2k
procesos que recibieron la misma solicitud. Tal confirmación se llama certificado de quórum.

141
6.8. Seguridad
La seguridad en sistemas de archivo distribuidos organizada a lo largo de una arquitectura
cliente-servidor es hacer que los servidores manejen la autenticación y el control de acceso.

Seguridad en NFS
NFS se enfoque principalmente en la comunicación entre un cliente y un servidor.
Comunicación segura significa que se deberá establecer un canal seguro entre los dos.
En NFS controlar los accesos a archivos son manejados por atributos de archivo de control de
acceso. Un servidor de archivos se encarga de verificar los derechos de acceso de sus clientes,
como se explicará a continuación.

RPC SEGURAS
La autenticación de sistema es un método basado en UNIX, un cliente simplemente transfiere
sus ID de usuario y de grupo efectivas al servidor, junto con una lista de grupos de los que
afirma ser miembro. Esta información se envía al servidor como texto común sin firmar. En
otros términos, el servidor no tiene forma en absoluto de verificar si los identificadores de
usuario y grupo están realmente asociados con el remitente. En esencia, el servidor asume que
el cliente transfirió un procedimiento de inicio de sesión apropiado, y que puede confiar en la
máquina del cliente.
Otro método es el intercambio de claves DiffieHellman para establecer una clave de sesión. El
DiffieHellman puede ser visto como un criptosistema de clave pública. Inicialmente, no había
forma de distribuir con seguridad la clave pública de un servidor, pero esto se corrigió
posteriormente con la introducción de un servicio de nombres seguro. Las claves públicas son
un punto crítico, ya que son de 192 bits. Luego de esto, la seguridad mejoró con:

RPCSEC_GSS
Es una estructura general de seguridad que puede soportar una miríada de mecanismos de
seguridad para el establecimiento de canales seguros.

142
Autenticación descentralizada
NFS presenta un problema para manejar apropiadamente la autenticación, ya que es necesario
que los usuarios se registren mediante una administración de sistema central. Esto puede
solucionarse mediante los sistemas de archivo seguro (SFS) en combinación con servidores de
autenticación descentralizados.
La idea básica es bastante simple. De lo que carecen otros sistemas es de la probabilidad de
que un usuario especifique que un usuario remoto tiene ciertos privilegios sobre sus archivos.
Un método más simple sería permitir que Alicia especifique que “Bob cuyos detalles se
encuentran en X”, tiene ciertos privilegios. El servidor de autenticación que maneja las
credenciales de Alicia podría entonces ponerse en contacto con el servidor S para obtener
información sobre Bob. El cliente SFS es responsable de establecer canales seguros con un
servidor SFS y es responsable de comunicarse con un agente de usuario SFS, el cual es un
programa que maneja automáticamente la autenticación de un usuario.

Sistema de compartimiento de archivos seguros punto a punto


Los sistemas tradicionales, o aplican autenticación directa y mecanismos de control de acceso
ampliados con comunicación segura, o podemos utilizar autenticación tradicional para
implementar un esquema completamente descentralizado. Pero surgen problemas cuando se
trata de sistemas totalmente descentralizados basados en la colaboración, tales como sistemas
de compartimiento de archivos de punto a punto.

Búsquedas seguras en sistemas basados en DHT


Consideremos los sistemas basados en DHT. En este caso, debemos confiar en operaciones
de búsqueda seguras, que se reducen a la necesidad de tener una ruta segura. Esto significa
que cuando un nodo no defectuoso busca una clave k, su solicitud es remitida al nodo
responsable de los datos asociados con k, o a un nodo que guarde una copia de los datos. La
ruta segura requiere que se tomen en cuenta tres aspectos:
● A los nodos se les asignan identificadores de una forma segura.
143
● Las tablas de ruta se mantienen seguras.
● Las solicitudes de búsqueda son remitidas con seguridad entre nodos.
Cuando a los nodos no se les asigna su identificador con seguridad, puede ocurrir el problema
de que un nodo malicioso pueda asignarse a sí mismo un ID de modo que todas las búsquedas
de claves específicas se dirijan a él, o sean remitidas a lo largo de la ruta de la que forma parte.
Sin la asignación segura de un identificador, un solo nodo también puede ser capaz de
autoasignarse muchos identificadores, esto se conoce también como ataque de Sybil.
Más general que el ataque de Sybil es un ataque mediante el cual un nodo malicioso controla a
tantos nodos vecinos no defectuosos que llega a ser virtualmente imposible corregirlos para
que operen de manera apropiada. Una solución razonable es restringir el número de conexiones
entrantes para cada nodo.
Cuando las tablas de ruta se pueden llenar con nodos alternativos un atacante puede convencer
con facilidad a un nodo para que apunte a nodos maliciosos. Para defenderse contra ataques de
remisión de mensajes, un nodo puede simplemente remitir mensajes a lo largo de varias rutas.
Una forma de hacerlo es iniciar una búsqueda desde diferentes nodos origen.

144

S-ar putea să vă placă și