jueves, 19 de mayo de 2011

Video donde explico el sistema

http://www.youtube.com/watch?v=AgQ9wDv6Mkc

Maestra aqui le dejo el enlace del video
Gracias y que tenga un buen dia.

Resumen Proyecto Final

Patrones de diseño
Mi proyecto utiliza diferentes patrones de diseño los cuales son  lo siguientes:
  • Composite
  • Facade (Fachada)
  • Strategy (Estrategia)
  • Abstract Factory (Fábrica abstracta)
  • Flyweight (Peso ligero)
  • Observer (Observador)

Eventos, excepciones, errores. (aplicados a mi sistema).
Eventos:

·         En el login cuando se haya puesto correctamente el servidor y la contraseña marcara una bienvenida.

·         Cuando haya ocurrido algún problema con un cliente como ya se mencionó se le pondrá una amonestación se marcara como una X en sus datos.
Excepciones:

·         Seria en el login que el servidor (persona que manejara el sistema) teclee números negativos en la contraseña, espacios o estén vacíos.

·         También en el login que presione la tecla enter en lugar de dirigir el cursor del mause al botón de entrar.
Error:
   
·         Sería que el sistema por alguna razón no elimine un artículo no disponible dentro de la base de datos.

Pruebas Unitarias
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 separados.

JUnit es un conjunto de clases (framework) que permite realizar la ejecución de clases Java de manera controlada, para poder evaluar si el funcionamiento de cada uno de los métodos de la clase se comporta como se espera.
Interfaz Gráfica.
Es la ventana donde se realiza todo el sistema, los prestamos, el chequeo del inventario, etc.

Sistemas Distribuidos.
"Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor".

2.-Base de Datos Distribuidas.- El cliente realiza la interacción con el usuario, ejecuta la aplicación, debe conocer la topología de la red, así como la disposición y ubicación de los datos. Se delega parte de la gestión de la base de datos al cliente.
Fuentes:
http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o

miércoles, 18 de mayo de 2011

Otras Tecnologias (Recientes)

MapReduce es un framework introducido por Google para dar soporte a la computación paralela sobre grandes colecciones de datos en grupos de computadoras. Se han escrito implementaciones de MapReduce en C++, Java, Python y otros lenguajes.

Las funciones Map y Reduce están definidas ambas con respecto a datos estructurados en pares (clave, valor). Map toma uno de estos pares de datos con un tipo en un dominio de datos, y devuelve una lista de pares en un dominio diferente:
Map(k1,v1) -> list(k2,v2)
La función de mapeo es aplicada en paralelo para cada ítem en la entrada de datos. Esto produce una lista de pares (k2,v2) por cada llamada. Después de eso, el framework de MapReduce junta todos los pares con la misma clave de todas las listas y los agrupa, creando un grupo por cada una de las diferentes claves generadas.
La función reduce es aplicada en paralelo para cada grupo, produciendo una colección de valores para cada dominio:
                              Reduce(k2, list (v2)) -> list(v2)
Cada llamada a Reduce típicamente produce un valor v2 o una llamada vacía, aunque una llamada puede retornar más de un valor. El retorno de todas esas llamadas se recoge como la lista de resultado deseado.

Otra Tecnologia:



Hadoop es una plataforma que nos permite desarrollar aplicaciones que tengan que tratar con grandes cantidades de datos, hasta petabytes. Se trata de un subproyecto de Lucene, un proyecto de Apache que desarrolla software para realizar búsquedas. Hadoop es muy útil cuando vamos a realizar proyectos que necesiten de escalabilidad, ya hemos dicho que puede almacenar y procesar petabytes de informacion. A su vez, es perfecto para un cluster de servidores, distribuyendo la información entre los nodos, siendo posible disponer de miles de nodos. Al disponer los datos de forma distribuida, la búsqueda se puede realizar muy rápidamente ya que Hadoop puede acceder a ella de forma paralela. Y aunque los datos estén distribuidos, no hay que preocuparse de fallos ya que dispone de un sistema de seguridad.


Hadoop implemente el MapReduce de Google, usando un sistema distribuido para dividir las aplicaciones en pequeñas tareas. Hadoop se ha llegado a probar en un cluster de 2.000 máquinas y se está intentando alcanzar la cifra de 10.000 máquinas. Es necesario Java para su desarrollo y Linux, aunque se puede usar Windows para desarrollo, aunque el cluster no funciona del todo bien.

