Documente Academic
Documente Profesional
Documente Cultură
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
Elaborado por:
Ing. Guillermo Pizarro
Revisado por:
Ing. Miguel Quiroz
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
CAPITULO 1
1. IDEA DE UN PROYECTO
Idea
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
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.
–Creatividad.
–Diferenciación.
–Solución a un problema.
● 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.
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.
Proyectos de Inversión4
4
http://catarina.udlap.mx/u_dl_a/tales/documentos/lcp/castillo_f_fi/capitulo2.pdf
9
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.
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.
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
6
http://www.inversion-es.com/proyectos-de-inversion.html#proyectosdeinversion2
11
El Marco Lógico utiliza dos tipos de herramientas para diagnosticar la Situación Actual:
● Análisis de Involucrados,
● Análisis de Problemas.
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.
Las causas constituyen las «raíces», el problema central el «tronco» y los efectos son las
«ramas».
● Análisis de Objetivos,
● Análisis de Alternativas.
Además, se formulan técnicamente los resultados esperados del Proyecto que resuelven el
Problema Central.
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 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”.
– 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.
– ¿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).
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
– 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:
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.
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”.
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.
7
http://www.ucipfg.com/Repositorio/MIA/MIA-01/BLOQUE-
ACADEMICO/Unidad1/lecturas/BID_ML.pdf
22
CAPITULO 3
3. 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
● la identificación y
● solución de problemas y oportunidades de marketing.
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
● 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
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
● 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.
❏ 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 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:
Leyenda:
Z2 = Valor crítico correspondiente al nivel de confianza elegido; siempre se opera con valor
sigma 2, luego Z = 2.
10
http://www.marketing-xxi.com/proceso-de-la-investigacion-de-mercados-i-24.htm
28
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.
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).
La entrevista en profundidad:
Objetivos:
30
El entrevistador:
El entrevistado:
Las respuestas:
3.7.2. Encuesta
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.
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
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.
Cantidad 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 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):
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:
3.7.5. Observación
12
http://www.cedatos.com.ec/detalles_producto.php?Id=25
35
Observación personal
•El observador no trata de manipular el fenómeno que observa, sino que sólo registra lo que
sucede.
Observación Mecánica
–Pupilómetros
–Psicogalvanómetros
Observación de Inventario
•El investigador reúne datos al examinar registros físicos o realizar análisis de existencias.
Observación de Contenido
•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
● –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.
● –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:
● 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.
● –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.
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.
–De acuerdo con esta información, se deducen los siguientes costos por ítem, costos totales,
costos marginales y costos medios por localidad.
41
● –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.
● –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.
● 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
–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:
● 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
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:
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.
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
14
http://guia.oitcinterfor.org/conceptualizacion/que-se-entiende-evaluacion-impacto
47
● 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)
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:
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
CAPITULO 5
5. ESTUDIO FINANCIERO
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
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:
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
● 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):
INGRESO DE EFECTIVO
Préstamos 40000
EGRESO DE EFECTIVO
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
Dónde:
–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.
–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).
Donde:
–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
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
Elaborado por:
Mg. Vanessa Jurado
Revisado por:
Mg. Miguel Quiroz
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]
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.
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.
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.
3
CAPA DE INTERFAZ DE USUARIO
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.
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 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.
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.
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
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.
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
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.
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.
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.
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
Protocolos utilizados:
SERVICIO EMAIL
BASE DE DATOS
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 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.
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
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 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 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).
Entidades Java: objetos persistentes que representan los datos de la capa EIS
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
Jetty, ...
Clasificación de Frameworks:
De aplicación:
• Aspectos o AspectJ
Arquitectónicos:
• Spring
• Oracle ADF
• Jboss Seam
• Java Servlet
13
• JavaServer Faces (JSF) ● Java Message Service (JMS).
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:
• Transacciones.
• Control de la concurrencia.
• Seguridad.
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).
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)
○ 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
• 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) 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:
• Administración de estados.
• Beans administrados.
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
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) 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.
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:
19
• una interfaz de eventos que permite a los clientes determinar cuándo las entradas
de directorio han sido modificadas;
• LDAP
• DNS
• RMI
• Sistema de ficheros
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.
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.
20
• Al terminar la ejecución, el servidor serializa el valor de retorno (si lo hay) y lo
envía al cliente.
21
Capítulo III: Integración de Aplicaciones
APLICACIONES DE ESCRITORIO
Una interfaz bien diseñada evita muchos errores en el uso y aumenta la productividad
del usuario
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.
Consta de 3 Fases:
22
APLICACIONES CON SOCKETS
Sockets: introducción
• Abstracción que:
• Protocolo TCP
• Protocolo UDP
• Actualmente
23
o En prácticamente todos los sistemas operativos
Permiten comunicar:
Tipos de direcciones:
Este mecanismo está en la mayoría de los sistemas operativos y fue introducido por Unix BSD
Cada conector utiliza un protocolo de comunicación que puede ser UDP o TCP.
Un mensaje enviado vía UDP, no posee reintentos y acuso de recibo por parte del proceso
receptor.
El receptor averiguará por el mensaje entrante, la IP y el puerto del proceso emisor, lo que le
permite
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.
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.
• Juegos en red Los juegos son aplicaciones en tiempo real que requieren trasmitir
información con extrema sensibilidad al tiempo.
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.
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.
En internet los servicios ya poseen puertos públicos bien conocidos para prestación de algunos
servicios:
26
RMI
RMI (Java Remote Method Invocation) es un mecanismo ofrecido por Java para invocar un
método de manera remota.
Serialización
Consiste en convertir un objeto en un stream de bytes para ser trasmitido por una red.
Java RMI es una extensión al modelo de objetos de Java para soportar objetos distribuidos.
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.
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.
Servicios Web actúan como componentes independientes que se pueden integrar para formar
sistemas distribuidos complejos
”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
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)
29
Puntos Clave de WS
Uso de protocolos estándar de internet (HTTP, SMTP) como mecanismo para el transporte de
los mensajes (invocación, respuesta, ...)
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
30
Elementos necesarios para la definición de Servicios Web
• Flexible y extensible
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
• Puede usarse para generar los stubs/skeleton y las capas intermedias necesarias
para escribir
Acceso al directorio UDDI mediante Servicios Web => uso 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
33
Protocolo WSDL: Descripción de servicios
• En Servicios Web cada servicio se puede servir con distintos protocolos (HTTP, SMTP)
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.)
34
• Alta (publicación) de Servicios Web por parte de los servidores
Finalidad:
• Ofrecer soporte para encontrar información sobre servicios web y poder construir clientes
35
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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.
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.
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.
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
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
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.
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.
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 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]
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.
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.
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.
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.
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.
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.
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 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.
Fases de diseño
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.
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
COMBINACIÓN DE TABLAS
ATRIBUTOS COMPUESTOS
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.
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.
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:
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.
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.
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.
27
CAPÍTULO 5: SQL
5.1. INTRODUCCIÓN.
28
Utilizadas para crear, alterar o borrar objetos de la base de datos. Ejemplo: CREATE, ALTER,
DROP, RENAME.
Utilizadas para crear, alterar o borrar objetos de la base de datos. Ejemplo: CREATE, ALTER,
DROP, RENAME.
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:
Ejemplo:
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.
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.
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.
31
Tiene las siguientes reestricciones:
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.
Esté cuenta con módulos DDL, para la definición de datos que nos permite crear o modificar
la estructura de las tablas.
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
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
Ejemplos:
35
SUBSTR(COLUMN_NAME,1,255)
FROM ALL_CONS_COLUMNS
WHERE TABLE_NAME='EMP';
CONSTRAINT_NAME TABLE_NAME
SUBSTR(COLUMN_NAME,1,255)
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.
36
MARTIN martin Martin
BLAKE blake Blake
Procedimientos:
Existen dos maneras de crear procedimientos almacenados en SQL SERVER: utilizando la
sentencia CREATE PROCEDURE y mediante Enterprise Manager.
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.
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
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:
Donde options:
40
CREATE USER usuariolimitado IDENTIFIED BY miclavesecreta;
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]
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.
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
44
7.5. IMPLEMENTACIÓN DEL AISLAMIENTO.
45
CAPÍTULO 8: CONTROL DE CONCURRENCIA
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:
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.
47
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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
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
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
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
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.
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:
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.
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.
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.
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
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.
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.
ESTRUCTURA DE MEMORIA
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.
Consiste de 2 estructuras:
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 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;
Sequences are used to generate unique, sequential integer values that are used as primary key
values in database tables
Sintaxis
Example
SINÓNIMOS.
Sintaxis:
CREATE SYNONYM
FOR ;
19
Ejemplo:
CREATE SYNONYM so
FOR sales_order ;
PROCEDIMIENTOS
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
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
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:
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.
24
ROLES:
Un rol es una forma de agrupar permisos (o privilegios) para asignarlos luego a los usuarios.
Cada usuario puede tener varios roles.
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
3 Startup
26
2+1 startup mount alter database open;
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.
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
DISPONIBILIDAD DE UN TABLESPACE
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.
Hay varios tipos de sentencias en las que Oracle se ve en la obligación de utilizar los segmentos
temporales:
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.
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.
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
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.
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.
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.
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.
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.
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
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
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.
35
CAPÍTULO 6: BASES DE DATOS RELACIONALES ORIENTADAS A
OBJETOS
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.
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.
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.
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.
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:
Seguridad de sistema:
Incluye:
Administración de usuarios de base de datos
Autentificación de usuarios
Seguridad de Sistemas Operativos
Seguridad de Usuarios
Seguridad del Usuario General
Se debe establecer:
Seguridad por contraseña
Administración de privilegios
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
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.
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.
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.
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.
42
CAPÍTULO 8: AUDITORIA
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.
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.
44
8.3. TIPOS 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.
45
CAPÍTULO 9: INICIALIZAR UNA BASE DE DATOS
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.
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…
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”
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.
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:
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
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
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
Arquitectura cliente-servidor
Ejemplos:
Un Cajero automático de un banco.
Ventas de una tienda.
Entre otros
1.2 ORIENTACIÓN
1.3 EJEMPLOS
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)
EJEMPLO:
5
2.3 TIPOS DE BASES DE DATOS MULTIDIMENSIONALES
2.3.1 MOLAP
2.3.2 ROLAP
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.
2.3.4 WOLAP
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
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
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.
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.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
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.
5.2 DEFINICIÓN
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.
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.
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.
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.
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:
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
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:
19
La creación de este cubo tiene las siguientes finalidades:
En este momento se crearán dos indicadores que serán incluidos en el cubo ”Cubo de Ventas”:
20
6.3 CREACIÓN DE ATRIBUTOS
21
6.4 CREACIÓN DE 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:
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.
Cubo 1:
Cubo 2:
23
Cubo 3:
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.
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.
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
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
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
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.
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
Código:
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.
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:
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.
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.
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:
2. ¿QUÉ ES BÚSQUEDA?
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:
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.
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.
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
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
H(k1)=Elegir_digito(7259)+1=76
H(K2)= Elegir_digito(9359)+1=96
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
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
¿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.
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:
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.
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.
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:
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.
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.
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.
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.
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.
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.
IMPLEMENTACIÓN DE COLAS
Arreglo
con frente fijo.
con frente movible.
circular.
LISTAS ENLAZADAS
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.
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.
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.
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.
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:
Á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
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
35
Rotación hacia la derecha izquierda
ELIMINACIÓN
36
CAPÍTULO 6: ÁRBOLES EN DISCO
6.1. INTRODUCCIÓN.
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:
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:
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
Algoritmo de eliminación:
39
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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.
¿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.
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.
● 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.
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í.
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.
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.
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.
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.
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)
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.
● 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
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
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.
Este enfoque se está utilizando cada vez más como han surgido normas que lo componen.
15
Component-based software engineering
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.
Entrega incremental
17
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 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
● Establecimiento de objetivos
○ –Se identifican los objetivos específicos para la fase.
● 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.
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
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.
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
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 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
Requerimientos Funcionales
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.
24
3.4. Obtención y análisis de requerimientos.
Identificación de requerimientos
Proceso interactivo e iterativo.
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.
26
● Establecer procesos automatizados
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)
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)
30
4.5. Bancos de trabajo CASE.
31
CAPITULO 5
5. DISEÑO DE SOFTWARE.
• 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 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.
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
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.
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
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
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.
43
6.4. Integración
Integración en Desarrollo Espiral
Planificar la Integración:
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
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.
Control de Versiones
Versión Un ejemplo de un sistema que es: Funcionalmente distinta de alguna manera de otras
instancias del sistema.
CAPITULO 7
7. VERIFICACIÓN Y VALIDACIÓN.
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.
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
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
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.
Flujo de Artefactos
51
Pruebas de Validación y Verificación
52
CAPITULO 8
Plan CM
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.
54
UNIVERSIDAD POLITÉCNICA SALESIANA
Materia:
Programación Hypermedial
Elaborado por:
Ing. Vanessa Jurado
Revisado por:
Ing. Miguel Quiroz
55
Datos del Generales del Informe y Control de Versiones
Control de Versiones:
Versión 1.0
56
57
1. INTRODUCCIÓN A LA MULTIMEDIA. CONCEPTOS Y
APLICACIONES 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”.
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
Texto
Imagen
Sonido
Animación
Vídeo
TEXTO
59
IMAGEN
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
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).
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
62
ENTORNOS VIRTUALES DE APRENDIZAJE
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
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:
65
POR SU TRANSACCIÓN
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.
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.
BANNERS
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
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
CD-ROM promocionales
Enciclopedias
Museos virtuales
69
OOHDM
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.
70
ESPECIFICACIÓN DE ESCENARIOS
71
DISEÑO ABSTRACTO DE LA UI
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.
72
Objetivo de diseño: Modelo semántico de la aplicación.
DISEÑO CONCEPTUAL
DISEÑO NAVEGACIONAL
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
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.
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.
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
XML
VENTAJAS DE XML
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 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.
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:
80
¿QUÉ ES HTML5?
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.
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
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
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/.
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".
87
JavaScript, para unir todas las demás tecnologías.
88
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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.
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.
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].
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í.
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.
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
Inclusión: Una instancia del Caso de Uso origen incluye también el comportamiento descrito
por el Caso de Uso destino
Ejemplo:
7
Figura 4. Ejemplo - Caso de Uso
Extensión: el Caso de Uso origen extiende el comportamiento del Caso de Uso destino
Ejemplo:
8
Figura 6. Ejemplo Caso de Uso
Herencia: El Caso de Uso origen hereda la especificación del Caso de Uso destino y
posiblemente la modifica y/o amplía
9
Ejemplo:
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:
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.
Atributos: Propiedades relevantes de una clase, representan su estructura, éstos pueden ser
simples o compuestos.
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.
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.
13
Figura 15. Ejemplo 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
- Clases Utilitarias: Clases que contienen librerías de funciones (no interesa mucho la
implementación) 20 Diagramas de Clases (Parametrizables / Abstract
15
Figura 20. Utilitaria
Herencia: Propiedad que tienen las clases de heredar de sus superclases estructura y/o
comportamiento (Simple / Múltiple)
Asociación:
16
Figura 22. Ejemplo de Asociación:
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
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
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
19
En ambos casos se recomienda considerar generalizaciones/especializaciones disjuntas
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:
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:
20
Figura 29. Agregación – Composición
Dependencia: Relación en la que una clase necesita (requiere) a otra para poder funcionar
21
Figura 32. Interfaz
22
Figura 34. En Java
23
A continuación, se muestra un ejemplo general de diagrama de clases para una empresa
fabricante de azúcar:
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.
Diagrama de Secuencia:
Los diagramas de secuencia muestran la secuencia de mensajes entre objetos durante un
escenario concreto (paso de mensajes).
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.
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:
27
Figura 3. Importar paquetes - código Java
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.
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:
30
Figura 1. Ejemplo de herencia
Tipos de Herencia
31
3.2. Constructores y Herencia
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:
32
Referencia super
La nueva clase hereda de la primera todos los métodos y los atributos
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
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:
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”
Ejemplo:
37
Basado en el orden de los argumentos:
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:
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.
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.
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 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
● 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
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:
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:
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.
● 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.
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
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?
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
53
Sin static
Obsérvese que las clases envoltorio tienen siempre la primera letra en mayúsculas.
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.
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:
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.
EXPRESIÓN INTERPRETACIÓN
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.
cadena = String.valueOf(numero);
cadena= Integer.toString(numero);
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
String str="";
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.
Para obtener la longitud, número de caracteres que guarda un string se llama a la función
miembro length.
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.
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
}else{
System.out.println("Distintos objetos");
if(str1.equals(str2)){
}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 str2=str1;
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.
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.
La variable entera resultado tomará un valor mayor que cero, ya que Tomás está después de
Alberto en orden alfabético.
La variable entera resultado tomará un valor menor que cero, ya que Alberto está antes que
Tomás en orden alfabético.
Para estraer un substring desde una posición determinada hasta el final del string escribimos
String subStr=str.substring(12);
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.
59
String subStr=str.substring(3, 11);
Se obtendrá el substring "lenguaje". Recuérdese, que las posiciones se empiezan a contar desde
cero.
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.
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)
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
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.
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:
● 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:
Constructores:
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:
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.
65
Ejemplo
Para imprimir el contenido del array de argumentos:
66
Recomendaciones de codificación en la línea de comandos
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
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.
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.
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.
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 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.
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:
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.
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.
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();
Qué necesitamos?
Para usar esta clase debemos hacer la importación respectiva:
import java.util.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.
Los elementos que se van añadiendo, se colocan después del último elemento que hubiera en
el ArrayList.
Ejemplo:
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:
//El orden hasta ahora es: Marcela ‘Gonzales, Marco Moreno, Paola Jaramillo
listaEstudiantes.add(“Marcela Gonzales");
listaEstudiantes.add(“Marco Moreno");
78
listaEstudiantes.add(“Paola Jaramillo");
listaEstudiantes.remove(2);
El método get permite obtener el elemento almacenado en una determinada posición que es
indicada con un parámetro de tipo int:
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:
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
“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.
Si el elemento se encontrara en más de una posición, este método retorna la posición del
primero que se encuentre.
79
String estudianteBuscado = “Mónica Velez";
if(pos!=-1)
else
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.
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
81
Con ingreso por teclado
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
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.
Convertir a un arreglo
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.
Identificador Dato
001 Maria
002 Marco
003 Pedro
004 Juan
005 Carlos
Instancia y Métodos:
System.out.println(contenedor.get("1002"));
Methods y su description
void clear( )
85
Object clone( )
Devuelve verdadero si existe algún valor igual al valor dentro de la tabla hash. Devuelve
false si no se encuentra el valor.
Devuelve verdadero si alguna clave igual a la tecla exista en la tabla hash. Devuelve
false si no se encuentra la clave.
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( )
boolean isEmpty( )
Devuelve true si la tabla hash está vacía; devuelve false si contiene al menos una clave.
Enumeration keys( )
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 .
int size( )
String toString( )
Ejemplo:
87
CAPITULO 10: ELABORACIÓN DE INTERFACES GRÁFICAS
Elementos básicos de una GUI
· Disposición (layout): cómo se colocan los componentes para lograr un GUI cómodo de utilizar
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
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
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.
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é).
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.
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.
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
setBounds( int,int,int,int );
setBounds( Rectangle );
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.
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.
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.
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;
}
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.
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…
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.
JSpinner – permite vincular una caja de texto con botones integrados para seleccionar algún
valor.
Componentes de Texto.
Son todos aquellos que nos permiten procesar cadenas de texto, sea como entrada o salida de
información.
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.
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..
JMenu– Permite vincular botones o enlaces que al ser pulsados despliegan un menú principal.
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
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);
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:
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.
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
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
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
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:
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
EXCEPCIONES
IOException
FileNotFoundException
o Cuando se intentaba leer más datos del archivo se llegó inesperadamente al final
Object
Reader Writer
FileReader FileWriter
5
el primero la ruta del archivo
false->sobrescribe la información
BufferedWriter
BufferedReader
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
Object
InputStream OutputSream
7
o Para crear una instancia se puede utilizar 5 constructores.
DataOutputStream
o Para crear una instancia de esta clase es necesario definir la ruta en un objeto
FileOutputStream y pasarlo como parámetro.
writeInt()
writeUTF()
writeDouble()
FileInputStream
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.
readInt()
8
readUTF()
readDouble()
ARCHIVOS BINARIOS:
ENTRADA:
o FileInputStream
o BufferedInputStream
SALIDA:
o FileOutputStream
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
CLASE RANDOMACCESSFILE
Esta clase define la ruta del archivo
o DataOutputStream
o DataInputStream
11
“r” archivo solo lectura
MÉTODOS:
Interface
o Java.io.Serializable
o FileOutputStream
o ObjectOutputStream
o FileInputStream
o ObjectInputStream
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.
14
Agrupación de clases que se encuentran relacionadas bajo características comunes en
un mismo paquete
CAPITULO 5
BASE DE DATOS
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.
15
Es la minina unidad de información de una entidad.
ENTIDAD
Es la representación de un objeto real del sistema informático.
– Ejemplos:
• Cliente
• Inventario
• Factura
EJEMPLO DE UN FICHERO
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 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.
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
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.
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
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);
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.
31
CREATE DATABASE base_name;
USE base_name;
32
INSERTAR DATOS
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';
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
ELIMINAR DATOS
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.
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.
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)
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
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.
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.
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.
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.
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.*;
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.
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"));
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.
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 {
...
}
./aplicacion.jar
./chuidiang/ejemplos/Etiquetas.properties
./chuidiang/ejemplos/Etiquetas_es.properties
./chuidiang/ejemplos/...
44
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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
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
4
◦ Dispositivos muy distantes entre sí.
◦ Conjunto de dispositivos que necesitan conectarse entre ellos en instantes de tiempo
diferentes
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
Modelos De Networking
¿Qué es 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
Capa de Transporte
7
Intercambio de datos fiable
Independiente de la red usada
Independiente de la aplicación
Capa de Aplicación
8
Protocol Data Units (PDU)
Operación de una Arquitectura de Protocolos
Arquitecturas de Protocolos Estandarizadas
Requerido para comunicar dispositivos
Dos estándares:
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.
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
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
Physical Layer
Physical interface between data transmission device (e.g. computer) and transmission medium
or network
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:
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
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
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 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
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)
Espectro
Rango de frecuencias contenidas en la señal
Ancho de banda absoluto
17
DC Component
Componente de frecuencia cero.
Señal con Componente DC
CAPÍTULO 2
CAPA FÍSICA
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:
18
Par trenzados
UTP
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.
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
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.
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
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
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)
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
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.
Digital
o Valores discretos
o Ejemplo: texto, enteros
Analógico
o Variable en forma continua
o Medios de transmisión
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
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
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
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
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.
•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
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
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
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.
CAPÍTULO 3
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)
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)
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
Transmisión asíncrona
Transmisión Síncrona
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
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).
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
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)
Direcciones IP especiales
41
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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
4
PROTOCOLOS DE LA CAPA DE RED
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.
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:
128 64 32 16 8 4 2 1
9
CONVERSIÓN DE UNA DIRECCIÓN IP
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:
Broadcast: proceso por el cual se envía un paquete de un host a todos los hosts en la red.
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.
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.
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
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
RANGOS DE ID DE LA VLAN
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
51
UNIVERSIDAD POLITÉCNICA SALESIANA
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
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
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.
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
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.
ID de subred
ID de interfaz
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.
61
Encabezados
Arquitectura de linux
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).
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.
MBR.- Master Boot Record, o también denominado pista cero, contiene el gestor de
arranque del sistema operativo.
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
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.
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
/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.
/sbin.- Se usa para almacenar programas esenciales del sistema, que usará el
administrador del sistema.
/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.
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)
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
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.
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
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
75
EMPAQUETAMIENTO Y COMPRESIÓN
INSTALACIÓN DE PAQUETES
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
Ejemplo:
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:
77
La forma en cómo se desinstalan los paquetes .rpm deberán ser siguiendo la siguiente
sintaxis:
-e| --erase
La forma en cómo se actualizan los paquetes .rpm deberán ser siguiendo la siguiente
sintaxis:
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:
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]
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.
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
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
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
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
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
ilemus
carlos
Para eliminar cuentas de usuario en el sistema usaremos el comando userdel el cual deberá
ser aplicado según la siguiente estructura
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
82
Para dar de alta grupos en el sistema usaremos el comando groupadd el cual deberá ser
aplicado según la siguiente estructura
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.
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
chown#
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.
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”
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
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”
85
tail /etc/group group es el archivo donde se registran los grupos
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:
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.
Este archivo de texto asocia las direcciones IP con el nombre del equipo (hostname). Este
archivo debe tener la siguiente forma:
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
90
Configuración de la interfaz de red
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.
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.
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
Almacenar
Recuperar
Añadir
Borrar
Obtener
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.
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.
Así mismo, los clientes FTP pueden acceder a los servidores FTP de tres formas distintas,
estas son:
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.
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:
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.
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.
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
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
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
Servidor Maestro
Servidor Esclavo
Servidor de Cache
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.
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
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
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:
SERVIDOR SAMBA
102
Fichero /etc/samba/smb.conf
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
Este servidor no es compatible con páginas jsp y asp, sin embargo trabaja muy bien con
php
Archivos de configuración
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.
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
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
DOVECOT
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.
Almacenamiento en caché
Filtrado
Tipos de Proxies
Proxy web.
Proxy inverso.
Proxy NAT.
Proxy transparente.
Proxy abierto.
Squid
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.
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
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
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
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.
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.
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.
6
Un sistema de información debe cumplir con los siguientes componentes básicos interactuando
entre sí:
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.
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:
UNIDAD 2
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
METODOLOGÍA ESTRATÉGICA
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.
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
Por lo tanto los RRHH de un Sistema de información están destinados a atender a todos los
usuarios de manera simultánea.
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.).
11
Realiza pruebas para garantizar que las aplicaciones específicas del Centro, desarrolladas
internamente, se implementan con éxito.
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.)
Estudia, desarrolla y mantiene las aplicaciones y bases de datos internas necesarias para el
funcionamiento del Centro.
12
CARGOS EN UNDEPARTAMENTO DE SISTEMAS:
13
UNIDAD 4
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.
2. REQUERIMIENTOS
5. prueba
14
6. Implementación.
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.
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.
Permite a las personas que observen los elementos lógicos separados de los componentes
físicos
16
Ventajas relevantes en el uso del Prototipo:
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.
• Económico
• Técnico
• Operativo
FACTIBILIDAD TÉCNICA.
• 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.
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.
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
19
DESCRIPCIÓN DE LA FASE.
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
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:
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.
22
Para construir el diagrama se debe:
DIAGRAMA DE COLABORACIÓN.
UML –Interacciones
Enlace: especifica un camino a lo largo del cual un objeto puede enviar un mensaje a otro
objeto.
Ejemplo
23
:Socio
:Video
5: entregar recibo
: Encargado 4: registrar préstamo
:Préstamo
DIAGRAMA DE ACTIVIDAD
• 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 filtro
en máquina
Encender
máquina
/ cafetera.On
Café en
preparación
indicador de fin
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.
25
DIAGRAMA DE COMPONENTES.
Ejemplo:
26
DIAGRAMA DE DESPLIEGUE.
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
Elaborado por:
Ing. Aura Romero
Revisado por:
Ing. Miguel Quiroz
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.
5
Módulos para el Control Administrativo y Contable
6
Analogía cómica del desarrollo de un S.I.
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.
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.
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
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
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
Entregables:
Modelos Conceptual Revisados (MCR)
Entregables:
Cronograma detallado de Ajustes
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
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
Entregables:
22
Acta Entrega/Recepción Provisional
Entregables:
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
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.
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
Entregables:
Acta Entrega/Recepción Provisional
Entrega y Aceptación
Entregables:
Manual de Usuarios Manual de Diseño Programas fuentes y ejecutables
Acta de Entrega/Recepción final.
26
Prueba del Sistema
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
• 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$).
Instrucciones de la prueba:
Granularidad
• 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.
CAPITULO 4
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
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
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.
Tipos de Mantenimiento
46
AUDITORIA DE SISTEMAS
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
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.
• “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).
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.
Arquitectura VS Diseño
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.
Mantenimiento Adaptativo
Mantenimiento Perfectivo
57
Algunos autores dividen este tipo de mantenimiento en dos:
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.
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.
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
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
Pruebas de rendimiento
Pruebas de rendimiento:A nivel de consulta de EJB (EJB Tests)
Pruebas Web (Web Tests)
63
64
UNIVERSIDAD POLITÉCNICA SALESIANA
Elaborado por:
Ing. Vanessa Jurado
Revisado por:
Ing. Miguel Quiroz
65
Datos del Generales del Informe y Control de Versiones
Control de Versiones:
Versión 1.0
66
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
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.
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.
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
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.
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
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
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.
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.
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.
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.
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
79
Arquitecturas Híbridas
Combinan las características de arquitecturas cliente-servidor y arquitecturas peer-to-peer.
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).
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
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
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
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
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
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.
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
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
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.
95
Primitivas de la MPI
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.
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
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
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.
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.
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.
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.
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.
5. SINCRONIZACIÓN
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í?
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.
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:
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
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.
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.
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.
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.
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.
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.
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.
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.
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.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.
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.
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
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.
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
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.
130
capaz de montar un sistema de archivo remoto en su propio sistema de archivo local, como se
muestra en la figura 11-11.
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 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.
● 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.
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.
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.
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.
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.
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.
Coda utiliza una estrategia optimista para la replicación de archivos. La solución adoptada por
Coda es desplegar un esquema generador de versiones.
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.
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.
144