miércoles, 23 de mayo de 2012

UNIDAD 5 TECNOLOGÍAS EMERGENTES DE DESARROLLO WEB

5.1 Concepto de Tecnologías Emergentes
Son definidas como innovaciones científicas que pueden crear una nueva industria o transformar una existente. Cada una de estas tecnologías ofrece un amplio campo de oportunidades lo que proporciona la motivación para hacer inversiones de riesgo, el problema que plantean estas nuevas tecnologías a las empresas o directivos de las mismas es que puede dar o no resultado. Las tecnologías emergentes surgen debido a que las herramientas de gestión tradicionales no son capaces de resolver con éxito los nuevos desafíos.

5.2 Herramientas de desarrollo web
5.2.1 Frameworks de Desarrollo
Un framework es una estructura de soporte definida en la cual otro proyecto de software puede ser organizado y desarrollado. Se han convertido en la piedra angular de la moderna ingeniería del software Es una estructura software compuesta de componentes personalizables e intercambiables para el desarrollo de una aplicación. En otras palabras, es una aplicación genérica incompleta y configurable a la que podemos añadirle las últimas piezas para construir una aplicación concreta.
Un framework es un ambiente de trabajo y ejecución, por ejemplo .Net, que es considerado un framework para desarrollar aplicaciones.
Son soluciones completas que completan herramientas de apoyo a la construcción y motores de ejecución.

Los objetivos de un framework son:
·         Desarrollo rápido.
·         Desarrollo estructurado.
·         Reutilización de código.
·         Disminuir el esfuerzo en el desarrollo.
·         Aprovechar las funcionalidades ya implementadas. No reinventar la rueda.
·         Concentrarse directamente en la solución del problema.

Algunos Frameworks que utiliza Java, ASP.net y HTML son los siguientes:
·         JAVA:
*OpenFrame. Orientado a servicios (SOA), basado en componentes de software libre.
*Hibernate. Herramienta de Mapeo objeto-relacional.
*OpenXava. Marco de trabajo de código abierto para desarrollo de aplicaciones de gestión.
·         ASP.NET:
*Ajaxium
*Lollygag
*Anthem.NET
·         HTML:
*Yaml. Yet Another Multicolumn Layout, para crear layouts flexibles y flotantes.
*HTML5 Boilerplate
*Baseline

5.2.2 Tecnología AJAX
AJAX, acrónimo de Asynchronous JavaScript And XML (JavaScript asíncrono y XML), es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones.

AJAX es una tecnología asíncrona, en el sentido de que los datos adicionales se solicitan al servidor y se cargan en segundo plano sin interferir con la visualización ni el comportamiento de la página. JavaScript es el lenguaje interpretado (scripting language) en el que normalmente se efectúan las funciones de llamada de Ajax mientras que el acceso a los datos se realiza mediante XMLHttpRequest, objeto disponible en los navegadores actuales. En cualquier caso, no es necesario que el contenido asíncrono esté formateado en XML.

AJAX es una combinación de cuatro tecnologías ya existentes:
·         XHTML y hojas en estilo en cascada para el diseño que acompaña a la información.
·         Document Object Model (DOM) accedido con lenguaje de scripting por parte del usuario, implementaciones ECMAScript como JavaScript y JScript,  para mostrar e interactuar dinámicamente con la información presentada.
·         El objeto XMLHttpRequest para intercambiar datos de forma asíncrona con el servidor web.
·         XML es el formato usado generalmente para la transferencia de datos solicitados al servidor.

5.2.3 Utilización de Librerías
Prototype: facilita el desarrollo de aplicaciones web con JavaScript, su autor original es SamStephenson y las últimas versiones incorporan códigos e ideas de muchos programadores, es la base de muchos frameworks.

Scriptaculous: es una de las muchas librerías que han surgido para facilitar el desarrollo de aplicaciones su autor es Tomas Fuchs se encuentra dividida en varios modulos que son:
·         Efectos: permite añadir efectos a cada uno de los componentes de la página web.
·         Controles: los tres controles que forman este modulo son, arrastrar y soltar, autocompletar y editor de contenidos.
·         Utilidades: la utilidad principal se llama builder que se utiliza para crear nodos y fragmentos complejos de DOM.

JQuery: Su autor original es Jhon Resi, recibe contribuciones de decenas de programadores. Su diesño interno tiene diferencias drásticas respecto a prototype.


Conclusión
Las tecnologías emergentes son innovaciones que van surgiendo para satisfacer las necesidades de ciertas industrias ya sean nuevas o existentes y estas tecnologías pueden dar o no resultado.
Un framework es un ambiente de trabajo y ejecución que nos permite un desarrollo rápido, estructurado y además la reutilización del código en las aplicaciones web. Existe una infinidad de frameworks disponibles para las diferentes lenguajes de programación.
            Ajax es una tecnología para desarrollar aplicaciones interactivas, es una tecnología asíncrona, ya que los datos adicionales se solicitan al servidor y se cargan en segundo plano sin interferir con la visualización de la página.


