viernes, 18 de junio de 2010

Introducción

Muchas de las organizaciones actuales de investigación reconocen el trabajo en equipo como una ventaja para alcanzar objetivos específicos en su empresa. UPPM Groupware (Unified Process Project Magnament) o Proceso Unificado de Gestión de Proyectos es una aplicación web con la que el trabajo colaborativo se hace más fácil soportando desde pequeños hasta proyectos de mediana escala. Esta aplicación es una herramienta pensada y desarrollada para ofrecer servicios útiles a aquellas personas que comparten uno o varios objetivos comunes.

Uppm Groupware es sinónimo de colaboración. El trabajo en equipo puede ser llevado a cabo compartiendo información, gestionando calendarios grupales o intercambiando datos.

El Proyecto UPPM permite la gestión de múltiples grupos, cada uno con su respectivo administrador, quien es el encargado de controlar la entrada de nuevos miembros al grupo. Todos los usuarios disponen de una libreta de direcciones o de contactos y pueden tener acceso al calendario compartido, la gestión de proyecto es clave en el proceso.

Todo proyecto en UPPM Groupware tiene una fecha de inicio y una fecha tentativa de finalización, también se le es asignado un nombre y una descripción por parte del Administrador. Permite la creación y asignación de tareas a miembros del grupo.

UPPM Groupware nace como proyecto de clase en la asignatura Ingeniería del Software 3 del programa de Ingeniería de Sistemas de la Universidad del Cauca. La idea inicial es desarrollada por los estudiantes Yeison Fernando Vega, Hanner Fabián Orejuela, Luis Fernando Carvajal y Alejandro Mosquera.

Artefactos De Desarrollo



PAUTAS DE PROTOTIPADO
 Evaluacion Heuristica

descargar de:

http://www.megaupload.com/?d=ZOZU9O02



Modelo de casos de uso



Modelo relacional de la base de datos


Historias de Usuario:

1. Gestion de usuarios

Tareas de ingenieria:

1.1

1.2

1.3

2. Libreta de Contactos

Tareas de ingenieria:

2.1

2.2

2.3

2.4

2.5

3. Calendario

Tareas de ingenieria:

3.1

3.2

3.3

4. Gestion de Miembros


Tareas de ingenieria:

4.1


4.2

5. Gestion de Proyectos:

Tareas de ingenieria:

5.1

5.2

5.3

5.4

5.5

Presentacion grafica de UPPM-Groupware

INFORME SOBRE LA EXPERIENCIA ADQUIRIDA AL GENERAR UN PROTOTIPO DEL PROYECTO FINAL
 

Inicialmente se decidió una plantilla con la cual generaríamos el entorno grafico del proyecto, dicha plantilla la tomamos de la lista vista en clase; después de escoger una que fuera sencilla pero elegante a la vez, procedimos a modificarla de acuerdo a nuestras necesidades; de esta manera llegamos a un prototipo no funcional de la página principal del proyecto.
Tras tener ya una vista de lo que sería nuestra página, procedimos a escoger el método de evaluación teniendo en cuenta el modelo de encuesta para las heurísticas visto en clase; los resultado fueron alentadores en unos aspectos pero también nos dimos cuenta que nos faltaba mucho para tener un modelo completo para mostrar a un público menos experto, la evaluación heurística la realizó el ingeniero Siler Amador Donado del programa de sistemas de la Universidad del Cauca, los resultados fueron los siguientes:
PAGINA PRINCIPAL:



LIBRETA DE CONTACTOS

Agregar Contacto

Eliminar Contacto

Modificar Contacto


Buscar Contacto

Listar Contacto


CALENDARIO

vista por horas del Dia

Vista por dias y horas de la semana

Vista por dias del Mes

Agregar un evento

Conclusiones:


