sábado, 19 de mayo de 2012

Tecnologías Emergentes

5.1 CONCEPTOS Y ELEMENTOS

Término usado indistintamente para señalar la emergencia y convergencia de nuevas tecnologías, con potencial de demostrarse como tecnologías disruptivas. Entre ellas, se encuentran nanotecnología, la biotecnología, las tecnologías de la información y la comunicación, la ciencia cognitiva, la robótica, y la inteligencia artificial.

También son definidas como innovaciones científicas que pueden crear una nueva industria o transformar una existente. Surguen 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


Framework: Estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, con base a la cual otro proyecto de software puede ser más fácilmente organizado y desarrollado, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado.


Objetivos:

  • Desarrollo rápido
  • Desarrollo estructurado
  • Reutilización de código
  • Disminución del esfuerzo en el desarrollo

Frameworks para HTML

  • HTML5 Boilerplate

Nos proporcionan una serie de código que hace que los sitios web construidos con HTML5 Boilerplate se vean bien incluso en navegadores que aún no dan soporte a HTML5.

En su sitio web existe una amplia documentación, incluso un par de vídeos (en inglés) con unas explicaciones excelentes.

  • YAML

YAML son las iniciales de “Yet Another Multicolumn Layout”. YAML es un framework de HTML/CSS para crear layouts flexibles y flotantes. 

  • Inuit

Inuit es un framework CSS relativamente nuevo que se orienta a dispositivos móviles tal y como smartphones y tablets.

Frameworks para Java

  • Spring

Es un Framework que nos ayuda en nuestras aplicaciones java, de forma que podamos desarrollar más rápido, de forma más organizada y más eficientemente.

Está organizado por capas que pueden utilizarse conjuntamente o por separado:

DAO: Capa por encima de JDBC que facilita su uso.
ORM: Permite el uso de APIs conocidas de mapeo con base de datos, como iBatis, Hibernate,
AOP: Permite el uso de programación orientada a aspectos.
JEE: Integración con las APIs típicas de JEE
WEB: Integración con presentación de datos, como Struct, JSF, PDF, JasperReports, etc
Core: Un contenedor de beans.

  • Struts

Es una herramienta de soporte para el desarrollo de aplicaciones Web bajo el patrón MVC bajo la plataforma Java EE (Java Enterprise Edition).
Struts permite reducir el tiempo de desarrollo. Su carácter de "software libre" y su compatibilidad con todas las plataformas en las que Java Enterprise esté disponible lo convierten en una herramienta altamente disponible.

  • Java Server Faces

Es una tecnología y framework para aplicaciones Java basadas en web que simplifica el desarrollo de interfaces de usuario en aplicaciones Java EE. JSF usa JavaServer Pages (JSP) como la tecnología que permite hacer el despliegue de las páginas, pero también se puede acomodar a otras tecnologías como XUL.

Frameworks para ASP.Net

ASP.NET es un framework para aplicaciones web desarrollado y comercializado por Microsoft. Es usado por programadores para construir sitios web dinámicos, aplicaciones web y servicios webXML. Apareció en enero de 2002 con la versión 1.0 del .NET Framework, y es la tecnología sucesora de la tecnología Active Server Pages (ASP). ASP.NET esta construido sobre el Common Language Runtime, permitiendo a los programadores escribir código ASP.NET usando cualquier lenguaje admitido por el .NET Framework.


5.2.2 Tecnología AJAX

Acronimo de Asynchronous Java Script and XML es una técnica de desarrollo web para crear aplicaciones interactivas.
Éstas 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 el segundo plano.
Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se solicitan al servidor y se cargan en un segundo plano sin interferir con la visualización y el comportamiento de la página.

Ajax es una combinación de 4 tecnologías ya existentes:

·         XHTML y hojas de estilo en cascada (CSS).
·         Documento Object Model.
·         XML Http Request
·         XML

5    5.2.3 Utilización de librerías

      Prototype

      Facilita el desarrollo de aplicaciones web con Java Script, su autor original Sam   Stephenson 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 Tomas Fuch se encuentra dividida en varios módulos 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 método son: arrastrar y soltar,    autocompletar, editor de contenidos. 

       Utilidades, la utilidad principal se llama builder que se utiliza para crear nodos y fragmentos complejos de doom.

      JQuery

         Su autor original es John Resign, recibe contribuciones de decenas de programadores. Su diseño interno tiene diferencias tránsicas respecto a prototype.