Bibliografía


miércoles, 16 de mayo de 2012

MÉTODOS DE ENCRIPTACIÓN EN LA WEB

ENCRIPTACIÓN
La encriptación es la única forma eficiente de transmitir información confidencial por Internet. El objetivo de la encriptación es garantizar la confidencialidad, integridad e irrefutabilidad de la información. La encriptación hace uso de diversas fórmulas matemáticas con el propósito de transformar el texto sin formato en un criptograma el cual es un conjunto de caracteres que a simple vista no tiene ningún sentido para el lector.

La encriptación es básicamente transformar datos en  alguna  forma  que  no  sea  legible  sin el conocimiento  de  la clave o algoritmo adecuado. El  propósito  de  esta  es  mantener  oculta la información que consideramos privada a cualquier persona o sistema que no tenga permitido  verla.

Para poder Encriptar un dato, se pueden utilizar tres procesos matemáticos diferentes:
Los algoritmos HASH, los simétricos y los asimétricos.
·         Algoritmo HASH:
Este algoritmo efectúa un cálculo matemático sobre los datos que constituyen el documento y da como resultado un número único llamado MAC. Un mismo documento dará siempre un mismo MAC.
·         Algoritmos Simétricos (Clave Privada):
Utilizan una clave con la cual se encripta y desencripta el documento. Todo documento encriptado con una clave, deberá desencriptarse, en el proceso inverso, con la misma clave. Es importante destacar que la clave debería viajar con los datos, lo que hace arriesgada la operación, es imposible de utilizar en ambientes donde interactuan varios interlocutores.

En la criptografía con claves simétricas es esencial que la clave utilizada para codificar y descodificar el mensaje se mantenga confidencial. Si alguien de fuera descubre la clave, la información que se transmite deja de estar protegida. Se requiere tomar muchas precauciones para enviar la clave al destinatario de forma segura.

En la práctica, se combinan varios métodos de encriptación para garantizar que la información permanece realmente protegida. Una forma de garantizar la encriptación es hacer que el programa de encriptación cree una clave simétrica en cada sesión y la envíe al destinatario codificada asimétricamente. El remitente y el destinatario sólo necesitan las claves asimétricas para implementar y descodificar el mensaje: el remitente tiene la clave pública del destinatario y el destinatario tiene su propia clave privada.
Las principales desventajas de los métodos simétricos son la distribución de las claves, el peligro de que muchas personas deban conocer una misma clave y la dificultad de almacenar y proteger muchas claves diferentes.
Los modernos algoritmos de encriptación simétricos mezclan la trasposición y la permutación. Estos algoritmos ofrecen confidencialidad.
Los principales algoritmos simétricos actuales son DES, IDEA y RC5.
DES, trabaja con claves simétrica, fue desarrollado en 1977 por la empresa IBM, se basa en un sistema monoalfabético, con un algoritmo de cifrado consistente en la aplicación sucesiva de varias permutaciones y sustituciones.
Inicialmente el texto a cifrar se somete a una permutación, utiliza una clave simétrica de 64 bits, de los cuales 56 son usados para la encriptación, mientras que los 8 restantes son de paridad, y se usan para la detección de errores en el proceso.
DES ya no es estándar y fue crackeado en Enero de 1999.
IDEA, trabaja con bloques de texto de 64 bits, operando siempre con números de 16 bits usando operaciones como XOR, suma y multiplicación de enteros.
El algoritmo de desencriptación es muy parecido al de encriptación, por lo que resulta muy fácil y rápido de programar, y hasta ahora no ha sido roto nunca, aportando su longitud de clave una seguridad fuerte ante los ataques por fuerza bruta.
También llamada asimétrica, se basa en el uso de dos claves diferentes, claves que poseen una propiedad fundamental: una clave puede desencriptar lo que la otra ha encriptado.
Una de las claves de la pareja, llamada clave privada, es usada por el propietario para encriptar los mensajes, mientras que la otra, llamada clave pública, es usada para desencriptar el mensaje.
RC5, Este sistema es el sucesor de RC4, que consistía en hacer un XOR al mensaje con un vector que se supone aleatorio y que se desprende de la clave, mientras que RC5 usa otra operación, llamada dependencia de datos, que aplica sifths a los datos para obtener así el mensaje cifrado.