• Según los datos recopilados en la entrevista pudimos encontrar una serie de errores que debemos corregir, por ejemplo la utilización de los enlaces y los iconos, es algo en lo que debemos enfatizar más.
• Además encontramos también que la distribución de la pagina no estaba tratada de la forma más adecuada, sin embargo, en el desarrollo de la vista no tuvimos más remedio que hacerla de esa manera, ya que la plantilla que escogimos no se prestaba para poner los datos de la manera que los usuarios están acostumbrados a encontrar, sin embargo gracias a la critica generada por las heurísticas encontramos que la plantilla no era la más adecuada, o que debemos asesorarnos mejor para modificarla de tal manera que la distribución sea mas adecuada.


Consideraciones de seguridad

En el Proyecto UPPM Groupware se considero tratar de evitar una técnica de violación llamada Inyección SQL.

Una inyección SQL sucede cuando se inserta o "inyecta" un código SQL "invasor" dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código "invasor" en la base de datos.

La inyección SQL es un problema de seguridad informática que debe ser tomado en cuenta por el programador para prevenirlo. Un programa hecho con descuido, displicencia, o con ignorancia sobre el problema, podrá ser vulnerable y la seguridad del sistema puede quedar ciertamente comprometida. Esto puede suceder tanto en programas ejecutándose en computadores de escritorio, como en paginas web, ya que éstas pueden funcionar mediante programas ejecutándose en el servidor que las aloja.

La vulnerabilidad puede ocurrir cuando un programa "arma" descuidadamente una sentencia SQL: con parámetros dados por el usuario, para luego hacer una consulta a una base de datos. Dentro de los parámetros dados por el usuario podría venir el código SQL inyectado.

Al ejecutarse esa consulta por la base de datos, el código SQL inyectado también se ejecutará y podría hacer un sinnúmero de cosas, como insertar registros, modificar o eliminar datos, autorizar accesos e, incluso, ejecutar código malicioso en el computador.

Asumiendo que el siguiente código está en una aplicación web y que existe un parámetro "nombreUsuario" que contiene el nombre de usuario que nosotros le demos, la inyección SQL es posible:

La inyección SQL consiste en la modificación del comportamiento de nuestras consultas mediante la introducción de parámetros no deseados en los campos a los que tiene acceso el usuario.

Este tipo de errores puede permitir a usuarios malintencionados acceder a datos a los que de otro modo no tendrían acceso y, en el peor de los casos, modificar el comportamiento de nuestras aplicaciones.

Para evitar este tipo de violación se consideró bloquear las comillas simples en los campos de texto con una función simple en Javascript

Referencia

http://www.maestrosdelweb.com/editorial/inyecsql/

http://es.wikipedia.org/wiki/Inyección_SQL

jueves, 20 de mayo de 2010

Metodología de desarrollo

La metodología de desarrollo adoptada para el proyecto Groupware fue XP (programación extrema), ya que, de acuerdo con las características en las que se enmarcaba el proyecto, como poco tiempo de desarrollo y un grupo de trabajo con numero par de personas (cuatro personas para el caso), se observo que una metodología como XP la cual presenta iteraciones cortas de pocas semanas o incluso días y además se trabaja en parejas, representaba una de la mejores, sino, la mejor alternativa ante un desarrollo que de antemano se planteaba con objetivos extremos, es decir, una gran cantidad de trabajo el cual implicaba aprendizaje de la tecnología y framework (en esta caso tecnología java manejada con Adobe Flex) en poco tiempo. Otra de las ventajas que tiene XP en un desarrollo de poco tiempo, es que requiere el manejo de pocos artefactos (historias de usuario, tareas de ingeniería y tarjetas CRC), mientras que una metodología como RUP, como que presenta un gran numero de artefactos generaría mucho más esfuerzo en el desarrollo del proyecto, en la parte de gestión, diseño y desarrollo, claro que en un proyecto más grande tal vez XP no sea la mejor opción.


En qué consiste XP
Las cuatro variables:
- Coste: Máquinas, especialistas y oficinas
- Tiempo: Total y de Entregas
- Calidad: Externa e Interna
- Alcance: Intervención del cliente