martes, 15 de mayo de 2012

ENCRIPTACIÓN EN LA WEB



El increíble crecimiento de Internet ha excitado a gente de negocios y consumidores con la promesa de cambiar el modo de trabajar e incluso de vida. Sin embargo, paralelo a esta forma nueva forma de hacer transacciones comerciales, existe una preocupación sobre lo seguro que es Internet, especialmente cuando se manda información privada o sensitiva en la red.
Tenemos que reconocerlo, existe muchos tipos de información que no queremos que otros vean, como pueden ser:
  • Información de tarjetas de crédito.
  • Números de la seguridad social.
  • Correspondencia privada.
  • Datos personales.
  • Información sensitiva de una compañía o empresa.
  • Información de datos bancarios.
La seguridad en la red es ofrecida entre ordenadores por Internet mediante una variedad de métodos. Uno de los modos más básicos y simples que se han utilizado siempre, es tener esta información privilegiada en dispositivos de almacenamiento, como pueden ser disquetes, CD o más actualmente DVD. Hoy en día, este método es insuficiente y por ello los métodos de seguridad más populares utilizan la encriptación, el cual es el proceso de codificar la información de tal manera, que solo la persona (u ordenador) con una clave determinada, puede decodificarla y hacer uso de dicha información.

sábado, 14 de abril de 2012

Sentencias de conexiones para manejadores de Bases de Datos

Sentencia de Conexión en PHP para Oracle


Éste es un ejemplo de cómo trabajar con una base de datos Oracle, para ello en la base de datos "test" de Oracle se crea la siguiente tabla que utilizaremos en el ejemplo:

create table tbl_personas (
                id     integer not null check (id > 0),
                nombre varchar(50) not null,
                primary key (id)
)

Después se  crea una función para realizar la conexión utilizando la funciones de PHP oci_connect() para conectar con Oracle y seleccionar la base de datos, y oci_error() que devolverá un mensaje de error si se produjo alguno (lo detectamos usando or die, que detendrá la ejecución):

<?php
                function conectar_Oracle( $usuario, $pass, $cadenaConexion )
                {
                               // Conectar con Oracle:
                               $conexion = oci_connect($usuario, $pass, $cadenaConexion) or die ( "Error al conectar : ".oci_error() );

                               return $conexion;
                }
?>

Sentencia de Conexión en PHP para MySQL

La sentencia para conectar al servidor Mysql es “mysql_connect” la cual recibe tres parámetros:
  1. servidor: aquí debes poner “localhost” o la dirección ip de tu web hosting.
  2. usuario: el usuario Mysql que has creado durante la creación de la base de datos Mysql. En este caso es “igniter_usuario”.
  3. contraseña: la contraseña del usuario es mysql
Ejemplo:
1
2
$conexion=mysql_connect('localhost','igniter_usuario','contraseña');
mysql_select_db('igniter_blog',$conexion);

En la variable $conexion nos queda un link hacia la base de datos. Es decir, cada vez que tengamos que invocar a la base de datos, sencillamente especificaremos “$conexion” (así evitamos tener que escribir múltiples veces nuestro usuario y password cada vez que nos interese utilizar la base de datos).
Sentencia de Conexión en PHP para PostgreSQL

pg_connect() abre una conexión con una base de datos PostgreSQL especificada por el connection_string.

Si una segunda llamada se hace a pg_connect() con la misma connection_string existiendo la conexión, la conexión existente será devuelta a menos que pase la constante PGSQL_CONNECT_FORCE_NEW como parámetro connect_type.

La sintaxis antigua con múltiples parámetros $conn = pg_connect("host", "port", "options", "tty", "dbname") ha quedado obsoleta.

miércoles, 11 de abril de 2012

PRUEBAS ESTRUCTURALES, FUNCIONALES Y ALEATORIAS



