INDICE PÁGINA 1.- HARDWARE Y HERRAMIENTAS DE APLICACIÓN--------------- 2 A).- Informática aplicada………………………………………………………… aplicada……………………………………………………………… …… B)- Mantenimiento preventivo…………………………………… preventivo………………………………………………………... …………………...
2 5
2.- PROGRAMACIÓN--------------PROGRAMACIÓN------------------------------------------------------------------------------------------------------ 8 A).- Lógica de programación………………………………………… programación…………………………………………………………. ………………. 8 B).- Programación de computadoras………………………………… computadoras………………………………………………... ……………... 12 C).- Desarrollo de sitios web……………………………………………………… web………………………………………………………….. ….. 20 D).- Bases de datos…………………………………………… datos…………………………………………………………………… ……………………… 38
3.- REDES--------------------------------------------------------------------------- 44 A).- Comunicación de datos…………………………………………… datos…………………………………………………………. ……………. 44 B).- Redes de cómputo…………………………… cómputo………………………………………………………………. …………………………………. 53
4.- ANALISIS Y DISEÑO DE DE SISTEMAS DE INFORMACION ------ 65 A).- Representación de sistemas con UML, uso y ciclo iterativo e incremental.. incremental.. 65 B).- Modelado CASE, reingeniería de de software e ingeniería de reversa……….. reversa……….. 75 C).- Calidad en el desarrollo de software…………………………………………… 80
5.-SISTEMAS OPERATIVOS-------------------------------------------------- 86 A).- Generalidades de sistemas operativos multiusuarios……………………….. 86 B).- Línea de comando…………………………………… comando………………………………………………………………. …………………………. 89
6.- PROGRAMACION----------------------------------------------------------- 97 A).- Programación orientada orientada a objetos……………………………………………. objetos……………………………………………. B).- Programación avanzada………………………………………… avanzada………………………………………………………. ……………. C).- Programación para la web……………………………………………………. D).- Programación visual…………………………………………………… visual…………………………………………………………… ……… E).- Estructura de datos…………………………………………… datos……………………………………………………………. ……………….
97 99 112 121 132
7.-BASES DE DATOS---------------------------------------------------------- 145 A).- Aplicación…………………………………………………… Aplicación…………………………………………………………………………145 ……………………145 B).- Seguridad y optimización…………………………………………… optimización………………………………………………………. …………. 156
8.- ADMINISTRACION DE LA FUNCION INFORMATICA----------- 160 A).- Administración……………………………………………… Administración………………………………………………………………….. ………………….. 160 B).- Auditoría………………………………………… Auditoría…………………………………………………………………………. ………………………………. 162
9.- INFORMATICA--------------------------------------------------------------- 165 A).- Paquetería básica…………………………………………… básica……………………………………………………………… ………………… 165 B).- Bases de hardware……………………………………… hardware…………………………………………………………….. …………………….. 169 C).- Sistemas de información……………………………… información………………………………………………………. ………………………. 176
Página 1 de 183
Informática aplicada
I.- HARDWARE Y HERRAMIENTAS DE APLICACION Sistema informático:
− Hardware: Componentes físicos de un aparato eléctrico o electrónico, de un dispositivo como una computadora. − Software: Conjunto de programas, procedimientos y documentación asociada con un sistema especialmente una computadora. − Computadora: Principal herramienta que usa la informática para su cometido. Se define como máquina que utiliza la electrónica digital, para el tratamiento automático de la información. Almacén de la información codificada, datos y programa, antes, durante y después de la ejecución.
UNIDADES DE MEMORIA
Definición de Memoria: Almacén de la información codificada, datos y programa, antes, durante y después de la ejecución. El bit (unidad binaria) es el concepto sobre el que se basan las unidades de medida de la memoria. Un bit es algo que solo puede estar en dos estados: encendido o apagado, on u off, abierto o cerrado, 1 o 0, etc.
1. Unidad Cantidad de información byte 8 bits word 2 bytes = 16 bits dword 4 bytes = 32 bits Kb = 1024 bytes Mb = 1024 Kb Gb = 1024 Mb Tb = 1024 Gb
Tamaño de palabra de un procesador
Define la cantidad máxima de información que la UCP puede procesar como un todo. 1 byte Procesadores de 8 bits (Z80) 1 word Procesadores de 16 bits (i8086) dword Procesadores de 32 bits (i80386, Pentiums, AMD Kx). dword Procesadores de 64 bits (Sparc)
Definición de datos, información, instrucciones y programas •
•
Instrucción: Es un conjunto de símbolos que representan una orden de operación o tratamiento de una computadora. Las operaciones suelen realizarse con o sobre los datos. Algunos tipos de instrucciones son: de transferencia de datos, de entrada de datos, datos, de salida de datos, de transferencia transferencia interna, de tratamiento de datos.
Página 2 de 183
Informática aplicada •
•
•
•
Programas: Conjunto ordenado de instrucciones que se dan a la computadora indicándole las operaciones o tareas que debe realizar, se ejecutan secuencialmente. Las instrucciones se forman con elementos o símbolos tomados de un determinado repertorio y se construyen siguiendo unas reglas precisas. Datos: Elementos que son objeto de tratamiento. Formalmente se definen como el conjunto de símbolos
•
utilizados para representar o expresar un hecho, una idea, un número,...en la forma adecuada para ser objeto de tratamiento.
•
Información: Conjunto de datos e instrucciones necesarias para que el ordenador ejecute una tarea.
•
Hardware típico de una computadora
• Chasis o gabinete • La placa madre, que contiene: CPU, cooler, RAM, BIOS, buses (PCI, USB, HyperTransport, CSI, AGP, etc.) • Fuente de alimentación • Controladores de almacenamiento: IDE, SATA, SCSI • Controlador de video • Controladores del bus de la computadora (paralelo, serial, USB, FireWire), para conectarla a periféricos • Almacenamiento: disco duro, CD-ROM, disquetera, ZIP driver y otros • Tarjeta de sonido • Redes: módem y tarjeta de red
El hardware también puede incluir componentes externos como: • Teclado • Mouse, trackballs • Joystick, gamepad, volante • Escáner, webcam • Micrófono, parlante • Monitor (LCD, o CRT) • Impresora
Distintas clasificaciones del hardware Clasificación por la funcionalidad del hardware
* Hardware básico: dispositivos necesarios para iniciar la computadora. Los más básicos son la placa madre, la fuente de alimentación, el Informática aplicada
Página 3 de 183
microprocesador y la memoria. Se podrían incluir componentes como monitor y teclado, aunque no son estrictamente básicos. * Hardware complementario: aquellos dispositivos que complementan a la computadora, pero que no son fundamentales para su funcionamiento, como ser, impresora, unidades de almacenamiento, etc.
Clasificación por la ubicación del hardware
* Periféricos (componentes externos): dispositivos externos a la computadora. Ver periférico * Componentes internos: dispositivos que son internos al gabinete de la computadora * Puertos: conectan los periféricos con los componentes internos
Clasificación por el flujo de información del hardware
* Periféricos de salida: monitor, impresora, etc. * Periféricos de entrada: teclado, mouse, etc. * Periféricos/dispositivos de almacenamiento: disco duro, memorias, etc. * Periféricos de comunicación: módem, puertos, etc. * Dispositivos de procesamiento: CPU, microprocesador, placa madre, etc.
Herramientas de Hardware
Una herramienta de Hardware es una herramienta física como un destornillador o martillo, no necesitan mucho entrenamiento o conocimiento técnico para usarla, su uso se basa principalmente en la experiencia empírica, principalmente se necesita fuerza motriz para usarla y se daña (desgasta) con el uso.
Entre las herramientas de Hardware más usuales podemos citar:
Un juego de destornilladores. Una llave tubo de 5 mm (el único formato actualmente necesario). Un pequeño soldador. Una malla antiestática. Pinzas diversas (planas, cortantes, para pelar cables, etc.). Una herramienta para extracción de circuitos integrados. Una linterna. Una lupa. Un pequeño calibre. Un téster.
Mantenimiento Preventivo
MANTENIMIENTO PREVENTIVO
El mantenimiento preventivo consiste en crear un ambiente favorable para el sistema y conservar limpias todas las partes que componen una computadora. El mayor número de fallas que presentan los equipos es por la acumulación de Página 4 de 183
polvo en los componentes internos, ya que éste actúa como aislante térmico. El calor generado por los componentes no puede dispersarse adecuadamente porque es atrapado en la capa de polvo. Las partículas de grasa y aceite que pueda contener el aire del ambiente se mezclan con el polvo, creando una espesa capa aislante que refleja el calor hacia los demás componentes, con lo cual se reduce la vida útil del sistema en general. Por otro lado, el polvo contiene elementos conductores que pueden generar cortocircuitos entre las trayectorias de los circuitos impresos y tarjetas de periféricos. Es hacer los ajustes, modificaciones, cambios, limpieza y reparaciones (generalmente sencillos) necesarios para mantener cualquier herramienta o equipo en condiciones seguras de uso, con el fin de evitar posibles daños al operador o al equipo mismo. ¿Qué es Mantenimiento? Son aquellas acciones necesarias que tienen como objetivo mantener un sistema o restaurarlo a un estado en el cual pueda llevar a cabo alguna función requerida. Estas acciones incluyen la combinación de las acciones técnicas y administrativas correspondientes. Es el cuidado que se le otorgue a la computadora para prevenir posibles fallas. ¿Su función? El objetivo principal de cualquier programa de mantenimiento es proteger a un sistema de futuros problemas. Existen cuatro tipos reconocidos de mantenimiento, los cuales están en función del momento en el tiempo en que se realizan, el objetivo particular para el cual son puestos en marcha, y en función a los recursos utilizados: Mantenimiento Correctivo: También denominado mantenimiento reactivo, tiene lugar luego que ocurre una falla o avería, es decir, solo actuará cuando se presenta un error en el sistema. En este caso si no se produce ninguna falla, el mantenimiento será nulo, por lo que se tendrá que esperar hasta que se presente el desperfecto para tomar medidas de corrección de errores. Este mantenimiento trae consigo las siguientes consecuencias: – Paradas no previstas en el proceso productivo, disminuyendo las horas operativas. – Afecta las cadenas productivas, es decir, los ciclos productivos posteriores se verán parados a la espera de la corrección de la etapa anterior. – Presenta costos por reparación y repuestos no presupuestados, por lo que se dará el caso que por falta de recursos económicos no se podrán comprar los repuestos en el momento. – La planificación del tiempo que estará el sistema fuera de operación no es predecible. Mantenimiento Preventivo: También denominados “Planificado”, tiene lugar antes que ocurra una falla, se efectúa bajo condiciones controladas sin la existencia de algún error en el sistema. Se realiza a razón de la experiencia y pericia del personal a cargo, los cuales son los encargados de determinar el momento necesario para llevar a cabo dicho procedimiento; el fabricante también puede estipular el momento adecuado a través de los manuales técnicos. Presenta las siguientes características: – Se realiza en un momento en que no se está produciendo. – Se lleva a cabo siguiendo un programa que detalla el procedimiento y las actividades a realizar, a fin de tener herramientas y repuestos a mano. – Cuenta con fecha programada, un inicio y final preestablecido. – Destinado a un área en particular y a ciertos equipos. – Permite a la empresa contar con un historial. – Se cuenta con un presupuesto aprobado. Mantenimiento Predictivo: Consiste en determinar en todo instante la condición técnica real de la máquina examinada, mientras esta se encuentre en pleno funcionamiento, para ello se hace uso de un programa sistemático de mediciones de los parámetros más importantes del equipo. El sustento tecnológico de este mantenimiento consiste en la aplicación de algoritmos matemáticos agregados a las operaciones de diagnóstico, que juntos pueden brindar información referente a las condiciones del equipo. Tiene Página 5 de 183
como objetivo disminuir las paradas por mantenimientos preventivos y de esta manera minimizar los costos por mantenimiento y por no producción. La implementación de éste tipo de métodos requiere de inversión en equipos, en instrumentos, y en contratación de personal calificado. Técnicas utilizadas para le estimación del mantenimiento predictivo: – Analizadores de Fourier (Para análisis de vibraciones). – Endoscopia (Para poder ver lugares ocultos). – Ensayos no destructivos (a través de líquidos penetrantes, ultrasonido, radiografías, partículas magnéticas, entre otros). – Termovisión (Detección de condiciones a través del calor desplegado). – Medición de parámetros de operación (Viscosidad, voltaje, corriente, potencia, presión, temperatura, etc.). Herramientas Requeridas Para la limpieza de nuestro PC no necesitamos ninguna herramienta rara ni cara, aunque sí es conveniente disponer de un bote de aire comprimido o bien de cualquier aparato que nos permita enviar aire a presión. a) Cepillos de cerdas duras. b) Brochas, de preferencia antiestáticas. c) Trapos, de preferencia que no suelten pelusa. d) Isopos de algodón. e) Limpiador de aplicación en espuma. f) Limpiador de componentes electrónicos dieléctrico. g) Aire comprimido. h) Aspiradora. i) Cautín j) Multímetro digital k) Soldadura
Página 6 de 183
Mantenimiento Preventivo
l) Pulsera antiestática m) 1 bote de rollo fotográfico para guardar los tornillos o algo similar n) Alfileres o clips o) Bolsas antiestáticas p) Juego Desarmadores (planos, Phillips y tohr) q) Liquido desengrasante
7 consejos básicos de mantenimiento preventivo para tu PC. 1.- Limpieza interna del PC: Esta tarea busca retirar el polvo que se adhiere a las piezas y al interior en general de nuestro PC. Ante todo debe desconectarse los cables externos que alimentan de electricidad a nuestra PC y de los demás componentes periféricos. Para esta limpieza puede usarse algún aparato soplador o una pequeña aspiradora especial acompañada de un pincel pequeño. Poner especial énfasis en las cercanías al Microprocesador y a la Fuente. 2.- Revisar los conectores internos del PC: Asegurándonos que estén firmes y no flojos. Revisar además que las tarjetas de expansión y los módulos de memoria estén bien conectados. 3.- Limpieza del monitor del PC: Se recomienda destapar el monitor del PC solo en caso que se vaya a reparar pues luego de apagado almacena mucha energía que podría ser peligrosa, si no es el caso, solo soplar aire al interior por las rejillas y limpiar la pantalla y el filtro de la pantalla con un paño seco que no deje residuos ni pelusas. 4.- Atender al mouse: Debajo del mouse o ratón hay una tapa que puede abrirse simplemente girándola en el sentido indicado en la misma tapa. Limpiar la bolita que se encuentre dentro con un paño que no deje pelusas así como los ejes y evitar que haya algún tipo de partículas adheridas a ellos. 5.- La disquetera: Existen unos diskettes especiales diseñados para limpiar el cabezal de las unidades de diskette. Antes de usarlos, soplar aire por la bandeja de entrada (donde se ingresan los diskettes). 6.- Los CD-ROM, DVD, CD-RW: Al contar todos ellos con un dispositivo láser no se recomienda abrirlos si no se está capacitado para hacerlo. Existen unos discos especialmente diseñados para limpiar los lentes de este tipo de unidades. 7.-La superficie exterior del PC y sus periféricos: Es recomendable para esta tarea una tela humedecida en jabón líquido o una sustancia especial que no contengan disolventes o alcohol por su acción abrasiva, luego de ello usar nuevamente un paño seco que no deje pelusas.
Página 7 de 183
Lógica de Programación
3.- PROGRAMACION Lenguaje de Programación: Es un conjunto de símbolos, caracteres y reglas que le permiten a las
personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada / salida, cálculo, manipulación de textos, comparaciones, almacenamiento y recuperación de información.
Definición de Algoritmo: Un algoritmo es una serie de pasos organizados que describe el proceso que se
debe seguir, para dar solución a un problema específico. Existen dos tipos de algoritmos: Gráficos: Es la representación gráfica de las operaciones que realiza un algoritmo (diagrama de flujo). No Gráficos: Representa en forma descriptiva las operaciones que debe realizar un algoritmo (pseudo código). • •
Dato: Un dato puede ser un simple carácter o un valor entero. El tipo de dato determina el conjunto de valores que puede tomar una variable. Los tipos de datos son los siguientes: Numéricos Simples Lógicos Alfanuméricos (string) Tipos de datos Arreglos (Vectores, Matrices) Estructurados Registros (Def. por el Archivos usuario) Apuntadores
Expresiones: Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales. Por ejemplo: a + (b + 3)/c. Una expresión consta de operadores y operandos. Según sea el tipo de datos u operandos que manipulan, se clasifican en: Aritméticas Relaciónales Lógicas • • •
Operadores Aritméticos + Suma Resta * Multiplicación / División Mod Modulo
Relaciónales Lógicos > Mayor que And Y < Menor que OR O >= Mayor o igual que Not Negación <= Menor o igual que <> Diferente = Igual Prioridad de los Operadores Aritméticos 1. ^ Exponenciación 2. *, /, mod. Multiplicación, división, modulo. 3. +, - Suma y resta
Página 8 de 183
Lógica de Programación
Tabla de valores lógicos: AND T T F F
and and and and
T F T F
= = = =
T F F F
OR T T F F
NOT or or or or
T F T F
= = = =
T T T F
not T = F not F = T
Identificadores: representan los datos de un programa (constantes, variables). Un identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora, que nos permite accesar a su contenido.
Reglas para formar un identificador •
•
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco. Letras, dígitos y caracteres como la subraya (_) son permitidos después del primer carácter.
Constante: Es un dato numérico o alfanumérico que no cambia durante la ejecución del programa. Variable: Es un espacio en la memoria de la computadora que permite almacenar temporalmente un dato y éste dato puede cambiar durante la ejecución del programa.
Estructuras Algorítmicas: Son formas de trabajo, que permiten, mediante la manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Estas estructuras se clasifican de acuerdo con su complejidad en:
Estructuras Algorítmicas
Secuenciales
- Asignación - Entrada - Salida
Condicionales
- Simples - Múltiples
Cíclicas
- Hacer para - Hacer mientras - Repetir hasta
Estructuras Secuenciales: son aquellas en la que una acción (instrucción) sigue a otra en secuencia. Las
tareas se ejecutan de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin del proceso. Una estructura secuencial se representa de la siguiente forma: Inicio
Accion1 Accion2
. Acción N Fin
Página 9 de 183
Lógica de Programación
Asignación: La asignación consiste, en el paso de valores o resultados a una zona de la memoria. Dicha
zona será reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de la siguiente forma: Simples: Consiste en pasar un valor constate a una variable (a =15) Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso ( a = a +1) Acumulador: Consiste en usarla como un sumador en un proceso (a =a +b) De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas variables (a = c +b *2/4). • •
• •
Lectura: La lectura consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Esta operación se representa en un pseudo código como sigue:
Leer a, b
(Donde “a” y “b” son las variables que recibirán los valores)
Escritura: Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un resultado o mensaje. Este proceso se representa en un pseudo código como sigue:
Escribe “El resultado es:”, R (Donde “El resultado es:” es un mensaje que se desea que aparezca y R es una variable que contiene un valor y que queremos que éste valor aparezca.
Estructuras Condicionales: Las estructuras condicionales comparan una variable contra otros valores,
para que en base al resultado de ésta comparación, se siga un curso de acción dentro del programa. Las comparaciones se pueden hacer contra otra variable o contra una constante. Existen dos tipos básicos, las simples y las dobles. Simples: Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Estas tomas de decisión tienen la siguiente forma: •
Si
entonces Acción(es) Fin-si •
Dobles: Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en función del cumplimiento o no de una determinada condición. Se representa de la siguiente forma: Si entonces Acción(es) si no Acción(es) Fin-si
Estructuras Cíclicas: Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo conjunto de acciones que se puedan ejecutar una
Lógica de Programación
Página 10 de 183
cantidad específica de veces. Esta cantidad puede ser fija (previamente determinada por el programador) o puede ser variable (estar en función de algún dato dentro del programa).Los ciclos se clasifican en: •
•
Ciclos con un Número Determinado de Iteraciones (Hacer-Para o FOR) Son aquellos en que el número de iteraciones se conoce antes de ejecutarse el ciclo.
Ciclos con un Número Indeterminado de Iteraciones (Hacer-Mientras, Repetir-Hasta o WHILE) Son aquellos en que el número de iteraciones no se conoce con exactitud, ya que está dado en función de un dato dentro del programa. En otras palabras; ésta es una estructura que repetirá un proceso durante “N” veces, donde “N” puede ser fijo o variable. Para esto, la instrucción se vale de una condición que es la que debe cumplirse para que se siga ejecutando. Cuando la condición ya no se cumple, entonces ya no se ejecuta el proceso.
Página 11 de 183
Programación de Computadoras
Los conceptos básicos del paradigma OO son clase y objeto. Los objetos son simplemente entidades que tienen sentido en el contexto de una aplicación. Todos los objetos son instancias de alguna clase, los términos instancia y objeto son el mismo concepto. Las clases son abstracciones que generalizan dominios de objetos. El estado de un objeto viene dado por el valor de sus características y el comportamiento del objeto por las acciones u operaciones que realiza. Es decir las responsabilidades podemos dividirlas en dos grupos, aquellas que determinan el estado (atributos) y las que determinan el comportamiento (métodos). A los atributos también se les llama: campos, propiedades, variables o atributos; mientras que a los métodos también se les llama rutinas o funciones. El esquema general para la representación de una clase es la siguiente: Nombre de la clase Atributos
Estado Comportamiento
Responsabilidades
Métodos
C#
C# es un lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET. Su sintaxis básica deriva de C/C++ la cual es similar a la de Java. Tipos de datos más comunes:
Nota: El tipo de dato cadena se llama string. En C# las cadenas son objetos y no una matriz de caracteres, aun así, se puede obtener un carácter arbitrario de una cadena por medio de su índice (mas no modificarlo). Las cadenas son inmutables, una vez creadas no se pueden modificar, solo se pueden copiar total o parcialmente. Se pueden concatenar (unir) dos cadenas mediante el operador +. Las cadenas se pueden usar en las instrucciones switch.
Programación de Computadoras
Página 12 de 183
El código en C# es una secuencia de símbolos que determinan el conjunto de instrucciones. Dos aspectos determinan si una secuencia de símbolos es correcta en C#: la sintaxis y la semántica.
La sintaxis: son reglas que permiten determinar de qué manera los símbolos pueden combinarse para escribir código que por su forma sea correcto.
La semántica: permite determinar el significado de la secuencia de símbolos. También a través de las reglas
semánticas pueden ser detectados errores de interpretación que no permiten que las acciones o instrucciones puedan ser ejecutadas.
Variables: Una variable es una abstracción de una zona de memoria que se utiliza para representar y conservar valores temporalmente de un determinado tipo.
Sintaxis:
; Ejemplo: int unAño; string nombre, apellido;
Operadores:
La siguiente tabla muestra un resumen de los operadores más importantes.
Página 13 de 183
Programación de Computadoras
El operador == determina si dos referencias hacen referencia al mismo objeto, pero al usar dicho operador con dos operandos tipo string se prueba la igualdad del contenido de las cadenas y no su referencia. Sin embargo, con el resto de los operadores relacionales, como < o >= se comparan las referencias
Comentarios: Un comentario es texto que se incluye en el código fuente con el objetivo de facilitar su
legibilidad a los programadores. Los comentarios no tienen significado alguno para la ejecución de una aplicación; esto es equivalente a decir que los comentarios son completamente ignorados por el compilador. Un comentario de una sola línea se determina por los caracteres //. Un comentario con un conjunto de líneas con /* al inicio, y se cierra el bloque con */.
Clases y objetos
Una clase en C# es una secuencia de símbolos (o caracteres) de un alfabeto básico Sintaxis para la definición de clases
class { } Los miembros se definen como los atributos y métodos. Los cuales estarán presentes en cada uno de los objetos o instancias de la clase.
Programación de Computadoras
Página 14 de 183
Atributos: Son datos comunes a todos los objetos de una determinada clase y su sintaxis de definición es (como la declaración de variable):
; El puede ser cualquier identificador que cumpla con las reglas establecidas y no coincida con el nombre de otro miembro previamente definido en la clase
Métodos: Son un conjunto de instrucciones o acciones que se agrupan a través de un determinado nombre
simbólico de tal manera que es posible ejecutarlas en cualquier momento sin tenerlas que volver a escribir. A estas instrucciones se les denomina cuerpo del método, y a su ejecución a través de su nombre se le denomina llamada al método. Los métodos pueden devolver algún valor cuando se ejecutan. En las instrucciones es posible acceder con total libertad a los atributos de la clase a la cual pertenece el método. Su sintaxis es la siguiente: ([]) { } Ejemplo de la declaración de clase y método:
class Persona { // atributos string nombre; int añoNacimiento;
}
// método de consulta o acceso int Edad(int unAño) { // edad aproximada return unAño - añoNacimiento; }
Sobrecarga de métodos: Se denomina así a la posibilidad de disponer de varios métodos con el mismo nombre, pero con diferente lista de parámetros y es posible que cuando se les invoque el compilador podrá determinar a cual llamar a partir de los parámetros pasados en la llamada. Sin embargo, lo que no se permite es definir varios métodos que solamente se diferencien en su valor de retorno, puesto que la forma de invocar a los métodos a través de instancias de la clase es: .([]) Nota: C# permite la sobrecarga de operadores con la palabra clave operator
Página 15 de 183
Programación de Computadoras
Encapsulamiento: El mecanismo de encapsulamiento o principio de la ocultación de la información, le
permite a los diseñadores de clases determinar qué miembros de estas pueden ser utilizados por otros programadores y cuáles no. A su vez este mecanismo nos permite ocultar todos los detalles relativos a la implementación interna y sólo dejar visibles aquellos que se puedan usar con seguridad y le facilita al creador la posterior modificación. Este mecanismo le permite a las clases proporcionar una interfaz con las responsabilidades que los clientes pueden acceder directamente. El encapsulamiento se consigue añadiendo modificadores de acceso en las definiciones de los métodos y atributos. Estos modificadores son palabras reservadas del lenguaje que indican desde qué código puede accederse a ellos. Los modificadores de C# son los siguientes: public: indica que la componente puede ser accedida desde cualquier código. Se representa con +. private: sólo puede ser accedido desde el código de la clase a la que pertenece. Es lo considerado. Se representa con -. protected: permite el acceso desde el código de la clase a la que pertenece o de subclases suyas. Se representa con #. • •
•
En caso de no especificarse algún modificador, se considera por defecto u omisión que los miembros de un tipo de dato son private. La creación de un objeto o instancia de clase se realiza por medio de un método constructor. Constructores: Los constructores de una clase son métodos especiales que se definen como componentes de ésta, y que contienen código a ejecutar cada vez que se crea un objeto de ése tipo. Éste código suele utilizarse para la inicialización de los atributos del objeto a crear. La sintaxis básica de definición de constructores consiste en definirlos como cualquier otro método pero dándoles el mismo nombre que la clase a la que pertenecen y no se indicando el tipo de valor de retorno. Sintaxis: ([]) { } Nota: Un constructor tiene el mismo nombre que su clase y es sintácticamente similar a un método. Un constructor no regresa ningún valor. Los constructores también pueden ser sobrecargados. Si no se especifica un constructor en una clase, se usa uno por defecto que consiste en asignar a todas las variables el valor de 0 o null según corresponda. La palabra clave this es un apuntador al mismo objeto en el cual se usa. La palabra clave static hace que un miembro pertenezca a una clase en vez de pertenecer a objetos de dicha clase. Se puede tener acceso a dicho miembro antes de que se cree cualquier objeto de su clase y sin referencias a un objeto. NEW: Se utiliza para crear objetos e invocar constructores. Para crear un nuevo objeto se utiliza la siguiente sintaxis: identificador = new nombre_clase();.El operador new también se utiliza para invocar el constructor predeterminado de los tipos de datos. Ejemplo:
Programación de Computadoras
Class1 o = new Class1(); int i = new int(); Página 16 de 183
Propiedades: Las propiedades son miembros que ofrecen un mecanismo flexible para leer, escribir o calcular los valores de campos privados. Se pueden utilizar las propiedades como si fuesen miembros de datos públicos, aunque en realidad son métodos especiales denominados descriptores de acceso . De este modo, se puede tener acceso a los datos con facilidad, a la vez que
proporciona la seguridad y flexibilidad de los métodos Sintaxis: [] { get { } set { } }
Una propiedad definida de esta forma va a ser accedida como si se tratara de un atributo en el cual cada lectura de su valor se ejecutaría el y en cada escritura de un valor en ella se ejecutaría .
Estructura de control alternativa simple
La instrucción if: se evalúa la expresión lógica , si el resultado de su evaluación es verdadero (true) se ejecuta el . Tiene la siguiente sintaxis: if () ; La instrucción if-else: El se ejecuta en caso de que se cumpla la , en otro caso se ejecuta entonces el . La sintaxis es: if () ; else ;
Estructura de control alternativa múltiple (switch case)
La instrucción switch es muy simple: si al evaluarse toma entonces se ejecuta ; si al evaluarse toma entonces se ejecuta y así sucesivamente hasta . De no coincidir la evaluación con alguno de los valores predeterminados y si existe la opción default (ya que es opcional), entonces se ejecutará . La instrucción break es obligatoria excepto cuando exista una instrucción return
Página 17 de 183
Programación de Computadoras
en el respectivo bloque de instrucciones. break indica que después de ejecutar el bloque de instrucciones que lo precede se salta a la próxima instrucción después del switch. La sintaxis es la siguiente: switch () { case : [break;] case : [break;] case : [break;] [default: [break;]] }
Estructura de control for : Es uno de los ciclos más conocidos y usados; está controlado por un contador o variable de control. Tiene la siguiente sintaxis: for (; ; )
La semántica es la siguiente: ; se ejecutará una sola vez al inicio del ciclo, generalmente se realizan inicializaciones y declaraciones de variables puesto que como se dijo con anterioridad, esta solo se ejecuta una vez. En caso de que se quiera realizar o ejecutar más de una instrucción en este momento, dichas instrucciones se deben separar por comas (“,”). ; es evaluada en cada ciclo y en dependencia del valor que devuelva, dependerá que el bucle continúe ejecutándose ( true) o no (false). Al no colocarse nada en esta parte, el ciclo tomará como true el valor devuelto por lo que se ejecutará infinitamente. ; es ejecutado siempre en cada ciclo al terminar de ejecutar todas las instrucciones que pertenecen al ciclo for en cuestión. Por lo general puede contener alguna actualización para las variables de control. En caso de querer ejecutar en este momento más de una instrucción se deben separar por comas.
Estructura de control while : A veces no es posible saber de antemano el número de veces que se va a repetir la ejecución de una porción de código, mientras una condición sea cierta. Para definir este tipo de ciclos condicionales es posible utilizar la estructura de control while, cuya sintaxis es la siguiente: while Se ejecuta el bloque () mientras la sea cierta, o dicho de otra manera, el bucle terminará cuando la sea falsa. En ésta estructura la se verifica siempre al principio del ciclo por lo que, si la primera vez que se evalúa , es falsa, el ciclo no llegará nunca a ejecutarse.
Estructura de control do-while : La estructura de control do-while es otra sentencia de iteración en la que la condición se evalúa por primera vez después de que las
Página 18 de 183
Programación de Computadoras
del ciclo se hayan ejecutado. Esto quiere decir que las sentencias del bucle do-while, al contrario que las del ciclo while, al menos se ejecutan una vez. La sintaxis de esta estructura es la siguiente: do while ;
Estructura de control foreach: El ciclo foreach repite las instrucciones para cada elemento de un arreglo o colección. La finalidad de esta estructura es recorrer todos los elementos de un arreglo o colección, sin necesidad de índices ni valores mínimos o máximos. Sintácticamente, como se muestra a continuación, tras la palabra foreach y entre paréntesis se debe insertar una variable del mismo tipo de datos del arreglo que va tomando el valor de cada uno de los elementos que existan en el arreglo, ejecutando el ciclo para cada uno de ellos.
foreach ([] in )
Arreglos
Un arreglo unidimensional es un tipo especial de variable que es capaz de almacenar en su interior y de manera ordenada varios elementos de un mismo tipo de datos. [ ] ; Ejemplo: int[] temperaturas = {28, -5}; // El tamaño del arreglo es 2 y los datos del arreglo son 28 y -5 double [] pesos; // Se declara un arreglo llamado pesos, no se ha definido el tamaño del arreglo. pesos=new double[5]; // crea y define que el tamaño del arreglo pesos es de 5.
Página 19 de 183
Desarrollo de sitios Web
Metodología de Desarrollo de Proyectos Web Todo proyecto, para completarse de manera exitosa, debe seguir una metodología probada y basada en la experiencia que guie el proceso de desarrollo hasta alcanzar los objetivos propuestos. En ADWEBS implementamos una Metodología de Desarrollo Web para lograr los objetivos propuestos del proyecto a través de los siguientes pasos
Análisis : Ya sea de forma presencia, por teléfono o vía correo electrónico se levanta el requerimiento de las necesidades de su WebSite; definición de secciones de contenido, mapa de navegación, colores e imágenes deseadas y diseños de referencia Diseño: Los diseñadores proceden a crear 2 Layouts (Maquetas Visuales) de su sitio Web a tamaño real, para seleccionar 1 de su preferencia y hasta 3 rondas de arreglos y modificaciones a la seleccionada Prototipo: Se crean Wireframes (Maquetas funcionales) de su sitio para definir cómo quedarán estructurados sus contenidos y el funcionamiento de los mismos Desarrollo: con el diseño y los Wireframes los programadores crean el código que construye su Sitio Web Testing: una vez terminado el desarrollo se hacen pruebas visuales y de funcionamiento, primero por parte de nuestro equipo y luego por parte del cliente, para verificar que el resultado final cumpla con los requerimientos definidos Dominio y Hosting: Probado el sitio se procede a crear el Hosting final donde se hospedará, se migra todo el sitio web desde el servidor de desarrollo y se enlaza con el dominio real. Nuestra oferta incluye un año de Hosting y nombre de dominio GRATIS, además de cuentas de correo electrónico ILIMITADAS. Publicación y Entrega: Una vez el sitio en su Hosting final, se le entregan al cliente todos los datos de acceso y capacitación necesaria para el uso del mismo E-Marketing: Se le incluyen palabras claves en los títulos y etiquetas para garantizar un buen posicionamiento en buscadores y se da de alta el sitio en Google Analytics para darle al cliente un control estadístico de uso del sitio Mantenimiento: Adiciones y modificaciones posteriores a la entrega, apoyo en la publicación de contenidos. Este paso es opcional y se cotiza aparte de acuerdo a las necesidades del cliente.
En la actualidad la importancia de contar con un sitio web se incrementa día a día para todas aquellas personas que ofrecen algún servicio o tienen un negocio o empresa, ya sea pública o privada. Para los negocios ya establecidos y prestadores de servicios, un sitio web les permite: Tener presencia a nivel local, estatal, nacional y mundial. Tener una sucursal abierta las 24 horas del día, los 7 días de la semana. Ofrecer sus servicios y productos a un costo realmente bajo. Ventas automáticas. • • • •
Página 20 de 183
La facilidad de tener tantos sitios web como se requiera. Las consideraciones que debemos tener en cuenta antes de publicar uno de éstos sitios web, serán el objeto de estudio del documento presente. •
Hoy en día hay muchas formas de publicar un sitio web, las cuales debemos evaluar. Algunos puntos que no debemos dejar de tomar en cuenta antes de publicar nuestro sitio web son:
1.- ¿Qué publicaremos? Esto es lo primero a resolver. Queremos publicar un sitio personal, profesional, un blog, audio u otros. Esta elección inicial definirá a nuestra publicación, razón por la cual hay que estar bien seguros y planificar lo máximo posible. El tipo de sitio que publiquemos cumplirá un objetivo principal el cual debemos tener claramente delineado antes de comenzar a hacer nada. 2.- ¿Cómo publicaremos? En este punto juegan los recursos materiales y los conocimientos de los cuales disponemos o podríamos disponer. Este presupuesto primario nos definirá qué tipo de publicación podemos gestar. Si no contamos con financiación suficiente para costear un hosting, un dominio, ni contamos con capacitación suficiente para editar nuestras páginas la mejor elección será utilizar un asistente de publicación de algún servicio de hosting gratuito o patrocinado.
Si por el contrario disponemos de financiación para costear dominio y hosting profesional y además los conocimientos necesarios para editar nuestras páginas e incluso para diseñarlas y/o programarlas podremos acceder a una publicación de tipo profesional. 3.- ¿Cuál será la demanda del sitio? Es necesario considerar el número de visitas diarias y concurrentes (al mismo tiempo) antes de publicar nuestro sitio. De esto dependerá la capacidad de memoria que deberá tener el servidor, el tipo y número de procesadores, el Sistema Gestor de Base de Datos (SGBD)y, en caso de que se publique en Internet, el ancho de banda de conexión a Internet (si se publica en una intranet, esto último no será necesario).
Una vez definido lo anterior, podemos pasar a los requerimientos técnicos y de publicación de un sitio web. REQUERIMIENTOS TECNICOS Y DE PUBLICACION DE UN SITIO WEB. I. Una PC con un sistema operativo de red (Intranet e Internet).
Un sistema operativo de red es un componente software de una computadora que tiene como objetivo coordinar y manejar las actividades de los recursos del ordenador en una red de equipos. Consiste en un software que posibilita la comunicación de un sistema informático con otros equipos en el ámbito de una red. Dependiendo del fabricante del sistema operativo de red, tenemos que el software de red para un equipo personal se puede añadir al propio sistema operativo del equipo o integrarse con él. El software del sistema operativo de red se integra en un número importante de sistemas operativos conocidos, incluyendo Windows 2000 Server/Professional, Windows NT Server/Workstation, Windows 95/98/ME y Apple Talk. II. Un servidor web (Intranet e Internet). Página 21 de 183
Un servidor web o servidor HTTP es un programa que procesa cualquier aplicación del lado del servidor realizando conexiones bidireccionales y/o unidireccionales y síncronas o asíncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente. El código recibido por el cliente suele ser compilado y ejecutado por un navegador web. Para la transmisión de todos estos datos suele utilizarse algún protocolo. Generalmente se utiliza el protocolo HTTP para estas comunicaciones, perteneciente a la capa de aplicación del modelo OSI. El término también se emplea para referirse al ordenador que ejecuta el programa. Un servidor web opera mediante el protocolo HTTP, de la capa de aplicación del Modelo OSI. Al protocolo HTTP se le asigna habitualmente el puerto TCP 80. Las peticiones al servidor suelen realizarse mediante HTTP utilizando el método de petición GET en el que el recurso se solicita a través de la url al servidor web.GET /index.html HTTP/1.1 HOST: www.host.com Apache Es el servidor más utilizado, aunque ha vivido tiempos mejores. Parte de su éxito se debe a que es multiplataforma y a su estructura modular, que permite emplear diversos lenguajes en el lado del servidor (PHP, Python y Perl principalmente), así como incorporar características como la compresión de datos, las conexiones seguras y la utilización de URLs amigables. Microsoft IIS A pesar de haber superado los momentos en que era más conocido por sus vulnerabilidades que por sus características, IIS ha perdido mercado en los últimos años. Es el segundo servidor web más usado y cuenta con un buen número de módulos, pero también con el gran handicap de funcionar únicamente en Windows. Google Web Server El tercero más utilizado, conocido como GWS, es una gran incógnita. Google no publica apenas información sobre él y se rumorea que puede ser una versión adaptada de Apache. Obviamente, la gran cantidad de dominios que emplean este servidor no pertenecen todos a Google, sino que la mayoría son de compañías que emplean sus servicios como Blogger o App Engine. Nginx Es un servidor web ligero que funciona en múltiples plataformas (entre las que se encuentran Windows Linux y Mac OS X). Es usado por algunos sitios importantes como WordPress.com o Hulu. Lighttpd Es el otro gran servidor ligero, que permite usar menos cantidad de memoria y CPU. También es empleado por sitios con mucho tráfico como Youtube , Wikimedia, The Pirate Bay, etc. III.IP fija (Intranet e Internet). Los sitios de Internet que por su naturaleza necesitan estar permanentemente conectados, generalmente tienen una dirección IP fija (comúnmente, IP fija o IP estática), esta, no cambia con el tiempo. Los servidores de correo, DNS, FTP públicos y servidores de páginas web necesariamente deben contar con una dirección IP fija o estática, ya que de esta forma se permite su localización en la red.
A través de Internet, los ordenadores se conectan entre sí mediante sus respectivas direcciones IP. Sin embargo, a los seres humanos nos es más cómodo utilizar otra notación más fácil de recordar, como los nombres de dominio; la traducción entre unos y otros se resuelve mediante los servidores de nombres de dominio DNS. En caso de publicar el sitio en una intranet, la conexión a internet no será necesaria, solamente la IP fija. IV. Dominio de Internet (Internet). Página 22 de 183
Un dominio o nombre de dominio es el nombre que identifica un sitio web. Cada dominio tiene que ser único en Internet. Por ejemplo, "www.masadelante.com" es el nombre de dominio de la página web de Masadelante. Un solo servidor web puede servir múltiples páginas web de múltiples dominios, pero un dominio sólo puede apuntar a un servidor. El propósito principal de los nombres de dominio en Internet y del sistema de nombres de dominio (DNS), es traducir las direcciones IP de cada nodo activo en la red, a términos memorizables y fáciles de encontrar. Sin la ayuda del sistema de nombres de dominio, los usuarios de Internet tendrían que acceder a cada servicio web utilizando la dirección IP del nodo (por ejemplo, sería necesario utilizar http://192.0.32.10 en vez de http://example.com). V. Servidor de base de datos (SGBD) (Intranet e Internet): Un servidor de base de datos es un programa que provee servicios de base de datos a otros programas u otras computadoras, como es definido por el modelo cliente-servidor. También puede hacer referencia a aquellas computadoras (servidores) dedicadas a ejecutar esos programas, prestando el servicio.
Los sistemas de administración de base de datos (SGBD) generalmente proveen funcionalidades para servidores de base de datos, en cambio otros (como por ejemplo, MySQL) solamente proveen construcción y acceso a la base de datos. Para elegir nuestro SGBD es necesario tomar en cuenta el sistema operativo instalado en el servidor.
La utilización de páginas dinámicas está muy frecuentemente asociada con el empleo de bases de datos. Una base de datos es sencillamente un conjunto de tablas en las que almacenamos distintos registros (artículos de una tienda virtual, proveedores o clientes de una empresa, películas en cartelera en el cine, etc.). Estos registros son catalogados en función de distintos parámetros que los caracterizan y que presentan una utilidad a la hora de clasificarlos.
METODOS DE CONEXIÓN A BASES DE DATOS I.- DE FORMA ABIERTA
Open Data Base Conectivity (ODBC) O lo que es lo mismo, conectividad abierta de bases de datos Pero si hubiera un elemento que por un lado sea siempre igual, y por el otro sea capaz de dialogar con una base de datos concreta, solo tendríamos que ir cambiando este elemento, y nuestra aplicación siempre funcionaría sin importar lo que hay al otro lado, algo así como ir cambiando las boquillas de una manguera. A esas piezas intercambiables las llamaremos orígenes de datos de ODBC. Por un lado el ODBC provee de unas características siempre homogéneas, y por el otro permite distintos controladores que aseguran la conectividad de la aplicación con diferentes bases de datos. ODBC es un estándar de acceso a bases de datos que utilizan los sistemas Microsoft. A través de ODBC, en un sistema Windows se puede conectar con cualquier base de datos de la que exista un driver ODBC. Los creadores de las distintas bases de datos son los Página 23 de 183
responsables de crear un driver ODBC para que su base de datos se pueda conectar desde un sistema Microsoft. Para conectar con ODBC una base de datos, se ha de crear un DSN, que es un nombre que asociamos a una conexión por ODBC para referirnos a ella desde las aplicaciones o programas que deban conectarse con la base de datos.
JDBC
Java Database Connectivity (JDBC) es una interfase de acceso a bases de datos estándar SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales. JDBC también proporciona una base común para la construcción de herramientas y utilidades de alto nivel. Para usar JDBC con un sistema gestor de base de datos en particular, es necesario disponer del driver JDBC apropiado que haga de intermediario entre ésta y JDBC. Dependiendo de varios factores, este driver puede estar escrito en Java puro, o ser una mezcla de Java y métodos nativos JNI (Java Native Interface). JDBC es el API para la ejecución de sentencias SQL. (Como punto de interés JDBC es una marca registrada y no un acrónimo, no obstante a menudo es conocido como “Java Database Connectivity”). Consiste en un conjunto de clases e interfases escritas en el lenguaje de programación Java. JDBC suministra un API estándar para los desarrolladores y hace posible escribir aplicaciones de base de datos usando un API puro Java. JDBC hace posibles tres cosas: ✔ Establece una conexión con la base de datos. ✔ Envía sentencias SQL ✔ Procesa los resultados.
PHP Data Objects (PDO)
PDO es una interface de acceso a datos que nos permite, mediante varios drivers, conectarnos a diferentes bases de datos. Esta librería escrita en C viene activada por defecto desde PHP 5.1 por lo cual podrá utilizarse en la mayoría de los servidores que actualmente soportan PHP5. PDO es una extensión de acceso a datos para PHP5, la cual nos permite conectar a multitud de sistemas gestores de bases de datos indicando el driver correspondiente. Sus ventajas radican en que: ✔ Es una extensión eficiente que fue desarrollada en C. ✔ Sus métodos son independientes del sistema gestor de bases de datos que uses, permitiendo que una aplicación pueda migrar de un motor de base de datos a otro con sólo indicar el driver correspondiente al nuevo motor. ✔ Previene que en las consultas se inyecte SQL malicioso (SQL Injection) usando consultas parametrizadas. ✔ Está implementada con tecnología orientada a objetos. La conexión a una base de datos se realiza creando una instancia de la clase base PDO. Algunos métodos son: prepare, execute, exec, beginTransaction, bindParam, commit. La extensión PHP Data Objects (PDO) define una interfaz ligera y consistente para acceder a bases de datos en PHP. Cada driver de bases de datos que implementa la interfaz PDO puede exponer características específicas de la base de datos como funciones de extensión regulares.
DRIVERS NATIVOS
Página 24 de 183
Sólo algunos manejadores de bases de datos los soportan. Una conexión nativa es una conexión casi directa de Power Builder con los datos. Los drivers nativos son desarrollados por el mismo fabricante. Aparte del hecho de que tenemos que atravesar una capa menos para llegar a los datos; Power Builder "conversa" directamente con el API del fabricante. Por eso el rendimiento es mucho mejor frente al driver ODBC. La conexión nativa de acceso a base de datos se realiza utilizando la API propia del gestor de base de datos correspondiente. Ventajas: Eficiencia. Desventajas: No es estándar. Teóricamente una conexión nativa se establece hacia tu base de datos utilizando la plataforma en que reside.
II.- USANDO LOS DRIVERS DEL PROVEEDOR OLEDB
OLEDB es un protocolo que define la interfaz que debe implementar un proveedor de acceso a datos. Un proveedor OLEDB es un conjunto de componentes que implementa la interfaz OLEDB para un sistema específico de gestión (SQL Server, MySQL, Oracle o Access, por ejemplo). Es una tecnología desarrollada por Microsoft usada para tener acceso a diferentes fuentes de información, o bases de datos, de manera uniforme.
SQLSERVER
SQL Server Native Client (SQLNCLI10) es una tecnología de acceso a datos nueva en Microsoft SQL Server; es una interfaz de programación de aplicaciones (API) independiente para el acceso a datos utilizada para OLEDB y para ODBC. Combina el proveedor OLEDB de SQL y el controlador ODBC de SQL en una biblioteca de vínculos dinámicos (DLL) nativa, a la vez que proporciona una funcionalidad nueva independiente de Microsoft Data Access Components (MDAC).
ORACLE
El Easysoft ODBC-Oracle Driver permite a las aplicaciones habilitadas para ODBC acceder a bases de datos Oracle desde las plataformas Linux, Unix y Windows. Es compatible con Oracle 8.1.7+, 9i.x, 10g versión 1+, Oracle Database 10g Express Edition (Oracle Database XE) y 11g versión 1+. Hay dos versiones de Easysoft ODBC-Oracle Driver: una versión Oracle Call Interface (OCI) y una versión Wire Protocol (WP). El Easysoft ODBC-Oracle Driver (versión OCI) utiliza software cliente de Oracle para acceder a la base de datos Oracle. Éste es el único método de acceso a la base de datos Oracle para el que Oracle ofrece soporte.
MySQL
MySQL provee drivers estándar para JDBC, ODBC y .NET dando posibilidad a los desarrolladores de construir aplicaciones de bases de datos en el lenguaje de su elección. Adicionalmente, una librería C les permite incrustar MySQL directamente en sus aplicaciones. DRIVERS DESARROLLADOS POR MySQL ✔ ADO.NET Driver for MySQL (Connector/NET) Página 25 de 183
✔ ✔ ✔ ✔ ✔ ✔
OBASE DE DATOSC Driver for MySQL (Connector/OBASE DE DATOSC) JBASE DE DATOSC Driver for MySQL (Connector/J) C++ Driver for MySQL (Connector/C++) C Driver for MySQL (Connector/C) C API for MySQL (mysqlclient) MySQL Connector for OpenOffice.org
Para elegir el método de conexión a una base de datos debemos tomar en cuenta en primer lugar el lenguaje de programación usado para desarrollar la aplicación y en segundo el manejador de base de datos que emplearemos, por último también consideraremos el sistema operativo. JDBC solamente puede usarse con el lenguaje JAVA y ODBC sólo funciona para aplicaciones sobre plataforma Windows. Cualquier base de datos que se pretenda utilizar debe tener su propio driver, el cuál será definido tomando en cuenta el método de conexión elegido previamente. Por ejemplo, MySQL dispone de un Driver ODBC que se puede descargar desde su página web. Las bases de datos Access y SQL Server de Microsoft también tienen su driver ODBC y este ya se encuentra instalado en el Windows de fábrica.
BLOQUES DE CONTENCION Cajas Etiqueta Define una sección en un documento HTML e inserta retorno de carro. Se utiliza a menudo para agrupar elementos y aplicar estilos, y supuso un antes y un después en el formateo y posicionamiento de elementos en HTML. Ejemplo: en esta sección del documento el texto será verde: Esto es el titulo
Esto es un parrafo.
LAYERS EN HTML Uno de los aspectos más importantes de la implementación del HTML dinámico de Netscape Communicator es la creación de una etiqueta HTML nueva con el objetivo de contener toda la funcionalidad del posicionamiento CSS. Hay que indicar que esta solución es propietaria y que, además, desapareció con la aparición de la versión 6 de Netscape. Solo se usará, por tanto, si deseamos mantener la compatibilidad hacia atrás. Esta etiqueta, LAYER, contradice los principios de los estándares del consorcio W3C, que intentan separar el contenido de la forma de representarlo. Sin embargo, resulta casi imprescindible su estudio si se desean crear soluciones en DHTML compatibles con Netscape 4.x, porque, en ocasiones, esta etiqueta puede ser la única manera de que el Netscape Communicator haga lo que nosotros queremos que haga.
Ejemplo de uso:
Página 26 de 183
equivaldría a Podemos observar que no hemos hecho más que trasladar a HTML todos los atributos del estilo. Todos menos uno, position.
Posicionamiento absoluto y relativo La etiqueta LAYER no tiene ningún parámetro equivalente a position; asume por defecto un posicionamiento absoluto. Si queremos utilizar capas con posicionamiento relativo deberemos utilizar la etiqueta ILAYER, equivalente en todo a la primera, pero que provoca que la capa en cuestión utilice un posicionamiento relativo. Posición y tamaño Los parámetros para colocar la capa se llaman igual y se utilizan para lo mismo. Son LEFT, TOP, WIDTH y HEIGHT. Sólo podemos utilizar como unidades de tamaño los pixels, indicando directamente el número sin más aditivos. Aparte de éstos, Netscape incluye los parámetros PAGEx y PAGEY. Son equivalentes a LEFT y TOP, excepto en el caso en que anidemos capas. En ese momento, y en el segundo caso, en las capas "hija" se asume que las coordenadas indicadas se refieren al interior de la capa "padre", mientras que con los parámetros page nos aseguramos de que se refieran a los márgenes del documento.
Cambio de aspecto Aunque Netscape no admite OVERFLOW en sus etiquetas (más que nada porque el Communicator no soporta esta propiedad tampoco en CSS) si admite los recortes por medio del parámetro clip, al que deberemos asignar una lista de números equivalente a la propiedad del mismo nombre, cuando le asignábamos un r ectángulo. De ese modo:
equivale a:
Admite también los parámetros BGCOLOR y BACKGROUND, con los mismos efectos que tienen en la etiqueta BODY, es decir, cambiar el color o incluir una imagen en el fondo de la capa.
Capas Aparte de Z-INDEX, que se utiliza de un modo equivalente al usado en CSS, las etiquetas LAYER e ILAYER admiten otro método por medio de los parámetros ABOVE y BELOW. Si tenemos el siguiente código:
Veremos que la etiqueta nombrada como capa3 sería la que estuviera debajo de todas las demás, capa1 en medio y capa2 encima. En cuanto a VISIBILITY, se cambia el nombre de los valores, aunque la funcionalidad sea la misma. Esos valores son SHOW y HIDE. También admite el valor INHERIT, que indica a una capa "hija" que herede el valor que tenga en esta propiedad su capa "padre".
Otros Aparte de los parámetros ya vistos, las capas de Netscape admiten un par de cosas más que conviene indicar. El parámetro SRC, por ejemplo, permite introducir en la capa el contenido de la página HTML que le pasemos como valor. Por otro lado, las etiquetas LAYER e ILAYER admiten los eventos OnMouseOver, OnMouseOut, OnFocus, OnBlur y OnLoad, siendo ésta la causa de que en ocasiones debamos usar estas etiquetas en Netscape 4.x en lugar del posicionamiento CSS. NOLAYER (Texto alternativo para los layers) El contenido que esté rodeado por las etiquetas y se mostrará en navegadores que no soporten las etiquetas LAYER e ILAYER. Este contenido será ignorado por navegadores que sí soporten estas etiquetas Navigator 4.0.
Página 27 de 183
Note sin embargo, que los navegadores que no soporten las etiquetas LAYER e ILAYER mostrarán el contenido que haya dentro de estas etiquetas, sólo que no tendrán en cuenta toda la información sobre el posicionamiento y mostrarán todo el contenido secuencialmente. Para arreglar esto se puede usar el atributo SRC para especificar contenido de posicionado almacenado en un fichero aparte, así no se abrirá; y usar la etiqueta NOLAYER para mostrar un mensaje de advertencia a los usuarios diciendo que necesitan un navegador que soporte las etiquetas LAYER e ILAYER para ver la página.
Sintaxis ... Ejemplo Esta página te mostrará cosas interesantes si tienes un navegador que soporte la etiqueta LAYER.
Etiqueta La etiqueta permite agrupar varios elementos en línea seguidos dentro de un mismo bloque (por ejemplo, varias palabras seguidas en un párrafo), para después darles formato con la hoja de estilo. Ejemplo:
Resultado:
Frames flotantes Es posible situar en nuestras páginas web una especie de frames o marcos "flotantes", queriendo decir con esto que son como frames pero que podemos situarlos en la posición que queramos dentro de nuestra página, situando mediante coordenadas su vértice superior izquierdo. Estas ventanas son configurables, pudiendo definir además de su posición su tamaño y otra serie de propiedades. El mayor inconveniente que encontramos con estas ventanas flotantes es que su implementación es diferente en Internet Explorer y en Nestcape. Cada navegador posee una etiqueta y atributos diferentes para crear este tipo de marcos, no reconociendo uno las marcas del otro. Esta es otra de las consecuencias de la lucha entre ambas compañías, que como siempre hemos de pagar los creadores web.
Internet Explorer 3.0 y superiores implementa las etiquetas <IFRAME>... , que van a definir el principio y fin del marco flotante. Estas etiquetas deben situarse dentro del cuerpo de la página que contiene al marco, es decir, entre y . Los principales atributos de la etiqueta <IFRAME> son:
* NAME=" nombre " , análogo al atributo de , sirve para identificar unívocamente al marco flotante, con vistas a referenciar su contenido mediante un enlace por medio del parámetro TARGET.
Página 28 de 183
* WIDTH= " x " , donde x = nº píxeles. Con este atributo definimos la anchura que va a tener el marco flotante. * HEIGHT= " x " , donde x = nº píxeles. Con este atributo definimos la altura que va a tener el marco flotante. * ALIGN= " left / center / right " , Va a definir si el marco va a estar alineado a la izquieda en la ventana del navegador, centrado o a la derecha. Ejemplo.- (Sólo para I.Explorer) <iframe align="left" src="a.html"> <iframe align="center" src="b.html"> * FRAMEBORDER= " 0 / 1 " , Este atributo hace que el marco aparezca sin borde o con borde (valor por defecto) respectivamente. Ejemplo.- (Sólo para I.Explorer) <iframe src="a.html" frameborder="0" align="center" > * VSPACE= " x " , donde x = nº píxeles. Nos sirve para posicionar el marco, y define la distancia entre el borde superior del marco y el límite superior de la ventana del navegador. * HSPACE= " x " , donde x = nº píxeles. Nos sirve para posicionar el marco, y define la distancia entre el borde izquierdo del marco y el límite izquierdo de la ventana del navegador. Ejemplo.- (Sólo para I.Explorer) <iframe src="a.html" hspace="100" vspace="20"> * MARGINHEIGHT= " x " , donde x = nº píxeles. Nos define el espacio en píxeles que va a haber entre el borde superior del marco y su contenido. * MARGINWIDTH= " x " , donde x = nº píxeles. Nos define el espacio en píxeles que va a haber entre el borde izquierdo del marco y su contenido. Ejemplo.- (Sólo para I.Explorer) <iframe src="a.html" frameborder="1" marginwidth="60" marginheight="30"> * SCROLLING= " yes / no / auto " , que nos va a definir si el marco va a tener barra deslizadora siempre, nunca o sólo cuando sea necesario por exceder el contenido al tamaño del mismo. Su valor por defecto es auto . * SRC= " ruta página html " , que nos va a definir la página web que se va a cargar dentro del marco flotante. Podemos especificar bien la ruta completa de la página en el directorio de nuestro servidor web o bien una URL completa de Internet. * STYLE= " parámetro-valor / parámetro-valor / … " , Este atributo es una aplicación directa de las Hojas de Estilo en Cascada (CSS), y nos permiten definir la posición y tamaño del marco en la ventana del navegador. Si el frame flotante no contiene
Página 29 de 183
una página web referenciada mediante SRC y contiene texto, también es posible aplicar estilos a este texto, como color, fuente, tamaño, etc.
Ejemplo.- (Sólo para I.Explorer) <iframe src="a.html" style="position:absolute; left:100px;top:140px;width:400px;height:150px;" > * CLASS= " clase " . Análogo al anterior, pero ahora refiriendo el estilo del marco flotante (posición y tamaño) de acuerdo con una clase de estilos definida en la sección de la página que contiene al marco o en un archivo externo de extensión ".css" * ID= " identificador " . En todo semejante al anterior, pero con la diferencia que ahora el nombre de identificador asignado debe ser único para cada marco en concreto. También posibilita cambiar dinámicamente las propiedades del marco usando un lenguaje de script, como JavaScript. Si queremos, podemos colocar un texto alternativo entre las etiquetas <IFRAME>> e , con el objeto de que aquellas personas cuyo navegador no soporte los marcos flotantes puedan contemplar un mensaje alternativo.
METODOS DE PETICION HTTP Método Significado GET
Devuelve el recurso identificado en la URL pedida.
HEAD
Funciona como el GET, pero sin que el servidor devuelva el cuerpo del mensaje. Es decir, sólo se devuelve la información de cabecera.
POST
Indica al servidor que se prepare para recibir información del cliente. Suele usarse para enviar información desde formularios.
PUT
Envía el recurso identificado en la URL desde el cliente hacia el servidor.
OPTIONS Pide información sobre las características de comunicación proporcionadas por el servidor. Le permite al cliente negociar los parámetros de comunicación. TRACE
Inicia un ciclo de mensajes de petición. Se usa para depuración y permite al cliente ver lo que el servidor recibe en el otro lado.
DELETE
Solicita al servidor que borre el recurso identificado con el URL.
CONNECT Este método se reserva para uso con proxys. Permitirá que un proxy pueda dinámicamente convertirse en un túnel. Por ejemplo para comunicaciones con SSL.
INTRANET
Página 30 de 183
Intranet es la aplicación de los estándares Internet dentro de un ámbito corporativo para mejorar la productividad, reducir costos y mantener los sistemas de información existentes. Es una forma de poner al alcance de los trabajadores todo el potencial de la empresa, para resolver problemas, mejorar los procesos, construir nuevos recursos o mejorar los ya existentes, divulgar información de manera rápida y convertir a estos trabajadores en miembros activos de una red corporativa, o sea da al usuario la información que este necesita para su trabajo. Pretende que cada cual tenga la información necesaria en el momento oportuno sin que tenga que recurrir a terceros para conseguirla. Como puede verse una Intranet es una copia de Internet dentro de la empresa. En una Intranet se pueden plasmar los dos grandes bloques de servicios o aplicaciones de Internet: •
Las que permiten la comunicación: correo electrónico con las listas de distribución, las News,
Usenet o foros de debate, las Talk e IRC o charlas electrónicas, o Mbone o la transmisión de imágenes y sonido en tiempo real, todo ello entre los miembros de una misma empresa u organismo y de estos con el exterior. •
Los servicios o aplicaciones que permiten investigar y encontrar información: FTP (File
Transfer Protocol), o transferencias de ficheros, Telnet o acceso y consulta a ordenadores remotos, bases de datos, etc., todo ello en el ámbito interno de la propia empresa u organización, con empresas del mismo grupo, con empresas afines, o con cualquier otra que pueda interesarle. Las Intranets por lo tanto, pueden ayudar al intercambio de información de datos, ideas, entre trabajadores de una empresa de todos los niveles. Se trata de compartir información no de acapararla y adaptarla a las necesidades de los usuarios. Una Intranet bien diseñada puede ahorrar tiempo y dinero, ya que reduce drásticamente los costes y el tiempo de los procesos de generación, duplicación y uso de los datos.
EXTRANET A principios de los noventa Internet supuso una gran revolución, a continuación Intranet fue el siguiente paso para aprovechar los recursos y la tecnología de Internet pero en el ámbito de las empresas u organizaciones y actualmente Extranet, aunque la diferencia con la Intranet sea difusa Página 31 de 183
puesto que es la intersección de distintas Intranets, parece que es el futuro, con la integración de las redes anteriores, que permitirá una revolución en la estructura y operaciones comerciales de las empresas, instituciones y organismos públicos y privados. Una Extranet es una red externa de colaboración que utiliza también la tecnología Internet. Para algunos es una parte de las Intranets de la empresa que se hacen accesibles a otras empresas u organizaciones. Es una conexión entre empresas a través de Internet, una herramienta que permite la colaboración entre empresas. Son comunicaciones entre empresa y proveedores, de empresa a empresa, de empresas a consumidores. Las Extranets son el puente entre la red pública Internet y las redes privadas corporativas o Intranets, o sea un canal que conecta múltiples y diversas organizaciones online, donde las que comparten información puedan comunicarse con el fin de conseguir los objetivos comerciales señalados. Las aplicaciones de esta red pueden ser entre grupos de empresas que comparten la misma información o las mismas ideas, entre empresas que participan o colaboran en el desarrollo de alguna nueva aplicación, para los catálogos de productos, para la gestión y el control y desarrollo de un mismo proyecto de trabajo, para programas de formación, para que proveedores y clientes intercambien ofertas, promociones, que asociaciones, universidades o la misma administración participen en actividades como gestión de bolsas de trabajo, prácticas de investigación, programas de formación. Internet, Intranet y Extranet tienen en común:
– La tecnología subyacente. – La infraestructura que se basa en estándares que hacen posible compartir recursos comunes. – La red física debe basarse en el protocolo IP. Lo que las hace diferentes es: – Internet ofrece acceso a información pública a un grupo ilimitado de personas en todo el mundo. – Una intranet permite acceso a la información y recursos privados de una organización a un número limitado de usuarios autorizados. Dentro de la Intranet dichos usuarios suelen tener restricciones, es decir, que no tienen acceso al total de los recursos e información disponibles. Página 32 de 183
– Una Extranet es un “punto medio” entre la Internet y la Intranet, ya que hace posible que usuarios que no pertenecen a la organización (previamente autorizados), tengan acceso a su Intranet. Las aplicaciones web pueden ser ejecutadas en cualquier computadora que cuente con un navegador, independientemente del sistema operativo que tenga instalado o la topología lógica que se utilice para crear la red.
Software de gestión de datos: Este software se encarga de la manipulación y gestión de los datos almacenados y requeridos por las diferentes aplicaciones. Normalmente este software se aloja e n el servidor. Software de desarrollo: este tipo de software se aloja en los clientes y solo en aquellos que se dedique al desarrollo de aplicaciones. Software de interacción con los usuarios: También reside en los clientes y es la aplicación gráfica de usuario para la manipulación de datos, siempre claro a nivel usuario (consultas principalmente). Ventajas y desventajas del modelo cliente-servidor Ventajas:
* Centralización del control de los recursos, datos y accesos. * Facilidad de mantenimiento y actualización del lado del servidor: Esto es porque el lado del servidor se puede mantener o actualizar fácilmente. Por ejemplo, una actualización se aplica a un únicoservidor , pero los beneficios los obtienen múltiples clientes generalmente sin necesidad de que éstos actualicen nada. * Toda la información es almacenada en el lado del servidor , que suele tener mayor seguridad que los clientes. * Hay muchas herramientas cliente-servidor probadas, seguras y amigables para usar . Desventajas:
* Si el número de clientes simultáneos es elevado, el servidor puede saturarse. Esto sucede con menor frecuencia en las redes P2P. * Frente a fallas del lado del servidor , el servicio queda paralizado para los clientes. Algo que no sucede en una red P2P. Un cliente FTP basado en web no es más que un cliente FTP al cual podemos acceder a través de nuestro navegador web sin necesidad de tener otra aplicación para ello.
El protocolo de transferencia es el sistema de reglas mediante el cual se transfiere información entre los servidores y los clientes (por ejemplo los navegadores). Página 33 de 183
Un dominio se compone normalmente de tres partes: en www.masadelante.com, las tres uves dobles (www), el nombre de la organización (masadelante) y el tipo de organización (com). Hosting (alojamiento o también conocido como hospedaje web, alojamiento web, web sitehosting, web hosting o webhosting) es un negocio que consiste en alojar, servir, y mantener archivos para uno o más sitios web. Los alojamientos dedicados consisten en el uso exclusivo de todo un servidor por un único cliente, mientras que en los alojamientos compartidos varios clientes comparten un servidor.
ESTRUCTURAS BASICAS DE SITIOS WEB: ARBOL
En esta estructura existe una página principal (la home page en terminología inglesa) desde la que se puede llegar a otras páginas de la web. Estas otras páginas a su vez son un nodo para llegar a otro grupo de páginas. De esta manera llegaremos a tener las páginas agrupadas en niveles, de manera que para llegar desde el primero al último se deben atravesar los intermedios. Es una estructura muy jerarquizada y algo compleja y difícil para navegar. Puede ser útil para estructurar nuestro sitio en ca nales o grupos de páginas independientes. En cualquier caso no conviene que el número de niveles sea excesivo, nunca más de 3. Piensa que si queremos ir de una página a otra en el mismo nivel en otra rama del árbol, debemos retroceder hasta la raíz para luego alcanzar la página de destino. LISTAS
Esta forma de organizar el sitio es totalmente opuesto al anterior. Realmente no existe una página raíz o principal, lo que tenemos es una especie de lista de páginas donde cada una tiene dos vecinas: una a la izquierda y otra a la derecha, excepto las páginas de los extremos. Una variante presentaría las páginas primera y última enlazadas. Esta forma de organizar un sitio es muy parecida a un libro donde cada página sería un capítulo del mismo. Pasamos del primer al último capítulo a través de los intermedios. Es una implementación muy adecuada para manuales o para procesos donde el usuario deba recorrer forzosamente una serie de páginas. MIXTA
Esta estructura aprovecha las ventajas de las dos anteriores. Las páginas están jerarquizadas en niveles, pero dentro de cada nivel se organizan como listas, de forma que podemos recorrer todas las páginas de un mismo nivel sin tener que salir de él. En realidad ni el árbol puro ni las listas puras son del todo eficientes, por lo que es habitual mezclar ambas estructuras. RED
Página 34 de 183
Las páginas del sitio también pueden estar totalmente interconectadas, es decir, desde cada página podemos ir a cualquier otra del sitio. Realmente la interconexión de absolutamente todas las páginas sería un caso extremo. Es una estructura de apariencia algo anárquica en la que hay que cuidar mucho de no dejar enlaces abiertos, es decir, apuntando a una página inexistente. Además debemos evitar que el usuario se pierda en una maraña de enlaces. Por todo esto ello es necesario planificarla muy bien. MAPA DEL SITIO WEB Representación gráfica o textual de un sitio web. El mapa de un sitio web puede ser un documento que se utiliza para planificar el diseño de la web, o puede ser una página web donde se listan todas -o las más importantes- páginas web de un sitio (generalmente organizadas de alguna manera).
Modelos de seguridad. Son mecanismos abstractos que permiten poner en práctica una determinada política de seguridad. En relación con el control de acceso tenemos los siguientes estándares: MAC (Mandatory Access Control): MAC es un sistema centralizado, en el cual las decisiones de seguridad no recaen en el propietario de un objeto y es el sistema el que fuerza el cumplimiento de las políticas por encima de las decisiones de los sujetos, además de permitir una granularidad y control mayores. Desde el punto de vista de la seguridad, MAC es más completo que DAC. DAC (Discretionary Access Control): Es una forma de acceso a recursos basada en los propietarios y grupos a los que pertenece un objeto. Se dice que es discrecional en el sentido de que un sujeto puede transmitir sus permisos a otro sujeto.
La mayoría de sistemas Linux ahora mismo usan este tipo de acceso, estando los permisos orquestados por grupos y usuarios, pudiendo un usuario normal cambiar los permisos de los archivos que posee con el comando chmod. Control de Acceso Basado en Roles (RBAC): Trata de definir los permisos basándose en los roles establecidos en la organización, para luego asociar adecuadamente a los usuarios con los roles que tengan derecho a ejercer.
Se dice que RBAC es neutral con respecto a la política, ya que permite modelar otros modelos previos, que han demostrado limitaciones, como son DAC y MAC. Formas de diagnóstico de seguridad. Software de verificación. Google Skipfish. Permite detectar vulnerabilidades en las aplicaciones web.Es compatible c on Linux, Mac y Windows y puede ser descargada desde el sitio de Google.Su finalidad es detectar agujeros de seguridad en aplicaciones web. Nikto2. Es de código abierto y permite llevar a cabo pruebas exhaustivas de los servidores web para varios artículos.Los plugins se actualizan con frecuencia y se puede actualizar de forma automática.
Página 35 de 183
Nessus. Es el líder mundial en escáneres activos de vulnerabilidad.Con alta velocidad de descubrimiento, la auditoría de configuración, el perfil activo, el descubrimiento de los datos sensibles y análisis de la vulnerabilidad de su seguridad.
HOJAS DE ESTILO: Definición. son conjuntos de instrucciones, a veces en forma de archivo anexo, que se asocian a los archivos de texto y se ocupan de los aspectos de formato y de presentación de los contenidos: tipo, fuente y tamaño de letras, justificación del texto, colores y fondos, etc.
Página 36 de 183
Página 37 de 183
Bases de datos
Bases de datos en la Web Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web. Ventajas Proporcionar información actualizada Facilitar la realización de búsquedas Disminuir los costes de mantenimiento Implementar sistemas de control de acceso Almacenar preferencias de los usuarios • • • • •
Esquema básico de un sitio web soportado por bases de datos:
Instalación y config. de MySQL Página 38 de 183
Pasos: Descargar Descomprimir e instalar Configurar Arrancar Conectar con el servidor Instalar la extensión para MySQL de PHP • • • • • •
Bases de datos
Características de MySQL Modelo relacional, multiusuario Tipos de datos Numéricos tinyint, smallint, mediumint, int, integer, bigint decimal, float, numeric Fecha y hora date, time, datetime, year, timestamp Cadena char, varchar tinytext, text, mediumtext, longtext tinyblob, blob, mediumblob, longblob enum, set Debe elegirse adecuadamente el tipo y el tamaño de cada campo
Operadores
Aritméticos +, -, *, / Comparación =, !=, <=, <, >=, >, IS NULL, IS NOT NULL Lógicos not (!), and (&&), or (||), xor
Funciones
Funciones de cadena Funciones de comparación de cadenas Funciones numéricas Funciones de fecha y hora Funciones de agregado Página 39 de 183
phpMyAdmin es una herramienta para la administración del servidor de bases de datos MySQL Dispone de una interfaz gráfica y es de libre distribución Permite realizar todo tipo de operaciones sobre bases de datos: crear, borrar y modificar tablas consultar, insertar, modificar y eliminar datos definir usuarios y asignar permisos realizar copias de seguridad etc Está escrita en php y se ejecuta desde el navegador
Bases de datos
Si está instalada en la carpeta phpmyadmin, se ejecuta escribiendo en la barra de direcciones del navegador la url http://localhost/phpmyadmin/ Puede administrar bases de datos locales y remotas
Lenguaje SQL SQL (Structured Query Language) es el lenguaje que se utiliza para comunicarse con la base de datos Procedimiento de comunicación con la base de datos:
Página 40 de 183
Bases de datos
Las instrucciones más habituales son SELECT, INSERT, UPDATE, DELETE Veamos su sintaxis básica y algunos ejemplos de uso Para ello utilizaremos una tabla noticias con cinco campos: un identificador único de la noticia, el título de la noticia, el texto de la noticia, la categoría de la noticia y la fecha de publicación de la noticia
noticias id título texto categoría fecha SELECT Sintaxis: SELECT expresión FROM tabla [WHERE condición] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] [LIMIT [offset,] row_count | row_count OFFSET offset] Ejemplo: SELECT * from noticias WHERE fecha=CURDATE() LIMIT 10 ORDER BY fecha DESC Obtiene las noticias del día con un tope máximo de 10, ordenadas de la más reciente a la más antigua Página 41 de 183
INSERT
Sintaxis: INSERT [INTO] nombre_tabla [(nombre_columna,...)] VALUES ((expresión | DEFAULT),...), (...),... INSERT [INTO] nombre_tabla SET nombre_columna=(expresión | DEFAULT), ... Ejemplo: INSERT INTO noticias (id, titulo, texto, categoria, fecha) VALUES (37, “Nueva promoción en Nervión”, “145 viviendas de lujo en urbanización ajardinada situadas en un entorno privilegiado”, “promociones”, CURDATE()) Inserta una noticia con los valores indicados
Bases de datos
UPDATE
Sintaxis: UPDATE nombre_tabla SET nombre_columna1=expr1 [, nombre_columna2=expr2 ...] [WHERE condición] [ORDER BY ...] [LIMIT row_count] Ejemplo: UPDATE noticias SET categoria = “ofertas” WHERE id=37 Modifica la categoría de la noticia con id=37 de la tabla
DELETE
Sintaxis: DELETE FROM nombre_tabla [WHERE condición] [ORDER BY ...] [LIMIT row_count] Ejemplo: DELETE FROM noticias WHERE fecha < CURDATE()-10 Borra las noticias con más de 10 días de antigüedad
Las funciones concretas de MySQL que realizan estas operaciones son: Conectar con el servidor de bases de datos: mysql_connect()
Seleccionar una base de datos: mysql_select_db() Enviar la instrucción SQL a la base de datos: mysql_query() Obtener y procesar los resultados: mysql_num_rows() y mysql_fetch_array() Cerrar la conexión con el servidor de bases de datos: mysql_close() Página 42 de 183
Acceso a bases de datos MySQL Conectar con el servidor de bases de datos: mysql_connect() Devuelve un identificador de la conexión en caso de éxito y false en caso contrario Sintaxis: $conexion = mysql_connect (servidor, username, password);
Bases de datos
Ejemplo: $conexion = mysql_connect (“localhost”, “cursophp”, “”) or die (“No se puede conectar con el servidor”); $conexion = mysql_connect (“localhost”, “cursophp-ad”, “php.hph”) or die (“No se puede conectar con el servidor”);
Seleccionar una base de datos: mysql_select_db()
Devuelve true en caso de éxito y false en caso contrario
Sintaxis: mysql_select_db (database); Ejemplo: mysql_select_db (“lindavista”) or die (“No se puede seleccionar la base de datos”);
Enviar la instrucción SQL a la base de datos: mysql_query()
Devuelve un identificador o true (dependiendo de la instrucción) si la instrucción se ejecuta correctamente y false en caso contrario
Sintaxis: $consulta = mysql_query (instrucción, $conexion); Ejemplo: $consulta = mysql_query (“select * from noticias”, $conexion) or die (“Fallo en la consulta”);
Obtener y procesar los resultados: mysql_num_rows(), mysql_fetch_array()
En el caso de que la instrucción enviada produzca unos resultados, mysql_query() devuelve las filas de la tabla afectadas por la instrucción mysql_num_rows() devuelve el número de filas afectadas Para obtener las distintas filas del resultado se utiliza la función mysql_fetch_array(), que obtiene una fila del resultado en un array asociativo cada vez que se invoca
Sintaxis: Página 43 de 183
$nfilas = mysql_num_rows ($consulta); $fila = mysql_fetch_array ($consulta);
Comunicación de Datos
3.- REDES Terminología de networking Redes de datos Las redes de datos se desarrollaron como consecuencia de aplicaciones comerciales diseñadas para microcomputadores. A principios de la década de 1980 networking se expandió enormemente, aun cuando en sus inicios su desarrollo fue desorganizado.
Redes de área local (LAN) Las LAN constan de los siguientes componentes: Computadores Tarjetas de interfaz de red Dispositivos periféricos Medios de networking Dispositivos de networking Algunas de las tecnologías comunes de LAN son: • • • • •
• • •
Ethernet Token Ring FDDI
Redes de área metropolitana (MAN) La MAN es una red que abarca un área metropolitana, como, por ejemplo, una ciudad o una zona suburbana. Una MAN generalmente consta de una o más LAN dentro de un área geográfica común.
Redes de área amplia (WAN) Algunas de las tecnologías comunes de WAN son: Módems Red digital de servicios integrados (RDSI) Línea de suscripción digital (DSL - Digital Subscriber Line) Frame Relay Series de portadoras para EE.UU. (T) y Europa (E): T1, E1, T3, E3 Red óptica síncrona (SONET ) • • • • • •
Redes de área de almacenamiento (SAN) Página 44 de 183
Una SAN es una red dedicada, de alto rendimiento, que se utiliza para trasladar datos entre servidores y recursos de almacenamiento. Al tratarse de una red separada y dedicada, evita todo conflicto de tráfico entre clientes y servidores
Red privada virtual (VPN)
Una VPN es una red privada que se construye dentro de una infraestructura de red pública, como la Internet global.
Comunicación de Datos
Ancho de banda
El ancho de banda se define como la cantidad de información que puede fluir a través de una conexión de red en un período dado. El ancho de banda analógico se mide en función de la cantidad de espectro magnético ocupada por cada señal. La unidad de medida básica del ancho de banda analógico es el hercio (Hz), o ciclos por segundo. Las unidades de medida más comúnmente usadas son el kilohercio (KHz), el megahercio (MHz), y el gigahercio (GHz). Estas unidades se utilizan para describir las frecuencias de los teléfonos inalámbricos, que generalmente operan a 900 MHz o a 2,4 GHz. El ancho de banda digital, toda la información se envía como bits, independientemente del tipo de información del cual se trate. Voz, video y datos se convierten todos en corrientes de bits al ser preparados para su transmisión a través de medios digitales.
El ancho de banda en redes inalámbricas son las unidades que se usan para describir las frecuencias 802.11a y 802.11b, que operan a 5GHz y 2,4 GHz . Comunicaciones de par a par Para que los datos puedan viajar desde el origen hasta su destino, cada capa del modelo OSI en el origen debe comunicarse con su capa par en el lugar destino. Esta forma de comunicación se conoce como de par-apar. Durante este proceso, los protocolos de cada capa intercambian información, denominada unidades de datos de protocolo (PDU). Cada capa de comunicación en el computador origen se comunica con un PDU específico de capa, y con su capa par en el computador destino.
Pruebas de encapsulamiento de los datos
El proceso de los datos son incorporados al ordenador hasta que se trasmiten al medio se llama encapsulación. Estos datos son formateados, segmentados, identificados con el direccionamiento lógico y físico para finalmente ser enviados al medio. A cada capa del modelo osi le corresponde una PDU “Unidad de datos Posiblemente que la cantidad de los datos sea demasiada, la capa de transporte desde el origen se encarga de segmentarlos para sí ser empaquetados debidamente, esta misma capa del destino se encargara de resemblar los datos y colocarlos de forma secuencial, ya que no siempre no llegan a su destino en el orden en que han sido segmentados, así mismo acorde al protocolo que esté utilizando habrá corrección de errores. Página 45 de 183
Estos segmentos son empaquetados (paquetes o datagramas) e identificados en la capa de red con la dirección lógica o ip correspondiente al origen y destino. Ocurre lo mismo con la dirección MAC en la capa de enlace de datos formándose las tramas o frames para ser transmitidos a través de una interfaz. Finalmente las tramas son enviadas al medio desde la capa física. ENCAPSULAMIENTOS DE DATOS: DATOS DATOS SEGMENTADOS: DATOS, DATOS, DATOS ENCABEZADO IP: ENCABEZADO IP, DATOS, FCS ENCABEZADO MAC: ENCABEZADO MAC, ENCABEZADO IP, DATOS FCS. Dominios de colisión y difusión Ethernet es una tecnología conflictiva, todos los equipos de trabajo que se conectan al mismo medio físico reciben las señales enviadas por otros dispositivos. Si dos estaciones transmiten a la vez, se genera una Comunicación de Datos
colisión. Si no existieran mecanismos que detectasen y corrigiesen los errores de estas colisiones, Ethernet no podría funcionar. En el diseño de una red se debe tener especial cuidado con los llamados: Dominios de Colisión: Grupo de dispositivos conectados al mismo medio físico, de tal manera que si dos dispositivos acceden al medio al mismo tiempo, el resultado será una colisión entre las dos señales. Se produce un consumo inadecuado de recursos y de ancho de banda. Dominio de difusión (Broadcast): Grupo de dispositivos de la red envía y reciben mensajes de difusión entre ellos. Una cantidad excesiva de estos mensajes de difusión entre ellos. Una cantidad excesiva de estos mensajes de difusión provocara un bajo rendimiento en la red, una cantidad exagerada (tormenta) dará como resultado el mal funcionamiento de la red hasta tal punto de poder dejarla completamente congestionada. Los hubs tienen un único dominio de colisión, eso quiere decir que sí que si dos equipos provocan una colisión en un segmento asociado a un puerto del hubs, todos los equipos provocan una colisión en un segmento asociado a un puerto del hubs, todos los demás dispositivos aun estando en diferentes puertos se verán afectados. Si una estación envía un Broadcast, debido a que un hub también tiene un solo dominio de difusión.
CSMA / CD acceso múltiple con detección de portadora (carrier) y detección e colisiones. Varios puestos
pueden tener acceso al medio y que, para que un puesto pueda acceder a dicho medio, deberá detectar la portadora para asegurarse de que ningún otro puesto este utilizándolo. Si el medio se encuentra en uso, el puesto procederá a mantener en suspenso él envió de datos. En caso de que haya dos puestos que no detectan ningún otro tráfico, ambos trataran de trasmitir al mismo tiempo, dando como resultado una colisión. A partir esta colisión las estaciones emiten una señal de congestión para asegurase de que existe una colisión y se generas un algoritmo de espera con el que las estaciones retransmitirán aleatoriamente.
Modelo OSI
El modelo de referencia de Interconexión de Sistemas Abiertos (OSI) lanzado en 1984 fue el modelo de red descriptivo creado por ISO. Proporcionó a los fabricantes un conjunto de estándares que aseguraron una mayor compatibilidad e interoperabilidad entre los distintos tipos de tecnología de red producidos por las empresas a nivel mundial.
Ventajas del modelo OSI Reduce la complejidad Estandariza las interfaces Facilita el diseño modular Asegura la interoperabilidad de la tecnología
Página 46 de 183
Comunicación de Datos
Las capas del modelo OSI.
Página 47 de 183
Comunicación de Datos
Dispositivos de networking que se utilizan en las capas del Modelo OSI Capa Física: Corresponden los medios, (cobre, fibra, RF), los conectores, transeivers (adaptadores), repetidores y hubs. Ninguno de ellos manipula los datos transmitidos si no que solo se encargan de transportarlos y propagarlos por la red. Enlace de Datos: Se diferencia perfectamente los dominios de colisión y los dominios de difusión. Los Puentes y los Switches dividen a la red en segmentos, estos a su vez crean dominios de colisión. Una colisión producida en un segmento conectado a un switch no afectará a los demás segmentos conectados al mismo switch. Sin embargo los dispositivos de capa 2 no crean dominios de broadcast o difusión. Un switch de 12 puertos utilizados tendrá 12 dominios de colisión y 1 de difusión. Capa de Red: Los routers en la capa de red del modelo OSI separando los segmentos en dominios de colisión y difusión únicos. Estos segmentos están identificados por una dirección de red que permitirá alcanzar las estaciones finales. Los routers cumplen dos funciones básicas que son la de enrutar y conmutar los paquetes.
Modelo TCP/IP
La capa de aplicación La capa de aplicación del modelo TCP/IP maneja protocolos de alto nivel, aspectos de representación, codificación y control de diálogo. Transferencia de archivos: TFTP,FTP,NFS, Correo Electrónico: SMT, Conexión remota: Telnet, rlogin, Administración de red: SNMP*, Gestión de nombres: DNS La capa de transporte La capa de transporte proporciona servicios de transporte desde el host origen hacia el host destino. Esta capa forma una conexión lógica entre los puntos finales de la red, el host transmisor y el host receptor. Los servicios de transporte incluyen Protocolo de control de trasmisión Orientado a conexión (TCP) y Protocolo de Datagrama de Usuario no orientado a conexión (UDP). La capa de Internet El propósito de la capa de Internet es seleccionar la mejor ruta para enviar paquetes por la red. El protocolo principal que funciona en esta capa es el Protocolo de Internet (IP). El IP ejecuta las siguientes operaciones: Define un paquete y un esquema de direccionamiento. Transfiere los datos entre la capa Internet y las capas de acceso de red. Enruta los paquetes hacia los hosts remotos. El Protocolo de mensajes de control en Internet (ICMP) suministra capacidades de control y envío de mensajes. El Protocolo de resolución de direcciones (ARP) determina la MAC, para las direcciones IP conocidas. El Protocolo de resolución inversa de direcciones (RARP) determina IP cuando se conoce la dirección MAC. • • • • • •
•
•
La capa de acceso de red
Capa de host a red maneja todos los aspectos que un paquete IP requiere para efectuar un enlace físico real con los medios de la red. Tecnología LAN y WAN, la capas física y de enlace de datos del modelo OSI. Las funciones de la capa de acceso de red incluyen la asignación de direcciones IP a las direcciones físicas y el encapsulamiento de los paquetes IP en tramas .
Comunicación de Datos
Dispositivos de networking Página 48 de 183
Los equipos que se conectan de forma directa a un segmento de red; estos dispositivos se clasifican en dos grupos.
1.- Dispositivos de usuario final (Host). Los dispositivos de usuario final incluyen los computadores, impresoras, escáneres, y demás dispositivos que brindan servicios directamente al usuario.
2.- Dispositivos de red son todos aquellos que conectan entre sí a los dispositivos de usuario final, posibilitando su intercomunicación .
Topología de red La topología de red define como la estructura física y lógica que forma una red. a).- Topología física, que es la disposición real de los cables o medios. b).- Topología lógica, que define la forma en que los hosts acceden a los medios para enviar datos. Los dos tipos más comunes de topologías lógicas son: Broadcast Transmisión de tokens. • •
Topologías Físicas
Topologías Lógicas
Comunicación de Datos
Protocolos de red Página 49 de 183
Un protocolo es un conjunto de reglas y convenciones que rigen un aspecto particular de cómo los dispositivos de una red se comunican entre sí. Los protocolos determinan el formato, la sincronización, la secuenciación y el control de errores en la comunicación de datos. Los protocolos controlan todos los aspectos de la comunicación de datos, que incluye Estas normas de red son creadas y administradas por una serie de diferentes organizaciones y comités. Entre ellos se incluyen el Instituto de Ingeniería Eléctrica y Electrónica (IEEE), el Instituto Nacional Americano de Normalización (ANSI), la Asociación de la Industria de las Telecomunicaciones (TIA), la Asociación de Industrias Electrónicas (EIA) y la Unión Internacional de Telecomunicaciones (UIT), antiguamente conocida como el Comité Consultivo Internacional Telegráfico y Telefónico (CCITT).
Medios de Ethernet y requisitos de conector
Antes de seleccionar la implementación de Ethernet, tenga en cuenta los requisitos de los conectores y medios para cada una de ellas. También tenga en cuenta el nivel de rendimiento que necesita la red.
DIRECCIONAMIENTO IP Una dirección IP es una secuencia de 1s y 0s de 32 bits, se representa como 4 números decimales separados por puntos. En un DIRECCIONAMIENTO JERÁRQUICO la dirección IP consta de 2 partes, la primera identifica la dirección de la red donde se conecta el sistema y la segunda identifica el sistema en particular de esa red (el hosts, la máquina particular) y contiene diferentes niveles. Las direcciones ip se dividen en clases: CLASE A B C D E
INICIO DECIMAL 1 - 126 128 - 191 192 - 223 224 - 239 240 - 254
INICIO BIN 0 10 110 1110
RANGO BINARIO
OCTETOS
MASCARA DE SUBRED 00000000-01111111 R.H.H.H 255.0.0.0 10000000-10111111 R.R.H.H 255.255.0.0 11000000-11011111 R.R.R.H 255.255.255.0 11100000-11101111 USO MULTICAST RESERVADO PARA INVESTIGACIÓN IETF
Página 50 de 183
Comunicación de Datos
LAS SUBREDES se realizan cuando se dividen en redes más pequeñas, para su mayor aprovechamiento y seguridad en bajo nivel en la LAN.
DADA LA DIRECCIÓN IP 192.10.8.0 Y SE DESEAN CREAR 6 SUBREDES UTILIZABLES, DETERMINA: A. determinar la clase, los octetos de red y de host, ya que solo se trabajará con los octetos de host. B. determina el número de bits prestados que se requieren, con la fórmula: 2n-2>subredes requeridas. (de izquierda a derecha en la parte de host). C. determinar: mascara de subred por default y mascara de subred especifica (a los bits prestados asignarle 1 binario y a los que quedan para host asignarle 0 binario; después convertir a decimal) D. realiza la tabla mostrando: número de subred, bits por subred, num de hosts por subred, direcciones de subred, números asignados a los hosts. (determina el rango restando a 256 el resultado del ultimo octeto, decimal del paso c) E. gráfica, indicando los números de: la red, subredes y hosts A. 192.10.8.0 CLASE C
R.R.R.H
23-2>28 SE PEDIRÁN PRESTADOS 3 BITS: 3 2 =8 SE PUEDEN CREAR 8 SUBREDES 23-2=6 DE LAS CUALES 6 SERÁN UTILIZABLES. POR LO TANTO QUEDAN 5 BITS PARA HOST 25=32 SE PUEDEN CONECTAR 32 HOSTS A CADA SUBRED
B. 2n-2>28
23-2=30
DE LOS CUALES 30 HOST SERÁN UTILIZABLES *Se restan dos porque la 1 se usa para Red y la ultima para Broadcast
C. MASCARA DE SUBRED POR DEFAULT:
MASCARA DE SUBRED ESPECÍFICA: RED
192.10.8. 111 00000 SUBRED HOST
= 255.255.255.0 = 192.10.8.224
D. RANGO = 256-224 = 32 NUM. BITS DE SUBRED SUBRED 0 000 1 001
NUM. HOST DECIMAL 0 - 31 32 - 63
DIRECCIÓN DE SUBREDES 192.10.8.0 192.10.8.32
2
010
64 - 95
192.10.8.64
3
011
96 - 127
192.10.8.96
4
100
128 - 159
192.10.8.128
5
101
160 - 191
192.10.8.160
6
110
192 - 223
192.10.8.192
7
111
224 - 255
192.10.8.224
NUM. DE HOSTS No se usa .33 .63 192.10.8 .65 - .95 192.10.8 .97 - . 127 192.10.8 .129 - . 159 192.10.8 .161 - . 191 192.10.8 .193 - . 223 No se usa 192.10.8
Página 51 de 183
Comunicación de Datos
Página 52 de 183
. 192.10.8.192 192.10.8.160 192.10.8.96 192.10.8.128 192.10.8.64 192.10.8.32
192.10.8.0
Página 53 de 183
192.10.8.192 192.10.8.160 192.10.8.96 192.10.8.128 192.10.8.64 192.10.8.32
Página 54 de 183
Página 55 de 183
Redes de Computo
ENRUTAMIENTO DETERMINACIÓN DE RUTAS IP Para que un dispositivo de 3 capas pueda determinar la ruta hacia un destino debe tener conocimiento de cómo hacerlo. El aprendizaje de las rutas puede ser mediante enrutamiento estático o dinámico. LAS RUTAS DINÁMICAS son aprendidas automáticamente por el router a través de la información enviada por otros routers, una vez que el administrador ha configurado un protocolo de enrutamiento que permite el aprendizaje dinámico de rutas. Para poder enlutar paquetes de información un router debe conocer lo siguiente: DIRECCIÓN DE DESTINO: dirección a donde han de ser enviados los paquetes. FUENTES DE INFORMACIÓN: otros routers de donde el router aprende las rutas hasta los destinos especificados. DESCUBRIR LAS POSIBLES RUTAS HACIA EL DESTINO: rutas iniciales posibles hasta los destinos deseados. SELECCIONAR LAS MEJORES RUTAS: determinar cuál es la mejor ruta hasta el destino especificado. MANTENER LAS TABLAS DE ENRUTAMIENTO ACTUALIZADAS: mantener conocimiento actualizado de las rutas destino. • •
•
•
•
La información de enrutamiento que el router aprende desde sus fuentes se coloca en su propia tabla de enrutamiento. El router se vale se está tabla para determinar los puertos de salida que debe utilizar para retransmitir un paquete hasta su destino. La tabla de enrutamiento es la fuente principal de información del router acerca de las redes. Si la red de destino está conectada directamente, el router debe aprender y calcular la ruta más óptima a usar para reenviar paquetes. Si las redes de destino está conectada directamente, el router ya sabrá el puerto que debe usar para reenviar paquetes. Si las redes de destino no están conectadas directamente, el router debe aprender y calcular la ruta más óptima a usar para reenviar paquetes a dichas redes. La tabla de enrutamiento se construye mediante uno de estos dos métodos o ambos: Manualmente, por el administrador de la red. A través de procesos dinámicos que se ejecutan en la red. • •
LAS RUTAS ESTÁTICAS son aprendidas por el router a través del administrador, que establece dicha ruta manualmente, quien también debe actualizar cuando tenga lugar un cambio de topología. Las rutas estáticas se definen administrativamente y establecen rutas específicas que han de surgir los paquetes para pasar de un puerto destino. Se establece un control preciso del enrutamiento según los parámetros del administrador. Las rutas estáticas por default especifican un gateway (puerta de enlace) de último recurso, a la que el router debe enviar un paquete destinado a una red que no aparece en su tabla de enrutamiento, es decir que desconoce. Las rutas estáticas se utilizan habitualmente desde una red hasta una red de conexión única, ya que existen más que una ruta de entrada y salida de una red de conexión única, evitando de este modo la sobrecarga de tráfico que genera un protocolo de enrutamiento. La ruta estática se configura para seguir conectividad con un enlace de datos que no está directamente conectado al router. Para conectividad de extremo a extremo es necesario configurar la ruta en ambas direcciones. El comando ip route configura una ruta estática, los parámetros del comando definen la ruta estática. Las entradas creadas en la tabla usando este procedimiento permanecerán en dichas tablas mientras la ruta siga activa. Con la opción permanent, la ruta seguirá en la tabla aunque la ruta en cuestión haya dejado de estar activa. La sintaxis de configuración de una ruta estática es la siguiente: Router (config) # ip router router {red} {mascara} {dirección ip / interfaz} {distancia} {permanent} Redes de Computo
Red: es la red o subred de destino. Mascara: es la máscara de subred. Página 56 de 183
Interfaz: es el nombre de la interfaz que debe usarse para llegar a la red de destino. Distancia: es un parámetro opcional, que se define la distancia administrativa. Permanent: un parámetro opcional que especifica que la ruta no debe se eliminada, aunque la interfaz deje de estar activa.
RUTAS ESTÁTICA POR DEFECTO
Una ruta estática, predeterminada o de último recurso es un tipo especial de ruta estática que se utiliza cuando no se conoce una ruta hasta un destino determinado, o cuando no es posible almacenar en la tabla de enrutamiento la información relativa a todas las rutas posibles. La sintaxis de configuración de una ruta estática por defecto es la siguiente: Router (config) # ip route 0.0.0.0 0.0.0.0 {dirección ip / interfaz} {distancia}
PROTOCOLOS
Los protocolos describen el conjunto de normas y convenciones que rigen la forma en que los dispositivos de una red intercambian información. Algunos de los protocolos más usados, que operan en la capa de Internet, son: *IP: proporciona un enrutamiento de paquetes no orientados a conexión de máximo esfuerzo, no por el contenido de los paquetes, sino, busca una ruta hacia el destino. * ICMP Protocolo de mensajes de control de Internet: suministra capacidades de control y envío de mensajes. Herramientas tales como PING y TRACERT lo utilizan. * ARP Protocolo de resolución de direcciones: determina la dirección de la capa de enlace de datos, la dirección MAC, para direcciones IP conocidas. * RARP Protocolo de resolución inversa de direcciones: determina las direcciones IP cuando se conoce la dirección MAC. UN PROTOCOLO ENRUTADO lleva una completa información de capa3, por ejemplo: TCP/IP, IPX, APPLE TALK y NetBEUI. UN PROTOCOLO DE ENRUTAMIENTO es utilizado por los routers para mantener tablas de enrutamiento y así poder elegir la mejor ruta hacia el destino, por ejemplo: RIP, IGRP, EIGRP y OSPF. Dentro de los protocolos de enrutamiento encontramos dos grandes núcleos: PROTOCOLOS DE GATEWAY INTERIOR (IGP): Se usan para intercambiar información de enrutamiento dentro de un sistema autónomo (RIP, IGRP). PROTOCOLO DE GATEWAY EXTERIOR (EGP): Se usan para intercambiar información de enrutamiento entre sistemas autónomos. •
•
UN SISTEMA AUTÓNOMO (AS) es un conjunto de redes bajo un dominio administrativo común, se utilizan si el sistema utiliza algún BGP o red pública.
LA DISTANCIA ADMINISTRATIVA permite que un protocolo tenga mayor prioridad sobre otro ya que son multiprotocolos.
CLASES DE PROTOCOLOS DE ENRUTAMIENTO
* Vector distancia: determina la dirección y la distancia a cualquier red (RIP, EIGRP) * Estado de enlace: tiene una idea exacta de la topología de red y no efectúa actualizaciones a menos que ocurra un cambio (OSPF y EIS-EIS) * Híbrido: combina aspectos de los dos anteriores (EIGRP). Redes de Computo
ENRUTAMIENTO POR VECTOR DISTANCIA
Pasa por copias periódicas de la tabla de enrutamiento de un router a otro acumulando vectores de distancia (donde el vector es una dirección y la distancia es una medida de longitud). Cada protocolo utiliza un algoritmo distinto para determinar la ruta óptima, este genera un número llamado “métrica de ruta”. Página 57 de 183
Las métricas más comunes son: Numero de saltos: numero de router por los que pasaron el paquete. Tic tac: el trazo de un enlace de datos usando pulsos de reloj (IBM). Coste: valor arbitrario basado en el ancho de banda. Ancho de banda: capacidad de datos de un enlace. Retraso: tiempo en mover un paquete de un origen a un destino. Carga: cantidad de actividad existente de un recurso de red. Fiabilidad: valor de errores de bit de cada enlace. MTU: unidad máxima de transmisión.
LOS BUCLES DE ENRUTAMIENTO se generan si no existe una convergencia rápida y precisa entre los router. La solución a los bucles de enrutamiento son: Métricas máximas: solamente permiten la repartición de enrutamiento hasta que la métrica exceda el valor máximo permitido (RIP 16 saltos). Horizonte dividido (slip horizont) el router conoce otra ruta viable al destino y no devolverá información por la interfaz donde la recibió. Envenenamiento: se asegura que todos los router del segmento hayan recibido información acerca de la ruta envenenada, es una operación complementaria del horizonte dividido. Temporizadores: los router no aplican ningún cambio que pudieran afectar las rutas durante un periodo de tiempo determinado. •
•
•
•
Los protocolos por vector distancia inundan la red con broadcast de actualizaciones de enrutamiento. LOS PROTOCOLOS DE ENRUTAMIENTO POR ESTADO ENLACE construyen tablas de enrutamiento basándose en una base de datos de la topología. EL ALGORITMO SPF (primero la ruta libre más corta) usa la base de datos para construir la tabla de enrutamiento. El enrutamiento por estado enlace, utiliza PAQUETES DE ESTADO ENLACE (LSP), una base de datos topológica, el algoritmo SPF, el árbol SPF resultantes y una tabla de enrutamiento con las rutas y puertos de cada red. Existe una visión independiente de la red por cada router por lo que se producen muy pocos errores. No tienen límites de saltos, la métrica se basa en coste, a partir del algoritmo Dijkstra y se basa en la velocidad del enlace. Los protocolos de enrutamiento estado-enlace son protocolos de enrutamiento de gateway interior, que se utilizan dentro de un mismo sistema autónomo y se puede dividir en sectores más pequeños que se llaman áreas, el área principal o backbone de un sistema autónomo es el area0. Los protocolos estado-enlace son más rápidos y escalables que los de vector distancia por: Los protocolos de estado enlace solo envían actualizaciones cuando hay cambios de topología. Las actualizaciones periódicas son menos frecuentes que los protocolos vector distancia. Puede manejar redes segmentadas en distintas áreas jerárquicamente organizadas, limitando el alcance de los cambios de rutas. Las redes de este tipo soportan direccionamiento sin clase. Las redes de este tipo soportan resumen de ruta. • • •
• •
Página 58 de 183
Redes de Computo
PROTOCOLO VECTORDISTANCIA ESTADO DE ENLACE RESUMEN AUTOMÁTICO DE RUTA RESUMEN MANUAL DE RUTA SOPORTE VLSM PROPIETARIO DE CISCO CONVERGENCIA DISTANCIA ADVA. TIEMPO DE ACTUALIZACIÓN MÉTRICA
RIP X
IGRP X
EIGRP X
IS-IS
OSPF
X
X
X
X
X
X
X
X
X
X
X
X X
X
X
X LENTO
LENTO
MUY RÁPIDO
120
100
90
MUY RÁPIDO 115
MUY RÁPIDO 110
30
90 COSTE
COSTE
SALTOS
COMPUESTA COMPUESTA
CONFIGURACIÓN INICIAL DEL ROUTER
Un router es un ordenador construido para desempeñar funciones específicas de capa 3, proporciona hardware y software necesarios para encaminar paquetes entre redes, permite interconectar subreds LAN y establecer conexiones de área amplia entre las subredes. Puede trabajar exclusivamente con redes LAN, exclusivamente con reds WAN o estar en la frontera entre una LAN y una WAN al mismo tiempo. Las dos tareas principales de los routers son: CONMUTAR los paquetes desde una interfaz perteneciente a una red hacia otra interfaz de una red diferente y ENRUTAR o encontrar el mejor camino hacia la red destino •
•
El IOS es el sistema operativo de internetworking que utlizán los routers CISCO.
LOS COMPONENTES PRINCIPALES DEL HARDWARE DE UN ROUTER son:
CPU: Unidad central de procesamiento, inicializa el sistema, realiza funciones de enrutamiento y control de la interfaz de la red. RAM: Memoria de acceso aleatorio, para la información de la tablas de enrutamiento, el cache de conmutación rápida, configuración actual y colas de paquetes. MEMORIA FLASH: Almacena una imagen completa del software IOS de cisco. NVRAM: Memoria de acceso aleatorio no volátil, se utiliza para la configuración de inicio y retiene sus contenidos al ser apagada la unidad. BUSES: Bus de sistema se utiliza para la comunicación entre la CPU y las interfaces y/o ranuras de expansión, transfiere los paquetes hacia y desde las interfaces. ROM: Memoria de solo lectura que se utiliza para almacenar de forma permanente el código de diagnóstico de inicio, diagnostica el hardware y carga el software IOS de cisco desde la memoria flash a la RAM. INTERFACES: Son las conexiones de los routers con el exterior. Los tres tipos son: LAN: De tipo ethernet o token ring, tienen chips controladores para conectar el sistema a los medios. •
•
• •
•
•
•
Redes de Computo
WAN: Incluyen la CSU o unidad de servicio de canal integrada, la RDSI y la serial. Página 59 de 183
ADMINISTRACIÓN: Los puertos de consola y aux son puertos seriales que se utilizan principalmente para la configuración inicial del router, no son puertos de networking, realizan sesiones terminales. FUENTE DE ALIMENTACIÓN: Brinda la energía necesaria para operar los LOS PROTOCOLOS Y ESTÁNDARES DE LA CAPA DE componentes internos. •
ENLACE DE DATOS DE WAN son: HDLC control de enlace de datos de alto nivel LOS PROTOCOLOS Y FRAME ESTÁNDARES RELAY DE LA CAPA FISICA DE protocolo WAN son:punto a punto PPP EIA / TIA 232control de enlace de datos síncrono SDLC EIA / SLIP TIA 449 protocolo de internet de enlace serial V.24 X.25 V.35 ATM X.21 LAPB G.703 LAPD EIA 530 LAPF RDSI T1,T3, E1 Y E3 xDSL SONET •
•
•
• •
•
•
• •
•
•
•
•
•
•
•
•
• • • •
UN ROUTER O SWITCH PUEDEN SER CONFIGURADOS
DESDE DISTINTAS UBICACIONES: En la instalación inicial, el administrador de red configura desde una terminal de consola, conectado por medio del puerto de consola. Con una conexión local por MODEM con el puerto auxiliar del dispositivo, para dispositivos remotos. Dispositivos con direcciones IP establecidas para conexiones TELNET. Descarga de un archivo de configuración de un servidor TFTP. Configurar un dispositivo por medio del navegador HTTP (Hypertext Transfer Protocol). •
• • • •
Al iniciar por primera vez el router CISCO, no tiene configuración inicial, por lo que el software pide detalles mediante el SETUP.
LAS RUTINAS y PUESTA EN MARCHA DEL ROUTER son las siguientes:
1. Asegurarse que el router cuenta con hardware de verificado (POST). 2. Localiza y carga el IOS de CISCO como sistema operativo. 3. Localizar y aplicar las instrucciones de configuración relativas a los atributos específicos del router, funciones de protocolos y direcciones de interfaz.
MODOS DE TRABAJO: MODO EXEC usuario EXEC privilegiado Configuración global Configuración de interfaces Configuración de router
SÍMBOLO Router> Router# Router(config)# Router(config-if)# Router(config-router)#
ACCESO Enable Configure terminal Interface [tipo y num] Router [protocolo]
SALIDA Ctl + z Ctl + z Ctl + z Ctl + z
exit exit exit exit
disable
Redes de Computo
EJEMPLO DE CONFIGURACIÓN Página 60 de 183
Las configuraciones se almacenan en la RAM, que se perderá al apagar el router, por lo que es necesario hacer una copia. Se pueden utilizar los siguientes comandos para realizar copias del archivo de configuración: #copy running-config startup-config #copy startup-config running-config #copy running-config tftp O bien se puede eliminar con el comando # erase startup-config LOS COMANDOS SHOW nos permiten el rápido diagnóstico de fallos, algunos se ejecutan en el modo usuario y otros en el modo privilegiado. show interfaces show controllers serial show clock show hosts show users show sesions show history show flash show version show arp • • • • • • • • • •
Redes de Computo • • •
show protocols show startup-config show running-conig Página 61 de 183
Existe una convención para asignar NOMBRES AL IOS DE CISCO, por ejemplo: c4500-js-1_121-5.bin donde: c4500 Plataforma de hardware js Conjunto de funciones especiales
Formato de archivo 121-5 Número de versión LA CONFIGURACIÓN DE ENRUTAMIENTO ESTÁTICO se realiza a través del comando de configuración global de OSI ip route, este utiliza varios parámetros , como: dirección de red, mascara de subred asociada e información del destino, que puede adoptar una de las siguientes formas: Dirección ip específica del siguiente router de la ruta. Dirección de red de otra ruta de la tabla de enrutamiento a la que deben reenviarse los paquetes. Interfaz conectada directamente en la que se encuentra la red destino. 1
• • •
EL USO DE RUTAS ESTÁTICAS SE ACONSEJA en los siguientes casos:
Circuito de datos poco fiable y deja de funcionar constantemente. Red donde existe una sola conexión con un solo ISP. Cuando se puede acceder a la red a través de una conexión de acceso telefónico. Cuando un cliente o cualquier otra red vinculada no desean intercambiar información de enrutamiento dinámico. LA CONFIGURACIÓN DE RUTAS ESTÁTICAS POR DEFECTO se utilizan cuando el destino al que se pretende llegar son múltiples redes o no se conocen, la sintaxis es la siguiente: Router(config)# ip route 0.0.0.0 0.0.0.0 [ip del primer salto/interfaz de salida] [distancia administrativa] LOS PROTOCOLOS DE CONFIGURACIÓN DE ENRUTAMIENTO DINÁMICO son algoritmos que permiten que los routers publiquen, o anuncien, la existencia de la información de ruta de red ip necesaria para crear la tabla de enrutamiento, determinan el criterio de selección de ruta que sigue el paquete cuando se le presenta al router, esperando una decisión de conmutar, sus objetivos consisten en proporcionar al usuario la posibilidad de seleccionar la ruta idónea en la red, reaccionar con rapidez a los cambios de la misma y realizar dichas tareas de la manera más sencilla y con la menor sobrecarga del router posible. Para habilitar un protocolo de enrutamiento dinámico, se realizan las siguientes tareas: Seleccionar un protocolo de enrutamiento. Seleccionar las redes ip a enrutar. • • • •
• •
El comando ROUTER es el encargado de iniciar el proceso de enrutamiento, posteriormente se asocian las redes con el comando NETWORK. Router(config)# router [protocolo] [id o sistema autónomo] Router(config-router) # network [num. de red directamente conectada] EL PROTOCOLO DE INFORMACIÓN DE ENRUTAMIENTO (RIP) es uno de los protocolos de enrutamiento más antiguos utilizado por dispositivos basados en IP. Sus principales características son: Es un protocolo basado en vector distancia. Utiliza la cuenta de saltos del router como métrica El máximo es 15 saltos, si excede estos saltos se etiqueta como inalcanzable. Difunde actualizaciones de enrutamiento por medio de la tabla de enrutamiento completa cada 30 segundos, por omisión. • • • •
Redes de Computo
•
•
Puede realizar equilibrado de carga en un máximo de seis rutas de igual coste (la especificación por omisión es de 4). RIP v1 requiere que se use una sola mascara de red de longitud fija para cada número de red de clase principal que es anunciado y no contempla actualizaciones desencadenadas.
Página 62 de 183
•
•
RIP v2 permiten máscaras de subred de longitud variable (VLSM) en la interconexión, permite actualizaciones desencadenadas, el número máximo de rutas paralelas permitidas la tabla de enrutamiento faculta a RIP para llevar a cabo el equilibrio de carga. En RIP la información de enrutamiento se propaga de un router a los vecinos por medio de una difusión de IP usando el protocolo UDP y el puerto 520 .
CONFIGURACIÓN RIP
Router(config) # router rip Router(config-router)# network 192.168.1.0 Router(config-router)# network 200.200.21.0 Router(config-router)# vesion 2 Router(config-router)# maximum-paths 6 LA REDISTRIBUCIÓN ESTÁTICA EN RIP se utiliza para que todos los routers contenidos dentro del mismo sistema autónomo tengan conocimiento de la existencia de esas rutas. Esto se hacer con el comando REDISTRIBUTE STATIC.
EL PROTOCOLO DE ENRUTAMIENTO DE GATEWAY INTERIOR (IGRP ) es un protocolo vectordistancia, desarrollado por cisco systems a mediados de los 80´s, corrige algunos defectos de RIP y proporciona un mejor soporte para grandes redes con enlaces de diferentes anchos de banda. IGRP calcula su métrica en base a diferentes atributos de ruta de red, como: retraso de red, ancho de banda y retraso basados en velocidad y capacidad, relativas a la interfaz. Los atributos de carga y fiabilidad se calculan según el rendimiento de la interfaz. Utiliza publicaciones IP para comunicar información de enrutamiento con vecinos, pero no depende de UDP o TCP. Funciona en forma similar a UDP. Soporta múltiples rutas entre origen y destino, con conmutación automática pueden transportar 2 líneas una misma trama de tráfico de forma cooperativa. El equilibrio de carga de coste desigual permite distribuir el tráfico hasta entre 6 rutas de distinto coste, para mayor rendimiento y fiabilidad. •
• •
•
LAS MEJORAS SOBRE RIP son: • • •
ESCALABILIDAD MEJORADA: Admite una red con un número máxima de 255 saltos de router. MÉTRICA SOFISTICADA: Distingue entre diferentes tipos de medios de conexión y costes asociados. SOPORTE DE MÚLTIPLES RUTAS: Ofrece una convergencia de funcionalidad, enviando información sobre cambios en la red a medida que está disponible.
LAS MÉTRICAS IGRP son compuestas, la más baja se considera la óptima, entre estas encontramos: • • •
• •
ANCHO DE BANDA : valor mínimo de ancho de banda en la ruta. RETRASO: retraso de interfaz acumulado a lo largo de la ruta. FIABILIDAD: viabilidad entre el origen y el destino, determinado por el intercambio de mensajes de actividad. CARGA: carga de un enlace entre el origen y el destino, medido en bps. MTU: valor de la unidad máxima de transmisión de la ruta. Redes de Computo
La fiabilidad y la carga no tienen unidades propias y pueden tomar valores entre 0 y 255. El ancho de banda puede tomar valores que reflejan velocidades desde 1200 hasta 106 bps. El retaso puede ser cualquier valor entre 1y 2*1023. Por defecto utiliza el ancho de banda y retraso como métrica preestablecida . CONFIGURACIÓN IGRP Router(config) # router igrp 100 Router(config-router)# network 192.168.1.0 Router(config-router)# network 200.200.21.0 Página 63 de 183
Router(config-router)# variance 2 Router(config-router)# traffic-share? CONVERGENCIA es la capacidad de los routers de poseer la misma información de enrutamiento actualizada. IGRP y EIGRP se redistribuyen automáticamente si ambos tienen el mismo número de sistema autónomo. PROCESO DE RECUPERACIÓN DE CONTRASEÑA PARA ROUTERS CISCO SERIES 2000,2500,3000,4000 con CPU motorola 680x0 y 7000 ejecutando IOS versión 10.0 o posterior. PASO 1: Conecte una terminal o PC con software de emulación de terminal al puerto de consola del router. Acceda físicamente al router, apague y encienda el router. PASO 2: Pulse la tecla de interrupción del terminal durante los primeros 60 segundos del encendido del router. En el caso de hyperterminal la combinación del control control+pausa dará la señal de interrupción en el router. Aparecerá el símbolo rommon> sin nombre del router. Si no aparece el símbolo, la terminal no está enviando la señal de interrupción correcta. PASO 3: Introduzca el comando orden de registro 0x2142 para arrancar desde flash e ignorar NVRAM. PASO 4: En el símbolo rommon> introduzca el comando i (initialize) para reiniciar el router, ignorando la configuración grabada en la NVRAM. PASO 5: Siga los pasos de arranque normales. Aparecerá el símbolo router>. PASO 6: La memoria RAM estará vacía, copie el contenido de la NVRAM a la RAM, para recuperar la configuración y contraseña no deseada. El nombre del router volverá a ser el original. PASO 7: Cambie la contraseña no deseada por una conocida. PASO 8: Guarde su nueva contraseña en la NVRAM y si fuera necesario levante administrativamente las interfaces con el comando no shutdown. PASO 9: Introduzca desde el modo global el comando config-register 0x2102. PASO 10: Introduzca el comando reload en el símbolo del nivel exec privilegiado, responda yes al guardado de registro de configuración y confirme el reinicio. El router arrancará con la configuración y la contraseña conocida. PARA ROUTERS CISCO SERIES 1700,2600,4500,7200 y 7500
Siga los pasos anteriores, el único cambio es en el PASO 4, donde se introducirá el comando reset, en lugar del comando i. LOS COMANDOS BOOT SYSTEM especifican el nombre y la ubicación de la imagen IOS que se debe cargar: COMANDO Router(config)#boot system flash [nombre_archivo] Router(config)#boot system rom Router(config)#boot system tftp [nombre_archivo] [dirección_servidor]
PARA ARRANCAR DESDE… IOS de memoria flash IOS de memoria rom IOS de memoria tftp
Si no existen comandos de boot system en la configuración, por omisión el router carga el primer archivo encontrado en la memoria flash y la ejecuta. PARA SWITCHES SERIES 2900 / 2950
Redes de Computo
PASO 1: Apague el switch, vuelva a encenderlo mientras presiona el botón “MODE” en la parte delantera del switch, deje de presionarlo una vez que se apague el led “ STAT”. PASO 2: Para iniciar el sistema de archivos y terminar de cargar el sistema operativo, introduzca los flash_init comandos: load_helper dir flash: PASO 3: Escriba rename flash:config.txt flash:config.old para cambiar el nombre del archive de configuración. Este archivo contiene la definición de contraseña PASO 4: Escriba boot para arrancar el sistema, responda NO a la continuación de diálogos de configuración. PASO 5:En el indicador de exec privilegiado escriba rename flash config.old flash:config.txt para cambiar el nombre del archivo de configuración al nombre original. PASO 6: Copie el archivo de configuración a la memoria , cambie la contraseña anterior (desconocida) con Página 64 de 183
los siguientes comandos: switch # configure Terminal switch(config)# no enable secret switch(config)# enable password [password Nuevo] switch(config)# enable secret [password Nuevo] switch(config)# line console 0 switch(config-line)# password [password Nuevo] switch(config-line)# exit switch(config)# line vty 0 15 switch(config-line)# password [password Nuevo] switch(config-line)# exit switch(config)# exit switch(config)# copy running-config startup-config
LAS LISTAS DE CONTROL DE ACCESO sirven para identificar el tráfico, después se filtra y se consigue
una mejor administración del tráfico global de la red. Una lista de control de acceso IP es un listado secuencial de condiciones de permiso o prohibición que se aplican a las direcciones IP o a protocolos IP de capa superior. Identifican el tráfico que ha de ser filtrado en su tránsito por el router, pero no pueden filtrar el tráfico originado por el propio router. Se aplican a los puertos de líneas de Terminal virtual para permitir y denegar tráfico TELNET entrante o saliente. Establecen un control más fino o a la hora de separar el tráfico en diferentes colas de prioridades y personalizadas. Identifica el tráfico interesante, para activar las llamadas del enrutamiento por llamada telefónica bajo demanda DDR. •
•
•
•
Para las listas salientes: Un permit significa enviar el buffer de salida. Un deny descarta un paquete. Para las listas entrantes: Un permit significa continuar el procesamiento del paquete tras su recepción en una interfaz. Un deny significa descartar el paquete. Las instrucciones de una ACL operan en orden lógico secuencial, se evalúan los paquetes de principio a fin, en lugar de salir por alguna interfaz, todos los paquetes que no satisfacen las instrucciones de las ACL son descartados y devuelve en paquete especial notificando al remitente que el destino ha sido inalcanzable.
Redes de Computo
TIPOS DE ACL (Access Control List) LAS LISTAS DE ACCESO ESTÁNDAR comprueban las direcciones de origen de paquetes que solicitan enrutamiento, el resultado es el permiso o negación de la salida del paquete por parte del protocolo, basándose en la dirección IP de la red-subred-host de origen. Las listas de acceso IP estándar verifican sólo la dirección de origen en la cabecera del paquete (capa 3). LAS LISTA DE ACCESO EXTENDIDAS comprueban tanto la dirección origen como la del destino de cada paquete, verifican los protocolos especificados, números de puerto y otros parámetros. Las listas de acceso IP extendidas pueden verificar muchos elementos, incluyendo opciones de la cabecera del segmento (capa 4), como números de puerto TCP y UDP, direcciones IP de origen y destino; así como protocolos específicos.
LISTA DE ACCESO NUMERADAS
A las ACL se les asigna un número dentro de los siguientes rangos de lista de acceso numeradas:
ACL
RANGO
RANGO EXTENDIDO Página 65 de 183
IP estándar IP extendida Prot, type code DECnet XNS estándar XNS extendida Apple talk IPX estándar IPX extendida Filtro SAP
1-99 100-199 200-299 300-399 400-499 500-599 600-699 800-899 900-999 10001099
1300-1999 2000-2699
CONFIGURACIÓN DE ACL ESTÁNDAR Router# configure terminal Router(config)# access-list [1-99] [permit/deny][dirección origen] [ mascara comodín] Router(config)# interface [ tipo y no. de interfaz] Router(config-if)# ip access-group [no. de ACL] [in/out] CONFIGURACIÓN DE ACL EXTENDIDA Router# configure terminal Router(config)# access-list [1-99] [permit/deny] [protocolo] [dirección origen] [ mascara comodín] [dirección destino] [máscara comodín] [puerto] [established] [log] Router(config)# interface [ tipo y no. de interfaz] Router(config-if)# ip access-group [no. de ACL] [in/out] APLICACIÓN DE UNA ACL A LINEA TELNET Router# configure terminal Router(config)# line vty 0 4 Router(config-line)# access-class [no. de ACL] [ in / out ] Para eliminar ACLs, se antepone la palabra no a las instrucciones principales, de esta forma: Router(config)# no access-list [1-99] [permit/deny][dirección origen] [ mascara comodín] Router(config-if)#no ip access-group [no. de ACL] [in/out] Redes de Computo
De igual forma es posible la CONFIGURACIÓN DE LISTA DE ACCESO NOMBRADAS, en vez de asignarle un número, se le asigna un nombre: Router# configure terminal Router(config)# ip access-list [Standard / extended] [nombre] Router(config [std/ext] nac1)# [permit/deny] [condiciones de prueba] Router(config [std/ext] nac1)# no [permit/deny] [condiciones de prueba] Router(config)# interface de asociación de ACL Router(config-if)# ip access-group [nombre] [in/out] Para VERIFICACIÓN DE ACLs se pueden utilizar los siguientes comandos: Show ip interface [tipo de interfaz] [no. de interfaz] Show access-list Show access-lists •
Una lista de acceso puede ser aplicada a múltiples interfaces
•
Solo puede haber una ALC por protocolo, por dirección y por interfaz. Página 66 de 183
•
•
A menos que termine una ACL con una condición de permiso implícito en toso, se denegará todo el tráfico que no cumpla ninguna de las condiciones establecidas en la lista ya que existe un deny (permisos de servidor de Transact-SQL) implícito al final de cada lista. Las ACLs extendidas deben colocarse normalmente lo más cerca posible del origen del tráfico que será denegado, mientras que las estándar lo más cerca posible del destino.
Página 67 de 183
Representación de sistemas con UML, uso y ciclo iterativo e incremental
4.- ANALISIS Y DISEÑO DE SISTEMAS DE INFORMACION Como sistema se define a un conjunto de elementos interrelacionados con un fin común. Todo sistema requiere información y ésta va a servir para ser procesada y evaluada para tomar una o más decisiones sobre el sistema.
El término Sistema de Información tiene dos definiciones importantes a) Es una disposición de componentes integrados entre sí cuyo objetivo es satisfacer las necesidades de información en una organización b) Es una disposición de personas, actividades, datos, redes y tecnología integrados entre sí con el propósito de apoyar y mejorar las operaciones y la toma de decisiones. Análisis se le llama al proceso de identificación e interpretación de hechos. Es un diagnóstico de problemas empleando información con el fin de recomendar mejoras. Dentro de las actividades que se realizan en un análisis se encuentran: examinar, detallar, describir, descomponer, observar, descubrir, comparar, estudiar, explorar, cuestionar, diagnosticar y pronosticar
Para realizar un análisis se necesita tomar en cuenta los siguientes puntos:
1. Se debe tener una situación. 2. Se debe conocer la naturaleza del sistema. 3. Comprender al sistema en su totalidad considerando su actual funcionamiento. 4. Considerar si es factible el uso de la computadora para hacer más eficiente al sistema. 5. Marcar un objetivo a lograr.
Un análisis no es:
-El estudio de una empresa para buscar procesos ya existentes. -Determinar los cambios que deberían efectuarse. -Determinar que la mejor forma de resolver un problema es modificar a un subsistema Los analistas de sistemas nacieron con la Revolución Industrial. No trabajaban en un principio con computadoras; en vez de esto eran ingenieros industriales cuyas responsabilidades se centraban en el diseño de sistemas de producción eficaces. Un analista de sistemas, es una persona que comprende tanto las necesidades de la empresa como la tecnología informática. Los analistas de sistemas transforman las necesidades de información y de los usuarios en soluciones tecnológicas basadas en computadoras Las responsabilidades de un analista cambian de una organización a otra; a continuación se mencionan solo algunas de las actividades más comunes asignadas a los analistas de sistema
1. Análisis de sistemas: en este caso su responsabilidad es conducir estudios sobre los sistemas
relevantes dentro de la organización, para detectar hechos relevantes. Considerar que la parte más importante es reunir la información y determinar los requerimientos. En este punto, sólo el analista es responsable del análisis de la información. Representación de sistemas con UML, uso y ciclo iterativo e incremental
Página 68 de 183
2. Análisis y diseño de sistemas: el analista tiene la responsabilidad adicional de diseñar el nuevo sistema, desarrollando las especificaciones de diseño, tomando como base el análisis de los hechos previamente recolectados.
3. Análisis, diseño y programación : el analista cuando realiza esta actividad conduce la investigación, desarrolla el diseño del nuevo sistema y describe el software necesario para implantar el diseño.
LOS ELEMENTOS DE UN SISTEMA DE INFORMACIÓN SON: a) Procedimientos y prácticas habituales de trabajo. b) Información: el analista de sistemas debe adaptar la información para ser entregada, por lo que debe saber a quién se le va a entregar y de qué forma la requiere.
La información en las organizaciones tiene dos tipos de flujo:
1. Horizontal: es la información que se da al mismo nivel y es directa. 2. Vertical: esta información se puede dar de dos formas:
Los usuarios.- Los trabajadores de la información son aquellos que se ganan la vida al crear, utilizar,
procesar, administrar o intercambiar información, reciben el nombre de trabajadores de cuello blanco para distinguirlos de los llamados trabajadores de cuello azul que prestan sus servicios en la industria y el campo. Los usuarios son aquellos empleados que interactúan con el sistema como pueden ser los gerentes y empleados de una organización. Los usuarios se clasifican en cuatro categorías: 1. Usuarios primarios: son los que interactúan con el sistema. Ellos alimentan al sistema con los datos de entrada o reciben salidas por algún medio de salida. 2. Usuarios indirectos: son aquellos que se benefician de los resultados o reportes generados por los sistemas pero que no interactúan de manera directa con el hardware o software. 3. Usuarios gerente: son los usuarios que tienen responsabilidades administrativas dentro de los sistemas de aplicación 4. Usuarios directivos: estos usuarios toman ciertas responsabilidades en el desarrollo de los sistemas de información. Los sistemas de información están formados por subsistemas que incluyen hardware, software y medios de almacenamiento de información Los sistemas de información se dividen en: 1. Sistemas transaccionales 2. Sistemas para la gestión de información 3. Sistemas de información ejecutiva 4. Sistemas de apoyo a las decisiones 5. Sistemas expertos
El uso de información puede iniciarse por un sin número de razones como: -Petición de una persona. -Solicitud de empleados y usuarios del sistema. -Necesidades de información de los niveles directivos.
Representación de sistemas con UML, uso y ciclo iterativo e incremental
Antes de implantar el plan de investigación es necesario conocer:
Página 69 de 183
- FUENTES INTERNAS: son todas las personas contactos en la investigación, aquellas de nivel jerárquico de la unidad afectada, así como los usuarios operativos y administradores. - FUENTES EXTERNAS: considerar a todas las dependencias que tienen relación al sistema a investigar, sus clientes y personal que se encuentra involucrado, sin olvidar a la información que ellos generan. -TÉCNICAS DE RECOLECIÓN DE DATOS: hay que considerar que el trabajo del análisis no es una función para un solo analista; este debe crear grupos de trabajo que deben encargarse de recopilar y analizar datos para saber si existe coincidencia de anomalías en el sistema.
REPRESENTACION DE SISTEMAS CON UML
Unified Modeling Languaje – lenguaje de modelado unificado UML [UML] es un lenguaje para especificar, construir, visualizar y documentar los artefactos de un sistema de software orientado a objetos (OO). Un artefacto es una información que es utilizada o producida mediante un proceso de desarrollo de software.
UML se quiere convertir en un lenguaje estándar con el que sea posible modelar todos los componentes del proceso de desarrollo de aplicaciones una aplicación en tiempo real, que el proceso de desarrollo de una aplicación orientada a gestión, por poner un ejemplo. Las diferencias son muy marcadas y afectan a todas las fases del proceso. El método del UML recomienda utilizar los procesos que otras metodologías tienen definidos. Los Inicios A partir del año 1994, Grady Booch [Booch96](precursor de Booch '93) y Jim Rumbaugh (creador de OMT) se unen en una empresa común, Rational Software Corporation, y comienzan a unificar sus dos métodos. •
El método debía ser capaz de modelar no sólo sistemas de software sino otro tipo de sistemas reales de la empresa, siempre utilizando los conceptos de la orientación a objetos (OO). • Crear un lenguaje para modelado utilizable a la vez por máquinas y por personas. • Establecer un acoplamiento explícito de los conceptos y los artefactos ejecutables. • Manejar los problemas típicos de los sistemas complejos de misión crítica. Lo que se intenta es lograr con esto que los lenguajes que se aplican siguiendo los métodos más utilizados sigan evolucionando en conjunto y no por separado. Y además, unificar las perspectivas entre diferentes tipos de sistemas (no sólo software, sino también en el ámbito de los negocios), al aclarar las fases de desarrollo, los requerimientos de análisis, el diseño, la implementación y los conceptos internos de la OO.
2. Modelado de objetos En la especificación del UML podemos comprobar que una de las partes que lo componen es un metamodelo formal. Un metamodelo es un modelo que define el lenguaje para expresar otros modelos.. Un sistema puede ser descripto por uno o más modelos, posiblemente desde distintos puntos de vista. El UML es una técnica de modelado de objetos y como tal supone una abstracción de un sistema para llegar a construirlo en términos concretos. El modelado no es más que la construcción de un modelo a partir de una especificación.
Representación de sistemas con UML, uso y ciclo iterativo e incremental
Un modelo es una abstracción de algo, que se elabora para comprender ese algo antes de construirlo. Los modelos se utilizan en muchas actividades de la vida humana: antes de construir una casa el arquitecto utiliza un plano, los músicos representan la música en forma de notas musicales, los artistas pintan sobre el lienzo con carboncillos antes de empezar a utilizar los óleos, etc. Página 70 de 183
UML utiliza parte de este planteamiento obteniendo distintos puntos de vista de la realidad que modela mediante los distintos tipos de diagramas que posee. Con la creación del UML se persigue obtener un lenguaje que sea capaz de abstraer cualquier tipo de sistema, sea informático o no, mediante los diagramas, es decir, mediante representaciones gráficas que contienen toda la información relevante del sistema. Un diagrama es una representación gráfica de una colección de elementos del modelo, que habitualmente toma forma de grafo donde los arcos que conectan sus vértices son las relaciones entre los objetos y los vértices se corresponden con los elementos del modelo. Artefactos para el Desarrollo de Proyectos Un artefacto es una información que es utilizada o producida mediante un proceso de desarrollo de software. Pueden ser artefactos un modelo, una descripción o un software.. Se necesita más de un punto de vista para llegar a representar un sistema. UML utiliza los diagramas gráficos para obtener estos distintos puntos de vista de un sistema:
• • • •
Diagramas de Implementación. Diagramas de Comportamiento o Interacción. Diagramas de Casos de uso. Diagramas de Clases.
Diagramas de Implementación
Se derivan de los diagramas de proceso y módulos de la metodología de Booch, aunque presentan algunas modificaciones. Los diagramas de implementación muestran los aspectos físicos del sistema. Incluyen la estructura del código fuente y la implementación, en tiempo de implementación. Existen dos tipos: Diagramas de componentes Diagrama de plataformas despliegue
Diagramas de componentes
Página 71 de 183
Muestra la dependencia entre los distintos componentes de software, incluyendo componentes de código fuente, binario y ejecutable. Un componente es un fragmento de código software (un fuente, binario o ejecutable) que se utiliza para mostrar dependencias en tiempo de compilación. Diagrama de plataformas o despliegue
Muestra la configuración de los componentes hardware, los procesos, los elementos de procesamiento en tiempo de ejecución y los objetos que existen en tiempo de ejecución. En este tipo de diagramas intervienen nodos, asociaciones de comunicación, componentes dentro de los nodos y objetos que se encuentran a su vez dentro de los componentes. Un nodo es un objeto físico en tiempo de ejecución, es decir una máquina que se compone habitualmente de, por lo menos, memoria y capacidad de procesamiento, a su vez puede estar formado por otros componentes. Diagramas de Interacción o Comportamiento Muestran las interacciones entre objetos ocurridas en un escenario (parte) del sistema. Hay varios tipos: Diagrama de secuencia. Diagrama de colaboración. Diagrama de estado. Diagrama de actividad.
Representación de sistemas con UML, uso y ciclo iterativo e incremental
Página 72 de 183
Diagrama de secuencia
Muestran las interacciones entre un conjunto de objetos, ordenadas según el tiempo en que tienen lugar. En los diagramas de este tipo intervienen objetos, que tienen un significado parecido al de los objetos representados en los diagramas de colaboración, es decir son instancias concretas de una clase que participa en la interacción. El objeto puede existir sólo durante la ejecución de la interacción, se puede crear o puede ser destruido durante la ejecución de la interacción. Un diagrama de secuencia representa una forma de indicar el período durante el que un objeto está desarrollando una acción directamente o a través de un procedimiento
Diagrama de colaboración
Muestra la interacción entre varios objetos y los enlaces que existen entre ellos. Representa las interacciones entre objetos organizadas alrededor de los objetos y sus vinculaciones. A diferencia de un diagrama de secuencias, un diagrama de colaboraciones muestra las relaciones entre los objetos, no la secuencia en el tiempo en que se producen los mensajes. Los diagramas de secuencias y los diagramas de colaboraciones expresan información similar, pero en una forma diferente.
Página 73 de 183
Diagramas de actividad
En realidad se corresponden con un caso especial de los diagramas de estado donde los estados son estados de acción (estados con una acción interna y una o más transiciones que suceden al finalizar esta acción, o lo que es lo mismo, un paso en la ejecución de lo que será un procedimiento) y las transiciones vienen provocadas por la finalización de las acciones que tienen lugar en los estados de origen. Los diagramas de actividad se utilizan para mostrar el flujo de operaciones que se desencadenan en un procedimiento interno del sistema.
Diagramas de estado
Representan la secuencia de estados por los que un objeto o una interacción entre objetos pasa durante su tiempo de vida en respuesta a estímulos (eventos) recibidos. Representa lo que podemos denominar en conjunto una máquina de estados. Un estado en UML es cuando un objeto o una interacción satisface una condición, desarrolla alguna acción o se encuentra esperando un evento. Página 74 de 183
Diagramas de Casos de Uso
Unos casos de uso es una secuencia de transacciones que son desarrolladas por un sistema en respuesta a un evento que inicia un actor sobre el propio sistema. Los diagramas de casos de uso sirven para especificar la funcionalidad y el comportamiento de un sistema mediante su interacción con los usuarios y/o otros sistemas. O lo que es igual, un diagrama que muestra la relación entre los actores y los casos de uso en un sistema. Una relación es una conexión entre los elementos del modelo, por ejemplo la relación y la generalización son relaciones. Las relaciones entre casos de uso y actores pueden ser las siguientes: • Un actor se comunica con un caso de uso. • Un caso de uso extiende otro caso de uso. • Un caso de uso usa otro caso de uso
Diagramas de Clases
Los diagramas de clases representan un conjunto de elementos del modelo que son estáticos, como las clases y los tipos, sus contenidos y las relaciones que se establecen entre ellos. Algunos de los elementos que se pueden clasificar como estáticos son los siguientes: Representación de sistemas con UML, uso y ciclo iterativo e incremental
Paquete: Es el mecanismo de que dispone UML para organizar sus elementos en grupos, se representa un grupo de elementos del modelo. Un sistema es un único paquete que contiene el resto del sistema, por lo tanto, un paquete debe poder anidarse, permitiéndose que un paquete contenga otro paquete. Página 75 de 183
Clases: Una clase representa un conjunto de objetos que tienen una estructura, un comportamiento y unas relaciones con propiedades parecidas. Describe un conjunto de objetos que comparte los mismos atributos, operaciones, métodos, relaciones y significado. En UML una clase es una implementación de un tipo.
Los componentes de una clase son: Atributo. Se corresponde con las propiedades de una clase o un tipo. Se identifica mediante un nombre. Existen atributos simples y complejos.
Operación. También conocido como método, es un servicio proporcionado por la clase que puede ser solicitado por otras clases y que produce un comportamiento en ellas cuando se realiza.
Metaclase: Es una clase cuyas instancias son clases. Sirven como depósito para mantener las variables de
clase y proporcionan operaciones (método de clase) para inicializar estas variables. Se utilizan para construir metamodelos (modelos que se utilizan para definir otros modelos).
Tipos: Es un descriptor de objetos que tiene un estado abstracto y especificaciones de operaciones pero no su implementación. Un tipo establece una especificación de comportamiento para las clases.
Interfaz: Representa el uso de un tipo para describir el comportamiento visible externamente de cualquier elemento del modelo.
Relación entre clases: Las clases se relacionan entre sí de distintas formas, que marcan los tipos de relaciones existentes:
Asociación: Es una relación que describe un conjunto de vínculos entre clases. Pueden ser binarias o n-arias, según se implican a dos clases o más. Las relaciones de asociación vienen identificadas por los roles, que son los nombres que indican el comportamiento que tienen los tipos o las clases, en el caso del rol de asociación (existen otros tipos de roles según la relación a la que identifiquen). Indican la información más importante de las asociaciones. Una asociación se dirige desde una clase a otra (o un objeto a otro), el concepto de navegabilidad se refiere al sentido en el que se recorre la asociación. Existe una forma especial de asociación, la agregación, que especifica una relación entre las clases donde el llamado "agregado" indica él todo y el "componente" es una parte del mismo.
Composición: Es un tipo de agregación donde la relación de posesión es tan fuerte como para marcar otro
tipo de relación. Las clases en UML tienen un tiempo de vida determinado, en las relaciones de composición, el tiempo de vida de la clase que es parte del todo (o agregado) viene determinado por el tiempo de vida de la clase que representa el todo, por tanto es equivalente a un atributo, aunque no lo es porque es una clase y puede funcionar como tal en otros casos.
Generalización: Cuando se establece una relación de este tipo entre dos clases, una es una Superclase y la
otra es una Subclase. La subclase comparte la estructura y el comportamiento de la superclase. Puede haber más de una clase que se comporte como subclase. Representación de sistemas con UML, uso y ciclo iterativo e incremental
Dependencia: Una relación de dependencia se establece entre clases (u objetos) cuando un cambio en el elemento independiente del modelo puede requerir un cambio en el elemento dependiente.
El Proceso de Desarrollo
UML no define un proceso concreto que determine las fases de desarrollo de un sistema, las empresas pueden utilizar UML como el lenguaje para definir sus propios procesos y lo único que tendrán en común con otras organizaciones que utilicen UML serán los tipos de diagramas. Página 76 de 183
UML es un método independiente del proceso. Los procesos de desarrollo deben ser definidos dentro del contexto donde se van a implementar los sistemas.
CICLO ITERATIVO E INCREMENTAL
• • • • • •
El ciclo de vida iterativo se basa en la evolución de prototipos ejecutables que se muestran a los usuarios y clientes En el ciclo de vida iterativo a cada iteración se reproduce el ciclo de vida en cascada a menor escala Los objetivos de una iteración se establecen en función de la evaluación de las iteraciones precedentes Proceso Iterativo e Incremental Las actividades se encadenan en una mini-cascada con un alcance limitado por los objetivos de la iteración Cada iteración comprende: Planificar la iteración (estudio de riesgos) Análisis de los Casos de Uso y escenarios Diseño de opciones arquitectónicas Codificación y pruebas. La integración del nuevo código con el existente de iteraciones anteriores se hace gradualmente durante la construcción Evaluación de la entrega ejecutable (evaluación del prototipo en función de las pruebas y de los criterios definidos) Preparación de la entrega (documentación e instalación del prototipo)
Desarrollo Iterativo
Rational Rose utiliza un proceso de desarrollo iterativo controlado (controlled iterative process development), donde el desarrollo se lleva a cabo en una secuencia de iteraciones. Cada iteración comienza con una primera aproximación del análisis, diseño e implementación para identificar los riesgos del diseño, los cuales se utilizan para conducir la iteración, primero se identifican los riesgos y después se prueba la aplicación para que éstos se hagan mínimos. Cuando la implementación pasa todas las pruebas que se determinan en el proceso, ésta se revisa y se añaden los elementos modificados al modelo de análisis y diseño. Una vez que la actualización del modelo se ha modificado, se realiza la siguiente iteración.
Página 77 de 183
Modelado CASE, reingeniería de software e ingeniería de reversa
MODELADO CASE Concepto de CASE
CASE: Ingeniería del Software asistida por ordenador (Computer Aided Software Engineering).
Definición: Toda herramienta o paquete informático que proporcione una ayuda, más o menos automática, en cualquiera de las etapas del ciclo de vida de desarrollo de un sistema informático.
Objetivo básico del CASE: Resolver la “crisis del software” a través de la automatización
Tipos de Herramientas CASE.
Integración de Herramientas CASE. Repositorio. Metodologías y Herramientas CASE. Implantación del CASE. El futuro del CASE. Beneficios del CASE. Ejemplos de Herramientas CASE Herramientas de planificación y gestión de proyectos (seguimiento, análisis de riesgos, etc.) Herramientas de análisis y diseño. Herramientas de prototipado, maquetado. Herramientas de programación. Herramientas de integración y pruebas. Herramientas de documentación . Herramientas de ayuda al mantenimiento. Herramientas de gestión de configuraciones. Herramientas de planificación estratégica de sistemas, de modelado de procesos, etc.
Integración de Herramientas CASE
Un conjunto de herramientas CASE sólo es útil si: Comparten información. Propagan o comunican los cambios. Tienen una interfaz consistente y flexible. Integración de herramientas CASE: Combinación de distintas herramientas. Herramienta única (I-CASE, Integrated-CASE).
Entorno CASE Conjunto de herramientas CASE que se basan en una concepción integrada de la interacción entre los distintos componentes del entorno y entre los usuarios y los componentes.
Modelado CASE, reingeniería de software e ingeniería de reversa
Se componen de diferentes herramientas CASE que soportan adecuadamente las técnicas de distintas etapas/tareas+repositorio.
Página 78 de 183
Ventajas: Transferencia “natural” de datos/información natural Reducción del esfuerzo necesario para efectuar actividades globales (GCS, documentación, calidad, etc.) Mayor control del proyecto (visión global). Mejor coordinación entre el equipo de trabajo. Permitir acceso directo y no secuencial a cualquiera de las herramientas
Esta herramienta propone la utilización de cuatro tipos de modelo para realizar un diseño del sistema, utilizando una vista estática y otra dinámica de los modelos del sistema, uno lógico y otro físico. Permite crear y refinar estas vistas creando de esta forma un modelo completo que representa el dominio del problema y el sistema de software. CASE es una combinación de herramientas software (aplicaciones) y de metodologías de desarrollo: 1. Las herramientas permiten automatizar el proceso de desarrollo del software. 2. Las metodologías definen los procesos automatizar.
La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:
Upper CASE (U-CASE), herramientas que ayudan en las fases de planificación, análisis de requisitos y estrategia del desarrollo, usando, entre otros diagramas UML. Middle CASE (M-CASE), herramientas para automatizar tareas en el análisis y diseño de la aplicación. Lower CASE (L-CASE), herramientas que semiautomatizan la generación de código, crean programas de detección de errores, soportan la depuración de programas y pruebas. Además automatizan la documentación completa de la aplicación. . Existen otros nombres que se le dan a este tipo de herramientas, y que no es una clasificación excluyente entre sí, ni con la anterior: •Integrated CASE (I-CASE), herramientas que engloban todo el proceso de desarrollo software, desde análisis hasta implementación. •MetaCASE, herramientas que permiten la definición de nuestra propia técnica de modelado, los elementos permitidos del metamodelo generado se guardan en un repositorio y pueden ser usados por otros analistas, es decir, es como si definiéramos nuestro propio UML, con nuestros elementos, restricciones y relaciones posibles.
REINGENIERIA DE SOFTWARE E INGENIERIA DE REVERSA Técnicas y Herramientas de Reingeniería Software OBJETIVOS Describir los conceptos asociados a la Reingeniería Software Tipos de Reingeniería y Mantenimiento Técnicas y Métodos de Reingeniería Herramientas disponibles Prácticas 2.1 Concepto y tipos de Reingeniería La Reingeniería consiste en la automatización del mantenimiento del software.
Modelado CASE, reingeniería de software e ingeniería de reversa
La Reingeniería es también el proceso de examinar sistemas de software existentes y/o modificarlos con ayuda de herramientas de forma automática o semi-automática.
Página 79 de 183
Analizar sistemas existentes para entender su diseño y desarrollar estrategias para extraer y reutilizar componentes. Implica la rehabilitación y modernización de los componentes.
Ventajas de los procesos de Reingeniería
Proporcionar asistencia automatizada a las tareas de mantenimiento y evolución del software. Reducir errores y costes. Mejorar los procesos de conversión y migración. Extender el ciclo de vida de las aplicaciones. Facilitar el entendimiento de los programas. Formas de Reingeniería Software Análisis: proceso de examinar sistemas existentes para entender mejor el sistema y sus componentes. Reestructuración: cambios en la forma del software(ej: código, documentación, datos) pero no su funcionalidad Ingeniería Inversa: analizar software y reconstruir las relaciones entre sus partes. Migración: conversión de software o actualización de tecnología
Concepto y tipos de Reingeniería • • • • • • • •
Reformateo: Identificación y alineación de palabras clave, nombres de datos, etc. Reestructuración de Control: Convierte código no estructurado en código equivalente pero estructurado. Refuerza el mantenimiento. Reestructuración de Datos: Diseña y crea nuevas estructuras de datos más flexibles. Redocumentación: Entendimiento del software y reconstruir documentación Re-desarrollo: Incluye la reescritura de partes del sistema utilizando un nuevo entorno de desarrollo. Ingeniería Inversa: Extrae información del código fuente para obtener información (elementos, relaciones) de alto nivel del sistema. Trata de reconstruir la lógica de un sistema de forma parcial o total. Ingeniería Inversa de Datos: Extrae relaciones de datos de alto nivel a partir de estructuras de datos. Ingeniería Inversa de Procesos: Extrae especificaciones de alto nivel a partir del código fuente.
Migración: Evolución del sistema a otro más eficiente y/o mantenible. Datos: Migración a otros sistemas de datos más eficientes. De Interfaces de Usuario: Realiza un rediseño o reingeniería de los interfaces por otros más modernos o con mayor usabilidad. De Lenguaje:: Generalmente requerido necesidades tecnológicas. De Plataforma: Cambio de una plataforma a otra. De Arquitectura: Transformación de la arquitectura de un sistema. Ejemplo: Una monolítica a una cliente servidor.
Página 80 de 183
Modelado CASE, reingeniería de software e ingeniería de reversa
La Ingeniería Inversa trata de analizar sistemas de software para reconstruir la descripción de alto nivel a partir de las de bajo nivel. Básicamente consiste en analizar el código para extraer relaciones y el diseño de todo o parte del sistema. La ingeniería inversa trata de re-documentar el sistema y descubrir información de diseño con el fin de poder entenderlo mejor.
Herramientas de Ingeniería Inversa y Directa IBM RATIONAL ROSE I. Inversa: C, C++, Java, CORBA, XML_DTD, Ada I. Directa: Idénticos lenguajes Obtención de diagramas UML desde código Generación de esqueletos de código anotados Visualizador Modelado físico de la arquitectura (diagramas de componentes) Modelado de datos (Oracle) Integración con Requisite Pro
TELELOGIC TAU I. Inversa: C, C++, Java, CORBA, XML_DTD, Ada I. Directa: Obtención de diagramas UML 2.0 desde código Comparación gráfica y fusión de modelos UML Soporte de símbolos gráficos específicos de dominio
OTRAS ARMIN ReWeb, WARE, WANDA (Dominio Web) VAQUISTA TERESA Altova Umodel (Java, C# UM L) Imagix 4D (C/C++ UML) Compiladores inversos Visualizadores (VCG, Dotty, Rigi): No específica de Ing. Inv
INGENIERIA INVERSA
(Reverse engineering). La ingeniería inversa es el proceso de descubrir los principios tecnológicos de un dispositivo, objeto o sistema, a través de razonamiento abductivo de su estructura, función y operación. La ingeniería inversa se trata de tomar algo (un dispositivo mecánico o electrónico, un software de computadora, etc.) para analizar su funcionamiento en detalle, generalmente para intentar crear un dispositivo o programa que haga la misma o similar tarea sin copiar la original.
Página 81 de 183
Modelado CASE, reingeniería de software e ingeniería de reversa
Usos de la ingeniería inversa * La ingeniería inversa suele ser empleada por empresas, para analizar si el producto de su competencia infringe patentes de sus propios productos. * Muchas veces, la ingeniería inversa es utilizada en el área militar para investigar (y copiar) las tecnologías de otras naciones, sin obtener planos ni detalles de su construcción o desarrollo. * En el software y en el hardware, la ingeniería inversa, muchas veces es empleada para desarrollar productos que sean compatibles con otros productos, sin conocer detalles de desarrollo de éstos últimos. En otras palabras, quien desarrolla los nuevos productos, no puede acceder a los detalles de fabricación de los productos de los que intenta ser compatibles. * La ingeniería inversa también es empleada para comprobar la seguridad de un producto, generar keygens de aplicaciones, reparación de productos, etc.
Página 82 de 183
Calidad en el desarrollo de software
INGENIERIA DE SOFTWARE Y CALIDAD Algunos desarrolladores de software continúan creyendo que la calidad del software es algo en lo que se empieza a preocupar una vez que se ha generado el código. ¡Nada más lejos de la realidad! Para empezar a definir que es la calidad del software, es necesario primero comprender el concepto de calidad. A continuación se presenta el concepto de calidad según la norma ISO 9000.
Calidad.- Conjunto de propiedades y de características de un producto o servicio, que le confiera aptitud para satisfacer unas necesidades explícitas o implícitas (ISO 8402).
Control de Calidad.- Conjunto de técnicas y actividades de carácter operativo, utilizadas para verificar los requerimientos relativos a la calidad del producto o
servicio. El control de calidad es una actividad que se tiene que llevar a cabo para garantizar la calidad de
todo producto o servicio que se ofrece a los consumidores, en las siguientes líneas se presenta este concepto. Aplicado al software, el control de calidad es una serie de inspecciones, revisiones, y pruebas utilizados a lo largo del ciclo de desarrollo para asegurar que cada producto cumple con los requisitos que le han sido asignados. Las actividades del control de calidad pueden ser manuales, completamente automáticas o una combinación de herramientas automáticas e interacción humana.
Garantía de Calidad.- Conjunto de acciones planificadas y sistemáticas necesarias para proporcionar la
confianza adecuada de que un producto o servicio satisface los requerimientos dados sobre calidad. El objetivo de la garantía de calidad es proporcionar la gestión para informar de los datos necesarios sobre la calidad del producto, por lo que se va adquiriendo una visión más profunda y segura de que la calidad del producto está cumpliendo sus objetivos.
Instrucciones: el siguiente cuestionario te permitirá tener un valor cuantitativo acerca de los temas más importantes en la materia; se muestra la pregunta, la respuesta y porque es la respuesta correcta. 1) Grado con el que sistema, componente o procesos cumple con los requerimientos y las necesidades y expectativas del cliente o usuario: Respuesta: Calidad de software 2) Según McCall los factores que determinan la calidad de software se centran en 3 aspectos importantes; cuales son: Características Operativas, Capacidad de soportar cambios y adaptabilidad a nuevos entornos. Características operativas: • Corrección • Fiabilidad • Eficiencia • Seguridad • Usabilidad
Calidad en el desarrollo de software
Capacidad de soportar cambios: • Facilidad de mantenimiento Página 83 de 183
• Flexibilidad Adaptabilidad a nuevos entornos: • Portabilidad • Reusabilidad • Interoperabilidad 3) Menciona las características del software: Respuesta: a) El software se desarrolla, no se fabrica en un sentido clásico. b) El software no se “estropea”. c) La Mayoría del software se construye a medida, en vez de ensamblar componentes existentes. 4) Menciona los principales modelos de desarrollo de software: Respuesta: a) Modelo lineal secuencial o de cascada b) Modelo por prototipos c) Modelo de desarrollo rápido d) Modelo de desarrollo evolutivo e) Modelo incremental f) Modelo en espiral * Nota: Se recomienda estudiar cada uno de estos modelos y sus representaciones. 5) Menciona las diferentes etapas en el desarrollo de software: Respuesta: a) Análisis de sistemas b) Diseño de sistemas c) Desarrollo de sistemas c) Pruebas de sistemas d) Implementación de sistemas d) Mantenimiento de sistemas
Análisis de sistemas: implica determinar las necesidades del cliente y/o usuario para poder especificar los requerimientos que sirven como base para el desarrollo de un sistema o software siendo el “que” de un sistema informático. Diseño de sistemas: Es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del sistema a construir, siendo el “como” de un sistema informático. Desarrollo de sistemas: Es la fase de la programación o implementación propiamente dicha. Aquí se implementa el código fuente del sistema. Pruebas de sistema: Es un conjunto de actividades que se pueden planificar por adelantado y llevar acabo sistemáticamente para validar el funcionamiento del sistema. Implementación de sistema: En esta fase se hace la entrega del sistema al usuario para comience con el uso y operación del mismo. Mantenimiento de sistemas: el mantenimiento se debe o se invoca debido a cambios pedidos por los clientes o por los requerimientos del mercado. Calidad en el desarrollo de software
METRICAS Y PROCESOS (PSP) El Personal Software Process(Proceso Personal de Software) ayuda a los desarrolladores de software a mejorar su funcionamiento disciplinando la manera en que desarrollan software. Página 84 de 183
El PSP se puede aplicar a muchas partes del proceso del desarrollo del software, incluyendo el análisis, definición de requerimientos, desarrollo del programa, documentación, las pruebas del sistema, y mantenimiento. El PSP es un proceso de software diseñado para ser utilizado por un Desarrollador de Software. Es utilizado para guiar el planeamiento y desarrollo de módulos de software o pequeños programas, pero es adaptable a otros programas. El objetivo del PSP es adquirir una correcta disciplina personal para el desarrollo de un software de calidad en los plazos y costes comprometidos. 7) Menciona las principales Métricas del PSP: Respuesta: Densidad de defectos Índice de Revisión Índices de tiempo de desarrollo Índices de defectos Rendimiento Defectos por hora Efectividad de remoción de defectos Evaluación del índice de fallas Con datos de tamaño, tiempo y defectos, existen muchas formas de medir, evaluar Y manejar la calidad de un programa. PSP provee una serie de mediciones de calidad que ayudan a los desarrolladores a examinar la calidad de sus programas desde varias perspectivas. 8) Menciona como está estructurado PSP Respuesta: Comenzando con los requerimientos, el primer paso en el proceso de PSP es la planificación. Existe un script de planificación que sirve de guía y un resumen del plan para registrar todos los datos del mismo. Mientras los desarrolladores van siguiendo el lineamiento de trabajo sugerido por los scripts, deben ir registrando los tiempos dedicados y los datos de defectos en los logs de tiempos y defectos. Al final de la tarea, durante la fase de postmortem (PM), deben resumir los datos de tiempo y defectos, medir el tamaño del programa, e ingresar esos datos en el formulario de sumario del plan. Al finalizar, deben entregar el producto finalizado y el formulario de sumario del plan completado. 9) ¿Cuáles es el camino(niveles) de PSP y con qué nombre se identifican? Respuesta: PSP0 – Medición personal PSP1 - Planeación Personal PSP2 - Administración de Calidad Personal PSP• - Proceso Personal Cíclico
Calidad en el desarrollo de software
Cada nivel demuestra el grado de avance que se tiene en el dominio de PSP y en el grado de avance que demuestra cómo cada individuo mejora la forma de desarrollar software desde un simple programa hasta sistemas de gran escala o complejos. Se recomienda que revisen cada uno de los niveles para que tengan claro en que consiste cada uno y los sepan diferenciar. 10) Proceso de software diseñado para equipos de trabajo de desarrollo de Página 85 de 183
software y mantenimiento de entre 2 y 15 ingenieros: Respuesta: TSP (Team Software Process) TSP nos muestra cómo construir un equipo auto dirigido y como ser un miembro efectivo de equipo. Nos enseña como dirigir y soportar estos equipos y como mantener un medio para obtener un alto nivel de desarrollo. 11)Menciona las fases del TSP: Respuesta: 1. Requerimientos 2. Diseño 3. Implementación 4. Pruebas 5. Postmortem 12) Completa la siguiente grafica de acuerdo a la relación del TSP con el CMMI y PSP: Respuesta: Organización Equipo Individual Mientras que el CMMI se enfoca en lo que tienen que hacer las organizaciones, no especifica cómo alcanzar esos objetivos. El PSP provee una guía especifica en como los ingenieros de software de manera individual pueden continuamente mejorar su desempeño. El TSP provee guías específicas de cómo ingenieros capacitados en PSP pueden trabajar de manera efectiva como miembros de un equipo de alto desempeño. CMMI TSP PSP
MODELO DE CAPACIDAD DE MADUREZ INTEGRADO (CMMI)
Para entender la importancia del CMMI, se debe conocer con claridad hacia donde apuntan las grandes empresas dedicadas al desarrollo de software, las cuales están utilizando este modelo de referencia para madurar sus procesos en sus organizaciones, todo ello conlleva un gran esfuerzo y trabajo de manera individual y colectiva. El CMM - CMMI es un modelo de calidad del software que clasifica las empresas en niveles de madurez. Estos niveles sirven para conocer la madurez de los procesos que se realizan para producir software.
13) Método de definir los procesos a realizar por una organización: Respuesta: CMMI 14) Cuales son las disciplinas del CMMI: Respuesta: CMMI-SW CMMI-SE/SW CMMI-SE/SW/IPPD CMMI-SE/SW/IPPD/SS
Calidad en el desarrollo de software
15) Cuales son los 5 niveles del CMMI y da una breve explicación de ellos: Respuesta: Inicial o Nivel 1 CMM - CMMI . Este es el nivel en donde están todas las empresas que no tienen procesos. Los presupuestos se disparan, no es posible entregar el proyecto en fechas, te tienes que quedar durante noches y fines de semana para terminar un proyecto. No hay control sobre el estado del proyecto, el desarrollo del proyecto es completamente opaco , no sabes lo que pasa en él. En este nivel de CMMI, los procesos y métodos de ingeniería no se encuentran definidos. El desarrollo se basa en la heroicidad y responsabilidad de los individuos. Página 86 de 183
Repetible o Nivel 2 CMM - CMMI . Quiere decir que el éxito de los resultados obtenidos se pueden repetir. La principal diferencia entre este nivel y el anterior es que el proyecto es gestionado y controlado durante el desarrollo del mismo. El desarrollo no es opaco y se puede saber el estado del proyecto en todo momento. Los procesos que hay que implantar para alcanzar este nivel son: ○ Gestión de requisitos ○ Planificación de proyectos ○ Seguimiento y control de proyectos ○ Gestión de proveedores ○ Aseguramiento de la calidad ○ Gestión de la configuración
Definido o Nivel 3 CMM - CMMI . Resumiéndolo mucho, este alcanzar este nivel significa que la forma de desarrollar proyectos (gestión e ingeniería) esta definida , por definida quiere decir que esta establecida, documentada y que existen métricas (obtención de datos objetivos) para la consecución de objetivos concretos. Los procesos que hay que implantar para alcanzar este nivel son: ○ Desarrollo de requisitos ○ Solución Técnica ○ Integración del producto ○ Verificación ○ Validación ○ Desarrollo y mejora de los procesos de la organización ○ Definición de los procesos de la organización ○ Planificación de la formación ○ Gestión de riesgos ○ Análisis y resolución de toma de decisiones La mayoría de las empresas que llegan al nivel 3 paran aquí, ya que es un nivel que proporciona muchos beneficios y no ven la necesidad de ir más allá porque tienen cubiertas la mayoría de sus necesidades.
Cuantitativamente Gestionado o Nivel 4 CMM - CMMI. Los proyectos usan objetivos medibles para alcanzar las necesidades de los clientes y la organización. Se usan métricas para gestionar la organización. Los procesos que hay que implantar para alcanzar este nivel son: ○ Gestión cuantitativa de proyectos ○ Mejora de los procesos de la organización
Optimizado o Nivel 5 CMM - CMMI . Los procesos de los proyectos y de la organización están orientados a la mejora de las actividades. Mejoras incrementales e innovadoras de los procesos que mediante métricas son identificadas, evaluadas y puestas en práctica. Los procesos que hay que implantar para alcanzar este nivel son: ○ Innovación organizacional ○ Análisis y resolución de las causas Normalmente las empresas que intentan alcanzar los niveles 4 y 5 lo realizan simultáneamente ya que están muy relacionados. 16) Cual es el propósito fundamental del CMMI: Página 87 de 183
Respuesta: Proporcionar una guía para mejorar los procesos de la organización y la habilidad para administrar el desarrollo, adquisición y mantenimiento de productos y servicios. 17) Cuales son las representaciones del modelo CMMI: Respuesta: Representación por etapas o por niveles de madurez Representación continua. 18) Cuales son los beneficios de la representación Continua: Respuesta: Permite seleccionar el orden de mejora que mejor se adapte a los objetivos de negocio de la organización y mitigar en su caso las áreas de mayor riesgo. Permite compararse con otras organizaciones tomando como base las áreas de proceso. Permite una fácil migración de EIA/IS-731 a CMMI 19) Cuales son los beneficios de la representación por etapas: Respuesta: Proporciona una secuencia predefinida de la mejora en las áreas de proceso agrupadas por niveles de madurez. Permite una fácil migración de SW/CMM a CMMI. Permite conocer la madurez de la organización como resultado de unaevaluación. Los niveles de madurez tienen una base secuencial. 20) Menciona la principal terminología utilizada en CMMI: Respuesta: ”Establecer y mantener”: No solo se debe definir una política dentro de una organización, sino que también debe estar formalmente documentada, aprobada y utilizada por toda la organización. Practicas: Describen las acciones necesarias requeridas para cubrir los elementos claves de un proceso. La esencia de un modelo CMMI está en las prácticas. Nivel de Madurez: Es un conjunto pre-definido de áreas de proceso que deben ser cubiertas por completo para cumplir con un nivel específico. Área de proceso: Conjunto de prácticas relacionadas entre sí, que cuando son implementadas de forma colectiva, satisfacen un conjunto de objetivos que cubren esa área. Objetivo específico: Forma parte de un área de proceso y describe que debe ser implementado para satisfacer un área de proceso. Practica especifica: Es una actividad que es considerada importante para alcanzar los objetivos específicos SG’s de un área de proceso. Permiten establecer la madurez de los procesos de una organización.
Página 88 de 183
Sistemas Operativos
5.- SISTEMAS OPERATIVOS GENERALIDADES DE LOS SISTEMAS OPERATIVOS MULTIUSUARIOS Existen diversos programas que se manejan en una computadora. De todos los programas y aplicaciones comerciales que se conocen hoy en día, los más importantes son los llamados programas del sistema, que son programas que controlan el hardware de manera directa o indirecta. Entre ellos existen: editores, compiladores, traductores, ligadores, etc,. Sin embargo el más importante de todos es el Sistema Operativo.
Definición (de Sistema Operativo): Software de Sistema que se encarga de la gestión de recursos y su administración tanto de software como de hardware, ocultando los detalles al usuario, permitiéndole una interacción más cómoda con los mismos. Así existen dos formas de visualizar a los sistemas operativos:
Top-Down (Arriba-Abajo): Como un software capaz de comunicarse con los recursos de hardware de la computadora sin mostrar los detalles al usuario. Bottom-Up (Abajo-Arriba): Visto como un software gestor de recursos de hardware y su control para que el usuario obtenga la información de forma rápida y correcta. Un sistema operativo tradicional se puede ver como un modelo en capas superpuestas(capas de cebolla) desde la más interna, que está pegada con el hardware de la computadora, y la más externa que está en interacción directa con el usuario. Estos componentes son:
Kernel o Núcleo. Es el programa medular que ejecuta programas y gestiona dispositivos de hardware tales como los discos y las impresoras. Shell. Proporciona una interfaz para el usuario. Recibe órdenes del usuario y las envía al núcleo para ser ejecutadas. Sistema de archivos. Organiza la forma en que se almacenan los archivos en dispositivos de almacenamiento tales como los discos. Aplicaciones Son programas especializados, tales como editores, compiladores y programas de comunicaciones, que realizan operaciones de computación estándar. Una de las aplicaciones más utilizadas es la interfaz gráfica que facilita enormemente la interacción humano computadora.
PROCESOS Y ARCHIVOS Ahora bien dentro de los sistemas operativos existen dos paradigmas ó definiciones fundamentales con las que un sistema operativo opera.
Proceso: Cualquier programa en ejecución Archivo: Secuencia de bytes almacenados en cualquier dispositivo de memoria secundaria
Sistemas Operativos
Página 89 de 183
De manera principal los sistemas operativos se apoyan en estos conceptos para poder ofrecer los servicios adecuados. En base a esta forma de trabajo los sistemas operativos pueden clasificarse como sigue:
Monousuarios Los SO monousuarios son aquellos que soportan a un usuario a la vez, sin importar el número de procesadores que tenga la computadora o el número de procesos o tareas que el usuario pueda ejecutar en un mismo instante de tiempo. Las computadoras personales típicamente se han clasificado en este renglón. Multiusuarios Los SO multiusuarios son capaces de dar servicio a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas en una red de comunicaciones. No importa el número de procesadores en la máquina ni el número de procesos que cada usuario puede ejecutar simultáneamente. En otras palabras consiste en el fraccionamiento del tiempo ( timesharing). El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por más de una persona al mismo tiempo, ejecutando programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de multitareas que es común en la mayoría de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios a computadoras más grandes y a organizaciones de servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realización de múltiples tareas por un solo usuario Esto facilita la reducción de tiempo ocioso en el procesador, e indirectamente implica reducción de los costos de energía y equipamiento para resolver las necesidades de cómputo de los usuarios. Ejemplos de sistemas operativos con característica de multiusuario son VMS y Unix en sus múltiples derivaciones (e.g. IRIX, Solaris, etc.) y los sistemas "clones de Unix" como Linux y FreeBSD. En la familia de los sistemas operativos Microsoft Windows, las versiones domésticas y para clientes de Windows 2000, Windows XP y Windows Vista proveen soporte para ambientes personalizados por usuario, pero no admiten múltiples usuarios usando el escritorio del sistema concurrentemente, las versiones de servidor de Windows 2000 y Windows 2003 (así como la futura versión de Vista "Longhorn") proveen servicio de escritorio a múltiples usuarios de forma concurrente a través de Terminal Services. Un sistema operativo multiusuario, a diferencia de uno monousuario, debe resolver una serie de complejos problemas de administración de recursos, memoria, acceso al sistema de archivos, etc.
Multitarea Es una característica de un sistema operativo moderno. Permite que varios procesos sean ejecutados al mismo tiempo compartiendo uno o más procesadores. Tipos de multitarea: Nula: El sistema operativo carece de multitarea. Aun así puede lograrse a veces algo parecido a una multitarea implementándola en espacio de usuario, o usando trucos como los TSR de MS-DOS. Un ejemplo típico de un sistema no multitarea es MS-DOS y sus clones. Cooperativa: Los procesos de usuario son quienes ceden la CPU al sistema operativo a intervalos regulares. Muy problemática, puesto que si el proceso de usuario se interrumpe y no cede la CPU al sistema operativo, todo el sistema estará trabado, es decir, sin poder hacer nada. Da lugar también a latencias muy irregulares, y la imposibilidad de tener en cuenta este esquema en sistemas operativos de tiempo real. Un ejemplo sería Windows hasta la versión 95. •
•
Sistemas Operativos •
Preferente: El sistema operativo es el encargado de administrar el/los procesador(es), repartiendo el tiempo de uso de este entre los procesos que estén esperando para utilizarlo. Cada proceso utiliza el Página 90 de 183
procesador durante cortos períodos de tiempo, pero el resultado final es prácticamente igual que si estuviesen ejecutándose al mismo tiempo. Ejemplos de sistemas de este tipo serían Unix y sus clones (FreeBSD, Linux...), Windows NT... Real: Sólo se da en sistemas multiprocesador. Es aquella en la que varios procesos se ejecutan realmente al mismo tiempo, en distintos microprocesadores. Suele ser también preferente. Ejemplos de sistemas operativos con esa capacidad: variantes Unix, Linux, Windows NT, etc. •
Sistema Operativo Linux En un sentido estricto, sólo se puede hablar de una versión de Linux en un momento determinado: la última versión actualizada del núcleo. El núcleo es el dominio particular de Torvalds en el desarrollo de Linux, dejando todas las aplicaciones y servicios que actúan sobre el núcleo para los miles de desarrolladores que hay en el mundo. En el sentido genérico de Linux, que se refiere a las colecciones de aplicaciones que se ejecutan sobre el núcleo, hay muchas versiones de Linux. Cada distribución tiene características específicas, que incluyen métodos de instalación, ampliaciones y características especiales. Lo interesante de la forma dual de usar el término Linux es que ocurre lo mismo con el término SO. En un sentido comercial, un SO es una gran colección de aplicaciones que complementan el núcleo. Esto es lo que son Windows 95 y Windows 98, Windows NT, Windows 2000, o Mac OS. Desde un punto de vista técnico, un SO es el núcleo principal que proporciona funciones básicas para desarrollar y ejecutar aplicaciones. Un Sistema Operativo multiusuario Más importante que sus capacidades multitarea son sus características como SO multiusuario, características que comparte con todas las versiones de Unís y otros sistemas clónicos de Unix. Linux permite varios usuarios simultáneos, permitiendo aprovechar al máximo las capacidades multitarea del SO. La gran ventaja de esto es que permite utilizar Linux como servidor de aplicaciones. Desde sus terminales, los usuarios pueden conectarse a través de una red con el servidor y ejecutar las aplicaciones directamente en él, en lugar de hacerlo en su propio ordenador. Linux es un sistema que trabaja propiamente de dos formas: • •
Línea de Comandos Interfaz Gráfica
El shell o línea de comandos trabaja con comandos diversos que cumplen las siguientes funciones, entre muchas otras: Sobre los archivos y directorios Tratamiento de Archivos Permisos y Espacio de Disco Duro Monitoreo de procesos Redireccionamiento y Tuberías • • • • •
Además trabaja con un súper usuario o administrador del sistema que es capaz de manejar las características anteriores y muchas otras. Línea de comando
LÍNEA DE COMANDO Página 91 de 183
COMANDOS SOBRE ARCHIVOS Y DIRECTORIOS
Comando: mkdir Formato: mkdir [opciones] directorio Descripción: Crea directorios. Ejemplo: mkdir –p /home/juan/documentos/cartas Crea el directorio cartas y todos los directorios anteriores necesarios. Comando: rmdir Formato: rmdir directorio Descripción: Borra el directorio especificado. Siempre y cuando este vacío. rmdir cartas Ejemplo: Comando: pwd pwd Formato: Descripción: Informa sobre cuál es el directorio actual en el que nos encontramos, no tiene ningún tipo de parámetro. Comando: cd cd nombre_del_directorio Formato: Descripción: Cambia del directorio actual al indicado en nombre_del_directorio. Si no se indica ningún directorio cambiara al directorio raíz del usuario que lo invoca. Admite los directorios . y .. correspondientes al actual y al padre del actual para indicar los caminos relativos al directorio destino. Ejemplos: cd cartas Cambia al directorio cartas. Comando: ls ls [opciones] archivos Formato: Descripción: Lista los archivos indicados mostrando información sobre ellos. Si no se pasa como parámetro ningún nombre de archivo, lista los archivos del directorio actual. Las opciones son: -a Muestra todos los archivos del directorio actual incluyendo los archivos ocultos, que en LINUX son los que comienza su nombre por punto. -l Muestra los directorios como archivos en lugar de mostrar sus contenidos. -t -r Archivos Ejemplos: ls –l Muestra los archivos del directorio actual con el formato extendido dando toda la información. ls –la *.c Muestra todos los archivos en formato extenso cuyo nombre termine en .c y que comiencen por cualquier cadena de carácter, mostrará también los que se consideran ocultos, que comprenden por .., y cumplan en resto de las condiciones.
Página 92 de 183
Línea de comando
COMANDOS BÁSICOS PARA EL MANEJO DE ARCHIVOS
Comando: cat Formato: cat [opciones] archivos Descripción: Concatena la lista de archivos que se le facilita en la salida estándar. Ejemplos: cat hola.txt Comando: rm rm [opciones] archivos Formato: Descripción: Elimina archivos y directorios del sistema de ficheros. Se utiliza tanto para borrar archivos, enlaces y directorios. Para eliminar directorios es necesaria la opción –r. Hay que tener mucho cuidado con la utilización de este comando pues sus acciones son irreparables. Las opciones son: Ejemplos: rm * Borra todos los archivos del directorio actual pidiendo permiso para cada archivo que va a borrar. Comando: cp Formato: cp [opciones] fuente destino Descripción: Copia archivos y directorios. Copiará fuente a destino, fuente puede ser una lista de archivos que copiará a un directorio indicado en destino. También puede copiar un archivo sobre otro archivo. Ejemplos: cp /usr/bin/joe . Copia el archivo joe del directorio /usr/bin al directorio actual. cp joe joe.old Copia el contenido de joe a joe.old, es decir, respalda joe. Comando: mv mv [opciones] origen destino Formato: Descripción: Mueve archivos y directorios. También es el comando que se utiliza para renombrado de archivos y directorios por ser similar el efecto que se produce. Ejemplos: mv carta.txt carta.doc Cambia de nombre el archivo carta.txt a carta.doc. Comando: ln Formato: ln [-s] origen destino Descripción: Crea un enlace a un archivo, con el fin de poder acceder a un archivo con más de un nombre. Ejemplos: ln –s documento.txt trabajo.txt Crea un enlace simbólico o ligadura simbólica del archivo documento.txt en el enlace trabajo.txt. Comando: file Formato: file archivo Descripción: Realiza una exploración del archivo tratando de clasificarlo. Al final imprime en pantalla la descripción del archivo e información relevante. Ejemplo: carta.doc Clasifica a carta.doc como un documento de Microsoft Office Document Comando: find Formato: find directorio(s) [criterios_de_seleccion] [opcion_de_comando] nom arch Descripción: El comando find se utiliza para examinar la jerarquía de directorios en búsqueda de archivos. Para esta búsqueda pueden indicarse ciertos criterios. Además, también puede aparecer el nombre del archivo encontrado en pantalla o ejecutarse con un comando. Línea de comando
Ejemplo: find . –name jose –print Página 93 de 183
En este caso busca en el directorio actual. el archivo con nombre jose e imprime los lugares o búsquedas exitosas.
TRATAMIENTO DE ARCHIVOS Comando: cat Formato: cat [opciones] archivo [archivo1]…[archivo n] Descripción: Despliega el contenido de un archivo sin paginación y sin formato hacia la pantalla ó consola. Concatena dos o más archivos en uno sólo. Ejemplo: cat numero.c Despliega el contenido del archivo numero.c a la pantalla sin formato y sin pausas ó paginación. Comando: more more [opciones] archivo Formato: Descripción: Se utiliza para paginar texto que no cabe en la pantalla y, por tanto, se desplaza sin poderlo ver. Se utiliza a través de un redireccionamiento o una pipe para formatear el resultado de otro comando. Para salir de more antes de terminar pulse q y para avanzar barra espaciadora. Ejemplos: ls –l | more Lista los archivos del directorio actual y se los pasa al comando more para que lo pagine y lo muestre página a página. more cartas.txt Pagina el contenido de cartas.txt Comando: less Formato: less [-cmsCM] [-xtab] [+comando] [archivo...] Descripción: Al igual que more, less es un programa de paginación. Una de sus principales ventajas es que hace fácil desplazarse hacia atrás o hacia adelante de un archivo.Los datos se despliegan pantalla por pantalla. Con las flechas de dirección regresa o avanza. Ejemplo: less hola.txt Muestra el contenido de hola.txt paginado y con formato. Con la posibilidad de ir hacia delante y hacia atrás del texto. Comando: tail Formato: tail [opciones] archivo Descripción: Muestra las últimas líneas del archivo que se le pasan como parámetro. Por defecto muestra las diez últimas líneas. Ejemplo: tail archivo_largo.txt Muestra las 10 últimas líneas del archivo_largo.txt. Comando: head head [opciones] archivo Formato: Descripción: Muestra las primeras líneas del archivo que se le pasan como parámetro. Por defecto muestra las diez primeras líneas. Ejemplo: head archivo_largo.txt Muestra las 10 primeras líneas del archivo_largo.txt.
Página 94 de 183
Línea de comando
Comando: grep grep [opciones] patrón [archivo(s)] Formato: Descripción: Permite buscar cadenas de caracteres en los archivos que le indiquemos. grep toma el patrón que deseamos buscar como primer argumento y el resto de los argumentos los toma como nombres de archivos. En caso de que el elemento que deseemos buscar se componga de más de una palabra, ese elemento deberemos incluirlo entre comillas dobles. Una vez buscado el patrón, se visualizan todos los archivos que lo contienen. Ejemplos: grep NULL * En este caso, grep busca el patrón NULL en todos los archivos del directorio actual. Recordemos que el asterisco sustituye a cualquier cadena de caracteres, y en este caso a todos los archivos del directorio en el que estemos situados.
grep –n main /home/chan/spro/*.c En el caso anterior, al colocar la opción –n se visualiza el número de línea del archivo donde se encuentra el patrón buscado.
PERMISOS Y ESPACIO DE DISCO DURO Comando: chgrp chgrp [opciones] grupo archivos Formato: Descripción: Permite el cambio del grupo propietario de un archivo ó directorio. Para cambiar la propiedad de grupo de un archivo o directorio hay que ser el propietario de dicho archivo o ser el usuario root. chgrp invitados p* Ejemplo: Cambia el grupo propietario a invitados de todos los archivos que comiencen por la letra p dentro del directorio actual. Comando: chmod chmod [opciones] modo archivos Formato: Descripción: Permite el cambio de los permisos o modo de los archivos y directorios. Los permisos de un archivo o directorio permiten controlar el acceso a los mismos. Existen tres niveles de permisos, los de propietario, grupo y otros. Así los permisos de propietario afectan al propietario del archivo o directorio, los permisos de grupo afectan al grupo propietario y, por último, otros afectan al resto de usuarios del sistema. Dentro de cada nivel de permisos existen tres tipos de derechos de lectura r de escritura w y de ejecución x. En archivos, los derechos de lectura y escritura permitirán leer y escribir el archivo respectivamente y el derecho de ejecución ejecutar si se trata de un fichero que contiene código ejecutable. Ejemplo: chmod rwx,r,r archivo.txt Comando: chown Formato: chown [opciones] usuario archivos Descripción: Permite el cambio de usuario propietario de un archivo o directorio. Para cambiar el propietario de un archivo o directorios hay que ser el propietario de dicho archivo o ser el usuario root. Si se cambia la propiedad de un archivo sin ser el root ya no se podrá volver a obtener dicha propiedad, esta acción la tendrá que hacer el nuevo propietario o el root. Ejemplos: chown jdalanis tabla.txt Cambia el propietario de tabla.txt al usuario jdalanis
Página 95 de 183
Línea de comando
Comando: du du [opciones] archivos Formato: Descripción: Informa sobre la cantidad de espacio que ocupan en disco los archivos y directorios indicados como parámetros. Si no se da ningún parámetro se da la información del directorio actual. Las opciones más utiles son: -k Muestra los tamaños en kilobytes. -s Muestra el tamaño que ocupa cada subdirectorio en conjunto con la suma de todo lo que ocupa su contenido. -h Muestra el tamaño que ocupa la partición para que sea entendible para los humanos. Ejemplos: du –s /var Muestra el tamaño total ocupado por el directorio /var y todo su contenido. Comando: df Descripción: Muestra información acerca de las particiones y el porcentaje que cada partición ocupa sobre el disco duro o unidad. Si por el contrario se introduce un directorio, se mostrarán sólo las estadísticas de la unidad de disco que incluye dicho directorio. Además muestra donde está montada la partición, cuál es su tamaño. Las principales opciones para usar con df son: -h Nos enseña el número de bloques ocupados en gigabytes, megabytes o kilobytes ? de forma legible para el ser humano human readable Tipo de unidad (ext2, nfs, etc.). -t Muestra los resultados en i-bloques para cada sistema de archivos -k
MONITOREO DE PROCESOS
Comando: ps Formato: ps [opciones] Informa acerca de los procesos que en ese momento se están ejecutando en el sistema. Si no Descripción: le pasamos ninguna opción, sólo nos ofrecerá un pequeño informe de los procesos asociados a nuestra terminal. En el sistema BSD, esta orden funciona de forma diferente como lo hace en UNIX System V. Las opciones más comunes para este último son: -e -f
Informa de todos los procesos que hay en el sistema. Proporciona una lista completa de cada proceso, incluyendo el identificador de cada uno de ellos (PID) y el identificador del proceso padre (PPID). -l Da listados largos y completos que contiene muchos detalles de los procesos de los que informa, incluyendo prioridad, valor nice y tamaño de la memoria. Ejemplo: ps –ef UID PID PPID C STIME TTY TIME COMMAND Root
0
0
0
12:04:19
?
0:00
swapper
Root
1
0
0
12:04:19
?
0:00
/etc/init
Root
2
0
0
12:04:19
?
0:00
/pagedaemon
Root
4
0
0
12:04:19
?
0:00
netisr
Root
3332
0
0
12:04:46
?
0:00
/etc/vtdaemon
Root
3288
1
0
12:04:33
?
0:00
/etc/rlbdaemon
Chan
4025
1
0
12:23:22
Tyy0
0:02
ksh Línea de comando
Analicemos cada uno de los campos anteriores: Página 96 de 183
UID PID PPID C
Nombre del usuario propietario del proceso. Identificador del proceso. Identificador del proceso padre. Índica la cantidad de recursos de CPU que el proceso ha utilizado recientemente. El núcleo utiliza esta información para calcular la prioridad. Este campo puede ser modificado con la orden nice. STIME Instante de comienzo del proceso. TTY Terminal asociado al proceso. Es el terminal usado por el proceso para operaciones de lectura y escritura estándar. Algunos procesos no están asociados a ningún terminal, en cuyo caso la columna de TTY de la salida contiene el símbolo de interrogación, ?. TIME Tiempo de CPU asignado al proceso. COMMAND Nombre del programa que contiene la imagen del proceso.
Comando: kill Formato: kill [-señal] PID [PID...] Descripción: La orden kill, como hemos dicho, se utiliza para enviar señales. El que envía la señal debe ser el propietario de los procesos o el administrador del sistema. Por defecto, kill envía la señal número 15 al proceso especificado, con intención de terminar su ejecución. Esta señal número 15 lo máximo que hace es avisar al proceso que termine por sí mismo, pero el proceso puede ignorarla. Si queremos eliminar el proceso definitivamente, lo mejor es enviarla la señal número 9, que no se puede ignorar. Ejemplo: Imaginemos que queremos eliminar el proceso tail cuyo PID es el 1809. La forma de hacerlo sería: kill –9 1809
COMANDOS VARIOS Comando: finger Formato: finger [opciones] usuarios Este comando se utiliza para obtener información sobre los usuarios del sistema, muestra toda Descripción: la información referente a un usuario que hay registrada en el sistema. Si solo se invoca el comando sin ninguna opción ni nombre de usuario nos da información referente a los usuarios actualmente conectados al sistema. Podemos pedir información sobre usuarios de otras computadoras conectadas en red poniendo:[email protected]. Ejemplo: finger jdalanis Nos devolverá la información almacenada referente al usuario jdalanis Comando: clear Formato: clear Descripción: Borra la pantalla completamente de la terminal en la que se esté trabajando. Comando: man Formato: man [comando] Descripción: Localiza y muestra la(s) página(s) del manual del comando especificado. man date Ejemplo: El manual en línea man contiene páginas del manual para cada comando y otras páginas acerca de las funciones internas que los programadores utilizan, formatos para diferentes tipos de sistema de archivo, descripciones de hardware que puede conectarse a su Sistema Operativo.
Página 97 de 183
Línea de comando
Comando: cal cal [-j] [-y] [mes] [año] Formato: Descripción: Muestra en pantalla el calendario del año indicado, o del mes indicado. Ejemplos: cal Muestra en pantalla el calendario del mes actual. cal 4 1974 Muestra el calendario de abril de 1974. cal 2010 Muestra el calendario del año 2010. Comando: Formato:
who who [opciones] [archivo] who am i Descripción: Informa sobre quién está en el sistema. Lista el nombre de conexión, el nombre de la terminal y el momento de conexión para cada usuario conectado al sistema LINUX. También puede escribir who am i y sólo se imprimirá la línea de la terminal en la cual se escribió el comando.
Ejemplos:
who El comando who se ocupa para saber quién se encuentra en el sistema con la finalidad de: mandar mensajes, conocer la carga del sistema o para verificar la actividad en el sistema antes de su cierre.
Comando: passwd Formato: passwd [nombre del usuario] Descripción: Cambia la contraseña del usuario (password), siempre que ya se haya registrado. Una contraseña sólo puede ser cambiada por el propietario de la misma, passwd pedirá que escriba la contraseña actual para probar que aún es la misma persona que cuando se llevó a cabo el registro. Posteriormente el programa. passwd pide la nueva contraseña dos veces para asegurarse de que sea correcta. Si se ha introducido la misma contraseña las dos veces, la orden passwd cambiará la idea de que el sistema tiene la contraseña y regresará luego al shell de la forma usual para aceptar la siguiente orden. Si se comete un error, el programa passwd acabará volviendo al shell para que se pueda intentar de nuevo. Si se cancela la ejecución del comando passwd, acabará dejando la vieja contraseña todavía en activo. Si olvidara la contraseña, no hay manera de recuperarla, ni aún el administrador del sistema puede hacerlo. Puede asignarle una nueva. El administrador del sistema podrá crear una contraseña nula o variar las contraseñas de los distintos usuarios. Comando: shutdown Formato: /sbin/shutdown [-t segundos] [-rkhncf] tiempo [mensaje] Descripción: Termina todos los procesos que se estén ejecutando en el sistema de manera ordenada. Cierra el sistema, parando todas las conexiones y esperando antes de detenerse mientras lanza mensajes de aviso. Cuando se especifica una hora, el cierre se realizará a la hora indicada. Sólo el superusuario o un usuario con autorización pueden ejecutar la orden shutdown. Las opciones son: -r Reinicia después de cerrar. -h Se detiene después de hacer el shutdown. mensaje Envía el mensaje a todos los usuarios.
Ejemplos:
shutdown –h +10 El sistema se cierra al cabo de 10 minutos. shutdown –r now Línea de comando
Cierra el sistema inmediatamente y después lo vuelve a arrancar. Página 98 de 183
shutdown –h +5 “El sistema necesita un descanso” Advierte a los usuarios del cierre del sistema para darles tiempo a terminar lo que estén haciendo. El comando shutdown forma parte del procedimiento de desconexión, que tiene como finalidad mantener la sanidad del sistema cuando se arranque de nuevo. shutdown trata de evitar que los procesos en ejecución no se vean afectados o alterados por la caída o desconexión del sistema
Comando: exit Formato: exit Descripción: Indica que se ha terminado la sesión y libera a la terminal para ser utilizada por alguien más o para ingresar con un identificador distinto. La terminación o despedida impide que gente extraña utilice la terminal y el identificador para provocar perjuicios potenciales. REDIRECCIONAMIENTO Y TUBERÍAS
Símbol Significado o < Se usa para redireccionar la entrada en un comando o programa a fin de que provenga de un archivo y no de la terminal, es decir, en vez de que la entrada provenga del teclado de la terminal, viene de un archivo. Por ejemplo, el siguiente comando envía por correo electrónico el archivo info al usuario jdalanis mail jdalanisu < info En vez de volver a escribir el contenido del archivo info hacia el comando mail, se utiliza dicho archivo como la entrada (stdin) hacia el comando mail. > Se emplea para redireccionar la salida de un programa hacia un archivo, es decir, en vez de que la salida vaya a la pantalla de la terminal, se coloca en un archivo. Por ejemplo, el siguiente comando guarda la hora y fecha actuales en el archivo fecha: date > fecha En lugar de que el comando date despliegue la hora y fecha actuales en la pantalla de la terminal las envía al archivo fecha. Linux crea o sobreescribe el archivo a la derecha del símbolo >, por lo que debe tenerse cuidado de no destruir información útil de esta manera. >> Se usa para añadir información a un archivo existente. Por ejemplo, el siguiente comando agrega la fecha actual a un archivo llamado reporte: date >> reporte Tuberías Con frecuencia es necesario utilizar la salida de un proceso como entrada de otro, o dicho de otra manera, un proceso podría generar cierta salida que fuera utilizada por otro. Por ejemplo, en el comando: cat cartas.txt | grep amor el primer proceso, que ejecuta cat, y muestra el archivo cartas.txt. El segundo proceso, que ejecuta grep, selecciona e imprime en la salida estándar todas las líneas que contienen la palabra “amor” desde la salida generada por el primer proceso. En vez de introducir cada comando por separado y guardar los resultados en archivos intermedios, puede conectar una secuencia de comandos por medio de una tubería. El carácter de tubería de Linux es una barra vertical ( | ). Página 99 de 183
6.- PROGRAMACIÓN
Programación orientada a objetos
INTRODUCCIÓN A LA POO. La programación orientada a objetos, se ha convertido en uno de los motores claves para el desarrollo de software en la década de los noventas, sin embargo, de manera contraria a como se creía, la POO no es una tecnología nueva, si no que ha existido desde la década de los 60’s. La POO basa su filosofía en los objetos, entidades que pueden ser tomadas del mundo real, como personas, lugares o cosas, y que tienen atributos o datos, y métodos o funciones, que son el conjunto de cosas que puede hacer un objeto.
FUNDAMENTOS DE PROGRAMACIÓN ORIENTADA A OBJETOS (POO). Los programas estructurados se basan en estructuras de control bien definidas, bloques de código, subrutinas independientes que soportan recursividad y variables locales. La esencia de la programación estructurada es la reducción de un programa a sus elementos constituidos. La programación orientada a objetos permite descomponer un problema en subgrupos relacionados. Cada subgrupo pasa a ser un objeto autocontenido que contiene sus propias instrucciones y datos que le relacionan con ese objeto. Todos los lenguajes Orientados a Objetos comparten tres características: Encapsulación, Polimorfismo y Herencia. La característica más importante de C++ es que es un lenguaje orientado a objetos. Este tipo de lenguajes permite organizar el código en una forma más intuitiva que otros tipos de lenguaje. El principal objetivo en un lenguaje orientado a objeto es que se pueden crear objetos que contienen los datos y los métodos para manipularlos. Además, el programador puede decidir si los datos y los métodos son visibles o no al resto del programa, en C++ estos objetos se implementan mediante clases. Las clases son muy similares a las estructuras.
MECANISMOS BÁSICOS DE LA POO. Objeto: Conjunto de variables y funciones pertenecientes a una clase encapsulados. A este
encapsulamiento es al que se denomina objeto. Por tanto la clase es quien define las características y funcionamiento del objeto.
Mensaje: es lo mismo que una llamada a una función. En programación orientada a objetos se envían
mensajes en lugar de llamar a funciones. En principio se puede pensar en ambas cosas como equivalentes.
Método: es una función contenida en una clase
Programación orientada a objetos
Clases: Una clase es un grupo de datos y métodos (funciones). Es sólo un patrón que será usado
para crear una variable que pueda ser manipulada en el programa. Un objeto es un ejemplo de una clase, lo que es similar a decir que una variable que hemos definido como un ejemplo de un tipo. Un objeto es lo que realmente se utiliza en un programa, ya que tiene valores que pueden ser cambiados. Página 100 de 183
Subclases: Una subclase, es aquella clase que ha sido desarrollada tomando como base otra u otras
clases, para obtener una subclase se hace uso del mecanismo de herencia que permite compartir métodos y atributos entre clases.
CARACTERÍSTICAS DE LA POO 1.- Abstracción: Es el proceso mediante el cual se logran abstraer las características generales de
un objeto real, para a partir de él formar una clase.
2.- Encapsulamiento: Las funciones son una interface a través de la cual se manipulan los datos
almacenados en una clase. Usando estos métodos, podemos manipular y extraer datos de un objeto sin saber qué tipos de datos se usan para almacenar los datos. Esto se conoce como encapsulación de datos, y es un concepto muy importante en la programación orientada a objetos. Encapsulación es la habilidad de una parte de un programa para ocultar sus datos al resto del código, impidiendo así accesos incorrectos o conflictos con los nombres de otras variables. Las secciones de una clase que han sido etiquetadas como public permiten que los campos (variables o funciones) que le siguen en la clase puedan ser accedidas desde cualquier parte del programa, mientras que la palabra private indica que los campos que le siguen sólo son accesibles por el código que forma parte de la misma clase.
3.-Herencia: Proceso mediante el cual un objeto puede adquirir las propiedades de otro objeto. La
información se hace manejable gracias a la clasificación jerárquica.
4.- Polimorfismo: Es la cualidad que permite que un nombre se utilice para dos o más propósitos relacionados pero técnicamente diferentes. El propósito es poder usar un nombre para especificar una clase general de acciones. Por ejemplo en C tenemos tres funciones distintas para devolver el valor absoluto. Sin embargo en C++ incorpora Polimorfismo y a cada función se puede llamar abs().
Página 101 de 183
Programación avanzada
APLICACIONES EN MODO GRÁFICO EN C#
1. Introducción y fundamentos para el manejo de gráficos El sistema operativo Windows proporciona una interface compuesta de muchos controles gráficos que permiten la interacción con el usuario final. Las aplicaciones desarrolladas en la plataforma .NET se consideran también como aplicaciones gráficas. Justificación: Es necesario que se tenga una forma de acceso a los recursos gráficos del sistema operativo, sobre todo cuando la información que va a manejar una aplicación requiere de una representación gráfica personalizada y que va cambiando con respecto al comportamiento de la información. GDI+ • Antes de .NET: Fuerte dependencia entre el lenguaje y el Hardware de generación de gráficos. • La tecnología GDI+ se encarga de proporcionar una programación independiente del dispositivo físico sobre el que se van a generar los gráficos. • GDI+ divide su campo de trabajo en tres áreas principales. Generación de gráficos vectoriales 2D Manipulación de imágenes en los formatos gráficos más habituales. Visualización de texto en un amplio abanico de tipos de letra. Evolución en el desarrollo de gráficos
1.1Primitivas de Graficación Tres acciones para la creación de un gráfico: 1. Definir un objeto en donde se va a crear la gráfica (como una hoja de papel o lienzo). 2. Establecer el objeto con el cual se va a graficar (como un lápiz o un lapicero) 3. Elegir qué control va a servir como contenedor de la gráfica, ya que como la programación es independiente al dispositivo, una gráfica ya creada, se puede visualizar en cualquier control de la aplicación. Instancias de clases que se encuentran dentro del namespace System.Draw 1. El objeto para definir donde se va a realizar la gráfica es una instancia de la clase Graphics, para definir 2. el lapicero o brocha para pintar se usan instancias de la clase Pen o SolidBrush y para establecer en que 3. control se va a visualizar el dibujo se puede usar cualquier control que contenga el método CreateGraphics. Primera primitiva de graficación: Línea Página 102 de 183
Graphics hoja; Pen pluma = new Pen(Color.MidnightBlue , 2); hoja = panel1.CreateGraphics();
Programación avanzada
hoja.Clear(Color.Blue); int x1, y1, x2, y2; x1 = panel1.Width / 2; y1 = panel1.Height / 2; x2 = x1; y2 = panel1.Height; hoja.DrawLine(pluma, x1, y1, x2, y2);
1.1clases y métodos para graficar clase Graphics clase pen clase brush
Métodos más comunes : DrawLine DrawRectangle, DrawEllipse DrawPolygon DrawCurve DrawBezier DrawPie DrawLine hoja.DrawLine(pluma, x1, y1, x2, y2); Donde X1,Y1 representan el punto inicial de la línea y X2, Y2 representan el punto final de la línea. Point punto1= new Point() ; Point punto2= new Point (); punto1.X = panel1.Width / 2; punto1.Y = panel1.Height / 2; punto2.X = punto1.X; punto2.Y = panel1.Height; hoja.DrawLine(pluma, punto1, punto2); Página 103 de 183
Point punto1 = new Point(panel1.Width / 2, panel1.Height / 2); Point punto2 = new Point(punto1.X, panel1.Height); hoja.DrawLine(pluma, punto1, punto2); hoja.DrawLine(pluma, new Point(panel1.Width / 2, panel1.Height / 2), new Point(panel1.Width / 2, panel1.Height));
DRAWRECTANGLE: Este método permite crear un rectángulo en la posición y longitudes indicadas, su sintaxis tiene dos formas que son: • hoja.DrawRectangle(pluma ,new Rectangle (10,10,20,40)); •
hoja.DrawRectangle(pluma,10,10,40,50);
La primera hace uso de una instancia de la clase rectangle, que es una clase con los parámetros siguientes: •
Rectangle(X1,Y1, width, height)
•
Donde X1,Y1 representan su esquina superior izquierda del rectángulo y width su longitud sobre el eje x a partir de la coordenada X1 y height su longitud sobre el eje y a partir de y1. Programación avanzada
DRAWELLIPSE: Una elipse es un ovalo o forma circular, determinada por el rectángulo que la encierra. Las dos dimensiones de este rectángulo son los diámetros de la elipse. La sintaxis de este método tiene dos formas que son: • hoja.DrawEllipse(pluma,new Rectangle (10,10, 80,90)); •
hoja.DrawEllipse(pluma, 10, 10, 90, 90);
DRAWPOLYGON: Este método dibuja un polígono arbitrario, solo sigue el orden de los puntos (point) que se le pasan como argumento y el punto final lo enlaza automáticamente con el punto inicial, para cerrar la figura y dejar el polígono correspondiente. Su sintaxis general es la siguiente: Graphics.DrawPolygon(pen, points()); Donde points() es un arreglo de instancias de la clase point. Point[] puntos = new Point[] { new Point(230, 190), new Point(125, 60), new Point(250, 140),new Point(260, 250),new Point(310, 190), new Point(330, 220), new Point(310, 300),new Point(270, 390), new Point(190, 360), new Point(250, 330),new Point(190, 300), new Point(230, 270), new Point(230, 190)}; hoja.DrawPolygon(pluma, puntos);
Página 104 de 183
DRAWCURVE: Como su nombre lo indica, este método permite crear curvas a través de una serie de puntos dados. Cada punto que se agregue es por donde va a pasar la curva, por lo tanto entre más puntos se tengan, la curva tendrá mayor resolución y definición. Este tipo de curvas es similar a crear una curva con una cuerda que va a pasar por varios clavos en una pared, como la cuerda es un material no rígido y muy manejable, necesita una determinada tensión para la generación de la curva, si la tensión es muy grande en lugar de una curva parecerá un conjunto de rectas unidas, y si la tensión es mínima la cuerda puede quedar demasiado suelta y hacer más curvas de las esperadas. La sintaxis general de este método es la siguiente: Graphics.DrawCurve(pen, points, tension) Donde points es un arreglo de instancias point que contiene los “clavos” por donde va a pasar la cuerda y tension es un valor flotante donde 0 representa la mayor tensión. Una curva se define bien con una tensión de 0.5 o 0.8, tensiones mayores a 1 hacen curvas inesperadas. Point[] clavos = new Point[] { new Point(20, 50), new Point(220, 190), new Point(330, 80), new Point(450, 280) }; hoja.DrawCurve(pluma,clavos,0);
DRAWBEZIER: Con este método se puede generar una curva de Bezier, la cual es más suavizada y solo se define a través de cuatro puntos, – el punto inicial, –
el punto de control 1,
–
el punto de control 2 y
–
el punto final.
•
La curva no pasa a través de los puntos de control, solo sirven para darle una orientación a la curva.
•
Semejando con el mundo real, es como si se estuviera creando una curva con un alambre y los puntos de control son dos imanes que marcan el sentido de la misma. Programación avanzada
•
hoja.DrawBezier(pluma, new Point(120, 150), new Point(200, 90), new Point(330, 30), new Point(410, 110));
DRAWPIE: Este método dibuja un pie, similar a una porción de pastel, es decir, es un arco unido por dos segmentos de línea que se conectan al centro de un círculo, o una elipse. • Graphics.DrawPie(pen, X, Y, width, height, start, sweep); –
Donde X, Y, width y height representan el rectángulo de la elipse,
–
start es el ángulo donde inicia el pie y Página 105 de 183
– •
sweep representa el desplazamiento en grados a partir del ángulo inicial.
hoja.DrawPie(pluma,40,80,70,70,0,90);
1.1Programación de Aplicaciones La aplicación de los métodos de graficación va a depender de las necesidades del programador. Uso común: la animación de objetos. Ir dibujando y borrando un mismo elemento gráfico desde distintas posiciones creando un efecto de movimiento. Ejemplo: Hacer un programa que permita la animación de cinco círculos que comiencen en el centro del área de dibujo y se vayan moviendo en distintas direcciones hasta los límites superiores del área de dibujo. Diseño del Formulario Botón que activa la animación y, Área de dibujo que es un control label con el tamaño suficiente (AutoSize-False) y con su estilo de bordes definido para visualizar el cuadro correspondiente (BorderStyle-Fixed3D) • • •
Graphics hoja; Pen plu = new Pen(Color.Red, 2); Pen plu2 = new Pen(Color.White, 2); hoja = label1.CreateGraphics(); hoja.Clear(Color.White); int x1, y1, longi; Rectangle cuadrito = new Rectangle (); Rectangle cuad2 = new Rectangle(); Rectangle cuad3 = new Rectangle(); Rectangle cuad4 = new Rectangle(); Rectangle cuad5 = new Rectangle(); x1 = (label1.Width / 2) - 20; y1 = (label1.Height / 2) - 20; longi = 40; cuadrito.X = x1; cuadrito.Y = y1;
Programación avanzada
cuadrito.Width = longi; cuadrito.Height = longi; cuad2 = cuadrito; cuad3 = cuad2; cuad4 = cuad3; cuad5 = cuad4; for (int z=1; z<=y1; z+=4) { hoja.DrawEllipse(plu, cuadrito); Página 106 de 183
hoja.DrawEllipse(plu, cuad2); hoja.DrawEllipse(plu, cuad3); hoja.DrawEllipse(plu, cuad4); hoja.DrawEllipse(plu, cuad5); for (int a = 0; a <= 15000; a++) { for (int b = 0; b <= 1000; b++) { } } hoja.DrawEllipse(plu2, cuadrito); hoja.DrawEllipse(plu2, cuad2); hoja.DrawEllipse(plu2, cuad3); hoja.DrawEllipse(plu2, cuad4); hoja.DrawEllipse(plu2, cuad5); cuadrito.Y -= 4; cuad2.X -= 4; cuad3.X += 4; cuad4.X -= 3; cuad4.Y -= 3; cuad5.X += 3; cuad5.Y -= 3;
} hoja.DrawEllipse(plu, cuadrito); hoja.DrawEllipse(plu, cuad2); hoja.DrawEllipse(plu, cuad3); hoja.DrawEllipse(plu, cuad4); hoja.DrawEllipse(plu, cuad5);
MANEJO DE ERRORES CON EXCEPCIONES
Los errores causados por un programa de computadora pueden ser clasificados dentro de tres grupos principales: Tiempo de diseño, Ejecución, y lógico. El error en tiempo de diseño es el más fácil de encontrar y arreglar. Un error de este tipo ocurre cuando se escribe código no siguiendo las reglas del lenguaje de programación.
• •
Programación avanzada
•
•
•
•
•
Son fáciles de encontrar debido a que Visual Estudio .NET no solo indica donde está, sino que parte de la línea es incompresible para el lenguaje.
Los errores en tiempo de ejecución son más difíciles de ubicar, debido a que Visual Studio no proporciona una ayuda para encontrar el error hasta que este ocurre en la ejecución del programa. Estos errores ocurren cuando un programa intenta alguna cosa ilegal, como acceder a datos que no existen o recursos para los cuales no se tienen los permisos adecuados. Este tipo de errores puede causar que el programa se cuelgue a menos que sean manejados adecuadamente. El tercer tipo de error, el error lógico, es frecuentemente el más insidioso para ubicar, debido a que por sí mismo puede no manifestarse como un problema en todo el programa. Página 107 de 183
•
•
Un programa con un error lógico simplemente significa que la salida u operación del programa no es exactamente como se esperaba. Lo anterior puede ser ocasionado por un cálculo incorrecto o tener una opción de menú habilitada cuando se quería deshabilitar, etc.
Excepciones integradas Un error en tiempo de ejecución en C#.NET genera una excepción. Una excepción es una respuesta a una condición de error que el programa ha generado. El manejo de un error es una sección de código de C#.NET que permite detectar excepciones y ejecutar los pasos necesarios para recuperar el control después del error. Considere el siguiente bloque de código dentro del evento clic de un botón. private void button1_Click(object sender, EventArgs e) { string cadena = "cochinos"; button1.Text = cadena.Substring (10,1); } El código está intentando desplegar el onceavo carácter en la cadena “cochinos”. La cadena sólo contiene ochos caracteres y una excepción es generada al momento de ejecutar el evento, como lo muestra la siguiente imagen. • • •
•
•
• •
Lo primero que debe notarse es el hecho de que el mensaje ocurre en tiempo de ejecución como un tipo de excepción no controlada. Esto significa que la línea de código que ha generado el error no está contenida dentro de un bloque de manejo de excepción. La segunda pieza de información es que la excepción es del tipo ArgumentOutOfRangeException. Los errores pueden ser clasificados en grupos, en el caso anterior el mensaje indica que el objeto excepción generado es de dicha clase, la cual es descendiente de la clase Exception. Programación avanzada
•
La información adicional indica algunas notas específicas sobre la naturaleza del error, para el ejemplo, el índice –startIndex no puede ser mayor que la longitud de la cadena.
Estructura de una excepción
El siguiente código contiene el mismo problema que en la sección anterior pero contiene una forma simple de atrapar el error que se produce. private void button1_Click(object sender, EventArgs e) { string cadena = "cochinos"; try { button1.Text = cadena.Substring(10, 1); Página 108 de 183
} catch { button1.Text = "Error"; } } •
•
•
•
El código intenta hacer lo mismo que el código anterior, pero esta vez la sentencia de la cadena “defectuosa” es envuelta entre el bloque try … Catch … Este bloque representa el manejo básico de una excepción. Si algún código después de la sentencia Try genera una excepción, el control del programa automáticamente salta al código después de la sentencia Catch. Si excepciones no son generadas en el código bajo la sentencia Try, entonces el bloque Catch es pasado por alto. Cuando el código es ejecutado, ArgumentOutOfRangeException se genera y el código no termina con un mensaje. En su lugar, la propiedad text del botón establece la palabra “Error”, y el programa continúa con su ejecución.
Una variación en el manejo de excepciones es el siguiente: private void button1_Click(object sender, EventArgs e) { string cadena = "cochinos"; try { button1.Text = cadena.Substring(10, 1); } catch (Exception oEx) { button1.Text = oEx.Message; } } •
•
En esta ocasión, la excepción genera una instancia de la clase Exception y localiza dicha instancia en una variable llamada oEX. Tener la variable de una instancia de excepción es útil debido a que ofrece el texto del problema, que es desplegado en un mensaje. Programación avanzada
De hecho, desplegar el mensaje de la excepción dentro de una ventana es mucho mejor que hacerlo durante la ejecución del programa con una excepción no controlada. Note que el control de la excepción anterior no diferencia entre los diferentes tipos de errores, si alguna excepción es generada dentro del bloque Try, entonces el bloque Catch es ejecutada. Es posible escribir un control de excepción que maneje diferentes clases de errores, por ejemplo vea el siguiente código. private void button2_Click(object sender, EventArgs e) { try { button2.Text = listBox1.SelectedItem.ToString(); } catch (NullReferenceException oEx) { MessageBox.Show("Por favor selecciona un elemento del ListBox"); MessageBox.Show(oEx.Message);
•
•
•
Página 109 de 183
} •
•
• • •
•
•
•
•
} catch (Exception oEx) { MessageBox.Show("Otro error" + oEx.Message); }
Este código intenta tomar el item seleccionado en un ListBox y lo despliega en el texto de un botón. Si ningún item es seleccionado en el ListBox, entonces NullReferenceException será generada, y se usa la información para indicarle al usuario que debe hacer una selección de item en el ListBox. Si algún otro tipo de excepción es generada, el código despliega el texto del mensaje de error. Observe que, el control de excepción más específico se encuentra primero y el control de excepción más general posteriormente. El programador debe tener cuidado en el orden de establecer el control de las excepciones. Además la variable oEX es reutilizada en cada bloque de excepción. Lo anterior es posible debido a que la sentencia Catch en realidad sirve como una declaración de la variable y la variable oEX tiene un alcance local sólo dentro del bloque Catch. Finalmente, la instancia de la excepción es declarada en cada bloque Catch con alcance también dentro de su bloque. Cuando una excepción es generada y manejada por una sentencia Catch, la ejecución del código es transferida inmediatamente al primer bloque de control de excepción Catch relevante y entonces continua fuera del bloque Try … Catch … Algunas veces, puede ser necesario ejecutar algún tipo de limpieza antes de moverse fuera del bloque de control de excepción. Considere el siguiente código:
private void LeerArchivoTexto(string nombreArchivo) { StreamReader flujoLectura; string linea; Boolean valorB = false; listBox1.Items.Clear(); flujoLectura = new StreamReader(nombreArchivo); try {
} •
Programación avanzada
while (!valorB) { linea = flujoLectura.ReadLine(); if (linea == null) valorB = true; else listBox1.Items.Add(linea); } flujoLectura.Close();
} catch (Exception oEx) { MessageBox.Show(oEx.Message); }
Este método intenta leer el contenido de un archivo de texto y colocar el resultado dentro de un ListBox, línea por línea. Página 110 de 183
•
•
•
•
•
Mucho del código de lectura es envuelto dentro de un controlador de excepción genérico. Si alguna excepción es encontrada en el ciclo principal, entonces la línea flujoLectura.Close( ) dentro del vecindario nunca será ejecutada. Lo anterior significa que el flujo del archivo nunca será apropiadamente cerrado, posiblemente conduciendo a una fuga de recurso. Afortunadamente, existe un tipo adicional de bloque disponible en el control de una excepción que específicamente permite evitar este tipo de problema. Este nuevo bloque es llamado el bloque Finally. El código dentro de un bloque Finally siempre se ejecuta, si alguna excepción es generada o no. Considere el siguiente código modificado respecto al anterior:
private void LeerArchivoTexto(string nombreArchivo) { StreamReader flujoLectura; string linea; Boolean valorB = false; listBox1.Items.Clear(); flujoLectura = new StreamReader(nombreArchivo); try { while (!valorB) { linea = flujoLectura.ReadLine(); if (linea == null) valorB = true; else listBox1.Items.Add(linea); } } catch (Exception oEx) { MessageBox.Show(oEx.Message); Programación avanzada } finally { flujoLectura.Close(); } } •
• •
En este caso, si alguna excepción dentro del ciclo de lectura del archivo ocurre será manejada con una ventana de mensaje, y entonces el objeto StreamReader es cerrado dentro del bloque Finally. La sentencia de cerrar se ejecuta si el código dentro del bloque Try … Catch se ejecuta o falla. Esto permite garantizar que ciertos recursos o controles son apropiadamente dispuestos cuando ya no son necesitados.
Tipos de excepciones •
Existen cientos de clases de excepción construidas dentro del entorno .NET, la figura siguiente muestra la ventana de diálogo de excepciones que se encuentra en el menú Depurar.
Página 111 de 183
Buscando en el árbol mostrado por la ventana se pueden encontrar eventualmente todas las clases que generan excepciones del entorno .NET que pueden ser usadas en las sentencias Catch según el tipo de error que se desea controlar en un orden específico o genérico.
•
Excepciones personalizadas Conforme se es más hábil en la escritura de clases, probablemente se encuentre uno con la necesidad crear excepciones propias. Imagine escribir el código para una propiedad de cierta clase de tipo entero que tiene un cierto rango. Si un desarrollador está usando la clase e intenta configurar la propiedad a un valor más allá del rango, es posible que se quiera informar al desarrollador que ha proporcionado un valor inválido. La mejor forma para informarle de este problema es enviándole una excepción. Suponga escribir la clase CtaCredito, para llevar el control de cuentas bancarias. Se introduce el titular de la cuenta y un importe para el crédito que necesita asignar. No obstante, dicho crédito no podrá sobrepasar el valor de 2500; así que, para controlar tal circunstancia, se crea adicionalmente, la clase CreditoException, que heredando de Exception, contendrá información en uno de sus miembros, sobre la excepción producida en cuanto al importe que se intentó asignar a la cuenta. •
• •
• • • •
// esta clase contiene la información sobre un error // producido en un objeto CtaCredito class CreditoException : Exception {
}
private readonly String mDescription; public CreditoException(String lsDescription) { mDescription = lsDescription; } public string Descripsion { get { return mDescription; } }
Programación avanzada
class CtaCredito { private string mTitular; private readonly double mDisponible; //propiedad Titular Página 112 de 183
public string Titular { get { return mTitular; } set { mTitular = value; } } //propiedad Credito de solo lectura public double Credito { get { return mDisponible; } } /* en este método, si se intenta asignar un importe superior al permitido, se lanza una excepción, utilizando un objeto de la clase CreditoException, heredado de Exception */ public void AsignarCredito(double ldbCredito) { if (ldbCredito > 2500 ) throw new CreditoException("Límite disponible: 2500 - se intento asignar " + Convert .ToString (ldbCredito )); else mDisponible = ldbCredito; } }
Programación avanzada
•
El esquema del proceso es el siguiente: cuando al método AsignarCredito( ), de un objeto CtaCredito, se intente asignar un valor no permitido, se genera un nuevo objeto CreditoException y se lanza a través de la palabra clave throw, que es la encargada de emitir las excepciones en el entorno de ejecución. El uso de estas clases sería:
Agregar un botón con el texto: Uso de Exception Personalizada. Agregar un label con el texto: Mensajes.
Evento clic del botón //crear un objeto de la nueva clase CtaCredito CtaCredito oCredito = new CtaCredito(); try { //asignar valores a propiedades oCredito.Titular = "Nancy lopez"; oCredito.AsignarCredito(1000); //no hay error en la expresion anterior label1.Text = "El crédito actual de: " + oCredito.Titular + " es de: " + Convert.ToString(oCredito.Credito); //la siguiente instruccion produce un error oCredito.AsignarCredito(5000); } Página 113 de 183
catch (CreditoException oExep) { //manipulador para las excepciones producidas sobre un objeto CtaCredito label1.Text = oExep.Descripsion; } finally { MessageBox.Show("El controlador de errores ha finalizado"); }
Página 114 de 183
Programación para la web
PROGRAMACIÓN PARA LA WEB Estructuración de un documento Las etiquetas más básicas son las que forman el esqueleto de la página: Define que se iniciara la construcción de una página web.
En esta parte definida como el encabezado, se pueden incluir las funcione de programación de Java script y las Hojas de Estilo.
Define el título de nuestra página Web
Aquí es donde se construirá toda nuestra página, es decir todos los elementos visuales que el usuario observa en la página
una página de ensayo Esto es lo que se visualiza en el navegador Descripción Comentarios
Etiqueta
Colores en el Lugar Párrafos Saltos de línea Texto con preformato Cabeceras Separadores
Tamaño de (fuentes) Tipos de letras
Atributos
->
hasta
ALING=center/left/right alineación SIZE=n ancho de línea, donde n=1 al 10, el 1 es la más fina WIDTH = n longitud de la línea, NOSHADE línea sin relieve
letra negrita cursiva subrayar