Herramientas Informaticas

Categoría: Sin categoría Página 29 de 51

Pre informe de Residencia

clip_image004

Instituto Tecnológico de Los Mochis

INFORME FINAL DE RESIDENCIA PROFESIONAL

Análisis, investigación y desarrollo de Sistema de Control de Egresados vía intranet del Instituto

Tecnológico de Los Mochis

Leyva Rodríguez Julio Cesar

Sotelo Castillo Víctor Raúl

Diciembre 2012

 

 

 

 

 

INFORME FINAL DE RESIDENCIA PROFESIONAL

Leyva Rodríguez Julio Cesar

Lic. en Informática

08440863

Sotelo Castillo Víctor Raúl

Lic. en Informática

08440891

Realizado en:

Instituto Tecnológico de Los Mochis

Tema:

“Análisis, investigación y desarrollo de Sistema de Control de Egresados vía intranet del Instituto

Tecnológico de Los Mochis”

clip_image005

Índice

INTRODUCCIÓN.. 3

JUSTIFICACIÓN.. 4

OBJETIVOS. 5

DESCRIPCIÓN DE LA INSTITUCION.. 6

OBJETIVOS. 7

Organigrama: 7

Lugar de realización de la residencia: 8

Asesor externo. 8

PLANTEAMIENTO DEL PROBLEMA.. 9

ALCANCES Y LIMITACIONES. 10

Alcances: 10

Limitaciones: 10

FUNDAMENTOS TEÓRICOS. 11

JUSTIFICACIÓN.. 13

BOSQUEJO DE FUNDAMENTOS. 14

PROCEDIMIENTO Y DESCRIPCION DE ACTIVIDADES. 17

DESCRIPCIÓN DE ACTIVIDADES. 18

RESULTADOS, PLANOS, GRAFICOS, PROTOTIPOS Y PROGRAMAS. 21

Herramientas utilizadas. 21

SISTEMA DE SEGUIMIENTO DE EGRESADOS FRONT END.. 25

Administración Back end. 45

CONCLUSIONES Y RECOMENDACIONES. 52

FUENTES DE INFORMACIÓN.. 53

clip_image006

INTRODUCCIÓN

El proyecto, Análisis, investigación y desarrollo de Sistema de Control de Egresados vía intranet del Instituto Tecnológico de Los Mochis, fue desarrollado con el propósito de realizar el registro de los egresados de todas las carreras del Instituto Tecnológico de Los Mochis.

Es un sistema que cuenta con una base de datos en la cual estarán registrados los alumnos egresados del Instituto Tecnológico de Los Mochis, donde cada alumno tendrá datos generales, como nombre completo, numero de control, dirección, carrera, numero telefónico, dirección de correo electrónico, estado laboral, empresa, puesto, ciudad y numero telefónico de la empresa.

Esta base de datos estará conectada con una pagina web y el sitio web de el Instituto tendrá un vinculo hacia nuestra propuesta ya antes descrita (Sistema de Seguimiento de Egresados) la cual será un sitio amigable para el usuario y contendrá temas de interés para el egresado como un foro para debatir temas, bolsa de trabajo, cursos próximos a impartir en el instituto, conferencias, eventos, galerías, etc. también generara estadísticas a partir de los datos ingresados por el usuario, de esta manera la institución tendrá información clara acerca de sus egresados.

JUSTIFICACIÓN

Con la realización de este proyecto se proporcionó beneficios tanto para el residente como para la empresa, ya que el residente adquirió conocimientos prácticos relacionados con su perfil profesional y experiencia laboral, de igual manera se adquirió la capacidad de relacionarse e interactuar en el área laboral real.

Con este sistema la dirección del Instituto Tecnológico de Los Mochis es capaz de llevar un control de las actividades de sus egresados y su estatus laboral, así como su ubicación actual y demás datos importantes para el óptimo control de egresados e impartir con la información obtenida nuevos cursos, talleres, eventos y conferencias a los que podrán asistir los egresados.

El sistema será desarrollado en entorno web dados los siguientes aspectos:

· Ofrecer información general detallada al mundo entero.

· Comunicación permanente e inmediata con los usuarios.

· Atender al usuario las 24 horas del día y los 7 días de semana.

· Reducción de costos en papelería de oficina.

· Multiplataforma, es decir, puede funcionar en distintos sistemas operativos (Windows, Mac, Linux, etc.) y en diferentes navegadores (Internet Explorer, Opera, Firefox, Safari, etc.)

OBJETIVOS.

Objetivo general.

Crear el Sistema de Control de Egresados como un sitio web donde los usuarios se registren llenando formularios con información acerca de su estatus laboral y tengan acceso a material de interés para los egresados.

Conectar el sitio web a una base de datos donde se guardara la información que los egresados proporcionen al momento de hacer el registro.

Objetivos específicos.

· Desarrollar en entorno web un sistema de captura de información.

· Agregar módulos para el registro de usuario (formularios de registro).

· Crear la base de datos donde se guarden los datos de los egresados.

· Lograr que el sitio web sea completamente amigable para el usuario.

· Mantener el software a un nivel de confiabilidad alto, para cumplir con los estándares del instituto.

DESCRIPCIÓN DE LA INSTITUCION

Denominación o razón social: Instituto Tecnológico de Los Mochis.

Domicilio: Juan de Dios Batiz y 20 de noviembre Apartado Postal 766 Los Mochis, Sin. C.P. 81259

Teléfonos: (01-668) 812-58-58, 812-59-59, 815-26-06, fax 815-03-26

Ubicación geográfica:

clip_image008

Misión: Somos una Institución de Educación Superior Tecnológica de calidad, que forma profesionistas competentes y con valores, que se integran activamente en el desarrollo sustentable, económico, social y cultural de nuestro país y de la humanidad.

Visión: Ser una institución de Educación Superior Tecnológica de alto desempeño y de excelencia a nivel internacional, comprometida con el desarrollo sustentable y equitativo de la sociedad.

OBJETIVOS

1. Ofrecer planes y programas de estudios que permitan la formación de profesionales, científicos, humanistas y tecnólogos para coadyuvar al desarrollo sustentable.

2. Ampliar la oferta educativa, a través de la creación de nuevos programas académicos y de la implementación de nuevas modalidades educativas, de acuerdo a los resultados de estudios de factibilidad, para contribuir al aseguramiento de la equidad en el acceso, la permanencia y el éxito académicos, y que respondan a las prioridades del desarrollo estatal, regional y nacional.

3. Reducir los índices de deserción, reprobación e incrementar los de eficiencia terminal y titulación para contribuir al aprovechamiento equitativo de las oportunidades de educación que ofrece el ITLM.

4. Actualizar de manera permanente a los profesionales en activo y capacitar a la comunidad en general para facilitar su incorporación a la sociedad del conocimiento.

5. Brindar becas y apoyos económicos a estudiantes sobresalientes que lo requieran para que puedan concluir sus estudios.

Giro: Institución de educación superior.

Organigrama:

clip_image010

Lugar de realización de la residencia:

La residencia fue realizada en el centro de cómputo, este es responsable de planear, coordinar, desarrollar y evaluar las actividades en materia de administración y desarrollo de sistemas, servicios de cómputo y conectividad que se realicen en el tecnológico.

Asesor externo

Lic. Erika Ojeda Torres

Teléfono: 8 12 59 59, 8 15 26 06 ext. 315 y 325

Jefa del Centro de Cómputo

eojeda@itmochis.edu.mx

PLANTEAMIENTO DEL PROBLEMA

La razón de este proyecto surge de la problemática que se tiene en la institución con respecto al seguimiento de las actividades de los egresados, ya que es muy difícil que un ex alumno siga frecuentando la institución. El trabajo que se realizará será el de desarrollar e implementar un sistema web hecho a la medida de las necesidades del departamento de vinculación, para facilitar el seguimiento de los egresados.

El principal problema a resolver de este sistema, será el crear una página web llamativa y amigable para los usuarios con el fin de lograr que los egresados se registren y así obtener estadísticas acerca de los ex alumnos egresados de esta institución.

Otro problema que se presentaba en el departamento de vinculación era el uso y desperdicio de hojas de papel, lo cual genera gastos a la institución además del impacto ambiental que esto representa. El uso de este sistema reduce considerablemente el uso de hojas de papel debido a que los formatos impresos que antes se usaban para este propósito están implementados en el sistema.

La implementación del Sistema de Control de Egresados será de gran importancia tanto para el egresado como para la institución, ya que para el egresado será más sencillo y practico obtener noticias e información acerca de diferentes cursos, capacitaciones, reuniones y demás actividades de egresados, y a su vez, es más fácil para la institución llevar un control de egresados y mantener contacto con ellos, además de los resultados estadísticos que podrá obtener con la información que maneja este sistema.

ALCANCES Y LIMITACIONES

Alcances:

La institución requería la automatización del proceso de registro y seguimiento de egresados. Para ello se necesitaba una herramienta que estuviese al alcance de cualquier persona en cualquier lugar y a cualquier hora. En un principio se optó por un software de escritorio pero al momento de investigar acerca de las ventajas de las aplicaciones de escritorio nos encontramos con un problema de compatibilidad con diferentes sistemas operativos y sus versiones además de los problemas movilidad y después de analizar la problemática decidimos hacer el sistema en un entorno web.

La institución, mediante la implementación de este sistema obtendrá grandes beneficios como la automatización del proceso de seguimiento de egresados.

Esto le permitirá llevar un control detallado de sus egresados, a que se dedican actualmente, etc. Es decir, será capaz de obtener información de manera rápida y sencilla, misma que antes de implementar el sistema era difícil de conseguir ya que el egresado difícilmente regresa a la institución.

A demás, las estadísticas y graficas que este sistema genera con los datos de los egresados son de gran ayuda para mejorar la oferta educativa entre otras cosas.

Limitaciones:

Durante el desarrollo del proyecto surgieron algunos inconvenientes, uno de ellos fue que existía un descontrol, el seguimiento de egresados era inexistente y teníamos que familiarizarnos con la forma de trabajar de la institución.

Otro inconveniente surgió al momento de empezar a desarrollar el sistema ya que el departamento no contaba con una idea clara y concisa de cómo querían que fuese el sistema.

FUNDAMENTOS TEÓRICOS

El desarrollo de este proyecto, estará respaldado por las técnicas utilizadas actualmente para el desarrollo de aplicaciones, desarrollo de software especializado y de algunos otros, como lo son: diseño de bases de datos, manejo de bases de datos, programación orientada a eventos, SQL, etc. En éste también estarán los requerimientos de la Institución I.T.L.M., que es exactamente a lo que se quiere llegar con la implementación de este software.

Lenguaje de programación.- Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1 Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.

Sitio web: Un sitio web es una colección de páginas web relacionadas y comunes a un dominio de Internet o subdominio en la World Wide Web en Internet.

Joomla!: es un sistema de gestión de contenidos y un framework para aplicaciones web que también puede ser utilizado independientemente. Entre sus principales virtudes está la de permitir editar el contenido de un sitio web de manera sencilla.

Base de datos.- Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.

Sistema gestor de base de datos.- En inglés: Database management System, abreviado DBMS, son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan.

Mysql.- Es un sistema de gestión de base de datos relacional, multihilo y multiusuario.