Otros métodos de encriptación de claves privadas son:
IPSec (seguridad del protocolo de Internet) es un mecanismo de seguridad de la información que garantiza la confidencialidad e integridad de los paquetes IP. Protege y blinda el tráfico y la información de la aplicación durante la comunicación. El IPSec puede utilizarse, por ejemplo, para construir una relación de confianza entre servidores al crear redes privadas virtuales (VPN).
SSL (Secure Sockets Layer) método utilizado en aplicaciones de correo electrónico y varias aplicaciones web, como, por ejemplo, en la protección de conexiones bancarias en red entre la estación de trabajo y el servidor. El mecanismo SSL viene incorporado en los navegadores de Internet más usuales. Puede utilizarse para garantizar la identidad de las partes, asegurarse de que la información se transmite de forma confidencial y asegurar, asimismo, la integridad de los datos transmitidos.
·         Algoritmos Asimétricos (Clave Pública):
Los sistemas de cifrado de clave pública o sistemas de cifrado asimétricos se inventaron con el fin de evitar por completo el problema del intercambio de claves de los sistemas de cifrado simétricos. Con las claves públicas no es necesario que el remitente y el destinatario se pongan de acuerdo en la clave a emplear. Todo lo que se requiere es que, antes de iniciar la comunicación secreta, el remitente consiga una copia de la clave pública del destinatario. Esa misma clave pública puede ser usada por cualquiera que desee comunicarse con su propietario. Por tanto, se necesitarán sólo n pares de claves por cada n personas que deseen comunicarse entre sí.
Para que un algoritmo de clave pública sea considerado seguro debe cumplir con los siguientes puntos:
·         Conocido el texto cifrado no debe ser posible encontrar el texto en claro ni la clave privada.
·         Conocido el texto cifrado (criptograma) y el texto en claro debe resultar más caro en tiempo o dinero descifrar la clave que el valor posible de la información obtenida por terceros.
·         Conocida la clave pública y el texto en claro no se puede generar un criptograma correcto encriptado con la clave privada.

Dado un texto encriptado con una clave privada sólo existe una pública capaz de desencriptarlo, y viceversa.
Los algoritmos de clave pública se basan más en complejas operaciones matemáticas y ofrecen autenticidad, integridad, confidencialidad en el envío y no repudio si van asociados a una firma digital.
Los principales algoritmos asimétricos son:

Diffie-Hellman, algoritmo de encriptación de Whitfield Diffie y Martin Hellman fue el punto de partida para los sistema asimétricos, basados en claves pública y la privada.

RSA, es el más conocido y usado de los sistemas de clave pública, y también el más rápido de ellos.

Presenta todas las ventajas de los sistemas asimétricos, incluyendo la firma digital, aunque resulta más útil a la hora de implementar la confidencialidad el uso de sistemas simétricos, por ser más rápidos.

El sistema RSA se basa en el hecho matemático de la dificultad de factorizar números muy grandes. Para factorizar un número el sistema más lógico consiste en empezar a dividir sucesivamente éste entre 2, entre 3, entre 4,..., y así sucesivamente, buscando que el resultado de la división sea exacto, es decir, de resto 0, con lo que ya tendremos un divisor del número.

GAMMAL, esquema de cifrado basado en problemas matemáticos de algoritmos discretos. Algoritmo que puede ser utilizado tanto para generar firmas digitales como para cifrar o decifrar, no está bajo ninguna patente lo que lo tiene su uso libre.

BIBLIOGRAFÍA




lunes, 16 de abril de 2012

Pruebas Estructurales, Funcionales y Aleatorias

PRUEBAS ESTRUCTURALES, FUNCIONALES Y ALEATORIAS
Existen tres enfoques principales para el diseño de pruebas:
Enfoque Estructural o de Caja Blanca. Tipo de pruebas de software que se realiza sobre funciones internas de un módulo. Entre las técnicas usadas se encuentran: La cobertura de caminos, pruebas sobre las expresiones lógico-aritméticas, pruebas de camino de datos, comprobación de bucles.
Hay diferentes posibilidades de definir la cobertura, algunas de ellas son:
Cobertura de segmentos, cobertura de ramas, cobertura de condición/decisión y cobertura de bucles.
Enfoque Funcional o de Caja Negra. Se centra en las funciones, entradas y salidas, criterios basados en las interfaces y las especificaciones de los módulos.
Intenta encontrar errores de las siguientes categorías:
         Funciones Incorrecta o ausente.
         Errores de Interfaz.
         Errores en estructuras de datos o acceso a base de datos externas.
         Errores de rendimiento.
         Errores de inicialización y de terminación.

Las pruebas de caja negra se centran en lo que se espera de un módulo, es decir, intentan encontrar casos en que el módulo no se atiene a su especificación. Por ello se denominan pruebas funcionales, y el probador se limita a suministrarle datos como entrada y estudiar la salida, sin preocuparse de lo que pueda estar haciendo el módulo por dentro.