Fuentes:

Interfaz Grafica

Con la idea de simplificar el uso de los ordenadores para usuarios de todo tipo y no sólo para los expertos, se ha convertido en una práctica habitual utilizar metáforas visuales por medio de la llamada interfaz gráfica de usuario (IGU ó GUI en inglés) para que el usuario interactúe y establezca un contacto más fácil e intuitivo con el ordenador.
Una interfaz es un dispositivo que permite comunicar dos sistemas que no hablan el mismo lenguaje. Restringido a aspectos técnicos, se emplea el término interfaz para definir el juego de conexiones y dispositivos que hacen posible la comunicación entre dos sistemas. Sin embargo, cuando aquí hablamos de interfaz nos referimos a la cara visible de los programas tal y como se presenta a los usuarios para que interactúen con la máquina.
A continuación les hablare sobre la interfaz gráfica sobre un videojuego que como lo oímos en clase son lo más reconocidos en lo que se refiere a interfaces, mi iré un poquito lejos con un videojuego que me gusta y que tiene una interfaz simple pero entendible.
El juego del que hablo es: Phoenix Wright Ace Attorney para la consola Nintendo DS, les hablare un poco de este juego.
En este juego tú serás Phoenix Wright, un joven de 24 años que se acaba de licenciar en Derecho y ha empezado a trabajar en un bufete. El juego se divide en cinco capítulos o juicios que se irán complicando a medida que van avanzando. Durante cada capítulo tendrás que investigar para recoger pruebas. Los comandos que puedes usar son:
Este boton te permite observar las escenas de crimen para encontra mas pruebas a usar en los juicios, cabe destacar que en esta consola hay dos pantalas de ahi su nombre (Dual Screen), y una pantalla es tactil cuando oprimes el boton de examinar puedes tocar el area que deseas para ver si encuentras algo. 



Este boton como su nombre lo indica te permite conversar con la gente para ver que mas puedes usar en los juicios o para saber a donde ir, cuando es presionado (ya sea en la pantalla tactil o con un boton de la consola) se abriran conversaciones que podras tener con el personaje (como se muestra en la imagen) y asi entender la situacion. 

Con este boton al ser al ser presionado te permitira ir a lugares para seguir investigando, como en el boton de hablar, al ser presionado se abriran las partes a donde quieres ir (como se muestra en la imagen) para seguir investigando.

Este boton es para mostrarle a los personajes los objetos que tienes y ver como reaccionan ante ellos pueden desatar algo o pueden indicarte el camino. Como en la imagen siguiente se le presento un oso al personaje y sus facciones indica que nos dira algo XD.


 Tambien esta este botono para obtener información sobre las pruebas que has conseguido y sobre las personas que has conocido.

<-- aqui vemos que se esta revisando los objetos que se tiene



y aqui vemos que estamos revisando las caracteristicas de los personajes-------------->



Ya en los juicios solo aparecen dos botones:
 Este boton sirve para sacar mas informacion en las declaraciones de los personajes o saber que presentarles.
Este boton no es lo mismo que el anterior por que en el otro solo presentabas algo para saber por donde irte y en este es ya para resolver el juego. Este boton es mas complicado ya que si lo usas en un lugar mal indicado podrias perder el juego

Asi se presenta en el juego:
<-----Cuando estas buscando pistas o informacion 



Cuando estas en el juicio (en esta imagen estas viendo el testimonio) las flechas que aparecen son para leer lo que dijo antes o lo que va a decir es para que leas con atencion XD----->

domingo, 15 de mayo de 2011

Pruebas unitarias

Al desarrollar un nuevo software o sistema de información, la primera etapa de pruebas a considerar es la etapa de pruebas unitarias o también llamada pruebas de caja blanca (White Box), estás pruebas también son llamadas pruebas modulares ya que nos permiten determinar si un modulo del programa esta listo y correctamente terminado, estas pruebas no se deben confundir con las pruebas informales que realiza el programador mientras esta desarrollando el módulo