Interfaz de usuario.- Recurso de software, generalmente un componente central del sistema operativo, diseñado para permitir al usuario interactuar con el sistema. La interfaz de usuario más simple, conocida como consola (en inglés Shell), utiliza sólo un monitor y un teclado conectado al sistema y un programa que interpreta los comandos tecleados por el usuario en la línea de comandos para ejecutar acciones específicas. En la actualidad, son comunes las interfaces gráficas de usuario ó GUI (del inglés Graphical User interface), que usan, además, dispositivos apuntadores como el ratón o mouse e incluyen múltiples elementos gráficos intuitivos como iconos o botones.

Software.- Se conoce como software1 al equipamiento lógico o soporte lógico de un sistema informático; comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos, que son llamados hardware.

SQL.-Del ingles (Structured Query Language).Un lenguaje que se ha convertido en uno de los estándares actuales para la gestión de bases de datos. Hoy existen varios sistemas profesionales basados en SQL, que permiten una gestión eficiente de bases de datos y el acceso a estas sobre redes e Internet, por ejemplo: MySQL ó Postgresql.

JUSTIFICACIÓN

Con la realización de este proyecto se proporcionaron beneficios tanto para el residente como para la institución, ya que el residente adquirió conocimientos prácticos relacionados con su perfil profesional y experiencia laboral, de igual manera se adquirió la capacidad de relacionarse e interactuar en el área laboral real.

Al realizar este sistema la dirección del Instituto Tecnológico de Los Mochis será capaz de llevar un control de las actividades de sus egresados y su estatus laboral, así como su ubicación actual y demás datos importantes para el optimo control de egresados e implementar con la información obtenida nuevos cursos, talleres, eventos y conferencias a los que podrán asistir los egresados.

El sistema será desarrollado en entorno web dados los siguientes aspectos:

· Ofrecer información general detallada al mundo entero.

  • Comunicación permanente e inmediata con los usuarios.

· Atender al usuario las 24 horas del día y los 7 días de semana.

· Reducción de costos en papelería de oficina.

· Multiplataforma, es decir, puede funcionar en distintos sistemas operativos (Windows, Mac, Linux, etc.) y en diferentes navegadores (Internet Explorer, Opera, Firefox, Safari, etc.)

BOSQUEJO DE FUNDAMENTOS

El desarrollo de este proyecto está respaldado por las técnicas utilizadas actualmente para el desarrollo de aplicaciones, desarrollo de software especializado y de algunos otros, como lo son: diseño de bases de datos, manejo de bases de datos, programación orientada a eventos, SQL, etc.

En éste también estarán los requerimientos del Instituto Tecnológico de Los Mochis, que es exactamente a lo que se quiere llegar con la implementación de este software.

Para la realización de este proyecto se pondrán en práctica los conocimientos adquiridos durante el transcurso de la carrera, también será necesario en conjunto con el departamento de vinculación llevar a cabo una investigación, basándose en los métodos y procedimientos que actualmente se ponen en práctica, para realizar un proyecto de calidad, y que satisfaga todas las necesidades de la institución.

Antes de implementar realmente el proyecto se realizarán las pruebas correspondientes, previas a su instalación, esto para asegurar que haya el mínimo de errores, y evitar se produzca algún tipo de daño al instituto.

A continuación se muestran los diferentes conceptos que servirán para la realización del proyecto:

Lenguaje de programación.- Un lenguaje de programación es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.1 Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación. [i]

Sitio web: Un sitio web es una colección de páginas web relacionadas y comunes a un dominio de Internet o subdominio en la World Wide Web en Internet.[ii]

Joomla!: es un sistema de gestión de contenidos y un framework para aplicaciones web que también puede ser utilizado independientemente. Entre sus principales virtudes está la de permitir editar el contenido de un sitio web de manera sencilla.[iii]

Base de datos.- Una base de datos o banco de datos (en ocasiones abreviada con la sigla BD o con la abreviatura b. d.) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. En este sentido, una biblioteca puede considerarse una base de datos compuesta en su mayoría por documentos y textos impresos en papel e indexados para su consulta. Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital (electrónico), que ofrece un amplio rango de soluciones al problema de almacenar datos.[iv]

Sistema gestor de base de datos.- En inglés: Database management System, abreviado DBMS, son un tipo de software muy específico, dedicado a servir de interfaz entre la base de datos, el usuario y las aplicaciones que la utilizan. [v]

Mysql.- Es un sistema de gestión de base de datos relacional, multihilo y multiusuario.[vi]

Interfaz de usuario.- Recurso de software, generalmente un componente central del sistema operativo, diseñado para permitir al usuario interactuar con el sistema. La interfaz de usuario más simple, conocida como consola (en inglés Shell), utiliza sólo un monitor y un teclado conectado al sistema y un programa que interpreta los comandos tecleados por el usuario en la línea de comandos para ejecutar acciones específicas. En la actualidad, son comunes las interfaces gráficas de usuario ó GUI (del inglés Graphical User interface), que usan, además, dispositivos apuntadores como el ratón o mouse e incluyen múltiples elementos gráficos intuitivos como iconos o botones.

Software.- Se conoce como software1 al equipamiento lógico o soporte lógico de un sistema informático; comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas, en contraposición a los componentes físicos, que son llamados hardware.[vii]

SQL.-Del ingles (Structured Query Language).Un lenguaje que se ha convertido en uno de los estándares actuales para la gestión de bases de datos. Hoy existen varios sistemas profesionales basados en SQL, que permiten una gestión eficiente de bases de datos y el acceso a estas sobre redes e Internet, por ejemplo: MySQL ó Postgresql.[viii]

Servidor.- En informática, un servidor es una computadora que forma parte de una red, provee servicios a otras computadoras denominadas clientes.

· Servidor web.- Un servidor web o servidor HTTP es un programa informático que procesa una 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.

Cliente FTP.- Un cliente FTP emplea el protocolo FTP para conectarse a un servidor FTP para transferir archivos.

Algunos clientes de FTP básicos vienen integrados en los sistemas operativos, incluyendo Windows, DOS, Linux y Unix. Sin embargo, hay disponibles clientes con más funcionalidades, habitualmente en forma de Shareware/Freeware para Windows y como software libre para sistemas de tipo Unix. Muchos navegadores recientes también llevan integrados clientes FTP (aunque un cliente FTP trabajará mejor para FTP privadas que un navegador).

PROCEDIMIENTO Y DESCRIPCION DE ACTIVIDADES

Las actividades que se desarrollarán, de forma consecutiva, para llevar a cabo la realización de este proyecto, son las siguientes:

  • Capacitación.
  • Documentación de la información.
  • Análisis de procedimientos de la institución.
  • Desarrollo del sistema.
  • Pruebas del sistema.
  • Implementación del sistema.
  • Detección y corrección de errores.

DESCRIPCIÓN DE ACTIVIDADES.

Documentación de información.- se investigó en el departamento de vinculación de que manera se guardaba anteriormente la información de los egresados con el fin automatizar el proceso de registro, manejo y guardado de información, todo esto para no alterar o modificar los formularios de registro ni ningún tipo de información necesaria para el departamento.

Análisis de procedimientos de la institución.- Se indago en los procedimientos de la institución, para verificar la forma de cómo se debía adaptar el sistema, lo más apegado posible a la forma de trabajo que se utiliza actualmente.

También se verifico que tipos de datos se guardan y se capturaron datos existentes.

Capacitación.- Para empezar a trabajar fue necesario llevar a cabo una investigación acerca de herramientas útiles para el desarrollo de páginas web dinámicas como por ejemplo “Joomla”, “PHP”,”JQuery”, “Ajax”, etc.

También fue necesario investigar acerca de bases de datos, su manejo y configuración, así como instalación, configuración y propiedades de servidores de bases de datos y servidores web así como de clientes FTP para poder trabajar remotamente

Desarrollo del sistema.- El sistema se desarrolló tomando en cuenta el proceso original, es decir, tomando como base el formulario impreso de registro que usaba la institución para el seguimiento de egresados. Durante el desarrollo del sistema dicho proceso se digitalizo haciendo un formulario de registro para una bases de datos vía web. Se realizó de esta manera con el fin de no alterar los datos originales.

En un principio se pensó en un software de escritorio con una base de datos, pero después de un análisis detallado de las ventajas y desventajas que podía tener realizar un sistema de este tipo como software de escritorio, se llegó a la conclusión de desarrollar un sistema WEB dadas las ventajas que tiene contra un software de escritorio.

A continuación se comparan las características de las aplicaciones Web que se usan con un navegador de internet vs. Las aplicaciones de Escritorio que se usan localmente en una computadora.

Característica

Web

Escritorio

1

Personalización, actualización y soporte

Es suficiente con realizar los cambios en el servidor WEB

Hay que realizarlos en cada estación de trabajo (PC) donde se tenga la aplicación

2

Accesibilidad y cobertura

Cualquier lugar con acceso a Internet

Solo en el computador donde se haya instalado previamente el software

3

Capacidad de usuarios concurrentes

Alta debido a la arquitectura de clientes livianos que la pueden usar

Baja ya que la forma de diseño es centrada en un único usuario local

4

Portabilidad

El sistema puede ser usado con cualquier navegador de Internet

Solo funciona en el sistema operativo para el cual fue creado

5

Infraestructura y movilidad

Solo se tiene que conectar a la Internet

Está restringido a la ubicación del computador local.

6

Seguridad eléctrica y lógica

Es responsabilidad del proveedor de servicio

Es responsabilidad del administrador de la compañía y de cada usuario que usa el sistema localmente.

Uno de nuestros objetivos primordiales al desarrollar el sistema, era que fuera completamente amigable para el cliente, es decir, que la interfaz fuera clara, entendible y fácil de manipular para cualquier persona debido a que es un sistema que no va a ser utilizado por personal especializado, sino por personas que pueden no tener conocimientos avanzados de computación.

Pruebas del sistema.- La actividad denominada pruebas del sistema fue aplicada la mayor parte del tiempo del proyecto.

Esta actividad consistió en probar el sistema cada vez que se terminaba una etapa con el fin de detectar errores en el desarrollo para corregir las fallas y tomar medidas para que no sucediera de nuevo, todo esto previo a la instalación e implementación del sistema, con el objetivo de evitar causar algún tipo de daño o pérdida a la institución.

Para esto se debimos utilizar el sistema de forma real, es decir, darle el uso que realmente va a tener ya implementado, esto se realizó con datos ficticios pero lo mas apegado a situaciones reales.

Implementación del sistema.- Una vez terminadas las pruebas, y después de haber verificado que al usar el sistema no se dañan o alteran en lo más mínimo los datos que se manejan, se procedió a la implementación para empezar a trabajar en el campo para el que fue diseñado y desarrollado.

Detección y corrección de errores.- Esta actividad será muy importante llevarla a cabo, dado que pueden surgir errores que no se dieron durante el proceso de evaluación, u ocasionados por algún otro factor, ya sea externo o interno del mismo.

RESULTADOS, PLANOS, GRAFICOS, PROTOTIPOS Y PROGRAMAS

Herramientas utilizadas