Las pruebas de caja negra están especialmente indicadas en aquellos módulos que van a ser interfaz con el usuario.
Enfoque Aleatorio: En las pruebas aleatorias se simula la entrada habitual del programa creando datos de entrada en la secuencia y con la frecuencia con las que podrían aparecer en la Práctica. Para ello habitualmente se utilizan generadores automáticos de casos de prueba.
Consiste en utilizar modelos que representen las posibles entradas al programa para crear a partir de ellos los casos de prueba

BIBLIOGRAFIA




Relaciòn entre Error, Defecto y Fallo

RELACIÓN ENTRE ERROR, DEFECTO Y FALLO

 
Un error es una equivocación por un desarrollador o programador de sistemas y este provoca que el programa tenga un defecto el cual puede definirse como una diferencia entre la versión correcta de un artefacto y una versión incorrecta, un defecto  a su vez provoca un fallo y el sistema no se comporta como debería.

BIBLIOGRAFÍA

miércoles, 28 de marzo de 2012

SENTENCIAS DE CONEXIÒN

SENTENCIAS DE CONEXIÓN
Conexión De Java Netbeans A Base de Datos Access
import java.sql.Connection;
import
java.sql.DriverManager;
import
java.sql.ResultSet;
import
java.sql.Statement;
import javax.swing.JOptionPane;
public class
Conectar {
Connection
conexion;
Statement sentencia;

public void PrepararBaseDatos() {
try{
String controlador="sun.jdbc.
odbc.JdbcOdbcDriver";
Class.forName (controlador).newInstance();
}
catch (Exception e) {
JOptionPane.showMessageDialog(null, "Error al cargar el Controlador"
;
}
try {
String DSN="jdbc:odbc
river={Microsoft Access Driver (*.mdb, *.accdb)};DBQ="+"BDNombreBD.mdb";
String user="";
String password="";
conexion=DriverManager.getConnection(DSN,user,password);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Error al realizar la
conexion "+e);
}
try {
sentencia=conexion.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
catch (Exception e) {
JOptionPane.showMessageDialog(null,"Error al crear el objeto sentencia "+e);
}
}
}
Conexión Con Una Base De Datos Mysql Desde Php
Los parámetros son opcionales, e indican:
NombreHost es el nombre del servidor o IP del mismo, donde se encuentra la base de datos.
Usuario de acceso a la base de datos.
Contraseña de acceso.
Si la función es correcta esta devuelve un identificador del enlace con el sistema de bases de datos.
Después de haber establecido la conexión, hay que indicar al sistema, la base de datos con la que se desea trabajar, para lo cual se utiliza la siguiente función:
mysql_select_db("NombreBaseDatos")
Y finalmente, para cerrar la conexión utilizamos:
mysql_close($conexion)

ORACLE
Conexiones con DriverManager
Con DriverManager se puede crear una conexión a la base de datos utilizando un driver que es necesario cargar previamente.
Para crear una conexión debemos seguir los siguientes pasos:

String dbURL = "jdbc:oracle:thin:BASEDATOS@NOMBRE_DE_MAQUINA:PUERTO:CADENA_DE_CONEXION"

Class.forName("oracle.jdbc.driver.OracleDriver"); //cargar el driver que usaremos

Connection conn = DriverManager.getConnection
   (URL, "USUARIO", "PASSWORD");
 
Conexiones con DataSource
Es más conveniente utilizar conexiones con DataSource que con DriverManager ya que nos proporciona algunas características adicionales más avanzadas, como la creación de pools de conexiones o transacciones distribuidas con poca modificación del código.
Para crear una conexión con DataSource:
oracle.jdbc.pool.OracleDataSource ds = new oracle.jdbc.pool.OracleDataSource();

String dbURL = "jdbc:oracle:thin:BASEDATOS@NOMBRE_DE_MAQUINA:PUERTO:CADENA_DE_CONEXION"

Connection conn = ds.getConnection(USUARIO, PASSWORD);

FIREBIRD

Para conectar a una base de datos Firebird se requiere que el usuario “se identifique” usando un nombre de usuario y clave válidos (log-in o login). Cualquier usuario aparte de SYSDBA, root, o Administrador necesita también tener permisos a los objetos dentro de una base de datos.
En este ejemplo utilizaremos isql con la autenticación como SYSDBA usando la clave masterkey.
Para la conexión tenemos que hacer lo siguiente:
Diríjase al subdirectorio bin de su instalación y en el prompt tipee el comando isql
C:\Archivos de programa\Firebird\Firebird_1_5\bin>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL>CONNECT "C:\Program Files\Firebird\Firebird_1_5\examples\employee.fdb"
CON>user 'SYSDBA' password 'masterkey';

isql le informará que se ha conectado:
DATABASE "C:\Archivos de programa\Firebird\Firebird_1_5\examples\employee.fdb",
User: sysdba
SQL>

mysql_connect("NombreHost","Usuario","Contraseña")