jueves, 19 de mayo de 2011

PRUEBAS UNITARIAS

En programación, una prueba unitaria es una forma de probar el correcto funcionamiento de un módulo de código. Esto sirve para asegurar que cada uno de los módulos funcione correctamente por separado. Luego, con las Pruebas de Integración, se podrá asegurar el correcto funcionamiento del sistema o subsistema en cuestión.
La idea es escribir casos de prueba para cada función no trivial o método en el módulo de forma que cada caso sea independiente del resto.
Para que una prueba unitaria sea buena se deben cumplir los siguientes requisitos:
  • Automatizable: no debería requerirse una intervención manual. Esto es especialmente útil para integración continua.
  • Completas: deben cubrir la mayor cantidad de código.
  • Repetibles o Reutilizables: no se deben crear pruebas que sólo puedan ser ejecutadas una sola vez. También es útil para integración continua.
  • Independientes: la ejecución de una prueba no debe afectar a la ejecución de otra.
  • Profesionales: las pruebas deben ser consideradas igual que el código, con la misma profesionalidad, documentación, etc.
VENTAJAS

El objetivo de las pruebas unitarias es aislar cada parte del programa y mostrar que las partes individuales son correctas. Proporcionan un contrato escrito que el trozo de código debe satisfacer. Estas pruebas aisladas proporcionan cinco ventajas básicas:
  1. Fomentan el cambio: Las pruebas unitarias facilitan que el programador cambie el código para mejorar su estructura (lo que se ha dado en llamar refactorización), puesto que permiten hacer pruebas sobre los cambios y así asegurarse de que los nuevos cambios no han introducido errores.
  2. Simplifica la integración: Puesto que permiten llegar a la fase de integración con un grado alto de seguridad de que el código está funcionando correctamente. De esta manera se facilitan las pruebas de integración.
  3. Documenta el código: Las propias pruebas son documentación del código puesto que ahí se puede ver cómo utilizarlo.
  4. Separación de la interfaz y la implementación: Dado que la única interacción entre los casos de prueba y las unidades bajo prueba son las interfaces de estas últimas, se puede cambiar cualquiera de los dos sin afectar al otro, a veces usando objetos mock (mock object) para simular el comportamiento de objetos complejos.
  5. Los errores están más acotados y son más fáciles de localizar: dado que tenemos pruebas unitarias que pueden desenmascararlos.

jueves, 7 de abril de 2011

diagrama uml



DIAGRAMAS DE CLASE Y SECUENCIA DE UML

DIAGRAMA DE CLASE: Un diagrama de clase sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenimiento.

Un diagrama de clases esta compuesto por los siguientes elementos:

Clase: atributos, métodos y visibilidad.
Relaciones: Herencia, Composición, Agregación, Asociación y Uso.

En UML, una clase es representada por un rectángulo que posee tres divisiones

herencia y polimorfismo

- herencia:
La herencia es el mecanismo fundamental para implementar la reutilización y extensibilidad del software. A través de ella los diseñadores pueden construir nuevas clases partiendo de una jerarquía de clases ya existente evitando con ello el rediseño, la modificación y verificación de la parte ya implementada. La herencia facilita la creación de objetos a partir de otros ya existentes, obteniendo características (métodos y atributos) similares a los ya existentes.
aqui en mi proyecto usaria erencia en el buscador ya que reutilizaria  al mostrar los resultados de la busqueda ya que contienen los mismas celdas .


-Polimorfismo:
La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes. Este es uno de los conceptos esenciales de una programación orientada a objetos. Así como la herencia está relacionada con las clases y su jerarquía, el polimorfismo se relaciona con los métodos

En programación orientada a objetos el polimorfismo se refiere a la capacidad para que varias clases derivadas de una antecesora utilicen un mismo método de forma diferente.

en mi proyecto utilizare polimorfismo en la pantalla principal del buscador donde el usuario podra seleccionar como dirigir la busqueda si por juego , consola o accesorio.

diseño con clases

1) clase catalogo: en esta clase que sera la principal donde el usuario se desplasara por el catalogo y que se va relacionando con las demas clases.

atributos: titulo,consola, genero clasificacion

metodos:aqui se podra buscar directamente poniendo el nombre del juego, consola y accesorio. y tambien podra hacerse una busqueda mas especialisada escogiendo una o mas categorias y para la consola requerida

2)clase videojuego: en esta clase se mostrara el resultado de los videojuegos relacionados  y sujeridos  al usuario .

atributos: videojuegos,nombre, imajen, clasificacion, consola, genero,precio.
metodos: aqui al escojer el juego se abrira toda la informacion referente a este juego de interes para el usuario

3)clase consola: en esta clase se mostrara el resultado de la consola relacionada y sujerencias.
atributos:consola.
metodo: desplegando una opcion para escojer el tipo de consola que requiere ya sea de casa o portatil

4)clase accesorio: esta clase mostrara el resultado  de los accesorios requeridos y sujeridos al usuario.
atributo: consola
metodo: escogiendo la consola para la que requiere el accesorio y asi se desplegaran todos los accesorios.

sistema de catalogo (proyecto)

El software que se desarrollara se trata de un sistema de catalogo de videojuegos  pensado para tiendas especializadas y  no especializadas en sus ventas así facilitar  el acceso  y la compra de estos.
Este catalogo tiene como objetivo agilizar  la búsqueda tanto de juegos consolas accesorios, mostrando si se encuentra disponible en el inventario de la tienda cuando no se quiere perder tiempo mirando todo el aparador  y buscando entre toda la mercancía exhibida  también proporcionara información  del videojuego  como nombre, imágenes del videojuego, consola para las que se encuentra disponible, clasificación parental genero, reseña,  puntaje obtenido y precio .
La manera de uso podría ser de la  colocación de un quiosco interactivo  para los consumidores y vendedores así no seria necesario demasiada la intervención de un vendedor el mismo usuario podría guiarse en su búsqueda.




miércoles, 23 de marzo de 2011

ANTI PATRONES

Anti patrones: Son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software, que invariablemente conduce a una mala solución para un problema. existen los anti patrones de : Gestión, Gestión de , proyectos, De diseño de software, orientado a objetos y de programación.


4 ejemplos de anti patrones de Programación Orientada a Objetos:



  • Acoplamiento secuencial: consiste en construir una clase que necesita que sus métodos se invoquen en un orden determinado.
  • Basebean: Heredar funcionalidad de una clase utilidad en lugar de delegar en ella.
  • Llamar a super: Obligar a las subclases a llamar a un método de la superclase que ha sido sobrescrito.
  • Objeto sumidero: Reusar objetos no adecuados realmente para el fin que se persigue.




jueves, 17 de marzo de 2011

singleton y command

-Singleton (instancia unica ):
El  patron singleton tiene la funcion de restringir la creación de objetos pertenecientes a una clase o el valor.  Es implementado en las clases cuya intencion es que solo se tenga una instancia y proporcionar un punto de axeso a sia dicha clase y es implementado mayormente en en donde el control de acceso a un recurso fisico como :raton, o un archivo abierto.  O cuando cierto tipo de dato debe estar disponible.

-command (comando):
este patron permite solicitar una operacion un objeto  sin conoser su contenido y es aplicable para facilitar  la  parametrización de las acciones a realizar,Independizar el momento de petición del de ejecución y soportar el deshacer.