Para empezar con el desarrollo de este proyecto fue necesario realizar la instalación de los siguientes programas:

  • Joomla: Joomla es un Sistema de gestión de contenidos que permite desarrollar sitios web dinámicos e interactivos. Permite crear, modificar o eliminar contenido de un sitio web de manera sencilla a través de un Panel de Administración. Es un software de código abierto, desarrollado en PHP y liberado bajo licencia GPL. Este administrador de contenidos puede utilizarse en una PC local (en Localhost), en una Intranet o a través de Internet y requiere para su funcionamiento una base de datos creada con un gestor MySQL, así como de un servidor HTTP Apache.

clip_image011

Pantalla de instalación de Joomla

  • Phpmyadmin: es una herramienta escrita en PHP con la intención de manejar la administración de MySQL a través de páginas web, utilizando Internet.

Actualmente puede crear y eliminar Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar datos en varios formatos y está disponible en 62 idiomas. Se encuentra disponible bajo la licencia GPL.[ix]

clip_image013

Phpmyadmin

  • Artisteer: Artisteer permite diseñar temas para insertarlos en gestores de contenidos como Drupal, Joomla, WordPress o Blogger, consiguiendo tener una web completamente personalizada, en la que podremos configurar hasta el más mínimo aspecto.[x]

clip_image015

Página principal de Artisteer

· Bitvise Tunnelier 4.50: Tunnelier es un potente cliente para SSH con mucha flexibilidad y compatibilidad para ajustes de TCP/IP.

Tunnelier incorpora un puente de FTP a SFTP que realiza la conexión entre los protocolos FTP y SFTP permitiendo que cualquier aplicación de FTP pueda conectarse de forma segura a un servidor SFTP.[xi]

clip_image017

Bitvise Tunnelier 4.50

  • Kunena: Es un componente para Joomla cuya funciones son la de administración de foros en el sitio

clip_image019

  • CodeIgniter: Es un programa o aplicación web desarrollada en PHP para la creación de cualquier tipo de aplicación web bajo PHP. Es un producto de código libre, libre de uso para cualquier aplicación.

Como cualquier otro framework, CodeIgniter contiene una serie de librerías que sirven para el desarrollo de aplicaciones web y además propone una manera de desarrollarlas que debemos seguir para obtener provecho de la aplicación. Esto es, marca una manera específica de codificar las páginas web y clasificar sus diferentes scripts, que sirve para que el código esté organizado y sea más fácil de crear y mantener. CodeIgniter implementa el proceso de desarrollo llamado Modelo Vista Controlador (MVC), que es un estándar de programación de aplicaciones, utilizado tanto para hacer sitios web como programas tradicionales. [xii]

clip_image021

  • JPGraph: Es una librería PHP que te permitirá crear gráficos matemáticos y estadísticos de manera sencilla y con absoluto control. Esta librería soporta una amplia variedad de tipos de gráficos para todas las necesidades.[xiii]

clip_image023

SISTEMA DE SEGUIMIENTO DE EGRESADOS FRONT END

A continuación se mostrara el desarrollo final del sistema de seguimiento de egresados.

Página principal de acceso al sistema

Esta página es la que se muestra al público en general, registrados o no registrados.

clip_image025

Página principal

En esta página se pueden apreciar los siguientes elementos:

  • Encabezado
  • Menú horizontal principal
  • Menú principal
  • Acceso
  • Contenido

Elementos de la página principal

Encabezado

Aquí se muestra el título principal del sistema como los logos de la institución.

clip_image027

Encabezado

Menú horizontal principal

Aquí se muestra uno o varios menús desplegables con diversas opciones que se pueden elegir según sea el nivel de acceso:

  • Para usuarios no registrados:
    • Acerca de
      • Misión
      • Visión

clip_image029

Menú para el público en general

Menú Principal

Es el menú principal de la página y se muestra en cualquier nivel de acceso. Este menú contiene dos opciones:

clip_image031

  • Inicio: es un hipervínculo que direcciona hacia la página principal del Sistema de Seguimiento de Egresados.
  • Contáctenos: es un vínculo hacia la página donde se muestra la información de contacto del Instituto Tecnológico de Los Mochis.

Acceso: presenta un formulario de acceso o log in, donde se requiere que el usuario ingrese datos para la autenticación de la cuenta, tales como usuario y contraseña.

El formulario tiene una opción llamada Recordarme la cual es útil para mantener la conexión con la pagina aun habiéndola cerrado.

Si el usuario no está registrado, el menú también cuenta con una opción de Registro, donde se requiere de algunos datos del egresado, mismos que se describirán más adelante.

clip_image033

¿Perdiste tu Usuario/Contraseña?

En caso de ser un usuario registrado y haber perdido nombre de usuario o contraseña, este sistema tiene una opción de recuperación de cuenta llamada ¿Perdiste tu Usuario/Contraseña?

Esta opción ayuda a recuperar contraseñas o nombres de usuario mediante el envío de los datos vía e-mail.

clip_image035

Usuario olvidado

clip_image037

Contraseña olvidada

clip_image039

Usuario y contraseña olvidados

Registro

Esta opción es para usuarios no registrados. Esta opción vinculara al usuario con un formulario de registro que tendrá que llenar con su información para poder crear su cuenta.

Una vez llenados los campos del formulario hay que dar clic en el botón Registro y automáticamente quedara registrado como egresado.

clip_image041

Simbología del formulario

clip_image043

Campo obligatorio

clip_image045

Campo visible en su perfil

clip_image047

Campo no visible en su perfil

clip_image049

Información: dirija el ratón al icono

Para usuarios registrados

En la página principal, en el menú horizontal aparecerán dos menús desplegables más:

clip_image051

    • Foro
      • Categorías

En esta sección se encuentran los temas del foro divididos por categoría.

clip_image053

      • Mensajes recientes

En esta sección se encuentran los temas mas recientes comentados en el foro

clip_image055

      • Nuevo tema

Esta sección es para abrir un nuevo tema de discusión en el foro. Cuenta con un editor de textos, opción para adjuntar archivos, etc.

clip_image057

      • Sin respuestas

En esta sección se agrupan los mensajes que aún no han sido respondidos.

clip_image059

      • Mis temas

Aquí aparecen los temas que han sido puestos a discusión por el usuario.

clip_image061

      • Perfil

En esta sección aparece la información de perfil del usuario y la actividad que ha tenido en el foro.

clip_image063

      • Buscar

Le será útil al egresado para filtrar la búsqueda en el foro.

Las búsquedas se pueden filtrar por:

  1. Palabras clave
  2. Nombre de usuario
  3. Fecha
  4. Categorías

clip_image065

    • Bolsa de trabajo
      • Ofertar trabajo

Sirve para que el usuario pueda hacer ofertas de empleo a los usuarios de la comunidad.

Se trata de un formulario donde el usuario tiene que llenar los campos y publicar la oferta de trabajo.

clip_image067

      • Ofertas de trabajo

El egresado podrá consultar esta sección en busca de trabajo. Los egresados que sean propietarios de empresas o tengan un empleo para ofertar podrán publicarlo en esta sección. También cuenta con un buscador para facilitar la búsqueda por palabras clave.

clip_image069

En el menú principal aparece una opción nueva: Perfil

clip_image071

  • Perfil

En esta página aparecen los datos generales del egresado, algunos de los cuales serán visibles para los demás usuarios de la comunidad con quienes podrá interactuar y mantenerse en contacto si así lo desea.

clip_image073

  • Editar

Esta opción permite al usuario editar una página de perfil a su gusto para que sea vista por los demás usuarios del sistema.

Al colocar el puntero sobre este menú, automáticamente se desplegaran dos opciones que tienen como objetivo ayudar al usuario a modificar su página de perfil.

clip_image075

· Actualizar perfil

o Perfil

§ Información de contacto

Esta parte es para modificar la información general del contacto.

Una vez modificada la información habrá que dar clic en el botón Actualizar para guardar los cambios.

Esta operación se puede repetir las veces que el usuario guste.

Algunos de estos datos serán visibles para los demás usuarios.

clip_image077

§ Estudios realizados

Aquí el egresado podrá modificar su información académica.

clip_image079

§ Información laboral

Aquí, al igual que en las otras dos pestañas, el usuario podrá modificar su información laboral.

clip_image081

§ ¿Eres empresario?

En esta sección el egresado, en caso de ser dueño de una empresa podrá poner a la disposición del instituto los datos de su empresa para efecto de solicitar residentes, publicar en la bolsa de trabajo, etc.

clip_image083

o Retrato

En esta sección el usuario podrá cambiar su imagen de perfil para que sea vista por los demás usuarios del sistema.

Podrá elegir una imagen precargada, o bien, podrá subir una imagen para que sea usada como imagen de perfil.

clip_image085

· Actualizar imagen

Esta opción también sirve para subir una imagen y también cuenta con un botón para seleccionar un archivo y subirlo.

clip_image087

Administración Back end

El back end es la parte del sistema en el cual solo pueden entrar los administradores del sistema, esto es solo para los usuarios del departamento de sistemas. Esta sección sirve para:

  • Hacer bajas, altas y modificaciones de los datos de los egresados
  • Dar mantenimiento al sitio
  • Crear artículos
  • Modificar artículos
  • Publicar artículos
  • Ingresar, modifica y eliminar campos de datos al formulario del registro de los egresados

A continuación se mostraran imágenes del back end del sistema

Para ingresar al administrador del sistema es necesario entrar a la siguiente URL

http://www.itmochis.edu.mx/sse/administrator/

En el cual se mostrara la siguiente pantalla de acceso

clip_image089

Acceso a la administración

Al ingresar al sistema estaremos en la interfaz de la administración como se muestra en la siguiente imagen

clip_image091

Herramientas relevantes al proyecto

Añadir nuevo artículo

clip_image093 Esta sección sirve para crear artículos y ser mostrados en la página principal, utiliza un editor más reciente hasta la fecha de JCE en cual cuenta con las herramientas suficientes de edición de documentos, las herramientas que tiene que más se van a usar son:

  • Insertar imagen
  • Insertar tabla
  • Subir archivo
  • Hipervínculos

A continuación se muestra una imagen del editor

clip_image095

Editor de artículos JCE

clip_image097Gestor de usuario

Este módulo sirve para administrar a todos los usuarios del sistema, tanto como agregar, eliminar y modificar.

En este modulo se presenta información de los usuarios del sistema los cuales son:

  • Nombre del usuario
  • Usuario
  • Si esta habilitado
  • Si esta activado
  • Grupo en el cual se encuentra
  • Correo electrónico
  • Fecha de la ultima visita
  • Fecha de registro

A continuación se mostrara la imagen de este modulo

clip_image099

Gestor de usuarios

Community Builder

clip_image101El Componente más importante para el control de los datos de los egresados, aquí el operador de la administración del sistema de seguimiento de egresados podrá hacer las siguientes operaciones:

  • Dar mantenimiento a las tablas de la base de datos de los egresados
  • Corregir errores
  • Bloquear egresados
  • Borrar egresados
  • Modificar egresados
  • Crear, modificar y eliminar campos de datos de los egresados “Gestor de campos CB”

De este componente solo se mostrara de la sección más relevante que es el uso del Gestor de campos CB

Para entrar a esta herramienta solo nos dirigimos al menú componentes luego al submenú Community Builder y seleccionar Field Management tal como se muestra en la siguiente imagen

clip_image103

Y se muestra la tabla con los siguientes valores

  • Nombre del campo
  • Titulo del campo
  • Tipo
  • En que pestaña se muestra
  • Si es requerido para registraste
  • Si aparece en el registro
  • Si se puede buscar
  • Si esta publicado