Estructurales: Las pruebas estructurales son una aproximación al diseño de casos de prueba en donde las pruebas se derivan a partir del conocimiento de la estructura e implementación del software.
Las pruebas de caminos son una estrategia de pruebas estructurales cuyo objetivo es probar cada camino de ejecución independiente en un componente o programa. Si cada camino es independiente, entonces todas las sentencias en el componente deben haberse ejecutado al menos una vez.
Para realizar dichas pruebas se han ido recorriendo los caminos existentes en cada una de las partes en las que se puede dividir el proyecto. Para mostrar dicho comportamiento, se ha realizado un diagrama para mostrar cada uno de los comportamientos.
Funcionales: Una prueba funcional es una prueba basada en la ejecución, revisión y retroalimentación de las funcionalidades previamente diseñadas para el software. Las pruebas funcionales se hacen mediante el diseño de modelos de prueba que buscan evaluar cada una de las opciones con las que cuenta el paquete informático.
Aleatorias: Se da una comparación directa de dos (o más) grupos de tratamiento, uno de los cuales sirve como un control sin tratamiento.  El grupo control puede permanecer sin tratamiento o someterse a un régimen establecido contra el cual, el nuevo régimen será valorado (control activo).  Está ampliamente aceptado entre los investigadores dedicados a la evaluación que la prueba aleatoria es la "norma de oro" para medir lo que ha ocurrido como resultado de un programa o intervención.
Fuente:

RELACIÓN ENTRE ERROR, FALLA Y DEFECTO


RELACIÓN ENTRE ERROR FALLA Y DEFECTO      

Una falla se da cuando una ejecución no produce el resultado esperado. Es la manifestación de un defecto. Una falla tiene que ver con uno o más defectos.
Un defecto es un paso, proceso, o definición de dato incorrecto. Esta situado en el artefacto (por ejemplo el código). Un defecto puede producir cero, una o más fallas (lamentablemente siendo la última la más probable).
Un error o equivocación es una acción humana que produce un resultado incorrecto. Si el error es algo tan simple como un error de tipeo, no va a generar muchos defectos. Pero si existe una equivocación de concepto, se van a generar una serie de defectos que de alguna manera están relacionados por tener la misma raíz.

miércoles, 14 de marzo de 2012

Ejemplo: Análisis de los Requerimientos de Software


1.   IDENTIFICACIÓN DE PROBLEMAS, OPORTUNIDADES Y OBJETIVOS.

Sistema de Inventario en la Ferretería "Navar".

2.   DETERMINACIÓN DE LOS REQUERIMIENTOS DE INFORMACIÓN.

La ferretería NAVAR tiene la necesidad de contar con un sistema que permita llevar un mejor control, que a su vez sea fácil de manejar; el control consiste en llevar a cabo un registro de todos los productos con los que se cuenta, los clientes frecuentes y los distintos proveedores de dicha ferretería.
El sistema registrara cualquier operación, tanto de cliente como de productos. Es decir, operaciones de altas, bajas, modificaciones, descuentos a clientes frecuentes, clientes con crédito, etc.). También contara con un sistema de impresión de facturas.
Para dicho registro se necesitaran datos como los siguientes:
PRODUCTOS. Para poder dar de alta cada producto se tendrán en cuenta: una clave o código del producto (esta se asignara tomando en cuenta el tipo del producto), el nombre, la cantidad, el precio.
Nota. El tipo o clasificación de los productos se da de la siguiente manera: cemento, pisos y azulejos, yeso, de ferretería, herramientas Truper y acero; teniendo cada uno sus respectivos proveedores.
CLIENTES CON CRÉDITO. En este inventario solo se enlistaran los clientes que cuenten con el servicio de pago a crédito. Para este catalogo se asignaran datos como: el nombre, la dirección, el teléfono y la clave de la venta.
PROVEEDORES. Dentro del registro de los proveedores se ocupara la siguiente información: una clave de proveedor, clave del producto, la cantidad y el nombre o la empresa.
Asimismo es fundamental mencionar que no se cuenta con un solo proveedor, pues éste es según el tipo de productos faltantes y es cuando se hace el pedido, ya que estos no tienen visitas periódicas, sino que surten cuando la ferretería lo solicita.
VENTAS. Además, se llevara un registro de las ventas para facilitar el control de los productos, en este apartado se producirá una nota de remisión para luego imprimirla después de haber terminado la venta para entregársela al cliente. Las ventas se dividirán en:
Ventas a crédito. Registrará datos como: una clave de la venta, el nombre del cliente, la clave del producto, cantidad, el total a pagar, el enganche dado, la fecha y hora.
Ventas al contado. En estas solo se registrara la venta, sin tomar en cuenta al cliente; registrará datos como: la clave del producto, cantidad, el total a pagar, el descuento (si es que se hace)  la fecha y hora.
Es importante aclarar que además de los datos mencionados la nota de remisión contendrá el nombre del cliente y su domicilio, nombre de los productos y sus cantidades y precios correspondientes, así como el total a pagar.
COMPRAS. Conjuntamente se realizan surtidos dentro de la ferretería; es por ello que se controlaran las adquisiciones hechas, registrando: clave del proveedor, clave del producto, cantidad, precio de compra, precio de venta, la fecha y la hora. 