Características

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.
Aunque estos requisitos no tienen que ser cumplidos al pie de la letra, se recomienda seguirlos o de lo contrario las pruebas pierden parte de su función.

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.
Caja Blanca

En esta imagen se muestra lo que se considera una representación clásica de Software Testing White Box o pruebas de caja blanca, en este tipo de pruebas el cubo representaría un sistema en donde se pueden observar los diversos componentes que forman parte del mismo, cada uno de estos componentes debe ser probado en su totalidad (óvalos), y también sus interfases o comunicaciones con los demás componentes (flechas), este tipo de pruebas también son llamadas pruebas de caja de cristal ya que este útlimo termino   representa mejor el tipo de pruebas.
Caja negra

Sinónimos:

·         pruebas de caja opaca
·         pruebas funcionales
·         pruebas Pde entrada/salida
·         pruebas inducidas por los datos
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 (en sentido general: teclado, pantalla, ficheros, canales de comunicaciones, etc etc) Este comentario no obsta para que sean útiles en cualquier módulo del sistema.

Fuentes:
http://www.calidadysoftware.com/testing/pruebas_unitarias1.php

No hay lonche gratis :p

En internet encontre varias explicaciones sobre esta frase muy interesantes por cierto, creo que cada quien le da el entendimiento que quiere oir en esta frase "No hay lonche gratis" a continacion les dara las explicaciones que encontre en internet, junto con la mia :D.
Primer:
Con esa interpretación no estoy de acuerdo, quizás podría justificar su creencia
usando la teoría del reloj emocional, esto es, pensando que biológicamente
estamos condicionados para que después de sufrir nos sintamos felices y después
de la felicidad nos sintamos ansiosos y deprimidos.
Pero no concuerdo con el sentido según el cual las cosas buenas, la buena fortuna, le sucede a los sufridos.

Segunda: 

En la física, hay una mejor aplicación, más fiel (sensata), de la frase sobre el lonche gratis. Aquí me atrevería a proponerla como hipótesis. La ley de la conservación de la energía, la de conservación de masa y la de la termodinamica podrian derivar de esta posible ley.

No hay lonche gratis, aplicado a las leyes físicas es la filosofía de que no llegará el
día en que un descubrimiento milagroso, un invento mágico, un genio, resuelva
todos nuestros problemas.

Tercera:
En los cursos introductorios de economía se plantean un conjunto de principios básicos sobre las cuales se fundamenta, en alguna medida, la teoría económica; al principio relacionado al costo, en el cual se plantea que el costo de una cosa (bien o servicio) es aquella cosa que se dejo de hacer por la opción elegida, de manera simplista muchos economistas sintetizan este principio como “no hay lonche gratis”, sobre este principio se ha desarrollado el concepto de costo de oportunidad, para quienes completaron los cursos básicos de economía encontraran sencilla la explicación del lonche gratis.
Si partimos de este principio, las actividades que realizamos siempre involucran costos (costos implícitos y explícitos), en el caso de apoyar las candidaturas que involucra el desarrollo de actividades que requieren de costos explícitos (compra de gigantografias, alquiler de vehículos, confección de polos, gorros. Etc.) y costos implícitos (reuniones continuas, movilizaciones, riesgo) a cual la compensación a recibir debería ser mayor al costo, esta situación responde a principios de racionalidad; nada raro entonces es decir que el financiamiento de las millonarias campañas de los principales candidatos a los municipios Provinciales, Distritales y gobierno regional, son los costos que asumirá el candidato electo, y que estos costos tienen que ser retribuidos con su compensación correspondiente incluyendo además los costos implícitos.


Mi parecer:
Hay muchas definiciones (por asi decirlo) sobre esta frase pero lo que yo entiendo sobre esta frase es que si tu quieres algo no va a ser facil conseguirlo siempre tiene que haber algo de por medio si quieres conseguir esa meta ya sea esfuerzo, dinero, o como coloquialmente se dice sangre, sudor y lagrimas.

Bueno aqui les dejo las fuentes, la definicion de esta frase que mas me gusto fue la tecera y que creo que mas se acerca a lo que significa esta frase.

Fuentes:
http://www.arturotapia.com/Ensayos/LoncheGratis.pdf
http://johntarazona.blogspot.com/2010/09/para-la-economia-no-hay-lonche-gratis-y.html