Al dar clic en el nombre aparece la siguiente ventana para modificar los datos del campo

clip_image105

En el cual se muestra:

· Tipo de campo

· Pestaña en la cual se visualizar en el perfil del usuario

· Nombre del campo para interactuar con la base de datos

· Si es requerido para el registro

· Modo en que se va mostrar en el perfil si en una línea o 2 líneas

· Si se desea mostrar en el perfil

· Si se puede buscar

· Si se muestra en el registro

· Si esta publicada

· Tamaño , aquí por defecto es 0

clip_image107Para crear un nuevo campo, basta con dar clic en “Nuevo Campo”.
La interfaz es similar a la de “Modificar un Campo”.

CONCLUSIONES Y RECOMENDACIONES

Con el desarrollo del sistema para el seguimiento de egresados el Instituto Tecnológico de Los Mochis puede procesar de de manera más rápida y eficaz los datos de los egresados, introducirlos al campo laboral y ofrecerles servicios o información que a los egresados les concierne tales como titulación, cursos, diplomados, etc.

Se obtienen estadísticas que con el sistema manual anterior tardaría días o tal vez semanas en y procesar tantos datos escritos en hojas.

A demás tiene un impacto positivo en la economía de la institución y el medio ambiente, ya que con la implementación de este sistema se ahorraran miles de pesos en hojas de papel y tinta.

Para poder llevar a cabo este proyecto fue de suma importancia el trabajar en equipo con el Departamento de Vinculación y con el Departamento de Centro de Computo, ya que estos aclaraban las dudas que podrían surgir durante la realización del sistema.

A partir de esta experiencia, se logró obtener conocimientos sobre la manera de trabajar en un ambiente laboral y del trabajo en equipo.

Para lo cual se propone que a este proyecto se le dé continuidad con respecto a su implementación, ya que implementar este sistema le permitirá a la institución conocer detalladamente los datos del egresado, permanecer en contacto con él y llevar un control riguroso y estadístico de sus egresados.

Se recomienda que a los alumnos que estén cursando su último semestre o estén próximos a realizar el servicio social, deban tener como requisito darse de alta en el Sistema de Seguimiento de Egresados, de esta manera el Departamento de Vinculación podrá hacer uso de la información de los alumnos, por ejemplo, alumnos aspirantes a residencia profesional, alumnos aspirantes al servicio social etc.

FUENTES DE INFORMACIÓN


[i] http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

[ii] http://es.wikipedia.org/wiki/Sitio_web

[iii] http://es.wikipedia.org/wiki/Joomla!

[iv] http://es.wikipedia.org/wiki/Base_de_datos

[v] http://es.wikipedia.org/wiki/DBMS

[vi] http://www.definicionabc.com/tecnologia/mysql.php

[vii] http://es.wikipedia.org/wiki/Software

[viii] http://es.wikipedia.org/wiki/SQL

[ix] 11-12-2012 , http://es.wikipedia.org/wiki/PhpMyAdmin

[x] 11-12-2012 , http://artisteer.malavida.com/

[xi] 11-12-2012 , http://tunnelier.softpedia.com/es/

[xii] 11-12-2012 , http://www.desarrolloweb.com/articulos/codeigniter.html

[xiii] 11-12-2012 , http://blog.unijimpe.net/jpgraph-graficos-con-php/

Toda la carrera Lic. Informática Instituto Tecnológico de Los Mochis

MDP

1. ¿Qué significan las siglas MDB?

Message Driven Bean

2. ¿En qué consiste el funcionamiento de los MDB?

Este servicio funciona a través de colas de mensajes, que es donde los clientes envían sus peticiones, y estas colas son controladas por los Message Driven Beans, los cuales procesan los mensajes que hay en ellas y ejecutan ciertos servicios dependiendo del mensaje procesado.

3. ¿Cuál es el ciclo de vida de un MDB?

Para evitar errores de programación, un message-driven bean no puede ser ejecutado por más de un thread a la vez. Por esta razón y además por no guardar estados, el container puede crear un pool de este tipo de beans similar al existente para stateless session beans.

Debido a su naturaleza stateless el ciclo de vida de un message-driven es simple. Cuando el container desea agregar un nuevo message-driven bean al pool debe crear una nueva instancia, asignar el contexto para que obtenga parámetros de sistema y finalmente ejecutar el método ejbCreate(). Después el bean se encuentra en capacidad para recibir y procesar mensajes. Cuando el container decide reducir el número de instancias existentes invoca el método ejbRemove() terminando su ciclo de vida. Ver figura.

clip_image001

Figura 3.9: Ciclo de vida de un message-driven bean

Debido a su reducido tiempo de vida y a la no persistencia de sus datos, un message-driven bean no sobrevive a fallas en el container o en el servidor, debiendo ser reinstanciado para continuar recibiendo mensajes luego de ésta.

4. ¿Cuál es la diferencia entre MDB y Beans Sesión?

La diferencia más visible entre beans controlados por mensajes y beans de sesión es que los clientes no tienen acceso a beans controlados por mensajes a través de interfaces. Las interfaces se describen en la sección de acceso de cliente Definición de Interfaces . A diferencia de un bean de sesión, un bean controlado por mensajes tiene sólo una clase de Bean.

En varios aspectos, un bean controlado por mensajes asemeja a un bean de sesión sin estado.

  • A instancias bean controlado por mensajes de retener ningún dato o el estado de conversación para un cliente específico.
  • Todas las instancias de un bean controlado por mensajes son equivalentes, permitiendo que el contenedor EJB para asignar un mensaje a cualquier instancia del bean controlado por mensajes. El recipiente puede agrupar estos casos para permitir flujos de mensajes que se procesan simultáneamente.
  • Un solo bean controlado por mensajes puede procesar mensajes de varios clientes.

5. ¿Cómo se usa un MDB?

Los beans de sesión le permiten enviar mensajes JMS y recibirlos de forma sincrónica, pero no de forma asíncrona. Para evitar la inmovilización de los recursos del servidor, no usar el bloqueo sincrónico recibe en un componente del lado del servidor, y en general los mensajes JMS no deben ser enviados o recibidos de forma sincrónica. Para recibir mensajes de forma asincrónica, utilice un bean controlado por mensajes.

6. ¿Cuáles son las características de los MDB?

Beans controlados por mensajes con las siguientes características:

· Ejecutan a la recepción de un mensaje único cliente.

· Se invoca de forma asincrónica.

· Ellos son relativamente de corta duración.

· Ellos no representan directamente los datos compartidos en la base de datos, pero pueden acceder y actualizar estos datos.

· Pueden ser consciente de transacción.

· Ellos son apátridas.

Qué es el middleware orientado a mensajes

¿Qué es el middleware orientado a mensajes (MOM)?

Middleware orientado a mensajes (MOM) es software o hardware que soporta la infraestructura de envío y recepción de mensajes entre sistemas distribuidos. MOM permite a los módulos de aplicación que se distribuye a través de plataformas heterogéneas y reduce la complejidad del desarrollo de aplicaciones que abarcan múltiples sistemas operativos y protocolos de red. El middleware crea una capa de comunicaciones distribuida que aísla el desarrollador de la aplicación de los detalles del sistema operativo y varias interfaces de red. API que se extienden a través de diversas plataformas y redes suelen ser proporcionada por MOM.

MOM proporciona elementos de software que residen en todos los componentes se comunican de una arquitectura cliente / servidor y suelen admitir llamadas asíncronas entre las aplicaciones cliente y servidor. MOM reduce la participación de los desarrolladores de aplicaciones con la complejidad de la naturaleza maestro-esclavo del mecanismo cliente / servidor.

¿Cuál es el propósito principal o funciones de middleware orientado a mensajes?

MOM es principalmente middleware que facilita la comunicación entre las aplicaciones distribuidas. Mientras MOM admite mensajería síncrona y asíncrona, que está más estrechamente identificado con la mensajería asincrónica mediante colas. MOM envía mensajes de una aplicación a otra utilizando una cola como un paso intermedio. Mensajes del cliente se envían a una cola y permanecer allí hasta que son recuperados por la aplicación de servidor. La ventaja de este sistema es que el servidor de aplicaciones no necesita estar disponible cuando el mensaje es enviado, en su lugar, el servidor puede recuperar el mensaje en cualquier momento. Además, ya que los mensajes pueden ser recuperados de la cola en cualquier orden, MOM también puede facilitar la recuperación de mensajes utilizando esquemas de prioridad o de balanceo de carga. MOM también puede proporcionar un nivel de tolerancia a fallos utilizando colas persistentes que permiten que los mensajes se recuperó cuando el sistema falla.

De acuerdo con un octubre de 1996, artículo en InfoWorld por Julie Bort, “Queue Server es una opción popular para los procesos donde cada paso es dependiente de la anterior, es también muy adecuado para aplicaciones diseñadas para la comunicación de fondo donde hay interacción directa del usuario es involucrados “. Muchos otros analistas describen la importancia de MOM en el apoyo a las aplicaciones heredadas y los sistemas dispersos.

¿Cómo se diferencia de otro tipo de middleware?

Middleware es la amplia gama de servicios en capas entre las aplicaciones y un sistema operativo que proporcionan servicios especializados y la interoperabilidad entre las aplicaciones distribuidas. Por una variedad de razones, incluyendo el hecho de que el middleware es una categoría relativamente nueva de software, la funcionalidad de los diferentes tipos de middleware no está estandarizada. Por ejemplo, la función primaria de middleware de procesamiento de transacciones tiene que ver con el control, pero muchos de los productos de procesamiento de transacciones también incluyen servicios de comunicación. Proveedores de middleware añadir funciones de garantizar que sus productos interactuar con una variedad de hardware y software, y para ayudar a diferenciar su producto de los competidores.

Debido a que cada producto dentro de una categoría de middleware incluye una variedad de funciones y porque las funciones “estándar” dentro de cada categoría cambian rápidamente, las distinciones útiles entre los servicios de middleware son difíciles de encontrar. Sin embargo, la siguiente es una de las muchas maneras de clasificar los productos de middleware que hemos encontrado útil. Tenga en cuenta que esta no es una lista completa de servicios de middleware.

Presentación Prestaciones: Formas gerente, gerente de gráficos, enlazador hipermedia, y administrador de impresión.

Servicios: Comunicación Peer-to-peer de mensajería, llamada a procedimiento remoto, paso de mensajes, colas de mensajes, correo electrónico e intercambio electrónico de datos.

Servicios de Control: administrador de subprocesos, administrador de transacciones, corredor de los recursos, de grano fino petición del planificador y de grano grueso Programador de tareas.

Servicios de Información: servidor de directorio, gerente de registro, administrador de archivos, gestor de registro, el sistema de base de datos relacional orientada a objetos de base de datos del sistema y gestor de repositorio.

MOM se inscribe en el middleware de servicios de comunicación y por lo general incluye el paso de mensajes y colas de mensajes. Muchos productos también soportan llamadas a procedimientos remotos, así como servicios de directorio.

¿Cuál es la diferencia entre los servicios de comunicación Momand otros?