3.   ANÁLISIS DE LAS NECESIDADES DEL SISTEMA.

                                        
Diagrama de casos de uso
Diagrama de clases

Diagrama de flujo

PRUEBAS DE  SOFTWARE
Las pruebas de software intentan demostrar que un programa hace lo que se  intenta que haga, así como describir defectos en el programa antes de usarlo.
DOCUMENTACIÓN DEL DISEÑO DE LAS PRUEBAS
Plan de Pruebas. Se llevaran a cabo pruebas de unidad, pruebas de integración, pruebas de aceptación.
Especificación del Diseño de pruebas. Las pruebas que se especifican en el plan consistirán en:
Pruebas de Unidad. Este tipo de prueba permitirá ver como es el funcionamiento de cada formulario que compone el software. Se prueba cada formulario y se evalúan las funciones que se pretende que debe de cumplir.
Pruebas de Integración. Para ejecutar este tipo de pruebas es necesario integrar todas las unidades, al tenerlas integradas se prueba que en conjunto todas las unidades funcionen como se desea. Permite visualizar si todos los formularios del software se integran correctamente unos con otros.
Pruebas de Aceptación. Las pruebas de aceptación tienen como objetivo validar el sistema, es decir, permite visualizar que el sistema cumple con el funcionamiento esperado y que permita al usuario definir la aceptación del sistema. Estas pruebas permiten verificar y validar el sistema.
La verificación se lleva a cabo durante el proceso de desarrollo del software, ya que dentro del programa de NetBeans IDE se da esta herramienta, se prueba el sistema sin ser finalizado, de esta manera brinda la posibilidad de corregir los errores en el momento.
Especificación de Caso de Prueba y Especificación de Procedimiento de Prueba. Las pruebas de unidad se aplicaran a los formularios que conforman el sistema, los cuales son:
·         Agregar_proveedor. Su función es agregar un proveedor nuevo a la base de datos Ferretería.
·         Buscar_Clientes. Permite buscar clientes almacenados en la base de datos para reducir tiempos.
·         Buscar_Productos. Ver si hay productos en existencia, saber el precio, características, etcétera.
·         Buscar_proveedor. Buscar el proveedor para facilitar el pedido.
·         Clientes. Para hacer el registro de un cliente con crédito. Asimismo se hace el registro de esa venta y se imprime el ticket correspondiente. Además, se disminuye el inventario.
·         Compras. Para registrar cuántos productos se adquieren y así aumentar el inventario.
·         Inventario. Solo permite visualizar el inventario en existencia actual.
·         Menu. Interfaz para acceder a los distintos componentes del software.
·         Productos. Permite registrar si en la ferretería se adquiere un producto nuevo que no se encuentra almacenado en la base de datos. También permite llenar el inventario inicial.
·         Proveedor. Permite hacer el registro inicial de los proveedores con los que se cuenta.
·         Venta_Contado. Tiene como función registrar una venta y de este modo disminuir el inventario.
Las pruebas de integración deben trabajar en el sistema completo. El primer formulario es el Menú, permitiendo ir a los demás formularios. Desde el formulario de inventario se accede al formulario de Buscar_Productos y al de Compras, del de Proveedor se accede al de Buscar_Proveedor y al de Agregar_Proveedor, desde el de Clientes al de Buscar_Clientes.
Las pruebas de aceptación son realizadas por el usuario, ya cuando el sistema se encuentre en una presentación ejecutable; se llevaran a cabo cuando el usuario final ya tenga implementado el sistema.




Proyección a 5 años