Premisas XP:
- Revisar el código todo el tiempo (programación en parejas)
- Probar constantemente
- Diseñar todo el tiempo
- Siempre se dejara el sistema con el diseño más sencillo que soporte la funcionalidad

XP toma prácticas y principios de sentido común a niveles extremos

- Reduce el riesgo en el proyecto, está sujeto a cambios sin entrar en costos excesivos
- Mejora la productividad
- Como XP es tan dinámico se necesita una participación activa del usuario/cliente, de este modo se podría integrar con el diseño centrado en el usuario.

Roles

- Programador: corazón de XP, tomar decisiones que cuidadosamente equilibren las prioridades a corto y largo plazo [1]. (Todos en el equipo tomamos este rol)
- Cliente: Segundo elemento fundamental en XP, el cliente conoce que hay que hacer.
- Encargado de pruebas: está centrado en el cliente, ayuda al cliente al escoger y escribir pruebas funcionales. (Todos en el equipo tomamos este rol)
- Controlador: Conciencia del equipo, hace buenas estimaciones y observa como la realidad como van con la realidad.(Yeison Vega)
- Preparador: observa cómo la gente se está desviando del proceso y llama la atención del equipo sobre esto.(Hanner Orejuela)
- Consultor: Ayuda con problemas técnicos que se quieran resolver, es el que tiene grandes conocimientos de la tecnología.(Alejandro Mosquera)
- El gran jefe: Examinar lo que está haciendo el equipo de desarrollo para que continúen por el camino correcto, sino lo hacen debe intervenir y plantear alternativas.(Luis F Carvajal)

En el trabajo realizado para el proyecto, la metodología se adopto de la siguiente manera:
- En primer lugar se escogieron los roles, pensando en que potencialidades presentaba cada persona y así pudiera desempeñarlo lo mejor posible.
- Se definió un cronograma de trabajo realista, para de esta forma poder alcanzar los objetivos planteados para el desarrollo del proyecto.
- Se definieron las parejas de programadores, teniendo en cuenta que estuviesen de distribuidas de manera que el trabajo realizado fuera el correcto.
- Se realizo la definición de la arquitectura y tecnologías a trabajar.
- Que se realizo un entrenamiento con la tecnología para dar inicio ahora si al proyecto.
- Comienzo del trabajo, este se dio en franjas definidas por todo el grupo de trabajo, en las cuales se reunían a diseñar, programar y probar la aplicación desde las primeras iteración. Este trabajo se hizo siempre en parejas con la retroalimentación de todo el equipo ante una posible dificultad en la codificación de alguna historia de usuario.

Cronograma del Proyecto:


Semana en que nos encontramos semana 9 (Como lo indica la linea Verde)

Tecnologías usadas

La arquitectura MVC (Modelo Vista Controlador) funciona como base de organización para el desarrollo del proyecto. El patrón que se ha utilizado en primeras iteraciones ha sido Front Controller (Controlador de frente), aunque se espera que para la versión final se encuentren algunos otros como Page Controller para el inicio de sesión y la realización de algunos otros servicios.

Uppm groupware es una aplicación cliente servidor que combina potentes tecnologías como java, adobe flex y postgresql. El siguiente esquema muestra la comunicación entre las diferentes tecnologías usadas.

Existen archivos Flash (.swf) embebidos en paginas JSP combinando así la potencia y fiabilidad de ambas tecnologías para obtener una mayor eficacia, usabilidad y un mejor “look and feel“.

Postgresql proporciona mayor estabilidad y disponibilidad de datos del proyecto Uppm Groupware, que combinado con la potencia de los servlets de Java hace que realmente, el trabajo concurrente sea una ventaja a la hora de utilizar software colaborativo.


Experiencia Obtenida

EN GENERAL


El software colaborativo o Groupware es una aplicación Web de desarrollo exigente, que obliga a utilizar una buena metodología e ingeniería para poder cumplir con los requisitos de una buena aplicación, que ofrezca servicios útiles a aquellas personas que trabajan conjuntamente en un fin común, el mismo desarrollo de éste hace que el grupo de desarrollo del proyecto UPPM funcioné también como un sistema colaborativo, gestionando calendario, compartiendo información e intercambiando datos.