MOM admite mensajes y por lo tanto se ha diseñado principalmente para apoyar la comunicación diferida mientras peer-to-peer y las llamadas a procedimiento remoto (RPC) están diseñados para soportar la comunicación síncrona. En RPC, el servidor receptor debe estar disponible para aceptar mensajes enviados. Si el servidor es baja, el mensaje no se puede entregar en ese momento. MOM, por otro lado, puede enviar mensajes a los servidores que están abajo sin tener que volver a enviarlo. Mensajes en un sistema de MOM se colocan en una cola y recuperar siempre que el servidor lo solicite. Si el servidor está disponible en el momento en que se envía el mensaje es irrelevante.

Web Service

Sin ttulo

1. ¿Definición del autor acerca de un web service?
Los servicios Web son una arquitectura de computación distribuida que ofrece el uso de aplicaciones de acoplamiento flexible que realizan servicios de unos por otros. Disponen de una nueva manera de realizar programa a programa de comunicaciones que permiten que las aplicaciones se comuniquen entre sí con independencia de que se usó idioma de la aplicación para crear una aplicación-y con independencia de qué plataforma de sistemas y el entorno operativo se está utilizando.
2. Define el funcionamiento de los web service a través de sus elementos
Otra manera de definir qué servicios web hacer: Considere la posibilidad de publish, find y Bind
Aquí hay otra manera de entender cómo funcionan los servicios Web. Directorios de servicios Web y protocolos esencialmente tres funciones: publicar, buscar, y se unen. Para utilizar los servicios Web, las aplicaciones son:
Publicado en común un directorio UDDI (de tal manera que las aplicaciones cooperantes pueden encontrar entre sí);
Encontrado (utilizando protocolos WSDL que pueden localizar las aplicaciones de servicios Web y determinar si dichas aplicaciones pueden trabajar con la aplicación de origen), y
bind (un enlace de comunicaciones entre las dos aplicaciones se establece, por lo que un servicio, tales como la realización de algún tipo de cálculo o transacción puede representarse mediante los protocolos SOAP).
3. Describe la arquitectura de los web service?

XML: Mecanismo usado por un web service para indicar la forma en que deben ser suministrados los datos de manera que cualquiera pueda interactuar con el mismo, por medio de lenguaje XML.
WSDL: La información anterior se guarda en el archivo WSDL (Web Service Description Languaje) el cual contiene un documental XML Junto con la descripción de ciertos mensajes SOAP y de come deben manejarse, así como donde se encuentra el recurso del servicio y que protocolo debe usar el consumidor de este.
Protocolos: Protocolo de comunicación es SOAP generalmente, además de usar protocolos comúnmente conocidos como TCP/IP, HTTP, XML.

JUEGO CHOCOMILK REVANGE

   Dibujo

Historia

Es miércoles por la mañana cuando un grupo de jóvenes se va a desayunar a la fonda de la esquina, y todos piden chocomilk con plátano y diferentes platillos, una vez terminado la alumna RUBI se va sin pagar el chocomilk, dejando a pagar a la Martina pero este no quiso pagar y le echo la culpa al joven guapo Julio, que pagara, este se enojo y enfureció se transformo en Súper  Saiyajin uso el Jutso Clones de sombra y empezo a buscar a RUBI para ponerla a lavar platas en la fonda por que si no el paga.
Empieza a disfrutar esta épica aventura y no dejes que te atrape, véncelo aventándole bolitas de poder DESCARGALO Y VENCE PARA NO PAGAR EL CHOCOMILK
Los personajes y la historia son ficticios cualquier parecido con la realidad es mera coincidencia
CONTROLES:

Con las flechas se mueve y con el espacio dispara

Al parecer hay un ciclo infinito con windows vista y 7 , abran el admin de tareas, y terminen el proceso de javaw

DESCARGAR

Validación de sistemas críticos

Actividad 1:

Validación

1. ¿Describe las razones por las cuales es necesaria la validación?

a. Costes de fallos de ejecución. Los costes y las consecuencias de los fallos de ejecución de los sistemas críticos son potencial mente mucho más grandes que para los sistemas no críticos. Pueden reducirse los riesgos de los fallos del sistema invirtiendo más en verificación y validación del sistema. Normalmente es más económico encontrar y eliminar defectos antes de que el sistema sea entregado que pagar por los consecuentes costes de accidentes o de un mal funcionamiento de los servicios del sistema.

b. Validación de los atributos de confiabilidad. Puede tenerse que hacer una demostración formal a los clientes de que el sistema satisface sus requerimientos especificados de confiabilidad (disponibilidad, fiabilidad, seguridad y protección). Para evaluar estas características de confiabilidad se requieren actividades específicas de V & V explicadas más adelante en este capítulo. En algunos casos, los reguladores externos, tales como autoridades de aviación nacionales, pueden tener que certificar que el sistema es seguro antes de que éste sea desplegado. Para obtener esta certificación, pueden tenerse que diseñar y llevar a cabo procedimientos de V & V especiales que recogen la evidencia sobre la confiabilidad del sistema.

2. Cuál es el proceso para medir la fiabilidad de un software

Pruebas estadísticas

a. Se comienza estudiando los sistemas existentes del mismo tipo para establecer un per- fil operacional. Un perfil operacional identifica las clases de entradas al sistema y la probabilidad de que estas entradas ocurran en un uso normal.

b. A continuación, se construye un conjunto de datos de prueba que reflejan el perfil operacional. Esto significa que se crean datos de prueba con la misma distribución de probabilidad que los datos de prueba para los sistemas que se han estudiado. Normalmente, se utiliza un generador de datos de prueba para soportar este proceso.

c. Se prueba el sistema utilizando estos datos y se contabiliza el número y tipo de fallos que ocurren. Los instantes en los que ocurren estos fallos también son registrados. Tal y como se indicó en el Capítulo 9, las unidades de tiempo que se elijan deberían ser adecuadas para la métrica de fiabilidad utilizada.

d. Después de que se ha observado un número de fallos significativos estadísticamente, se puede calcular la fiabilidad del software y obtener el valor adecuado de la métrica de fiabilidad.

3. Que es y porque es importante un perfil de operaciones

Consiste en la especificación de clases de entradas y la probabilidad de su ocurrencia. Cuando un nuevo sistema software reemplaza a un sistema existente manual o automatizado, es razonablemente fácil evaluar el patrón de uso probable del nuevo software. Éste debería corresponderse con el uso del sistema existente, con algunas adiciones para las nuevas funcionalidades que (presumiblemente) se incluyen en el nuevo software. Por ejemplo, puede especificarse un perfil operacional para sistemas de centralitas de telecomunicaciones debido a que las compañías de telecomunicaciones conocen los patrones de llamadas que estos sistemas tienen que manejar.

El perfil operacional del software es importante por que refleja cómo se utilizará éste en la práctica.

4. La dificultad para la construcción de un perfil operacional de un software nuevo ¿Es igual para uno que se creó para remplazar a otro?

NO por que cuando un sistema software es nuevo e innovador, es difícil anticipar cómo será utilizado y, por lo tanto, generar un perfil operacional preciso.

5. Cómo funciona el modelo de crecimiento de fiabilidad

Un modelo de crecimiento de fiabilidad es un modelo de cómo cambia la fiabilidad del sistema a lo largo del tiempo durante el proceso de pruebas. Para predecir la fiabilidad, el modelo conceptual de crecimiento de la fiabilidad debe ser traducido a un modelo matemático.

Aquí no se entra en este nivel de detalle, sino que simplemente se plantea el principio del crecimiento de la fiabilidad.

6. ¿Es garantía de que la fiabilidad mejorara en cada entrega después de corregir fallos? ¿Por qué?

SI, por que a medida que se descubren los fallos del sistema, los defectos subyacentes que provocan estos fallos son reparados para que la fiabilidad del sistema mejore durante las pruebas y depuración.

Aunque los defectos del software no siempre se reparan durante la depuración, y cuando se cambia un programa, a menudo se introducen nuevos defectos. La probabilidad de ocurrencia de estos defectos puede ser mayor que la probabilidad de ocurrencia del defecto que ha sido reparado. Por lo tanto, la fiabilidad del sistema a veces puede empeorar en una nueva entrega en lugar de mejorar.

Por lo tanto no es garantía

7. ¿Hasta cuando las pruebas y depuración deben continuar?

Las pruebas pueden detenerse cuando se alcance el nivel requerido de fiabilidad del sistema.

8. Ventajas de la predicción de la predicción a partir de un modelo

Planificación de las pruebas. Dado el calendario actual de pruebas, puede predecirse cuándo se completarán las pruebas. Si el final de las pruebas tiene lugar después de la fecha planificada de entrega del sistema, entonces puede tenerse que desplegar recursos adicionales para probar y depurar, y así acelerar la tasa de crecimiento de fiabilidad.

Negociaciones con el cliente. Algunas veces el modelo de fiabilidad muestra que el crecimiento de la fiabilidad es muy lento y que se requiere una cantidad de esfuerzo de pruebas desproporcionada para obtener un beneficio relativamente pequeño.

Puede merecer la pena renegociar los requerimientos de fiabilidad con el cliente. De forma alternativa, puede ocurrir que el modelo prediga que la fiabilidad requerida probablemente nunca será alcanzada. En este caso, se tendrán que renegociar con el cliente los requerimientos de la fiabilidad del sistema.

9. Tipos de revisiones propuestas por el autor para ser obligatorias y garantizar la seguridad de un sistema

1. revisión para corregir la función que se pretende;

2. revisión para una estructura comprensible y mantenible;

3. revisión para verificar que el algoritmo y el diseño de las estructuras de datos son consistentes con el comportamiento especificado;

4. revisión de la consistencia del código y del diseño del algoritmo y de las estructuras de datos;

5. revisión de la adecuación de los casos de prueba del sistema

10. En qué consiste la técnica más efectiva para demostrar la seguridad del sistema (contradicción)

La técnica más efectiva para demostrar la seguridad de un sistema es la demostración por contradicción. Se comienza suponiendo que se está en un estado no seguro, el cual ha sido identificado por un análisis de contingencias del sistema, y que puede ser alcanzado ejecutando el programa. Se describe un predicado que define este estado no seguro.

A continuación, se analiza el código de forma sistemática y se muestra que, para todos los caminos del programa que conducen a ese estado, la condición de terminación de estos caminos contradice el predicado no seguro.

Si éste es el caso, la suposición inicial de un estado inseguro es incorrecta.

Si se repite esto para todas las contingencias identificadas, entonces el software es seguro.

a. Ejemplo:

Como ejemplo, consideremos el código de la Figura 24.6, que podría ser parte de la implementación del sistema de suministro de insulina. Desarrollar un argumento de seguridad para este código implica demostrar que la dosis de insulina administrada nunca es mayor que algún nivel máximo establecido para cada individuo diabético. Por lo tanto, no es necesario probar que el sistema suministra la dosis correcta, sino simplemente que nunca suministra una sobredosis al paciente.

