Estos son algunos de los diagramas que hice en la pagina websequence, muy util y recomendable debo decir.
Al estar usando umbrello en mi ArchLinux me da problemas ya que es propio de KDE y Arch utiliza Gnome por eso opte por el websequence.
Bueno, esto ya es otra historia.
Los siguientes diagramas estan describiendo situaciones completas y "dias felices". Y la verdad es que algunos si estan un poco extensos, pero partirlos a secuencias mas reducidas no ayuda a comprender mejor la situacion, asi que lo deje con un contexto mas extenso.
Diagramas de Secuencia
0
comentarios
lunes, 12 de diciembre de 2011
Sistemas Distribuidos
Mi proyecto es apto para el su uso al estilo de computacion distribuida.
Lo primero que se me ocurre es que usar un sistema de Clustering puede beneficiar en gran medida a mi sistema para poder aumentar por mucho su funcionamiento.
Imaginando que el sistema crece, tendremos que las bases de datos de los clientes y los articulos seran mas extensas, por lo cual nos costara mas tiempo realizar todas las acciones de busqueda, inserccion y alteracion de datos.
Si mi sistema funcionara con clustering podria tener varios procesos esparcidos entre las computadoras del cluster, esto implicaria una gran ventaja en su uso ya que seria mucho mas potente y rapido, pero implica un riesgo mucho muy grande ya que si un Nodo del cluster falla el sistema puede quedar inestable y dejar de funcionar.
![]() | |
| Cluster de 6 computadores. |
Este problema se podria arreglar con un nodo provisional al que recurran si algo falla, pero todo queda en manos de las pruebas al momento de la implemetacion de un sistema distribuido.
0
comentarios
domingo, 11 de diciembre de 2011
Patrones de Diseño
Al parecer un patron de diseño es el que mas destaca en mi proyecto, el MVC.
Comunmente se usa el MVC en casi cualquier proyecto para aumentar la reutilizacion de codigo, hacer mas facilmente mejoras y poder tener una amplia perspectiva del entorno del proyecto.
Resulta que en mi proyecto tengo inmiscuidos JSP, Servlets y Clases ¨comunes¨ de java.
Todo indica que mis JSP son mi vista, mis controladores son mis Servlets y las clases son mi modelo, por lo menos de esta manera lo visualizo.
Tambien tenia en mente la fachada como patron.
Asi tendria solo un servlet que controlara a los demas, aprovechando que los servlets se cargan solo 1 vez al ser llamados podria ahorrarme recursos y optimizar un poco el codigo si las bases de datos se llegasen a ampiliar mucho.
0
comentarios
viernes, 9 de diciembre de 2011
Eventos, excepciones y errores
Bien, los eventos de mi proyecto son basicamente acciones de que hacen forms o click de hipervinculos, esto se debe que mi proyecto esta basado en programacion del lado del servidor que no esta al pendiente de lo que sucede en el lado del cliente.
La principal forma de crear eventos es mediante el uso de hipervinculos en los distintos menus
En este caso al dar click en Log In, el Jsp que contiene el Log In es llamado.
Si estas por loggearte y utilizas el boton reiniciar, los parametros se borran y puedes volver a introducir datos, acepto que no es muy util, pero en la zona de registro donde reiniciar los datos con un click si es conveniente por la cantidad de inputs que son. En el caso de este Log In, manda llamar un Servlet que verifica los parametros que se le envian y determina si el usuario y password son correctos, despues redirecciona a la pagina principal.
Las Excepciones en su mayoria son del tipo ServletException, y SQLException donde las exepciones del Servlet pueden succeder en cualquier momento de la ejecuccion de un servlet y las exepciones de sql ocurren con las consultas.
En los servlets si llegase a ocurrir una exepcion de alguno de esos tipos se desplegara una pagina que informa esa exepcion en concreto, sin embargo si es alguna otra la exepciones se arrojan hasta el contenedor y tomcat las maneja desplegando su menu de exepciones.
Algo parecido a esto.
Interfaz Grafica
Esto cumple con el diseño y la implementacion de la interfaz.
utilize html5 y Css3.
Se puede accesar a los datos del usuario
Si el usuario es administrador puede entrar al menu de agregar usuario.
La verdad es que prefiero un formulario en secuencia para poder ir haciendo tab y estar seguro que ingresare el dato que esta abajo inmediatamente y no que saltare a otra parte de la pagina.
Se puede accesar a la seccion de libros o gadgets para poder ver los articulos que estan en venta y agregarlos a carro.
Podemos pasar a ver lo que contiene nuestro carro y eliminarlo
Retroalimentacion
Bueno en cuanto a la retroalimentacion fue con mi compañero Juan esteban.
Discutimos en concreto un punto.
Al momento de distribuir mi software ( debo decir que tengo la idea de subirlo a mi servidor y dejar que lo mis amigos lo utilizen para hacer pruebas reales ) mediante mi servidor casero me comento sobre lo que sucederia si solo quedaba un solo articulo y dos personas daban click sobre en al mismo tiempo.
Esto representa un problema para mi proyecto ya que debe manejar concurrencias entre muchas peticiones al servidor, buscando un poco me di cuenta que las jsp pueden activar o no activar la concurrencia cuando estan en uso. Por desgracia aun no llego a una solucion definitiva, optima e infalible para manejar ese tipo de situaciones por mi bajo dominio de la programacion en Server Side.
La unica idea que me quedo en mente es la de usar timestamps en las peticiones de los usuarios para ver quien "gano" el articulo, pero falta investigar aun mas.
Digrama de Clases
Bueno usando umbrello genere el diagrama de clases.
Actualmente es un poco confuso porque no domino el uso de umbrello, asi que dejare el .xmi por si no es muy claro.
La imagen es esta:
Documentacion Tecnica
public class insert {
String p;
String l;
String x;
EscuchaEventos m = new EscuchaEventos("as"1,true);
p = m.insen();
l = m.insea();
x = m.insee();
basedatos bd = new basedatos();
bd.upd(p,l,x);
}Al ver esto cualquiera se asustaria. Las variables no tienen mucho sentido, no hay forma de saber cuales son los elementos importantes, no tiene metodos implementados. No se sabe si esta clase es necesaria, y al parecer solo el encargado principal, aquel que escribio el codigo es capaz de interpretarlo.Quiza aun exista manera de arreglarlo, pero ahora imaginen que se quedan con el empleo.
Traten de visualizar todo el codigo igual de codificado, seria una pesadilla, no?
Es por ello que la documentacion tecnica es tan importante, a nivel de proyecto es indispensable mantener una documentacion limpia y clara para poder darle mantenimiento a nuestros propios sistemas o a sistemas ajenos.
Veamos este ejemplo de codigo.
public class Elevator {
public boolean doorOpen = false; // variable que indica si la puerta esta abierta
public int currentFloor = 1; // entro que indica el piso actual
public final int TOP_FLOOR = 4; // Constante donde se indica el maximo de pisos
public final int MIN_FLOOR = 0; // Constante donde se indica el minimo de pisos
// Metodo openDoor para abrir las puertas modificando la variable openDoor
public void openDoor() {
System.out.println("Abriendo puerta....");
doorOpen = true;
System.out.println("La puerta esta abierta.");
}
// Metodo closeDoor para cerrar las puertas modificando la variable openDoor
public void closeDoor() {
System.out.println("Cerrando puerta ....");
doorOpen = false;
System.out.println("La puerta esta cerrada.");
}
// Metodo goUp para aumentar el currentFloor y desplegar en pantalla el piso actual
public void goUp() {
System.out.println("Subiendo un piso.");
currentFloor++;
System.out.println("Estamos en el piso: " + currentFloor);
}
// Metodo goDown para decrementar el currentFloor y desplegar en pantalla el piso acutal
public void goDown() {
System.out.println("Bajando un piso.");
currentFloor--;
System.out.println("Estamos en el piso: " + currentFloor);
}
} Al ver un codigo asi es mas facil comprender y modificar su estructura, es un hecho. Como un consejo extra, la documentacion tecnica esta bien acompañada de un estandar de codigo esto hace una lectura y comprension tan sencilla que es facil aplicarles mantenimiento a los sistemas ademas de aplicarles optimizaciones.
0
comentarios
sábado, 5 de noviembre de 2011
Herencia
En mi proyecto Determine que la herencia puede aparecer en la clase Articulo y en los Servlets.
La clase Articulo puede derivar a ArticuloGadget.
Ademas la herencia de los servlets esta implicita, ya que la clase Verificador y la clase Registro heredan de HttpServlet.
0
comentarios
miércoles, 2 de noviembre de 2011
Modelado de Clases del Proyecto
Para el proyecto del carro web de compras las clases que se consideran importantes a implementar son las siguientes.
-Desgraciadamente aun no tengo claro si el uso de bases de datos me oblige a utilizar nuevos atributos, asi que hasta no investigarlos los agregare.
Clase:
public Accesos
importancia:
esta clase es sumamente importante porque sin ella el sistema no se puede accesar,
posiblemente se utilize como interface, ya que puede usarse para el
Log In, Log Out y la Autentificacion de Usuario.
Atributos
- protected-Usuario(clase) usuario
verificacion de usuario y despues se hace una consulta
a la base de datos, y se le asignan valores a la clase Usuario.
Clase:
con esta clase se manejaran los datos del usuario,
importantes ya que para ellos fue creado el sistema.
- private-String nombres
- private-String apellidoMaterno
- private-String apellidoPaterno
- private-String password
- private-double efectivoDisponible
- private-int idUsuario
- private-boolean administrador
Usuario(String nombres, String apellidoMaterno, String ApellidoPaterno,
String password, double efectivoDisponible,
int idUsuario, boolean administrador )
El usuario es creado recibiendo como parametros los atributos
VerificarDatos(void)
- protected-Conecction
1 comentarios
jueves, 8 de septiembre de 2011
Casos De Uso Para El Proyecto
En esta entrada presentare la tabla que escribi con el formato que la Doctora Sara nos sugirió.
Lo que mas destaca es el hecho de que si el usuario o el administrador no hace Log In practicamente no se puede hacer nada.
Ambos actores usuario y administrador, comparten muchas caracteristicas a excepcion del administrador que como es obio tiene mayor cantidad de permisos en cuanto a modificacion y uso del sistema.
1 comentarios
jueves, 25 de agosto de 2011
Definicion del Proyecto
Despues de mucho meditarlo, decidi implementar un software de un carro de compras web.
Porque?
Bueno existen dos buenas razones, la primera es que deseo implementar sobre la web, en segunda despues de una platica con un empresario me comento sobre la falta de profesionalismo departe de los programadores en cuanto a carros de compra web, lo cual me impulsa a comprobar el porque es tan dificil hacer uno.
Descripcion detallada.
El usuario podra acceder a una pagina de incio en la cual necesitara registrarse o acceder a su cuenta, despues pasara a el menu de usuario donde podra validar sus datos, nombre, edad, apellido, trabajo, cantidad de efectivo disponible e historial de transacciones. Si todos los datos son correctos y el cliente esta conforme, tendra la opcion de pasar a realizar sus compras en determinada tienda o sucursal.
Estando en la sucursal o tienda de su preferencia, podra buscar los articulos que necesita o simplemente inspeccionar que articulo tiene disponible la tienda, si el cliente encuentra algun articulo de su agrado puede agregarlo su carro web de compras. El usuario podra verificar en cualquier momento el estado de su carro de compras, la cantidad de articulos que tiene y sus precios, al verificar el estado de su carro se le proporcionara el usuario el coste total de los articulos actualmente seleccionados para que tome en cuenta el efectivo que dispone. Tambien desde la opcion de verificacion podra remover articulos de su carro de compras.
Tambien estara el usuario especial, un administrador el cual podra modificar a placer la base de datos para agregar articulos, modificarlos, borrarlos, y agregar efectivo a los usuarios.
Porque el administrador podra agregar efectivo a los usuarios?
la respuesta a ello, es porque no se manejan tarjetas de credito, ni depositos, la forma de abonar dinero es directamente con el administrador(digase empresa) para que al momento de su "deposito" el administrador personalmente le agrege dicha cantidad a la cuenta del usuario.
En cuanto a los articulos a vender, la idea es que sean libros principalmente pero se pueden agregar mas articulos dependiendo las necesidades.
Acceder como usuario.
Log in/out
Verificar datos de la cuenta.
Comprobacion de datos
Modificar datos de la cuenta.
Modificacion de datos
Añadir objetos al carro.
Añadir compra
Quitar objetos del carro.
Remover compra
Verificar los objetos del carro.
Checar articulos a comprar
Sobre la implementacion.
Pienso usar como lenguaje de programacion Java.
Concretamente pienso utilizar Servlets y Java Server Pages para la implementacion final, tambien usare el Rdbms Mysql para el uso de bases de datos.
Referencia:
Imagen carro de compras web
http://www.jevaplastic.com.mx/persona-con-carrito-de-compras-245x300.gif
referencia de Mysql
http://www.mysql.com/
referencia de los JSP
http://www.desarrolloweb.com/articulos/831.php
referencia de los Servlets de java
http://www.oracle.com/technetwork/java/javaee/servlet/index.html
0
comentarios
lunes, 22 de agosto de 2011