La experiencia alcanzada en este trabajo ha sido de especial importancia, ya que no habíamos trabajado algunos de los integrantes con algunas de las tecnologías utilizadas en el proyecto, tales como Adobe Flex, y postgres. La integración de estas tecnologías nos ha tomado bastante esfuerzo, pero mucho conocimiento e innovación en las nuevas herramientas.

El trabajo en grupo apoyado de la metodología XP, cumpliendo con sus roles y su cronograma, nos ha llevado a un nivel mas real de lo que es desarrollar una aplicación Web trabajada con ingeniería de desarrollo de aplicaciones Web, aplicando patrones de diseño, arquitecturas, reglas de usabilidad y logrando un objetivo grupal.

Experiencias personales

Hanner Orejuela:

Con respecto al trabajo en grupo en general nos fue bien ya que adoptamos roles desde un principio, se tuvieron dificultades en varios temas pero al final fueron superadas con éxito, con respecto a las herramientas me gusto Adobe Flex, me parece que ayuda al programador a hacer aplicaciones muy parecidas a las de escritorio, además que gráficamente tienen un buen look and feel, ofrece arrastrar y soltar, columnas ordenables, efectos de animación, etc… además son basadas en capas y en flash que es una tecnología ahora bastante usada, por lo cual nos fue de gran ayuda. Me pareció complejo el manejo y la integración con los JSP en un principio, pero después era lo mismo para cada servlet y broker utilizado, también fue difícil el manejo de los archivos xml en la aplicación.

Yeison Fernando Vega Gómez:

El haber trabajo en este grupo me ofreció una valiosa y enriquecedora experiencia, de como es el trabajar en un proyecto real, se ven problemas y conjuntamente soluciones; se encuentran desacuerdos, malentendidos y gracias a ello le encontré un nuevo valor a la comunicación, la herramienta me pareció excelente, muy fácil de usar, es como utilizar Visual Studio, los entornos que genera son excelentes, lo que le da valor a la usabilidad de la aplicación, además integrarla con el servidor de netbeans es muy fácil también es como armar un rompecabezas; igual se tuvo que investigar y leer lo suficiente para poder utilizarla de una manera eficiente. Cabe nombrar que se trabajo bastante en el entorno grafico de la aplicación, teniendo en cuenta las pautas de usabilidad que se estudiaron, y otras que se investigaron también como decía un artículo: "Una cosa es una aplicación web en donde el usuario interactúa con muchas funciones, y otra cosa es un sitio comercial de un producto o servicio que se tiene que destacar por cómo se presenta.".

Además el mismo articulo decía que si desde un principio era un requisito que la parte funcional estuviera corriendo, había que preocuparse más por lo que no se cumpliría concretamente, como la parte grafica del sistema. Nuestro equipo se preocupo por que el proyecto estuviera equilibrado en los dos aspectos, centrándonos de forma conjunta en la funcionalidad y en la usabilidad, sin dejar de lado la los demás aspectos como la seguridad.

Alejandro Mosquera:

Uno de nuestros objetivos fue velar siempre porque la aplicación tuviera una buena presentación y por eso decidimos trabajar con Flash a través del IDE Flex Builder. No queríamos dejar la eficiencia a un lado y por ello integramos la parte del lado del servidor con tecnología Java. Creo que este par de herramientas permiten desarrollar aplicaciones muy potentes y con bastantes atributos de calidad tal como: usablidad, eficiencia, confiablidad e integridad entre otras.

El trabajo en equipo es de vital importancia para proyectos con tan poco tiempo de duración. La comunicación es un valor indiscutible y que de ninguna forma debe ser sustituido por algún tipo de artefacto. Creo que el equipo de trabajo aportó valiosas enseñanzas entre si y que seguramente da un tanto mas de experiencia para futuros proyectos.