Para construir un argumento de seguridad, se identifica la precondición para el estado in- seguro que, en este caso, es que currentDose > maxDose. Después se demuestra que todos los caminos del programa conducen a una contradicción de esta aserción no segura. Si éste es el caso, la condición no segura no puede ser cierta. Por lo tanto, el sistema es seguro. Se pueden estructurar y presentar los argumentos de seguridad de forma gráfica tal y como se muestra en la Figura 24.7. Los argumentos de seguridad, según se refleja en la citada figura, son mucho más cortos que las verificaciones formales de sistemas. Primero se identifica todos los posibles caminos que conducen a! estado potencial mente inseguro. Se trabaja hacia atrás a partir de este estado no seguro y se considera la última asignación de todas las variables de estado en cada camino que conduce a él. Pueden omitirse los cálculos previos (como la sentencia if 1 en la Fi- gura 24.7) en el argumento de seguridad. En este ejemplo, todo lo que se necesita saber es el conjunto de posibles valores de currentDose inmediatamente antes de que el método administerlnsulin sea ejecutado. En el argumento de seguridad mostrado en la Figura 24.7, existen tres posibles caminos en el programa que conducen a la llamada al método administerlnsulin. Queremos demostrar que la cantidad de insulina suministrada nunca excede del valor de maxDose. Se consideran todos los posibles caminos hasta administerlnsulin:

Fuente: ingeniería del software lan Sommenville

Haciendo una bitácora para una aplicación Web con CodeIgniter

Se preguntarán para que sirve una bitácora en en una Aplicación Web. Bueno les diré, es muy útil, ya que va guardando los movimientos de los usuarios y en  caso de reclamo por parte de los usuarios de que el sistema que hemos desarrollado no funciona por que han perdido datos pero en realidad ellos los borraron por razones privadas, nosotros podremos defendernos con esta bitácora de movimientos que dirá a que hora se realizo cierta acción y quien la realizo ejemplo:

image

Como pueden ver se puede visualizar la acción realizada, el usuario al que se le hizo el cambio luego al usuario que realizo

el cambio, la fecha y hora en que se realizo la acción y valor anterior y el valor nuevo

A continuación les mostrare parte del código

Vista de la bitácora “bitacora.php”

<?php

function estado($edo){

    if($edo==1){

        return "Administrador";

        }

    else {

        return "Usuario";

    }

    }

 

$eliminar = base_url()."imagenes/eliminar.fw.png";

$actualizar = base_url()."imagenes/modificar.png";

    

function estadoImg($edo){

    $palomita = base_url()."imagenes/v.fw.png";

    $x = base_url()."imagenes/eliminar.png";

    if($edo==1){

        return "<img src=".$palomita.">";

    }

    else{

        return "<img src=".$x.">";

    }

}

 

 

 

?>

        <script type="text/javascript">

        <!--

        

        function confirmacion(id) {

        var answer = confirm("Esta seguro que desea eliminar")

        if (answer){

        alert("Ha confirmado eliminar")

        location.href="deleteUserId/"+id

        }

        else{

        alert("Cancelado")

        }

    }

    

    function actualizar(id) {

        

        location.href="updateUserId/"+id

        

    }

//-->


 


        <?php echo $_SESSION['nombre'];?>

        

        

        

Bitacora

    

<div id="container">

 

    <div id="body" align="center">

        

         

            <table border="0" align="center">

            

            <form id="b" name="b" action="index.php/welcome/buscarBitacora" method="POST">

            <label for="buscar">Buscar 

            <input type= "text" id="buscar" name="buscar" >

            

            <input type="submit" id="arre" name="arre" value="buscar"

            

            

            

            

            <table border="0" align="center" id="tabla">

            <tr bgcolor="#7362ec" align="center">

            

            Acción

            Usuario administrado 

            Usuario administrador  

            Fecha

            Valor Anterior

            Valor nuevo

            

            

            

    

        

            <?php

            $colorfila=0;

            

            

            if($users!=false){

               foreach($users->result() as $row){

                   if ($colorfila==0){ 

                   $color= "#b5b5b5"; 

                   $colorfila=1; 

                    }else{ 

                   $color="#f7f7f7"; 

                   $colorfila=0; 

                }    

                

                

                echo "<tr bgcolor='".$color."' align='center' ";?> onmouseover="this.style.backgroundColor='#E13300'"

                                                                   onmouseout="this.style.backgroundColor=''"><?php

                

                echo " ".$row->accion."";

                echo "".$row->UsuarioAdministrado. "";

                echo " ".$row->usuarioAdministrador."";

                echo "".$row->fecha."";

                echo "".$row->valor_anterior."";

                echo "".$row->valor_nuevo."";

                

                

                echo "";

            }

            

        }

        ?>

        

        

        

 

    

 

 

 


La parte del controlador “users.php”

//FUNCION GUARDAR BITACORA

        public function guardarBitacora($id,$accion){

            if(isset($_SESSION['usuario'])){

                

                $datoAnterior="";

                $datoNuevo="";

                //Obteniendo los datos que se van a modificar

                $nom_usu = $this->input->post('nom_usu');

                

                $clave=sha1($this->input->post('psw'));

    

                $login = $this->input->post('login');

                $status = $this->input->post('status');

                $acceso = $this->input->post('acceso');

                $local = $this->input->post('local');

                $ld_nacional = $this->input->post('ld_nacional');

                $cel_ld = $this->input->post('cel_ld');

                $cel_local = $this->input->post('cel_local');

                $internacional = $this->input->post('internacional');

                

                $br="
"
;

                

                //Obterner los datos de la la base de datos

                $datosDB=$this->usersModel->datosUsuario($id);

                

                //Comparando login

                if($login==@$datosDB->login){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.="login:".$datosDB->login;

                    $datoNuevo.="login:".$login;

                    }

                    

                    

                //Comparando nombre de usuario    

                if($nom_usu==$datosDB->nom_usu){

                        $datoAnterior.= "";

                    }

                else{

                    $datoAnterior.=$br."nom_usu:".$datosDB->nom_usu;

                    $datoNuevo.=$br."login:".$nom_usu;

                    }

                    

                //Comparando nombre de password    

                if($clave==$datosDB->psw){

                        $datoAnterior.= "";

                    }

                else{

                    $datoAnterior.=$br."psw:***";

                    $datoNuevo.=$br."login:???";

                    }

                    

                //Comparando status    

                if($status==$datosDB->status){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."status:".$datosDB->status;

                    $datoNuevo.=$br."status:".$status;

                    }

                

                

                

                //Comparando acceso    

                if($acceso==$datosDB->acceso){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."acceso:".$datosDB->acceso;

                    $datoNuevo.=$br."acceso:".$acceso;

                    }

                

                

                

                //Comparando llamadas locales    

                if($local==$datosDB->local){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."local:".$datosDB->local;

                    $datoNuevo.=$br."local:".$local;

                    }

                

                

                

                //Comparando llamadas nacionales    

                if($ld_nacional==$datosDB->ld_nacional){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."ld_nacional:".$datosDB->ld_nacional;

                    $datoNuevo.=$br."ld_nacional:".$ld_nacional;

                    }

                

                

                

                //Comparando llamadas cel_ld    

                if($cel_ld==$datosDB->cel_ld){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."cel_ld:".$datosDB->cel_ld;

                    $datoNuevo.=$br."cel_ld:".$cel_ld;

                    }

                

                

                

                //Comparando llamadas cel_local    

                if($cel_local==$datosDB->cel_local){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."cel_local:".$datosDB->cel_local;

                    $datoNuevo.=$br."cel_local:".$cel_local;

                    }

                

                

                

                if($internacional==$datosDB->internacional){

                        $datoAnterior.="";

                    }

                else{

                    $datoAnterior.=$br."Internacional:".$datosDB->internacional;

                    $datoNuevo.=$br."internacional:".$internacional;

                    }

                

                

                

            $dataBit = array(

                            "accion" => $accion,

                            "usuarioAdministrador" => $_SESSION["login"],

                            "usuarioAdministrado" => $login,

                            "valor_anterior" => $datoAnterior,

                            "valor_nuevo" => $datoNuevo

                            );

            $this->usersModel->insertBitacora($dataBit);

        

        }

        }

Ahora la parte del modelo “usersmodels”

public function getBitacora(){

    

        $data=$this->db->get('vistabitacora');

            

        if($data->num_rows() >0){

            return $data;

        }else{

            return false;

            }

    }

 

    public function insertBitacora($data){

        $this->db->insert('bitacora',$data);

        

    }

 

function buscarBitacora($dato){

        

        $this->db->select('accion');

        $this->db->select('usuarioAdministrador');

        $this->db->select('UsuarioAdministrado');

        $this->db->select('valor_anterior');

        $this->db->select('valor_nuevo');

        $this->db->select('fecha');

        

        $this->db->like('usuarioAdministrador',$dato);

        $this->db->or_like('accion',$dato);

        $this->db->or_like('usuarioAdministrado',$dato);

        $this->db->or_like('valor_anterior',$dato);

        $this->db->or_like('valor_nuevo',$dato);

        $this->db->or_like('fecha',$dato);

        

        

        

        $consul=$this->db->get('bitacora');

    

        if($consul->num_rows() >0){

        return $consul;

        }else{

            return false;

        }    

    }    

 

Archivo SQL

# SQL Manager 2010 for MySQL 4.5.1.3

# ---------------------------------------

# Host     : localhost

# Port     : 3306

# Database : asteriskcdrdb

 

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES latin1 */;

 

SET FOREIGN_KEY_CHECKS=0;

 

CREATE DATABASE `asteriskcdrdb`

    CHARACTER SET 'latin1'

    COLLATE 'latin1_swedish_ci';

 

USE `asteriskcdrdb`;

 

#

# Structure for the `bitacora` table : 

#

 

CREATE TABLE `bitacora` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `accion` varchar(20) DEFAULT NULL,

  `usuarioAdministrador` varchar(20) DEFAULT NULL,

  `usuarioAdministrado` varchar(20) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,

  `valor_anterior` varchar(200) DEFAULT NULL,

  `valor_nuevo` varchar(200) DEFAULT NULL,

  `fecha` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=latin1 COMMENT='id-int(11)naccion-varchar(20)nusuario-varchar(20)nfecha-datenhora-timenvalor_anterior-varchar(20)nvalor_nuevo-varchar(20)';

 

#

# Structure for the `cdr` table : 

#

 

