13
UNIVERSIDAD ARGENTINA JOH N F. KENNEDY   INVESTIGACIÓN DE SISTEMAS  TRABAJO PRÁCTICO  LISTA DE COMPR AS PROFESORES NORBERT O REBEQUI CARLOS IMP ARA TO

Investigacion de Sistemas - Agile

Embed Size (px)

DESCRIPTION

Este trabajo práctico tiene como objetivo final desarrollar una Lista de Compras mediante la aplicación de metodologías ágiles. Para el desarrollo del mismo se utilizarán nuevas tecnologías y un conjunto de herramientas front-end para el desarrollo rápido de aplicaciones web.

Citation preview

  • U N I V E R S I D A D A R G E N T I N A

    J O H N F. K E N N E D Y

    I N V E S T I G A C I N D E S I S T E M A S

    T R A B A J O P R C T I C O

    L I S TA D E C O M P R A S

    P R O F E S O R E S

    N O R B E R T O R E B E Q U I

    C A R L O S I M PA R AT O

  • Trabajo Prctico Investigacin de Sistemas 2012

    INDICE

    INTRODUCCION ..................................................................................................... 3

    OBJETIVO ............................................................................................................ 3

    INVESTIGACION ..................................................................................................... 3

    TWITTER BOOTSTRAP ............................................................................................. 4

    OBJECT DATASTORE (GAE) ....................................................................................... 4

    AMAZON WEB SERVICES (EC2-RDS) .............................................................................. 5

    AMAZON ELASTIC COMPUTE CLOUD (EC2) .......................................................................... 6

    AMAZON RELATIONAL DATABASE SERVICE (RDS) .................................................................... 6

    APLICACIN DE TECNOLOGAS AGILES .......................................................................... 6

    ARQUITECTURA DE LAS 3 CAPAS ................................................................................. 7

    COMO UTILIZAMOS CADA SERVICIO ............................................................................. 8

    USER STORIES O HISTORIAS DE USUARIOS ..................................................................... 9

  • Trabajo Prctico Investigacin de Sistemas 2012

    INTRODUCCION Los desarrollos de software han demostrado que la programacin en proyectos tiende a presentar problemticas o falencias que se pueden generar por el equipo de desarrollo, por mala planeacin, requisitos mal comprendidos o interpretados entre otros. Los proyectos software buscan en las empresas facilitar, agilizar, mejorar procesos y tender hacia una alta competitividad con el uso de dichas aplicaciones informtica. OBJETIVO Este trabajo prctico tiene como objetivo final desarrollar una Lista de Compras mediante la aplicacin de metodologas giles. Para el desarrollo del mismo se utilizarn nuevas tecnologas y un conjunto de herramientas front-end para el desarrollo rpido de aplicaciones web. Para la presentacin del producto se debern respetar ciertas pautas: - Concentrarnos en entregar valor a cada iteracin - Asegurar la calidad del producto y la satisfaccin del cliente - Trabajar como lo hacen, actualmente, cientos de organizaciones giles de

    desarrollo de software - Conformar un equipo apasionado para lograr un producto apasionado INVESTIGACION Como primera etapa del proyecto, se realizar una investigacin de las diferentes tecnologas existentes que podran ser tiles para el desarrollo de la aplicacin. Temas a Investigar:

    Twitter Bootstrap

    Object Datastore (GAE)

    AWS (EC2-RDS)

  • Trabajo Prctico Investigacin de Sistemas 2012

    TWITTER BOOTSTRAP Twitter ha lanzando una nueva herramienta Open Source para recompensar a la comunidad, como muestra de agradecimiento a los beneficios que obtiene la compaa al usar herramienta de cdigo abierto en sus proyectos. Twitter Bootstrap, un conjunto de herramientas front-end para el desarrollo rpido de aplicaciones web. Un conjunto de CSS y HTML que utiliza algunas de las tcnicas ms modernas para ofrecer plantillas para maquetar, estilos para tipografas, formularios o botones en una. Caractersticas Generales: Boostrap est diseado para ayudar a la gente de todos los niveles Boostrap ha evolucionado para incluir soporte para un mayor nmero de

    navegadores y con Boostrap 2, tambin para tabletas y Smartphones. Con Bootstrap 2. nuestros componentes se adaptan y escalan segn las

    resoluciones de pantalla Variables, anidaciones, operaciones y mezclas en LESS hace la codificacin de

    CSS ms rpida y ms eficiente con un mnimo esfuerzo.

    OBJECT DATASTORE (GAE) Google App Engine es una plataforma que nos permite acceder a los recursos de Google con el objetivo de crear aplicaciones que funcionen en la nube. Las aplicaciones App Engine son fciles de crear, mantener y ampliar.

  • Trabajo Prctico Investigacin de Sistemas 2012

    El almacn de datos (datastore) Ofrece un almacenamiento slido y escalable para las aplicaciones web. Guarda objetos de datos conocidos como ENTIDADES y cada una de ellas incluye una o varias PROPIEDADES. Todas las consultas del almacn de datos se basan en un ndice. Las aplicaciones App Engine definen los ndices en un archivo de configuracin. A medida que la aplicacin modifica las entidades del almacn de datos, este ltimo actualiza los ndices con los resultados correctos. Cuando la aplicacin ejecuta una consulta, el almacn de datos extrae los resultados directamente del ndice en cuestin. Todo tipo de modificacin ocurre en una transaccin, en caso de que se produzca un error, la transaccin evita que se apliquen los cambios. De esta forma, se garantiza la coherencia de los datos dentro de la entidad. AMAZON WEB SERVICES (EC2-RDS) Amazon Web Services proporciona una plataforma de infraestructura escalable de alta fiabilidad y de bajo costo en la nube que impulsa a cientos de miles de empresas en 190 pases de todo el mundo.

    Bajo coste

    Agilidad y elasticidad instantnea

    Abierto y flexible

    Segura El alojamiento de aplicaciones mediante Amazon Web Services (AWS) ofrece recursos informticos fiables, escalables y rentables donde alojar las aplicaciones.

    Teniendo los siguientes componentes de AWS disponibles: Amazon Elastic Compute Cloud (Amazon EC2) Amazon Simple Storage Service (Amazon S3) Amazon Relational Database Service (Amazon RDS) Amazon SimpleDB Amazon CloudFront Amazon Simple Queue Service (Amazon SQS) Amazon DevPay Amazon Mechanical Turk

  • Trabajo Prctico Investigacin de Sistemas 2012

    Visin

    Historias (Stories)

    Tareas / Criterios de Aceptacin

    Scrum Gestin

    Amazon Elastic Compute Cloud (EC2) Es un servicio web que proporciona capacidad informtica con tamao modificable en la nube. Est diseado para facilitar a los desarrolladores recursos informticos escalables y basados en web. Amazon Relational Database Service (RDS) Es un servicio web que facilita las tareas de configuracin, utilizacin y escalado de una base de datos relacional en la nube. Proporciona una plataforma fcilmente escalable y a un bajo costo. Amazon RDS est diseado para desarrolladores o empresas que necesiten las caractersticas y posibilidades completas de una base de datos relacional, o que deseen migrar sus aplicaciones y herramientas existentes que utilizan una base de datos relacional. Las funciones proporcionadas por Amazon RDS dependen del motor de base de datos que utilice (Oracle, MSQL, MySQL). APLICACIN DE TECNOLOGAS AGILES

    En nuestro caso supongamos que nos ha contratado un grupo de supermercados para desarrollar una aplicacin denominada Lista de Compras, que deber proveer al cliente una herramienta gil para realizar sus compras y adems ser utilizada como medio de promocin para los supermercados. Luego de analizar las caractersticas o funcionalidades que la lista de compras debe tener, hemos dividido la problemtica en una arquitectura de 3 capas: Capa de presentacin (Interface Grafica) Reglas de negocio Persistencia (Data Store)

  • Trabajo Prctico Investigacin de Sistemas 2012

    ARQUITECTURA DE LAS 3 CAPAS

    Capa de presentacin:

    Bootstrap

    Reglas de negocio:

    JAVA & JS

    Persistencia en DB:

    Google Datastore

  • Trabajo Prctico Investigacin de Sistemas 2012

    COMO UTILIZAMOS CADA SERVICIO

    La utilizacin de Twiter Boostrap nos proporciona la capa de presentacin para la

    aplicacin desarrollada. Mediante el manejo de un framework compatible con la mayora de los sistemas operativos y navegadores utilizando CSS y HTML. Boostrap nos facilita la tarea para que nuestros componentes se adapten y escalen segn las resoluciones de pantalla y dispositivos.

    Para las reglas de negocio, el entorno de desarrollo usado es Eclipse y la programacin se realiza con las tecnologas JAVA y JS. Tambin utilizamos jQuery, librera de JavaScript, para que no recargue todos los componentes de la pgina. Se programaron con JAVA las siguientes validaciones: - de caracteres especiales - de SQL injection - de codificacin %x (cuando por ejemplo se coloca %d o % y cualquier otra letra lo codifica como un numero) .

    Google App Engine proporciona un potente servicio de almacenamiento de datos distribuido, slido y escalable para las aplicaciones web. Cuando usamos Google App Engine, no se tiene acceso a una base de datos relacional tradicional como MySQL u Oracle. Los datos se almacenan en el Google Datastore que usa un enfoque jerrquico orientado a objetos al estar basado en otra tecnologa de Google, el Google Bigtable que es un sistema distribuido de almacenamiento de datos estructurados. El enfoque de utilizar Bigtable como almacenamiento a travs del Google Datastore consiste en ofrecer una forma eficiente de escalabilidad a las aplicaciones en la nube de Google, las bases de datos no SQL son conocidas por su predisposicin a facilitar la escalabilidad. En la lista de compras realizada, el DataStore de Google permiti almacenar aquellas instancias utilizadas para crear listas, agregar tems, modificarlos y eliminar las listas. Todos los datos que fueran ingresados o borrados de la lista quedaban registrados en el DataStore, de esa manera no era necesario acudir a una base de datos tradicional para realizar la carga de informacin.

  • Trabajo Prctico Investigacin de Sistemas 2012

    USER STORIES O HISTORIAS DE USUARIOS

    Nuestra Lista de compras se compone de bloques funcionales que podemos clasificar segn su complejidad desde el punto de vista del desarrollador y su importancia desde el punto de vista del usuario. Esto nos permitir tener una primera aproximacin a la problemtica de negocio y a las caractersticas del producto que se deseamos construir. Conociendo las prioridades de dichos bloques funcionales, se toman los de mayor prioridad y se descomponen en funcionalidades mas especificas, logrando de esa manera PBIs de menor nivel, llamados Historias de Usuario o User Stories. Como primer paso comenzamos a definir las user stories, para luego clasificarlas y unificarlas para definir los mdulos finales.

    Definimos entre todos la priorizacin de las user stories

    Luego de la priorizacin quedan finalmente establecidas las user stories

  • Trabajo Prctico Investigacin de Sistemas 2012

    Story n

    Descripcin Criterios de Aceptacin Tareas

    51 Como usuario quiero poder crear, modificar y eliminar listas y poder definir alguna de estas como plantilla para futuros usos. Con el fin de recordar las cosas que quiero comprar.

    Debo poder generar nombres de listas.

    Debo poder crear n cantidad de listas.

    * ABM de listas * Agregar items a la/s lista/s *Persistencia de la lista. * Guardar una lista como template. Bootstrap --Hacer moc de pantallas (5 pantallas) 5 ptos --Codificar los moc en html con bootstrap 8 ptos --Validacin en diversos dispositivos 5 puntos Datastore --Objeto DAO --5 Acciones de acceso 5ptos Regla Negocio -- Tres objetos: lista / item / app 5 ptos

    17 Como dueo del producto quiero un hosting bueno, bonito y barato, adems de estar disponible en la nube. Para tener un buen servicio.

    Debe tener un nivel de servicio del 90%.

    Plataforma LAM (linux,apache,mysql) Que el costo anual del

    hosting no supere los $250

    Evaluar 3 propuestas

    21 Como dueo de la aplicacin requiero que los vendedores de productos muestren sus ofertas.

    Un grupo de cadenas de supermercados puedan informar a los usuarios sobre ofertas relacionadas con los items que ingresan en sus listas.

    Se requiere un listado provisto por el o los supermercados con los productos en oferta

    Se requiere relacionar el producto ingresado por el usuario con su correspondiente en la lista del supermercado

    52 Como usuario requiero facilidad en la gestin de las listas para tener un buen control de los productos.

    Realizar un ABM simple y claro.

    Que permita clasificar en tipos y subtipos de productos si es necesario, para facilitar la bsqueda/seleccin.

    Para tipificar los productos se requiere generar un ABM de etiquetas y una forma de relacionar los productos con 1 o mas etiquetas

    16 Como usuario quisiera poder agregar listas aun sin conexin a Internet, para no olvidarme cuando este en cualquier sitio sin conexin.

    Otorgar funcionalidad aun sin conexin Permitir el almacenamiento local de listas que luego puedan ser editadas o subidas.

    53 Como usuario quisiera que me sugiera los productos cargados anteriormente para tipear lo menos posible.

    Debe autocompletar los items de la listas con artculos cargados en el mismo tipo de lista con anterioridad.

    Debe guardar las cargas del ltimo mes

    Debe existir un backup local de los ltimos productos cargados en el mes.

    Un motor de busqueda que analice letra por letra del producto cargado para luego sugerir al tipear

  • Trabajo Prctico Investigacin de Sistemas 2012

    24 Como usuario requiero compartir la lista con otro usuario para no tipear una lista ya existente.

    Debe tener la posibilidad de enviar un link o id a otro usuario del sistema para que pueda acceder a mi lista.

    Las listas no podrn ser modificadas

    Se necesitan 3 Tablas para este storie

    Usuarios Listas Relacion entre usuarios y listas

    El dueo de la lista es uno solo

    34 Como usuario me gustara poder agregar las cantidades del producto en mi lista para que me recuerde las cantidades que necesito comprar.

    En cada producto seleccionado, se podr ingresar la cantidad y unidad del mismo. Permite nmeros con coma -hasta 2-.

    Agregar como atributo de cada item (producto) la cantidad con 2 decimales y la unidad de medida que tendr una tabla referencial de unidades: Kg., Gramos y unidad.

    30 Como usuario me gustara especificar dnde quiero comprar los productos de mi lista para no olvidarme donde estn en oferta.

    Agregar como atributo de cada item (producto) la descripcin del lugar donde est la oferta.

    Agregar como atributo de cada producto el lugar, que tendr una tabla referencial de lugares: provincia, partido, localidad y/o calles

    33 Como usuario me gustara que una alarma sonora me recuerde las ofertas para conseguir los productos al mejor precio.

    Configurar alarmas que recuerden las ofertas segn las promociones con las tarjetas que posee el usuario.

    Agendar fecha de cada oferta ingresada por el usuario, clasificada por tarjeta/banco con promociones.

    ARCHIVOS DEL PROYECTO

    Archivos jsp abmlista, inicio, login, pruebas: representan grficamente la web donde se gestiona visualmente las listas y los tems. Tambin se realizan controles de caracteres alfanumricos, cdigos sql.

    1 war Tecnologa bootstrap: jquery, imgenes y estilos css

    12 archivos Java Beans / servlets - AddItemServlet: servlet que dado un usuario y una lista, agrega un item - CreateListServlet: servlet que dado un usuario, agrega una lista a la session del usuario - GetAllItemsServlet: servlet que dado un usuario, obtiene todas sus listas y hace merge en una sola lista de todos los items de todas las listas - GetItemsServlet: servlet que dado un usuario y una lista, muestra todos los items contenidos - GetListsServlet: servlet que dado un usuario, muestra todas las listas de ese usuario

  • Trabajo Prctico Investigacin de Sistemas 2012

    - HashCookieTable: gestiona las cookies del usuario, que son variables que se almacenan en el dispositivo que accede - Lista: bean que representa la clase de los objetos instanciados de lista - LogInServlet: servlet que obtiene mediante el servicio de usuario de appengine, el nombre del usuario logueado y almacena su nmero en cookie - LogOutServlet: servlet que invalida la session http y hace expirar la cookie almacenada - RemoveItemServlet: servlet que dado un usuario y una lista, elimina un item - RemoveListServlet: servlet que dado un usuario, elimina una lista a la session del usuario - Usuario: bean que representa la clase de los objetos instanciados de lista

    4 archivos Java DAO - Dao: java que basndose en JDOHelper y el patrn de diseo singleton Dao, ejecuta las consultas a la base de datos, de los usuarios, listas y relaciones - Persistencia: es la interfase que tiene declarados todos los mtodos implementados en el Dao - RelacionListaUsuario: clase que relaciona usuarios con listas, para persistirla - TestDAOServlet: archivo de testing en fase de desarrollo

    COMO FUNCIONA LA APLICACION La lista de compras permite realizar un logueo (casilla de correo de Gmail) lo cual autentica al usuario. Habiendo ingresado, se muestra la opcin para agregar una nueva Lista a nuestro historial. Luego, accediendo a la lista ingresada, podemos comenzar a agregar los tems correspondientes.

    Como podemos observar, en el extremo superior derecho aparece nuestro usuario. En el lado izquierdo la lista creada.

  • Trabajo Prctico Investigacin de Sistemas 2012

    En la imagen anterior podemos observar cmo se listan los tems ingresados a la lista Verdulera. Para poder probar lo mencionado, te invitamos a probar la aplicacin ingresando al link que colocamos a continuacin.

    LINK DE APLICACIN: http://invsistlistas.appspot.com/