La implementación es el proceso de realizar el diseño como un programa, asimismo, después de implementar el sistema de inventarios en la ferretería es necesario darle un mantenimiento adecuado y hacerle cambios si es que éste lo necesita.

El sistema para administración de Ferreterías recibirá actualizaciones cada mes, debido a que es un sistema que cuenta con una base de datos, se corre el riesgo de que ésta se sature de información, por lo tanto, es importante el aumento en el poder de almacenamiento del servidor, y mejoras en el código del sistema, para darle un mayor rendimiento en su capacidad y velocidad; También es importante hacer revisiones al equipo, de modo que no existan riesgos como robo o pérdida de información.

Cambios que necesitará el sistema
*      Nuevos diseños a la interfaz, de modo que sea más amigable con el usuario, ofrezca una mejora en sus interacciones y un diseño más atractivo.
*      Mejoras en la sintaxis, como reducción del código, de modo que el programa sea menos pesado para la máquina.
*      Realizar cambios en el sistema o versiones nuevas, de modo que sea compatible con nuevos sistemas operativos.
*      Cambios en el equipo de cómputo con mejor rendimiento para contar con un sistema más rápido y eficiente.
Especificaciones del mantenimiento
El mantenimiento del software es el proceso general de cambiar un sistema después de que éste ha sido entregado. Estos cambios pueden ir desde los simples hasta los más extensos. Los cambios se implementan modificando los componentes del sistema existente y agregándole nuevos componentes donde sea necesario.
En el sistema de inventario para ferreterías el mantenimiento se llevara de la siguiente manera:
ü  Limpieza y revisión al equipo de cómputo de manera que no presente riesgos para los usuarios.
ü  Instalación de actualizaciones al sistema para que no se haga obsoleto.
ü  Revisiones al código de manera que no existan errores (mantenimiento preventivos y correctivo), para evitar pérdidas en tiempo y esfuerzo.
ü  Agregación de nuevos contenidos al menú del sistema, para ofrecerle nuevas funcionalidades al usuario.

miércoles, 8 de febrero de 2012

Lenguajes de Programación

Lenguaje de Programación HTML
HTML (HyperText Markup Language).
HTML es el lenguaje que predomina entre los lenguajes que se utilizan para la elaboración de páginas web. La estructura y el contenido se describen en forma de texto, el texto también puede ser complementado con objetos tales como imágenes. 
En HTML las líneas de código se escriben en forma de «etiquetas», rodeadas por corchetes angulares (< >). HTML también puede describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un script, el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML.
En sí, HTML no es un lenguaje de programación, puesto que, por su naturaleza, no implementa funciones básicas como acceso a Bases de Datos o funciones de edición gráfica.
Una característica que identifica a HTML es que no distingue entre mayúsculas y minúsculas, y como se mencionó en un principio es el lenguaje por excelencia para crear páginas web.

Ventajas:
  • Debido a que es una aplicación de texto, ocupa poco espacio
  • Es rápido
  • Tiene mucho desarrollo
  • Se puede usar en computadoras con poca capacidad
Desventajas:
  • Poco amigable
  • Tiene una interfaz restringida


PYTHON  
PYTHON 
Python es un lenguaje de programación de alto nivel que hace uso de una sintaxis muy limpia la cual favorece un código legible.
Se conoce como un lenguaje de programación multiparadigma, lo cual hace referencia a que soporta orientación a objetos, programación imperativa y programación funcional. 
También es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y multiplataforma.
Posee una licencia de código abierto, denominada Python Software Foundation License.

Ventajas:
  • Contiene una gran cantidad de funciones y librerías
  • Es sencillo y rápido de programar
  • Portátil

Desventajas:
  • Lento en su ejecución

PERL
PERL
Perl, es un lenguaje poderoso en lo que es el manejo de las expresiones regulares, contiene una gran cantidad de módulos preprogramados, y toma algunas de las características del lenguaje C.

Tiene varias utilidades, está principalmente orientado a la busqueda, extracción y formateado de ficheros de tipo texto. También es muy usado para manejo y gestión de procesos.

Ventajas:
  • Construcción de pequeños programas que pueden ser usados como filtros para obtener información de ficheros, realizar busquedas.
  • Soporta varios paradigmas de programación
  • Sencillo en sintáxis
Desventajas:
  • El código puede volverse desordenado, si varios programadores no establecen alguna convención de sintaxis.