CREATE TABLE `cdr` (

  `calldate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',

  `clid` varchar(80) NOT NULL DEFAULT '',

  `src` varchar(80) NOT NULL DEFAULT '',

  `dst` varchar(80) NOT NULL DEFAULT '',

  `dcontext` varchar(80) NOT NULL DEFAULT '',

  `channel` varchar(80) NOT NULL DEFAULT '',

  `dstchannel` varchar(80) NOT NULL DEFAULT '',

  `lastapp` varchar(80) NOT NULL DEFAULT '',

  `lastdata` varchar(80) NOT NULL DEFAULT '',

  `duration` int(11) NOT NULL DEFAULT '0',

  `billsec` int(11) NOT NULL DEFAULT '0',

  `disposition` varchar(45) NOT NULL DEFAULT '',

  `amaflags` int(11) NOT NULL DEFAULT '0',

  `accountcode` varchar(20) NOT NULL DEFAULT '',

  `uniqueid` varchar(32) NOT NULL DEFAULT '',

  `userfield` varchar(255) NOT NULL DEFAULT '',

  KEY `IDX_UNIQUEID` (`uniqueid`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;

 

#

# Structure for the `user_control` table : 

#

 

CREATE TABLE `user_control` (

  `id_usu` tinyint(3) unsigned NOT NULL AUTO_INCREMENT,

  `status` int(1) unsigned NOT NULL DEFAULT '1',

  `nom_usu` varchar(25) NOT NULL,

  `login` varchar(4) NOT NULL DEFAULT '0000',

  `psw` varchar(40) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,

  `local` tinyint(4) NOT NULL DEFAULT '0',

  `ld_nacional` tinyint(4) NOT NULL DEFAULT '0',

  `cel_local` tinyint(4) NOT NULL DEFAULT '0',

  `cel_ld` tinyint(4) NOT NULL DEFAULT '0',

  `internacional` tinyint(4) NOT NULL DEFAULT '0',

  `acceso` tinyint(4) NOT NULL DEFAULT '0',

  PRIMARY KEY (`id_usu`),

  UNIQUE KEY `login` (`login`)

) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8;

 

#

# Structure for the `usuarios` table : 

#

 

CREATE TABLE `usuarios` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `username` varchar(20) DEFAULT NULL,

  `password` varchar(20) DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

 

#

# Data for the `bitacora` table  (LIMIT 0,500)

#

 

INSERT INTO `bitacora` (`id`, `accion`, `usuarioAdministrador`, `usuarioAdministrado`, `valor_anterior`, `valor_nuevo`, `fecha`) VALUES 

  (1,'CerrarSesion','45','',NULL,NULL,'2012-11-02 19:06:35'),

  (2,'Acceso','00','',NULL,NULL,'2012-11-02 19:09:07'),

  (3,'Actualización','00','00','
acceso:1'
,'
acceso:0'
,'2012-11-02 19:09:41'),

  (4,'CerrarSesion','00','',NULL,NULL,'2012-11-02 19:09:45'),

  (5,'Acceso','00','',NULL,NULL,'2012-11-02 19:09:52'),

  (6,'CerrarSesion','00','',NULL,NULL,'2012-11-02 19:12:31'),

  (7,'Acceso','00','',NULL,NULL,'2012-11-02 19:12:40'),

  (8,'CerrarSesion','00','',NULL,NULL,'2012-11-02 19:13:27'),

  (9,'Acceso','00','',NULL,NULL,'2012-11-02 19:13:34'),

  (10,'Acceso','05','',NULL,NULL,'2012-11-05 09:33:09'),

  (11,'CerrarSesion','05','',NULL,NULL,'2012-11-05 09:37:14'),

  (12,'Acceso','05','',NULL,NULL,'2012-11-05 09:38:30'),

  (13,'Actualización','05','0','login:05
nom_usu:Julio Cesar
status:1
acceso:1
local:1'
,'login:
login:
status:
acceso:
local:'
,'2012-11-06 16:51:42'),

  (14,'Cambio de contraseña','05','',NULL,NULL,'2012-11-06 16:55:18'),

  (15,'CerrarSesion','05','',NULL,NULL,'2012-11-06 16:55:24'),

  (16,'Acceso','00','',NULL,NULL,'2012-11-06 16:58:49'),

  (17,'Actualización','00','05','','','2012-11-06 16:59:29'),

  (18,'Actualización','00','05','
psw:***
local:0'
,'
login:???
local:1'
,'2012-11-06 17:01:56'),

  (19,'Actualización','00','05','
local:0'
,'
local:1'
,'2012-11-06 17:03:18'),

  (20,'CerrarSesion','00','',NULL,NULL,'2012-11-06 17:03:29'),

  (21,'Acceso','05','',NULL,NULL,'2012-11-06 17:03:34'),

  (22,'Cambio de contraseña','05','',NULL,NULL,'2012-11-06 17:03:49'),

  (23,'CerrarSesion','05','',NULL,NULL,'2012-11-06 17:03:54'),

  (24,'Acceso','05','',NULL,NULL,'2012-11-06 17:04:01'),

  (25,'Acceso','05','',NULL,NULL,'2012-11-07 07:00:08'),

  (26,'Registro','05','10','login:
nom_usu:
psw:***
status:
acceso:
local:'
,'login:10
login:Chicho
login:???
status:1
acceso:0
local:1'
,'2012-11-07 07:01:00'),

  (27,'Registro','05','0','
psw:***'
,'
login:???'
,'2012-11-07 07:03:42'),

  (28,'Cambio de contraseña','05','',NULL,NULL,'2012-11-07 07:05:35'),

  (29,'Cambio de contraseña','05','43',NULL,NULL,'2012-11-07 07:08:16'),

  (30,'CerrarSesion','05','',NULL,NULL,'2012-11-07 07:13:31'),

  (31,'Acceso','05','',NULL,NULL,'2012-11-07 07:17:14'),

  (32,'Eliminacion','05','40','id_usu:40
nom_usu:Felipe
acceso:1
status:1
local:0
ld_nacional:0
cel_local:0
cel_ld:0
intenacional:0'
,NULL,'2012-11-07 07:17:59'),

  (33,'Actualización','05','01','login:05
psw:***
acceso:1
local:0'
,'login:01
login:???
acceso:0
local:1'
,'2012-11-07 07:23:14'),

  (34,'Actualización','05','11','login:01
local:0'
,'login:11
local:1'
,'2012-11-07 07:23:57'),

  (35,'Actualización','05','01','
psw:***
local:0'
,'
login:???
local:1'
,'2012-11-07 07:26:04'),

  (36,'Registro','05','21',NULL,NULL,'2012-11-07 07:41:53'),

  (37,'CerrarSesion','05','',NULL,NULL,'2012-11-07 07:42:07'),

  (38,'Acceso','21','',NULL,NULL,'2012-11-07 07:42:16'),

  (39,'Cambio de contraseña','21','',NULL,NULL,'2012-11-07 07:42:36'),

  (40,'CerrarSesion','21','',NULL,NULL,'2012-11-07 07:42:48'),

  (41,'Acceso','21','',NULL,NULL,'2012-11-07 07:42:56'),

  (42,'CerrarSesion','21','',NULL,NULL,'2012-11-07 07:43:35'),

  (43,'Acceso','10','',NULL,NULL,'2012-11-10 17:13:47'),

  (44,'CerrarSesion','10','',NULL,NULL,'2012-11-10 17:13:55'),

  (45,'Acceso','06','',NULL,NULL,'2012-11-10 17:15:15'),

  (46,'CerrarSesion','06','',NULL,NULL,'2012-11-10 17:16:21'),

  (47,'Acceso','06','',NULL,NULL,'2012-11-10 17:16:32');

COMMIT;

 

#

# Data for the `cdr` table  (LIMIT 0,500)

#

 

INSERT INTO `cdr` (`calldate`, `clid`, `src`, `dst`, `dcontext`, `channel`, `dstchannel`, `lastapp`, `lastdata`, `duration`, `billsec`, `disposition`, `amaflags`, `accountcode`, `uniqueid`, `userfield`) VALUES 

  ('2012-09-03 19:52:50','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000000','SIP/100-00000001','Dial','SIP/100,"",tr',10,5,'ANSWERED',3,'','1346723570.0',''),

  ('2012-09-04 13:28:33','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000001','SIP/100-00000002','Congestion','10',5,0,'FAILED',3,'','1346786913.1',''),

  ('2012-09-04 13:29:08','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000004','SIP/100-00000005','Dial','SIP/100,"",tr',24,22,'ANSWERED',3,'','1346786948.4',''),

  ('2012-09-04 13:33:52','"Julian Garibaldi" ','100','100','from-internal','SIP/100-00000006','SIP/100-00000007','Congestion','10',5,0,'FAILED',3,'','1346787232.6',''),

  ('2012-09-04 13:35:36','"Julian Garibaldi" ','100','100','from-internal','SIP/100-0000000d','SIP/100-0000000e','Dial','SIP/100,"",tr',16,8,'ANSWERED',3,'','1346787336.13',''),

  ('2012-09-04 14:13:33','"Recepcion" ','300','300','personalizado','SIP/300-0000000f','SIP/300-00000010','Hangup','',30,0,'NO ANSWER',3,'','1346789613.15',''),

  ('2012-09-04 14:14:08','"Recepcion" ','300','300','personalizado','SIP/300-00000011','SIP/300-00000012','Dial','SIP/300,30,Tt',28,25,'ANSWERED',3,'','1346789648.17',''),

  ('2012-09-04 14:18:24','"Recepcion" ','300','300','personalizado','SIP/300-00000013','SIP/300-00000014','Dial','SIP/300,30,Tt',4,0,'NO ANSWER',3,'','1346789904.19','');

COMMIT;

 

#

# Data for the `user_control` table  (LIMIT 0,500)

#

 

INSERT INTO `user_control` (`id_usu`, `status`, `nom_usu`, `login`, `psw`, `local`, `ld_nacional`, `cel_local`, `cel_ld`, `internacional`, `acceso`) VALUES 

  (36,0,'kakaroto','45','da39a3ee5e6b4b0d3255bfef95601890afd80709',0,0,1,1,0,0),

  (38,1,'Julio Cesar','01','7c4a8d09ca3762af61e59520943dc26494f8941b',0,0,0,0,0,0),

  (39,1,'Julian Garibaldi','06','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',0,1,1,1,1,1),

  (41,1,'Chicho','10','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',1,0,0,0,0,0),

  (42,0,'0','0','da39a3ee5e6b4b0d3255bfef95601890afd80709',0,0,0,0,0,0),

  (43,1,'diane','11','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',1,0,0,0,0,0),

  (45,1,'Mijail','43','4f62e47bd66b5ab1a8fa1e9508d53ae78e7dcfac',1,0,0,0,0,0),

  (46,1,'xyz','21','dd5fef9c1c1da1394d6d34b248c51be2ad740840',1,0,0,0,0,0);

COMMIT;

 

 

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

¿Qué es y cómo opera un ataque de Cross-Site Scripting (XSS)?

Definición

XSS es un ataque de inyección de código malicioso para su posterior ejecución que puede realizarse a sitios web, aplicaciones locales e incluso al propio navegador.

Sucede cuando un usuario mal intencionado envía código malicioso a la aplicación web y se coloca en forma de un hipervínculo para conducir al usuario a otro sitio web, mensajería instantánea o un correo electrónico. Así mismo, puede provocar una negación de servicio (DDos).

 

clip_image002
Fig. 1. Operación de un ataque XSS

Generalmente, si el código malicioso se encuentra en forma de hipervínculo es codificado en HEX (basado en el sistema de numeración hexadecimal, base 16) o algún otro, así cuando el usuario lo vea, no le parecerá sospechoso. De esta manera, los datos ingresados por el usuario son enviados a otro sitio, cuya pantalla es muy similar al sitio web original.

De esta manera, es posible secuestrar una sesión, robar cookies y cambiar la configuración de una cuenta de usuario.

Tipos de ataques

Las diversas variantes de esta vulnerabilidad pueden dividirse en dos grandes grupos: el primero se conoce como XSS persistente o directo y el segundo como XSS reflejado o indirecto.

Directo o persistente. Consiste en invadir código HTML mediante la inclusión de etiquetas y en sitios que lo permiten.

Local. Es una de las variantes del XSS directo, uno de sus objetivos consiste en explotar las vulnerabilidades del mismo código fuente o página web. Esas vulnerabilidades son resultado del uso indebido del DOM (Modelo de Objetos del Documento, es un conjunto estandarizado de objetos para representar páginas web) con JavaScript, lo cual permite abrir otra página web con código malicioso JavaScript incrustado, afectando el código de la primera página en el sistema local. Cuando el XSS es local, ningún código malicioso es enviado al servidor. El funcionamiento toma lugar completamente en la máquina del cliente, pero modifica la página proporcionada por el sitio web antes de que sea interpretada por el navegador para que se comporte como si se realizara la carga maliciosa en el cliente desde el servidor. Esto significa que la protección del lado del servidor que filtra el código malicioso no funciona en este tipo de vulnerabilidad.

Indirecto o reflejado. Funciona modificando valores que la aplicación web pasa de una página a otra, sin emplear sesiones. Sucede cuando se envía un mensaje o ruta en una URL, una cookie o en la cabecera HTTP (pudiendo extenderse al DOM del navegador).

Consideraciones

Como desarrollador

La aplicación web que se desee implementar debe contar con un buen diseño. Posteriormente, se deben realizar diversos tipos de pruebas antes de su liberación, para detectar posibles fallos y  huecos de seguridad, mediante el empleo de alguna herramienta automatizada. También, es conveniente proporcionar mantenimiento a la aplicación y estar actualizado en las versiones de las herramientas que se emplean para su puesta en marcha.

Algunas recomendaciones para mitigar el problema, son:

Emplear librerías verificadas o algún framework que ayude a disminuir el inconveniente. Por ejemplo: la librería anti-XSS de Microsoft, el módulo ESAPI de codificación de OWASP, Apache Wicket, entre otros.

Entender el contexto en el cual los datos serán usados y la codificación de los mismos, este aspecto es importante cuando se envían datos de un componente a otro de la aplicación o cuando se deben enviar a otra aplicación.

Conocer todas las áreas potenciales donde las entradas no verificadas pueden acceder al software: parámetros o argumentos, cookies, información de la red, variables de entorno, resultados de consultas, búsqueda de DNS reversible, peticiones enviadas en las cabeceras, componentes de la URL, correos electrónicos, archivos, nombres de archivo, bases de datos o algún sistema externo que proporcione información a la aplicación.

Las validaciones de datos de entrada, deben realizarse siempre del lado del servidor, no sólo en el lado del cliente. Los atacantes pueden evitar la validación realizada del lado del cliente modificando valores antes de realizar verificaciones o remover por completo esta validación.

En caso de ser posible, emplear mecanismos automatizados para separar cuidadosamente los datos del código fuente: revisión de comillas, codificación y validación automática que muchas veces se escapan al desarrollador.

Por cada página web generada, se recomienda emplear una codificación determinada de caracteres, ya que si no se especifica, el navegador puede dar un trato diferente a ciertas secuencias de caracteres especiales, permitiendo la apertura del cliente a posibles ataques.

Para mitigar el problema de ataque contra el uso de cookies, es conveniente indicar que tiene el formato de HttpOnly. En los navegadores que lo soportan, puede prevenirse que la cookie sea usada por scripts maliciosos desde el lado del cliente.

Se debe emplear una estrategia de validación de las entradas: rechazar aquellas que no cumplan con lo especificado, limpiar las que sean necesarias. Al validar, considérense  las características de cada entrada: longitud, tipo de dato, rango de valores aceptados, entradas perdidas o adicionales, sintaxis, consistencia con otras entradas proporcionadas y seguimiento de las reglas del negocio.

Cuando se construyan páginas web de forma dinámica (generadas de acuerdo a las entradas o solicitudes de los usuarios), es recomendable usar listas blancas estrictas. Todas las entradas deben ser limpiadas y validadas, incluidos cookies, campos ocultos, cabeceras y la propia dirección.

Cuando una cantidad aceptable de objetos, como nombres de archivo o URL es limitada o conocida, es conveniente crear una conjunto de asignaciones de valores de entrada fijo a los nombres de archivo o URL y rechazar todos los demás.

Se recomienda usar un firewall de aplicaciones capaz de detectar ataques cuando el código se genere dinámicamente, como medida de prevención, debe complementarse con otras para proporcionar defensa en profundidad.

Como Administrador de Bases de Datos

Así como el desarrollador debe validar las entradas proporcionadas por parte del usuario, el encargado de diseñar e implementar la base de datos debe considerar la seguridad de la misma, pues en ella se guarda la información proporcionada por los usuarios y es manipulada mediante la aplicación web. Los datos que serán almacenados, también pueden ser validados mediante el uso de constraints  (restricciones aplicables a los objetos de una base de datos: unique, default, not null, check) que restringen la entrada para cada campo.

PDF XSS

Es una vulnerabilidad ampliamente usada para afectar el Acrobat Reader de Adobe. En este caso, si se abusa de las características para abrir archivos en Acrobat, un sitio bien protegido se vuelve vulnerable a un ataque de tipo XSS si da alojamiento a documentos en formato PDF.

Esto afecta seriamente, a menos que se actualice el Reader o se cambie la forma en que el navegador maneja dichos documentos.

Una manera de combatirlo, si se cuenta con el servidor de aplicaciones web Apache, es llevar a cabo la correcta configuración de ModSecurity, ya que cuenta con directivas de protección para archivos en formato PDF.

XSRF

Un ataque Cross-Site Request Forgery (XSRF ó también CSRF) explota la confianza que un usuario tiene hacia las entradas proporcionadas por un sitio.

Por ejemplo: un usuario se encuentra autenticado y navegando en un sitio, en ese momento un atacante obtiene el control de su navegador, con él realiza una solicitud a una tarea de una URL válida del sitio, por lo que el atacante tendrá acceso como si fuera el usuario previamente registrado.

Distintivamente, un atacante intercalará código HTML o JavaScript malicioso en un correo o en una tarea específica accesible desde una URL, que se ejecuta ya sea directamente o empleando un error de tipo XSS. También, es posible realizar inyección a través de lenguajes como el BBCode. Este tipo de ataques son difíciles de detectar.

Muchas de las funcionalidades de un sitio web son susceptibles de uso durante un ataque XSRF. Esto incluye información enviada tanto por GET como por POST.

También puede usarse como vector para explotar vulnerabilidades de tipo XSS en una aplicación. Ejemplos de ello son: una vulnerabilidad de tipo XSS en un foro donde un atacante puede obligar al usuario a publicar –sin que éste se dé cuenta- un gusano informático. Un atacante puede también usar XSRF para transmitir un ataque a algún sitio de su elección, así como realizar un DDos.

Sin embargo, las formas más comunes de realizar este tipo de ataque consisten en usar la etiqueta HTML o el objeto JavaScript empleados para imágenes. Distintivamente, el atacante infiltrará un email o sitio web en ellos, así cuando el usuario cargue la página o el correo electrónico, también estará realizando la petición a la URL que haya colocado el atacante.

Un atacante puede instalar su script dentro de un documento de Word, un archivo de flash, un clip de video, redifusión web RSS o Atom, o algún otro tipo de formato que pueda alojar el script.

Si un sitio web permite ejecutar sus funciones empleando una URL estática o peticiones POST, es posible que sea vulnerable, si la función se lleva a cabo mediante la petición GET, el riesgo es mayor. Si se realizan las mismas funciones,  de la misma forma repetidamente, entonces la aplicación puede ser vulnerable.

Un ataque XSRF no puede evitarse mediante la verificación del referer de las cabeceras de la petición realizada, ya que puede “limpiarse” o modificarse mediante algún tipo de filtro. Las cabeceras pueden falsearse usando XMLHTTP, por ejemplo.

Una de las soluciones más conocidas, consiste en adjuntar un token no predecible y cambiante a cada petición. Es importante que el estado de éste vaya asociado con la sesión del usuario, de otra manera un atacante puede adjuntar su propio token válido y emplearlo en su beneficio. Adicionalmente, al ligarlo a la sesión del usuario es importante limitar el periodo durante el cual será válido.

Referencias.

Mesografía.

· http://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

· http://www.owasp.org/index.php/Testing_for_DOM-based_Cross_site_scripting_(OWASP-DV-003)

· http://www.modsecurity.org/projects/modsecurity/apache/feature_universal_pdf_xss.html

· http://www.cgisecurity.com/csrf-faq.html

· http://www.isecpartners.com/files/XSRF_Paper_0.pdf

· http://www.techrepublic.com/blog/security/what-is-cross-site-scripting/426

· http://cwe.mitre.org/data/definitions/79.html

Nueva herramienta contiene 150 formas de burlar firewalls de aplicaciones web

Una herramienta liberada dentro del Black Hat 2012 puede probar si firewalls de aplicaciones son vulnerables a técnicas de evasión de protocolos de capas.

clip_image001Una herramienta hecha para realizar pruebas de vulnerabilidad sobre firewalls de aplicaciones web (Web Application Firewalls, o WAFs), con cerca de 150 técnicas de evasión a nivel protocolo, fue liberada en la conferencia Black Hat USA 2012.

La herramienta y la investigación necesaria para su creación son el fruto de Ivan Ristic, director de ingeniería del proveedor de seguridad Qualys y autor original del popular firewall para web, ModSecurity.

Los firewalls para aplicaciones web son diseñados para proteger a las aplicaciones web de ataques conocidos, tal es el caso de ataques de inyección SQL, que son comúnmente utilizados para comprometer sitios web. Los WAFs logran esto mediante la intercepción de peticiones enviadas por los clientes, aplicando estrictas reglas sobre el formato y contenido de las mismas.

Sin embargo, existen varios métodos para que las peticiones maliciosas violen las reglas establecidas por los WAFs, al modificar ciertas partes de sus cabeceras o las rutas de los URLs solicitados. Estas se conocen como técnicas de evasión a nivel de protocolo, y los WAFs no están apropiadamente equipados para lidiar con ellas actualmente porque estas técnicas no están bien documentadas, comentó Ristic.

El investigador probó las técnicas de evasión encontradas primordialmente contra ModSecurity, un WAF de código abierto, pero es razonable asumir que otros WAFs son vulnerables a algunas de ellas igualmente.

De hecho, Ristic dijo que compartió algunas de las técnicas con otros durante la etapa de investigación, y que habían sido exitosas contra algunos productos WAF comerciales. 

Erwin Huber Dohner, jefe de investigación y desarrollo del fabricante suizo de WAF Ergon Informatik, confirmó después de ver la presentación de Ristic que los métodos de evasión son un problema para la industria. Ergon recientemente identificó algunas técnicas similares que funcionaron contra sus productos, las cuales ya han sido corregidas, comentó.

Al hacer pública su investigación, Ristic espera iniciar una discusión en la industria sobre evasión a nivel protocolo y de otros tipos. Un wiki también se ha configurado, con el propósito de construir un catálogo libremente disponible de técnicas de evasión contra WAFs.

Si los fabricantes e investigadores de seguridad no documentan sus problemas y los hacen públicos, los desarrolladores de WAFs continuarán cometiendo los mismos errores, dijo Ristic.

Además, la disponibilidad de la herramienta permite a los usuarios descubrir qué productos WAF son vulnerables, y posiblemente obligar a los fabricantes a corregirlos.

Cada fabricante tiene diferentes prioridades y normalmente no corrigen problemas hasta que existe un riesgo real para sus clientes, comentó Ristic. Dijo que espera que este proyecto de investigación genere el incentivo necesario para que comiencen a lidiar con estos problemas.

Dohner aprobó la iniciativa y cree que tanto los fabricantes como los usuarios de WAF se beneficiarán de ella.

Fuente: Techworld SB

Página 29 de 51

Creado con WordPress & Tema de Anders Norén