Guia Para Egetsu

May 6, 2018 | Author: Anonymous | Category: Documents
Report this link


Description

INDICE PÁGINA 1.- HARDWARE Y HERRAMIENTAS DE APLICACIÓN--------------- 2 A).- Informática aplicada……………………………………………………………… B)- Mantenimiento preventivo………………………………………………………... 2 5 2.- PROGRAMACIÓN------------------------------------------------------------ 8 A).- Lógica de programación…………………………………………………………. 8 B).- Programación de computadoras………………………………………………... 12 C).- Desarrollo de sitios web………………………………………………………….. 20 D).- Bases de datos…………………………………………………………………… 38 3.- REDES--------------------------------------------------------------------------- 44 A).- Comunicación de datos…………………………………………………………. 44 B).- Redes de cómputo………………………………………………………………. 53 4.- ANALISIS Y DISEÑO DE SISTEMAS DE INFORMACION ------ 65 A).- Representación de sistemas con UML, uso y ciclo iterativo e incremental.. 65 B).- Modelado CASE, reingeniería de software e ingeniería de 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………………………………………………………………. 89 6.- PROGRAMACION----------------------------------------------------------- 97 A).- Programación orientada a objetos……………………………………………. B).- Programación avanzada………………………………………………………. C).- Programación para la web……………………………………………………. D).- Programación visual…………………………………………………………… E).- Estructura de datos……………………………………………………………. 97 99 112 121 132 7.-BASES DE DATOS---------------------------------------------------------- 145 A).- Aplicación…………………………………………………………………………145 B).- Seguridad y optimización………………………………………………………. 156 8.- ADMINISTRACION DE LA FUNCION INFORMATICA----------- 160 A).- Administración………………………………………………………………….. 160 B).- Auditoría…………………………………………………………………………. 162 9.- INFORMATICA--------------------------------------------------------------- 165 A).- Paquetería básica……………………………………………………………… 165 B).- Bases de hardware…………………………………………………………….. 169 C).- Sistemas de 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, de salida de datos, de 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. • 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 • • • • Hardware típico de una computadora 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 Relaciónales > Mayor que < Menor que >= Mayor o igual que = 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 primer lugar el lenguaje de programación usado segundo el manejador de base de datos que consideraremos el sistema operativo. JDBC solamente puede usarse con el lenguaje aplicaciones sobre plataforma Windows. datos debemos tomar en cuenta en para desarrollar la aplicación y en emplearemos, por último también JAVA y ODBC sólo funciona para 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 rectá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 ... , 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 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) * 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) * 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) * 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) * 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) * 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 > 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 GET HEAD POST PUT Significado Devuelve el recurso identificado en la URL pedida. 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. Indica al servidor que se prepare para recibir información del cliente. Suele usarse para enviar información desde formularios. 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 DELETE 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. 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. 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 Lo que las hace diferentes es: – 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 en 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 actualizarfá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 amigablespara 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 canales 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 con 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 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 RANGO BINARIO OCTETOS 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 B. 2n-2>28 23-2>28 SE PEDIRÁN PRESTADOS 3 BITS: 23=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 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 = 255.255.255.0 = 192.10.8.224 C. MASCARA DE SUBRED POR DEFAULT: MASCARA DE SUBRED ESPECÍFICA: RED 192.10.8. 111 00000 SUBRED HOST D. RANGO = 256-224 = 32 NUM. SUBRED 0 1 2 3 4 5 6 7 BITS DE SUBRED 000 001 010 011 100 101 110 111 NUM. HOST DECIMAL 0 - 31 32 - 63 64 - 95 96 - 127 128 - 159 160 - 191 192 - 223 224 - 255 DIRECCIÓN DE SUBREDES 192.10.8.0 192.10.8.32 192.10.8.64 192.10.8.96 192.10.8.128 192.10.8.160 192.10.8.192 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 X OSPF X X X X X X X X X MUY RÁPIDO 90 X X X MUY RÁPIDO 115 X X MUY RÁPIDO 110 X LENTO 120 30 SALTOS LENTO 100 90 COMPUESTA COMPUESTA COSTE COSTE 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 RELAY ESTÁNDARES DE LA CAPA FISICA DE protocolo punto a punto • PPP WAN son: • EIA / SDLC control de enlace de datos síncrono • TIA 232 • EIA / SLIP449 TIA 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] Ctl + z Ctl + z Ctl + z Ctl + z SALIDA 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. 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 • PARA ROUTERS CISCO SERIES 1700,2600,4500,7200 y 7500 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 comandos: flash_init 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#  UML)  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. Ejemplo: rmdir cartas Comando: pwd Formato: pwd 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 Formato: cd nombre_del_directorio 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 Formato: ls [opciones] archivos 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 Formato: rm [opciones] archivos 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 Formato: mv [opciones] origen destino 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 Formato: more [opciones] archivo 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 Formato: head [opciones] archivo 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 Formato: grep [opciones] patrón [archivo(s)] 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 Formato: chgrp [opciones] grupo archivos 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. Ejemplo: chgrp invitados p* Cambia el grupo propietario a invitados de todos los archivos que comiencen por la letra p dentro del directorio actual. Comando: chmod Formato: chmod [opciones] modo archivos 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 Formato: du [opciones] archivos 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] Descripción: Informa acerca de los procesos que en ese momento se están ejecutando en el sistema. Si no 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: 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 Root Root Root Root Root Chan 0 1 2 4 3332 3288 4025 0 0 0 0 0 1 1 0 0 0 0 0 0 0 12:04:19 12:04:19 12:04:19 12:04:19 12:04:46 12:04:33 12:23:22 ? ? ? ? ? ? Tyy0 0:00 0:00 0:00 0:00 0:00 0:00 0:02 swapper /etc/init /pagedaemon netisr /etc/vtdaemon /etc/rlbdaemon ksh Línea de comando -e -f 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 Descripción: Este comando se utiliza para obtener información sobre los usuarios del sistema, muestra toda 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. Ejemplo: man date 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 Formato: cal [-j] [-y] [mes] [año] 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 Programación orientada a objetos 6.- PROGRAMACIÓN 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.1 Primitivas 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); Programación avanzada hoja = panel1.CreateGraphics(); 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.1 clases 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.1 Programació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 hasta Atributos 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 Tamaño de (fuentes) Tipos de letras letra negrita cursiva subrayar texto intermitente texto grande, el mayor tamaño de fuente texto pequeño, el menor tamaño de la fuente super indice subindice bloque de texto cursivo Representar con una tabulación y en cursiva. Página 115 de 183 muestra el texto como si fuera una cita se utiliza para representar una etiqueta HTML o código de programa presenta el contenido de un bloque de texto enfatizado texto más enfatizado que el caso anterior. Negrita texto techado centra el texto en la pantalla yyy ; . . . Enlaces Listas Ordenadas Listas desordenadas Imágenes Tablas • Filas • columnas Titulo de la lista Elemento de la lista ALT Asignamos entre comillas un nombre para la imagen FRAMES Titulo Veamos que dos asteriscos separados por una coma, nos ayudan a delimitar las zonas de trabajo. En este caso indicamos que ambas ventana son iguales, también es posible sustituir estos asteriscos por números o porcentajes, por ejemplo: igual a . Formularios FORMULARIOS Nombre completo: Programación para la web Página 116 de 183 Dirección: Ciudad: Código Postal: Teléfono: Fax: Email: Catálogo: Nacional Internacional Completo Programación para la web JAVASCRIP Página 117 de 183 Javascript es un lenguaje de programación utilizado para crear pequeños programitas encargados de realizar acciones dentro del ámbito de una página web. Con Javascript podemos crear efectos especiales en las páginas y definir interactividades con el usuario. El navegador del cliente es el encargado de interpretar las instrucciones Javascript y ejecutarlas para realizar estos efectos e interactividades, de modo que el mayor recurso, y tal vez el único, con que cuenta este lenguaje es el propio navegador Queremos que quede claro que Javascript no tiene nada que ver con Java, salvo en sus orígenes, como se ha podido leer hace unas líneas. Actualmente son productos totalmente distintos y no guardan entre si más relación que la sintaxis idéntica y poco más. Algunas diferencias entre estos dos lenguajes son las siguientes: • Compilador. Para programar en Java necesitamos un Kit de desarrollo y un compilador. Sin embargo, Javascript no es un lenguaje que necesite que sus programas se compilen, sino que éstos se interpretan por parte del navegador cuando éste lee la página. Orientado a objetos. Java es un lenguaje de programación orientado a objetos. (Más tarde veremos qué quiere decir orientado a objetos, para el que no lo sepa todavía) Javascript no es orientado a objetos, esto quiere decir que podremos programar sin necesidad de crear clases, tal como se realiza en los lenguajes de programación estructurada como C o Pascal. Propósito. Java es mucho más potente que Javascript, esto es debido a que Java es un lenguaje de propósito general, con el que se pueden hacer aplicaciones de lo más variado, sin embargo, con Javascript sólo podemos escribir programas para que se ejecuten en páginas web. Estructuras fuertes. Java es un lenguaje de programación fuertemente tipado, esto quiere decir que al declarar una variable tendremos que indicar su tipo y no podrá cambiar de un tipo a otro automáticamente. Por su parte Javascript no tiene esta característica, y podemos meter en una variable la información que deseemos, independientemente del tipo de ésta. Además, podremos cambiar el tipo de información de una variable cuando queramos. Otras características. Como vemos Java es mucho más complejo, aunque también más potente, robusto y seguro. Tiene más funcionalidades que Javascript y las diferencias que los separan son lo suficientemente importantes como para distinguirlos fácilmente. • • • • El lenguaje Javascript tiene una sintaxis muy parecida a la de Java por estar basado en él. También es muy parecida a la del lenguaje C, de modo que si el lector conoce alguno de estos dos lenguajes se podrá manejar con facilidad con el código. De todos modos, en los siguientes capítulos vamos a describir toda la sintaxis con detenimiento, por lo que los novatos no tendrán ningún problema con ella. Comentarios Un comentario es una parte de código que no es interpretada por el navegador y cuya utilidad radica en facilitar la lectura al programador. El programador, a medida que desarrolla el script, va dejando frases o palabras sueltas, llamadas comentarios, que le ayudan a él o a cualquier otro a leer más fácilmente el script a la hora de modificarlo o depurarlo. Ya se vio anteriormente algún comentario Javascript, pero ahora vamos a contarlos de nuevo. Existen dos tipos de comentarios en el lenguaje. Uno de ellos, la doble barra, sirve para comentar una línea de código. El Programación para la web otro comentario lo podemos utilizar para comentar varias líneas y se indica con los signos /* para empezar el comentario y */ para terminarlo. Veamos unos ejemplos. //Este es un comentario de una línea /*Este comentario se puede extender Página 118 de 183 por varias líneas. Las que quieras*/ Mayúsculas y minúsculas En javascript se han de respetar las mayúsculas y las minúsculas. Si nos equivocamos al utilizarlas el navegador responderá con un mensaje de error de sintaxis. Por convención los nombres de las cosas se escriben en minúsculas, salvo que se utilice un nombre con más de una palabra, pues en ese caso se escribirán con mayúsculas las iniciales de las palabras siguientes a la primera. También se puede utilizar mayúscula en las iniciales de las primeras palabras en algunos casos, como los nombres de las clases, aunque ya veremos más adelante cuáles son estos casos y qué son las clases. Separación de instrucciones Las distintas instrucciones que contienen nuestros scripts se han de separar convenientemente para que el navegador no indique los correspondientes errores de sintaxis. Javascript tiene dos maneras de separar instrucciones. La primera es a través del carácter punto y coma (;) y la segunda es a través de un salto de línea. Por esta razón Las sentencias Javascript no necesitan acabar en punto y coma a no ser que coloquemos dos instrucciones en la misma línea. No es una mala idea, de todos modos, acostumbrarse a utilizar el punto y coma después de cada instrucción pues otros lenguajes como Java o C obligan a utilizarlas y nos estaremos acostumbrando a realizar una sintaxis más parecida a la habitual en entornos de programación avanzados. Cómo definir funciones Las funciones se definen por medio del estatuto function, el cual requiere un nombre para la función, una lista de parámetros o argumentos que se pasarán a la función y un bloque de comandos que define lo que hace la función: function nombre_de_la_funcion(parametro1, parametro2, ... , parametroN) { linea_de_comando; ... ... linea_de_comando } Los nombres de las funciones son sensibles a mayúsculas y minúsculas, pueden incluir el guión de subrayado y deben comenzar con una letra. La lista de argumentos se encierra entre paréntesis y van separados por comas. Programación para la web Cómo pasar parámetros En el ejemplo expuesto arriba vemos que la función AlertBox acepta un parámetro llamado cMens. Dentro de la función, las referencias a cMens aluden al valor pasado a la función. Respecto de los parámetros, hay varios aspectos a considerar: • • Tanto las variables como los literales se pueden pasar como argumentos cuando se llama a una función. Si se pasa una variable a una función, al cambiar el valor del parámetro dentro de la función, no se estará alterando el valor de la variable pasada a la función. Página 119 de 183 • Los parámetros existen sólo durante la vida de la función, si llama a una función varias veces, los parámetros se crean de nuevo cada vez que se llama a la función, y los valores que contienen cuando la función terminó la última vez, no se retienen. Si un parámetro de una función tuviere el mismo nombre que una variable externa a la función, la función sólo "verá" el valor del parámetro. Tanto los valores de los parámetros de una función como las variables creadas dentro de la misma, son desconocidos por el resto de las funciones del documento. • • Variables y literales Podemos imaginarnos las variables como cajas para guardar cosas que vamos a necesitar mientras ejecutamos JavaScript. Es habitual declarar variables en la mayoría de los lenguajes de programación. Esto significa que antes de utilizar una variable se le adjudica un nombre con el fin de que, cada vez que se ejecute el programa, se reserve un espacio de memoria para el contenido de la variable. En JavaScript declaramos variables utilizando la palabra clave var: var nombre_variable; También puede incluirse algún contenido al declarar la variable: var nombre_variable = contenido; A esto se lo llama inicializar la variable. Por ejemplo: var cEstado = "Buenos Aires"; var nCodPostal = 1000; var oForms = document.forms; Por otro lado tenemos las literales. Las literales son valores fijos que proporcionan literalmente un valor a un programa. Existen tres tipos de datos literales: numéricos, cadenas y boleanos. • • • Cadenas (strings), "Hola todos" Números , enteros y decimales Boleanos (verdadero|true // falso|false) Programación para la web HOJAS DE ESTILO CSS Las Hojas de estilo son un complemento directo de HTML y conforman un lenguaje con el cual se definen las características formales (apariencia o estilos) de las instrucciones HTML en una página. Con la ayuda de las hojas de estilo se puede definir por ejemplo, que un encabezamiento de 1er. Nivel tenga un tamaño de letra de 18 puntos, usando la fuente “Helvética” sin ser resaltada y a una distancia de 1.75 cm. del párrafo que sigue. Este tipo de descripciones no se pueden hacer en HTML “tradicional”. Ventajas y desventajas Ventajas: • • • Podemos modificarla la presentación de todos los elementos estándar del documento sin tener que modificar el código HTML estructural. Disponemos de comandos y atributos más potentes y precisos con los que podemos maquetar exactamente un documento. Es un lenguaje muy sencillo, ya que se basa en el uso de propiedades muy intuitivas, similares a las de un procesador de texto en inglés. Página 120 de 183 • • • Podemos generar un estilo externo que contenga todas las definiciones de estilo de un documento y modificar éste únicamente para efectuar cambios en una o varias páginas Web. Es uno de los pilares del DHTML y puede combinarse con JavaScript, VBScript, etc. Su uso estructurado y razonado permite ahorrar muchas líneas de código HTML Desventajas: • La principal y la única desventaja hasta el momento podemos decir que es la incompatibilidad entre navegadores distintos. Hay tres navegadores que soportan aceptablemente las CSS; Microsoft Internet Explorer, Netscape y Opera. Aunque todos ellos aseguran la compatibilidad lo cierto es que entre varias versiones de un mismo navegador, ya hay irregularidades. La solución a este inconveniente es conocer las propiedades implementadas en cada versión de navegador, probar nuestros estilos en varios navegadores y pensar que siempre puede haber un navegador visualizando la página sin soporte para CSS, con lo que el HTML será el único código a interpretar. Las Hojas de estilo tienen una estructura simple, flexible y potente. No es necesario tener grandes conocimientos de programación (más bien ninguno) para trabajar cómodamente con ellas. Dada su fácil estructuración podemos definir la apariencia de cada elemento o grupo de ellos con suma facilidad cambiando posteriormente si diseño si es necesario, de forma simple y rápida. Programación para la web Sintaxis y Reglas Disponemos de multitud de formas o reglas para definir los estilos dentro de un documento dependiendo de la finalidad a conseguir, podemos definir un estilo de manera global, es decir, especificar las propiedades que van a afectar a todo el documento, aplicar los estilos a un elemento HTML concreto, establecer estilos dependiendo del contexto que rodea el elemento (estar dentro de un tabla, formar parte de una lista) etc. Una hoja de estilo se define de manera similar a los Scripts de JavaScript o Vbscript. La definición global de un estilo estará delimitada por las etiquetas respectivamente y en su interior podremos establecer los estilos que se utilizan en todo el documento. Para especificar el tipo de sintaxis que se empleará utilizaremos el atributo TYPE. Su valor por defecto es “text/css” y selecciona la sintaxis CSS Estilos de etiqueta A continuación estudiaremos las distintas formas sintácticas de definir estilos en un documento HTML. La sintaxis básica es la siguiente: Página 121 de 183 Selector {Propiedad: Valor} El selector es el valor en HTML al que afectar la definición del estilo en función del valor asignado a la propiedad que desea especificar. Al conjunto Propiedad- Valor se le llama: Declaración. Por ejemplo: P{color:green} Aquí se indica que todos los párrafos serán de color verde. Si además queremos que todos los párrafos estén justificados, habrá que añadir la propiedad correspondiente, en este caso: P{text-align: justify} En el ejemplo anterior ya tenemos dos líneas de código y solo acabamos de empezar, pues bien la sintaxis CSS permite añadir todas las propiedades que queramos para un mismo selector entre sus corchetes separando las mismas por un punto y coma. Así pues, para configurar un párrafo de color verde y justificado, la sintaxis adecuada sería: P {color:green; text-align: justify} Si quisiéramos añadir el estilo definido anteriormente a la etiqueta (negrita), no sería necesario volver a escribir toda la declaración, bastaría con separar con una coma un selector de otro. Veamos como: B, P {color:green; text-align: justify} Ahora imaginemos que además, el estilo negrita (B) debe aparecer sobre un fondo blanco. En este caso, la solución es añadir una nueva línea ya que es una propiedad que queremos aplicar sólo al selector negrita, Así nuestro estilo tomaría la siguiente forma: B, P {color:green; text-align: justify} B {background-color: white} Otra posibilidad puede ser la de establecer un estilo dependiendo de una condición estructural. Por ejemplo, si el texto en negrita aparece dentro de la celda de una tabla, entonces el fondo debe de ser negro y la letra debe aparecer en cursiva. Programación para la web TD B { background-color: black; font-style: italic} Observe como en este caso no se han separado los selectores con una coma. De esta forma, el intérprete CSS entiende que esa declaración sólo debe cumplirse para las negritas que estén dentro de la celda. Finalmente podemos aplicar un estilo concreto a un elemento del documento, bien sea porque de manera puntual se requiere modificar el estilo definido en anteriores declaraciones en el supuesto de que las hubiera o porque sólo queremos que ese elemento modifique sus propiedades de estilo sin afectar a sus semejantes. Así pues, volviendo a nuestro selector de negritas , vamos a indicar en un punto determinado del código HTML un estilo concreto: El texto en negrita en este punto Es más grande y está en azul. . Definición de estilos mediante clases La utilización de clases va a permitirnos especificar distintos estilos para un mismo elementos HTML o bien generar estilos tipo para poder aplicarlos a cualquier etiqueta HTML según sea necesario. Su sintaxis es: Elemento.nombreclase {propiedad:valor} Por ejemplo, vamos a definir varios colores de párrafo de la siguiente manera: P.amarillo {color:yellow} P.verde {color:green} Página 122 de 183 P.colorextraño {color:#CA36E1} Si queremos aplicar los estilos de color definidos anteriormente, el código sería similar al siguiente: este párrafo no tiene ningún estilo aplicado este saldrá de color Amarillo este seguro que verde el color extraño se parece al violeta Sin embargo, ¿qué pasaría si también se quisiera determinar un estilo de color para todos los encabezados? Evidentemente, no tendríamos que repetir la propiedad color para cada encabezado, bastaría con definir una clase sin asociarla a ningún estilo. .amarillo {color:yelow} .verde {color:green} .colorextraño {color:#ca36e1} Como puede verse, la sintaxis es la misma, salvo que en este caso, está omitiendo el selector, con lo que está dejando abierta la posibilidad de aplicarlo a cualquiera. este saldrá de color amarillo este encabezado saldrá de color verde esta negrita es de color ¿violeta? Página 123 de 183 Programación visual Introducción. Visual Basic es uno de los tantos lenguajes de programación que podemos encontrar hoy en día. Dicho lenguaje nace del BASIC (Beginner´s All-purpose Symbolic Instruction Code) que fue creado en su versión original en el Dartmouth College, con el propósito de servir a aquellas personas que estaban interesadas en iniciarse en algún lenguaje de programación. Luego de sufrir varias modificaciones, en el año 1978 se estableció el BASIC estándar. La sencillez del lenguaje ganó el desprecio de los programadores avanzados por considerarlo "un lenguaje para principiantes". Primero fue GW-BASIC, luego se transformó en QuickBASIC y actualmente se lo conoce como Visual Basic y la versión más reciente es la 6 que se incluye en el paquete Visual Studio 6 de Microsoft. Esta versión combina la sencillez del BASIC con un poderoso lenguaje de programación Visual que juntos permiten desarrollar robustos programas de 32 bits para Windows. Esta fusión de sencillez y la estética permitió ampliar mucho más el monopolio de Microsoft, ya que el lenguaje sólo es compatible con Windows, un sistema operativo de la misma empresa. Visual Basic ya no es más "un lenguaje para principiantes" sino que es una perfecta alternativa para los programadores de cualquier nivel que deseen desarrollar aplicaciones compatibles con Windows. En este informe explicaremos algunos términos y/o características de mismo con la finalidad de aprender más sobre este Programa y manejarlo con facilidad 1. ¿Qué es Visual Basic? Es un lenguaje de programación que se ha diseñado para facilitar el desarrollo de aplicaciones en un entorno grafico (GUI-GRAPHICAL USER INTERFACE) Como Windows 98, Windows NT o superior. 2. Características de Visual Basic. Diseñador de entorno de datos: Es posible generar, de manera automática, conectividad entre controles y datos mediante la acción de arrastrar y colocar sobre formularios o informes. Los Objetos Actives son una nueva tecnología de acceso a datos mediante la acción de arrastrar y colocar sobre formularios o informes. Asistente para formularios: Sirve para generar de manera automática formularios que administran registros de tablas o consultas pertenecientes a una base de datos, hoja de cálculo u objeto (ADO-ACTIVE DATA OBJECT) Asistente para barras de herramientas es factible incluir barras de herramientas es factible incluir barra de herramientas personalizada, donde el usuario selecciona los botones que desea visualizar durante la ejecución. Programación visual En las aplicaciones HTML: Se combinan instrucciones de Visual Basic con código HTML para controlar los eventos que se realizan con frecuencia en una página web. La Ventana de Vista de datos proporciona acceso a la estructura de una base de datos. Desde esta también acceso al Diseñador de Consultas y diseñador de Base de datos para administrar y registros. 3. Mencione y Explique las partes del entorno de Visual Basic. Barra de título: muestra el nombre del proyecto y del formulario q se está diseñando actualmente Barra de menús: agrupa los menús despegables que contienes todas las operaciones que pueden llevarse a cabo con Visual Basic 6.0. Página 124 de 183 Barra de herramientas estándar: contienen los botones que se utilizan con mayor frecuencia cuando se trabaja con un proyecto. Simplifica la elección de opciones de los menús Archivo, Edición, Ver y Ejecutar; además, en el área derecha presenta la ubicación (coordenadas) y el tamaño del objeto seleccionado Ventana de formulario: es el área donde se diseña la interfaz gráfica, es decir, es donde se inserta electo gráficos, como botones, imágenes, casilla de verificación, cuadros de listas, etc. Cuadro de herramientas: presenta todos los controles necesarios para diseñar una aplicación, como cuadros de texto, etiquetas, cuadros de listas, botones de comandos, etc. Ventana de proyecto: muestra los elementos involucrados en el proyecto, como formularios, módulos, controles , etc. Cada elemento puede seleccionarse en forma independiente para su edición. Ventana de posición del formulario: muestra la ubicación que tendrá el formulario en la pantalla, cuando ejecute la aplicación. Esta ubicación puede cambiarse si se hace clic con el botón izquierdo del mouse. La Ventana propiedades muestra todas las propiedades del control actualmente seleccionado, en este caso muestra las propiedades del Form1, luego podemos ver que abajo dice "Form1 Form", lo que está en negrita es el nombre del objeto, y lo que le sigue es el tipo de objeto, en este caso es un Formulario (Form) 4. Mencione y Explique los botones de la barra de herramientas de Visual Basic. Página 125 de 183 Programación visual TextBox Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones. No hace falta que indiquemos las coordenadas de la situación del formulario en pantalla, simplemente tendremos que marcar sobre el control de la caja de herramientas y dibujarlo con el tamaño que queramos en nuestro formulario Label Este control es también uno de los más utilizados, aunque su utilidad queda restringida a la visualización de datos en el mismo, no permitiendo la introducción de datos por parte del usuario. CommandButton Este control es el típico botón que aparece en todas las aplicaciones y que al hacer click sobre él nos permite realizar alguna operación concreta, normalmente Aceptar o Cancelar. Aunque según el código que le asociemos podremos realizar las operaciones que queramos. OptionButton Este control nos permite elegir una opción entre varias de las que se nos plantean. Cada opción será un control optionbutton diferente. Programación visual Tiene la siguiente forma: Un control Frame proporciona un agrupamiento identificable para controles. También puede utilizar un Frame para subdividir un formulario funcionalmente por ejemplo, para separar grupos de controles OptionButton. Página 126 de 183 CHECK BUTTON Y OPTION BUTTON (BOTONES DE ELECCION Y OPCION) Se obtienen directamente de la caja de herramientas. Dada la similitud de ambos controles, se comentan conjuntamente. El control CheckBox, o casilla de verificación, permite elegir una opción (activada / desactivada, True/False) que el usuario puede establecer o anular haciendo click. Una X en una casilla de verificación indica que está seleccionada, activada, o con valor True. Cada casilla de verificación es independiente de las demás que puedan existir en el formulario, pudiendo tomar cada una de ellas el valor True o False, a voluntad del operador. Un control OptionButton muestra una opción que se puede activar o desactivar, pero con dependencia del estado de otros controles OptionButton que existan en el formulario. Generalmente, los controles OptionButton se utilizan en un grupo de opciones para mostrar opciones de las cuales el usuario sólo puede seleccionar una. Los controles OptionButton se agrupan dibujándolos dentro de un contenedor como un control Frame, un control PictureBox o un formulario. Para agrupar controles OptionButton en un Frame o PictureBox, dibuje en primer lugar el Frame o PictureBox y, a continuación, dibuje dentro los controles OptionButton. Todos los controles OptionButton que están dentro del mismo contenedor actúan como un solo grupo, e independientes de los controles OptionButton de otros grupos distintos. Programación visual Aunque puede parecer que los controles OptionButton y CheckBox funcionan de forma similar, hay una diferencia importante: Cuando un usuario selecciona un OptionButton, los otros controles del mismo grupo OptionButton dejan de estas disponibles automáticamente. Por contraste, se puede seleccionar cualquier número de controles CheckBox. LIST BOX Y COMBO BOX Estos dos controles, debido a su similitud, se estudian conjuntamente. Se obtienen directamente de la caja de herramientas: Un control ListBox muestra una lista de elementos en la que el usuario puede seleccionar uno o más. Si el número de elementos supera el número que puede mostrarse, se agregará automáticamente una barra de desplazamiento al control ListBox. Un control ComboBox combina las características de un control TextBox y un control ListBox. Los usuarios pueden introducir información en la parte del cuadro de texto y seleccionar un elemento en la parte de cuadro de lista del control. En resumen, un ComboBox es la combinación de un ListBox, que se comporta como si de un ListBox se tratase, y de un TextBox, con comportamiento análogo a un TextBox sencillo, con la Página 127 de 183 particularidad aquí de que el texto se le puede introducir por teclado, o elegir uno de los que figuran en la parte ListBox del Combo. CONTROLES HScrollBar y VScrollBar Son dos controles similares, para introducir un dato cuasi-analógico en una aplicación. Se toman directamente de la caja de herramientas, y tienen un aspecto parecido al de un control de volumen de un equipo de música. El HScrollBar está en posición horizontal, y el VScrollBar en posición vertical. Mediante estos controles se pueden introducir datos variando la posición del cursor. Programación visual TIMER TEMPORIZADOR Este objeto permite establecer temporizaciones. Presenta una novedad respecto a los controles estudiados hasta ahora. El control Timer solamente se ve durante el tiempo de diseño. En tiempo de ejecución, el control permanece invisible. La temporización producida por el Timer es independiente de la velocidad de trabajo del ordenador. (Casi independiente. El timer no es un reloj exacto, pero se le parece) Se toma directamente de la caja de herramientas, y tiene el aspecto siguiente: SHAPE Se toma directamente de la caja de herramientas: Shape es un control gráfico que se muestra como un rectángulo, un cuadrado, una elipse, un círculo, un rectángulo redondeado o un cuadrado redondeado. Utilice controles Shape en tiempo de diseño en lugar o además de invocar los métodos Circle y Line en tiempo de ejecución. Puede dibujar un control Shape en un contenedor, pero no puede actuar como contenedor. Página 128 de 183 (Esto quiere decir que un control Shape nunca le servirá, por ejemplo, para albergar varios OptionButton y pretender que sean independientes de otros controles OptionButton que se encuentren fuera del control Shape. Este control no tiene Procedimientos. En realidad, solamente sirve para mostrar un determinado gráfico, envolver gráficamente a otros controles, pero no tiene ninguna aplicación en cuanto a programa. Es un "adorno" para sus aplicaciones. Programación visual LINE Se toma directamente de la caja de herramientas Line, al igual que Shape, es un control gráfico que solamente sirve para poner una línea en un formulario. Del mismo modo, no tiene procedimientos, por lo que no sirve para aportar código al programa. Solo sirve para aportar una característica gráfica, es un adorno. CONTROL GAUGE Este control presenta una información numérica de forma gráfica, bien como un display lineal (típico por ejemplo en ecualizadores de audio), o como una aguja. No está normalmente en la caja de herramientas, por lo que hay que traerla desde los Controles Personalizados (Menú desplegable de Herramientas) Se denomina MicroHelp Gauge Control. El archivo que lo contiene se denomina GAUGE16.OCX, 16 bits Mediante este control, podemos presentar una magnitud numérica de una forma cuasi-analógica. Podríamos decir que es un control similar al HScrollBar, que en vez de meter información a la aplicación, la presenta. Este control puede servir, por ejemplo, para presentar el tanto por ciento de ejecución de una tarea, como elemento tranquilizante. Puede presentar el nivel de un depósito de agua, etc. Presenta las dos formas siguientes: Programación visual Página 129 de 183 En la figura puede verse un Gauge de aguja, uno de barra horizontal y otro de barra vertical. Para mejorar la presentación, el Gauge permite poner un gráfico como fondo, cambiar el color de la barra, color de fondo, etc. El control Gauge crea medidores definidos por el usuario, que puede elegir entre los estilos lineales (relleno) o de aguja. Nota para la distribución Cuando cree y distribuya aplicaciones con controles Gauge, tendrá que instalar el archivo apropiado en el subdirectorio SYSTEM de Windows del cliente. El Kit para instalación que incluye Visual Basic, le proporciona herramientas para escribir los programas que instalan las aplicaciones correctamente. El CommonDialog es un control del que se libran muy pocas aplicaciones. Dada la importancia de este control, se le dedica un capítulo único en esta Guía del Estudiante. CUADRO DE DIALOGO CommonDialog Normalmente se encuentra en la caja de herramientas Este control no se presenta en tiempo de diseño más que con un simple icono: El cuadro de diálogo, CommonDialog se utiliza para varias funciones: Abrir Ficheros Guardar Ficheros Elegir colores Seleccionar Impresora • • Seleccionar Fuentes Programación visual Mostrar el fichero de Ayuda En realidad el cuadro de diálogo permite conocer datos con los cuales, y mediante el código adecuado, abriremos o guardaremos ficheros, elegiremos colores o seleccionaremos fuentes. Es decir, el CommonDialog NO realiza más funciones que mostrar ficheros existentes, fuentes disponibles, colores, para que, mediante código, abramos esos ficheros o usemos una determinada fuente. Dependiendo de la aplicación para la que vaya a usarse se deberá activar de distintas formas. Si el cuadro de diálogo se va a usar para seleccionar la impresora y para otras aplicaciones, es recomendable usar uno exclusivamente para seleccionar la impresora. Esta última recomendación se debe a que, para el control de la impresora, el CommonDialog SI realiza las funciones de selección de impresora predeterminada. Esta diferencia operativa hace que si usamos el mismo CommonDialog para seleccionar impresora y abrir ficheros, por ejemplo, se "cuelgue" el CommonDialog. Defina los siguientes términos. Página 130 de 183 Eventos: es una acción como hacer clic, doble clic, presionar una tecla, mover el puntero del mouse, etc. Que el usuario debe realizar para que un objeto ejecute una acción determinada cada control responde a diferentes eventos, algunos de ellos tienen características comunes. Los eventos pueden Visualizarse en la ventana de código. Métodos: Son procedimientos definidos en Visual Basic para realizar operaciones específicas sobre los objetos (Controles o Formularios) Controles: Son los objetos que conforman la interfaz gráfica de un programa; a través de ellos, un usuario interactúa con la aplicación. Sus características pueden cambiarse por medio de la ventana propiedades Proyecto: Propiedades: Son los datos que hacen referencia a un objeto o formulario. Ejemplo : Color de fondo del formulario, Fuente de texto de un TextBox. Objetos: Un objeto es una entidad que tiene asociado un conjunto de métodos, eventos y propiedades. Hay muchas clases de objetos, y por tanto, puede llegar a haber tantos métodos, eventos y propiedades distintas como objetos diferentes. Ejemplo : Una caja de texto (TextBox) en la cual podemos escribir cualquier línea es un objeto. Clases: Una clase no es nada más que un Objeto, este objeto, tiene propiedades, funciones y métodos. Para empezar ahora la creación de propiedades si se utiliza Property Let y Property Get; la diferencia es casi nada, inclusive podría decir que una clase en visual Basic, es casi lo mismo que un control, pero ahora nace una nueva pregunta, cuando utilizar un control y cuando utilizar una clase, bueno la opinión que voy a dar es desde mi perspectiva. Módulo: Un proyecto Visual Basic no sólo está compuesto de Formularios, sino también de lo que se denominan módulos. Un módulo es un fichero Visual Basic donde escribimos parte del código de nuestro programa, y digo parte, porque puede haber código en el formulario también. Programación visual De los fundamentos de programación explique: Módulos de Control: Módulos de Formularios: Es un fichero con extensión .frm que puede contener descripciones del formulario y controles. Módulos de Clases: módulo que puede contener la definición de un nuevo proyecto. Cada instancia de una clase crea un objeto nuevo. Los procedimientos definidos en el módulo se convierten en propiedades y métodos del objeto. Los módulos de clase pueden existir solos o con formularios e informes Módulos Estándar: módulo en el que puede colocar los procedimientos Sub y Function que desee que estén disponibles para otros procedimientos de la base de datos. Es un fichero con extensión .bas que solo contiene declaraciones y definiciones de procedimientos, tipos y datos a los que tienen acceso otros módulos de la aplicación. Editor de Códigos: lugar donde se va a programar en Visual Basic, en este editor se escribirán todas las sentencias que darán vida a una aplicación. Página 131 de 183 Variable: Dim: Al declarar una variable con esta palabra estamos diciendo que la variable sea local al ámbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no sería accesible desde los demás procedimientos o formularios. Public: Las variables declaradas serán públicas y podrán estar accesibles desde todos los formularios de la aplicación. Para conseguirlo tendremos que declararlas en un módulo de código, no en la sección declarations de cualquier formulario de los que conste la aplicación. Para crear un módulo de código en el menú principal de Visual Basic marcamos en INSERT/MODULE y aparecerá junto a los demás formularios de la ventana de proyecto aunque con un icono distinto indicando que se trata de un módulo de código. Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de ejecución de la aplicación. De esta forma a entrar en algún procedimiento las variables recuerdan el valor que tenían cuando se salió de él. TIPOS DE VARIABLES TIPO BOOLEAN BYTE INTEGER LONG SINGLE DOUBLE CURRENCY STRING DATE COMENTARIO Sólo admite 2 valores TRUE o FALSE admite valores entre 0 y 255 admite valores entre -32768 y 32767 admite valores entre -2.147.483.648 y 2.147.483.647 admite valores decimales con precisión simple admite valores decimales de doble precisión válido para valores de tipo moneda cadenas de caracteres fechas, permite operar con ellas Constante: Declaración de constantes que pueden ser usadas en cualquier punto en lugar de su valor, permitiendo cambiarlo cuando sea necesario, sin tener que cambiarlo en todos los sitios en que se utiliza. La expresión no puede utilizar llamadas a funciones, pues la constante se calcula en tiempo de compilación, no en tiempo de ejecución. Página 132 de 183 Estructura de Datos Aplicará las clases de la biblioteca estándar STL del lenguaje C++ y será capaz de manejar las estructuras de datos dinámicas para la elaboración de programas, utilizando la Programación Orientada a Objetos. INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS Y A LOS TIPOS DE DATOS ABSTRACTOS (TDA) Las Técnicas Orientadas a Objetos (TOO) brindan la posibilidad de construir objetos complejos a partir de objetos existentes, lo que permite un alto grado de reutilización, ahorro de tiempo y dinero y confiabilidad. Además, ofrecen soporte para encapsular datos y comportamiento, estructurar los objetos en clases y organizar las clases en jerarquías, permitiendo compartir comportamiento a través de la herencia. El concepto orientado a objetos se puede definir de la siguiente manera: Orientación a Objetos (OO) = Objetos + Clasificación + Herencia + Comunicación Las ventajas que ofrece la tecnología orientada a objetos son: Encapsulado u ocultamiento de información, Reutilización, Estabilidad, Consistencia. Una clase es la implementación de un tipo de objeto. Especifica las estructuras de datos y los métodos operativos permisibles que se aplican a cada uno de sus objetos. Una clase puede tener muchas subclases. Nombre de la clase Nombre de la clase Cadena de caracteres que identifican el nombre del tipo de objeto que implementa la clase . Estado Estado Especifica las estructuras de datos encapsuladas y creadas para cada uno de sus objetos. Dichas estructuras de datos constituyen la parte privada del objeto . Comportamiento Comportamiento Especifica los métodos u operaciones permitidos por medio de los cuales se controlan las estructuras de datos de los objetos de la clase, es decir, los objetos de la clase son controlados por métodos que implementan las operaciones permitidas de tal manera que las estructuras de datos sólo pueden ser utilizadas (modificadas o consultadas) por dichos métodos. Estas operaciones constituyen la parte pública del objeto. Por ejemplo, los atributos de un estudiante son, entre otros, registro o matrícula, nombre, dirección y teléfono, todos de tipo cadena (string). Algunas de las operaciones que pueden implementarse mediante la creación de la clase Estudiante se presentan a continuación. Página 133 de 183 Estructura de Datos E studiante registro nom bre dirección teléfono estEstudiante obtRegistro obtNom bre obtDirección obtTeléfono Nombre del método estEstudiante obtRegistro obtNombre obtDirección Operación o función que realiza el método Establece las propiedades del estudiante a un estado consistente a partir de los datos o cadenas de entrada registro, nombre, dirección y teléfono proporcionados como argumentos durante el llamado a este método. Lee y devuelve el registro del estudiante. Lee y devuelve el nombre del estudiante. Lee y regresa la dirección del estudiante. Veamos otro ejemplo, un rectángulo se caracteriza por tener sus lados opuestos paralelos dos a dos. Si se considera la construcción de la clase Rectángulo, ésta tiene los atributos base y altura, cuyos valores predeterminados son 1. Tiene métodos que implementan las operaciones que calculan y devuelven el perímetro y el área del rectángulo, además de las operaciones que establecen y obtienen los valores de la base y la altura. Los métodos que establecen las propiedades del rectángulo verifican que la base y la altura sean números reales mayores que 0.0 y menores que 20.0. Rectángulo base altura calcularPerímetro calcularÁrea estBase estAltura obtBase obtAltura A continuación se menciona como se podrían utilizar la herencia y el polimorfismo para crear una clase base abstracta llamada Paralelogramo y derivar a partir de ésta las subclases Rectángulo y Cuadrado. Un Rectángulo es un Paralelogramo porque sus lados opuestos son paralelos dos a dos; es decir, el concepto de paralelogramo se aplica al objeto rectángulo y por lo tanto éste se clasifica como miembro o instancia de la clase Paralelogramo. Los cuadrados, romboides y rombos también son clasificados como paralelogramos. Todos, Rectángulos, Cuadrados, Romboides y Rombos, son instancias de la clase Paralelogramo porque tienen la propiedad de que sus lados opuestos son paralelos dos a dos. Sin embargo, Estructura de Datos debe observarse que los rectángulos, cuadrados, romboides y rombos tienen, a su vez, atributos y comportamientos propios (los rectángulos tienen los cuatro ángulos iguales y los lados contiguos desiguales, Página 134 de 183 los cuadrados tienen los cuatro ángulos iguales y los cuatro lados iguales, los romboides tienen los lados y los ángulos contiguos desiguales, y los rombos tienen los cuatro lados iguales y los ángulos contiguos desiguales), por lo que éstos pueden ser definidos como subclases de la clase paralelogramo. Cada una de estas subclases tendrá sus estructuras de datos y métodos propios, además de los que herede de su clase padre. La herencia en una forma de reutilización del software en la que se crean clases nuevas a partir de clases ya existentes por medio de la absorción se sus atributos y comportamientos, sobreponiéndolos o mejorándolos con capacidades que las clases nuevas requieran. Mediante la herencia se logra compartir el comportamiento y los atributos de las clases de objetos definidas previamente con extensiones de clases de objetos que reciben el nombre de subclases. Se dice que las subclases heredan las estructuras de datos y las operaciones de la clase de objetos a partir de la cual se derivan. El hecho de que un tipo de objeto de alto nivel pueda especializarse en tipos de objeto de bajo nivel, permite la creación de una jerarquía de clases, subclases, sub-subclases, etc. Una clase permite la implementación de un tipo de objeto. Una subclase hereda propiedades de su clase padre, una sub-subclase hereda propiedades de las subclases, etc. Una subclase puede heredar las estructuras de datos y los métodos de su superclase; también puede tener sus propios métodos e incluso tipos de datos propios. De manera más específica se tienen las siguientes definiciones. Una subclase es una clase que hereda las propiedades y los métodos de una clase existente. Una superclase es una clase de la cual otra clase hereda propiedades y métodos. Herencia simple es cuando una clase se deriva de una superclase. Herencia múltiple es cuando una clase se deriva de más de una superclase. El polimorfismo se define como la habilidad de los objetos de diferentes clases, que están relacionados mediante la herencia, para responder en forma diferente al mismo mensaje; es decir, al llamado o solicitud de una operación implementada por un método de manera diferente para cada tipo de objeto. Aún así, aunque los métodos sean distintos, llevan a cabo el mismo propósito operativo. La palabra polimorfismo se aplica a una operación que adopta varias formas de implementación. La herencia y el polimorfismo, dan la posibilidad de que una clase pase por alto el comportamiento heredado de un tipo a un subtipo, al permitir la redefinición del método de una operación heredada en el subtipo. Por ejemplo, si las clases Rectángulo, Cuadrado, Romboide y Rombo se derivan de la clase base Paralelogramo (cuadrilátero o polígono de cuatro lados con los lados opuestos paralelos dos a dos), entonces cada instancia de las clases derivadas también son instancias de la clase base y por lo tanto no tendrían que repetir el comportamiento heredado de Paralelogramo. Si dentro de las estructuras de datos de la clase Paralelogramo se define un arreglo de cuatro puntos para almacenar las coordenadas de los vértices del paralelogramo y la operación exhibir se implementa mediante un método que conecte los cuatro vértices del paralelogramo y lo muestre en pantalla, entonces dicha operación también se aplicaría a los rectángulos, cuadrados, romboides y rombos; es decir, las clases Rectángulo, Cuadrado, Romboide y Rombo heredan la operación exhibir de la clase Paralelogramo y no tienen que repetirla o redefinirla. Sin embargo, aunque todas las operaciones de Paralelogramo se aplican a sus subclases, el método operativo puede ser diferente; por ejemplo, el método para calcular el perímetro de un paralelogramo, un romboide o un rectángulo podría definirse como dos veces la suma de la longitud de sus lados adyacentes, pero el método para calcular el perímetro de un cuadrado o un rombo podría definirse como cuatro veces la longitud de cualquiera de sus lados. En este caso es necesario redefinir la operación que calcula el perímetro en las subclases Cuadrado y Rombo. Estructura de Datos DEFINICIÓN DE ESTRUCTURA DE DATOS Las estructuras de datos, también conocidas como tipos de datos, establecen una relación entre las distintas formas de representación de los datos, que se caracterizan por su organización y por las operaciones Página 135 de 183 que se pueden realizar con ellas. Las estructuras de datos dictan la organización, los métodos de acceso y las alternativas de procesamiento para la información. Debido a que la estructura de la información afectará el diseño de los programas, las estructuras de datos juegan un papel muy importante. La organización y complejidad de las estructuras de datos tan sólo está limitada por el ingenio del diseñador; sin embargo, hay un número reducido de estructuras de datos clásicas (elemento escalar, arreglos, listas, pilas, colas y árboles), que constituyen los bloques con los que se construyen estructuras más sofisticadas. Es importante tener en cuenta que las estructuras de datos se pueden representar a diferentes niveles de abstracción. Por ejemplo, una pila es un modelo conceptual de una estructura de datos, que puede implementarse como un arreglo (vector secuencial) o como una lista ligada. TIPOS DE DATOS ABSTRACTOS (TDA) Un TDA es un tipo de dato definido por el programador (por ejemplo, una clase) que se puede manipular de un modo similar a los tipos de datos definidos por el sistema. Está formado por un conjunto válido de elementos y un número de operaciones primitivas que se pueden realizar sobre ellos. Ejemplo: Definición del tipo (representación): Numero racional: Conjunto de pares de elementos (a, b) de tipo entero, con b0. Operaciones (interfaz de uso): • • • • • • • • • • • CrearRacional: a, b = (a,b) Suma: (a,b) + (c,d) = (a*d+b*c , b*d) Resta: (a,b) - (c,d) = (a*d-b*c , b*d) Producto: (a,b) * (c,d) = (a*c , b*d) División: (a,b) / (c,d) = (a*d , b*c) Numerador: (a,b) = a Denominador: (a,b) = b ValorReal: (a,b) = a/b MCD: (a,b) ... Potencia: (a,b)^c = (a^c , b^c) Simplifica: (a,b) = ( a/mcd(a,b) , b/mcd(a,b) ) Una vez definido el TDA (o clase) se podrán declarar variables (objetos o instancias) de ese tipo para utilizar (llamar o invocar) los métodos (operaciones) que aporta la clase. Ejemplo: TRacional r1,r2, rsuma; // declara tres objetos de tipo TRacional r1.CrearRacional(4,7); // llama al método CrearRacional del objeto r1 r2.CrearRacional(5,8); // llama al método CrearRacional del objeto r2 // el valor devuelto por el método Suma del objeto r1 lo asigna al objeto rsuma Estructura de Datos rsuma = r1.Suma(r1, r2); printf(“El valor real es %f”, rsuma.ValorReal() ); // imprime el valor real del objeto rsuma LA BIBLIOTECA STL (Standard Template Library – Biblioteca estándar de plantillas) La STL está formada por contenedores (estructuras de datos comunes organizadas como plantillas), iteradores y algoritmos. Es decir, la STL es una biblioteca estándar de contenedores de objetos organizados Página 136 de 183 en platillas. Su uso puede ahorrar considerable tiempo y esfuerzo, y da como resultado programas de más alta calidad. Las clases de contendores de la STL más importantes son: 1. vector: Para inserciones y eliminaciones rápidas al final. Permite el acceso directo a cualquier elemento. Archivo de encabezado . 2. list: Lista de enlace doble que permite la inserción y eliminación rápidas en cualquier lugar. Archivo de encabezado . 3. stack: LIFO (Last In First Out – último en entrar, primero en salir). Archivo de encabezado . 4. queue: FIFO (First In First Out – primero en entrar, primero en salir). Archivo de encabezado . Nota: El contenido de todos los archivos de encabezado está en namespace std. La STL fue diseñada a fin de que los contenedores proporcionen funcionalidad similar, por lo que hay muchas operaciones genéricas, tales como la función size, que se aplican a todos los contenedores, y otras que sólo se aplican a subconjuntos de contenedores similares. Las funciones más comunes para todos los contenedores de la STL son: 1. constructor predeterminado: Proporciona una inicialización predeterminada del contenedor. Cada contenedor puede tener varios constructores que proporcionan una variedad de métodos de inicialización para dicho contenedor. 2. constructor de copia: Inicializa al contenedor para que sea una copia de un contenedor existente del mismo tipo. 3. destructor: Destruye un contenedor cuando ya no es necesario. 4. empty: Devuelve true si no hay elementos en el contenedor y false en caso contrario. 5. max_size: Devuelve la cantidad máxima de elementos de un contenedor. 6. size: Devuelve la cantidad de elementos que hay actualmente en el contenedor. 7. operator=: Asigna un contenedor a otro. 8. operator=: Devuelve true si el primer contenedor es mayor o igual que el segundo y false en caso contrario. 12. operator==: Devuelve true si el primer contenedor es igual al segundo y false en caso contrario. 13. operator!=: Devuelve true si el primer contenedor no es igual que el segundo y false en caso contrario. 14. swap: Intercambia los elementos de dos contenedores. Página 137 de 183 Estructura de Datos ITERADORES Los iteradores se utilizan para apuntar hacia los elementos de contenedores. Éstos guardan información de estado que es sensible a los contenedores particulares sobre los que operan y, por lo tanto, dichos iteradores están implementados en forma adecuada para cada tipo de contenedor. Sin embargo, algunas operaciones de los iteradores son uniformes entre los contenedores. Por ejemplo, el operador * des referencia a un iterador para que se pueda utilizar el elemento hacia el que apunta. La operación ++ sobre un iterador devuelve un iterador al siguiente elemento del contenedor (en forma muy similar a como el incremento de un apuntador a un arreglo coloca al apuntador en el siguiente elemento de dicho arreglo). Si el iterador i apunta a un elemento en particular, ++i apunta al siguiente elemento y *i hace referencia al elemento al que apunta i. Se usa un objeto de tipo iterator para referirse a un elemento de contenedor que puede modificarse. Se usa un objeto de tipo const_iterator para referirnos a un elemento de contendor que no puede modificarse. ARREGLOS: CONTENEDOR vector La clase vector proporciona una estructura de datos con localidades de memoria contiguas, lo que permite un acceso directo y eficiente a cualquier elemento de un vector por medio del operador de subíndice [ ], exactamente como se hace con un arreglo de C o C++. Un objeto de tipo vector puede cambiar su tamaño dinámicamente y soporta iteradores de acceso aleatorio. En el siguiente programa de ejemplo se usan varios métodos de la clase vector. #include "stdafx.h" #include #include using namespace std; // Requerido int _tmain(int argc, _TCHAR* argv[]) { const int TAM = 6; // definición del arreglo a de 6 enteros al estilo C o C++ int a[TAM] = {1, 2, 3, 4, 5, 6}; // Declaración de un objeto v de tipo vector (uso de STL) que // almacena valores de tipo entero, cuya capacidad y tamaño son 0. vector v; // Asigna en la variable tamv es valor devuelto por el método size() // del objeto v, dicho valor es el número de elementos que están // actualmente almacenados en el contenedor. int tamv = v.size(); cout


Comments

Copyright © 2025 UPDOCS Inc.