Home‎ > ‎

TP de Desarrollo - TACS 2012-C1

Objetivo


El presente Trabajo Práctico de desarrollo está pensado para que los alumnos realicen un modelo de dominio utilizando Tests, afianzando los conocimientos aprendidos y pudiendo implementar las diferentes tecnologías vistas en clase a fin de cumplir los requerimientos propuestos en el enunciado.



Reglas

  • Las entregas deberán realizarse en tiempo y forma para ser aceptadas. El horario de entrega del TP es al comienzo de la clase indicada en el calendario.

  • Cada entrega representa un TAG en un repositorio SVN. La fecha de entrega asumida es la fecha del TAG ó la fecha del e-mail de entrega, la que sea más tarde.

  • Si hay que realizar una reentrega, la misma tendrá una nueva fecha de entrega y deberá crearse un nuevo TAG.

  • Toda funcionalidad debe tener tests asociados. No es necesaria (sí valorada) la utilización de TDD como forma de encarar el desarrollo. Para que una entrega sea aceptada todos los tests deben estar en verde. Los tests deben probar partes relevantes de la aplicación.

  • Cada entrega debe utilizar Maven2 como proceso de build. Para correr las pruebas se ejecutará mvn test. Solo se correrá el comando en cuestión, en caso de necesitarse más pasos incluirlos en la customización de Maven o no usarlos. Si la aplicación no corre los tests correctamente con el comando en cuestión se considerará no entregada y no se corregirá.

    • Los tests deberán estar correctamente configurados en el build server provisto.

  • La documentación entregada debe sumar valor. No aporta (incluso resta) entregar un diagrama con 15 clases generado con una herramienta automática. Si hay diagramas, deben resaltar una parte importante del sistema.


  • La calificación del TP está asociada a diversos factores: calidad del diseño, capacidad de selección correcta de frameworks para los desafíos planteados, calidad de la implementación, empaquetado de la entrega, documentación útil, puntualidad en las entregas

  • Los equipos deberán ir cumpliendo los hitos establecidos en este documento.

  • Los equipos pueden fallar a lo sumo un solo hito. Las condiciones de falla son las siguientes:

  • No presentar los entregables solicitados

  • No presentarse a la entrega en forma presencial o en forma electrónica (cuando aplica cada una).

  • No cumplimentar los objetivos establecidos para la entrega.

  • Cada uno de los requerimientos debe estar cubierto por un test que valide su funcionalidad.

  • Los tests deben tener la menor granularidad posible.

  • Utilizar la mayor cantidad posible de objetos mocks para abstraerse de la base de datos. Tener en cuenta cubrir los requerimientos que impliquen el uso de la base de datos.

  • Los tests que utilicen base de datos deben utilizar una base de datos en memoria. Por ejemplo Derby o HSQL.

  • Se deben utilizar correctamente las herramientas de Log.

  • Los protocolos de integración entre sistemas van a ser resueltos en forma ágil.

  • Los sistemas con los que se interactúan van a ser provistos por la cátedra.

  • Todas las consultas respecto al enunciado (conceptos, fechas, requerimientos, etc) deben ser dirigidos a la lista de alumnos, de esta manera se genera conocimiento útil para todos los alumnos.

  • Las entregas y consultas referidas a la corrección deben realizarlas por mail a tp@tacs-utn.com.ar.  Esta casilla de mail, funcionará como concentrador de todas las operaciones referidas al TP. La idea es minimizar los tiempos de respuestas y facilitar el desarrollo.


Enunciado 

Ud. se encuentra en la elaboración de la próxima versión del sistema SIGA, orientado a compartir el avance en las materias con mis amigos en las redes sociales.

En esta primera etapa deberá elaborarse una aplicación de Facebook que permita compartir “mi avance” en la carrera.



Hitos

Durante el desarrollo del TP los equipos deberán ir cumpliendo hitos en el desarrollo.

Fecha

Descripción

Condiciones Esperadas

(Ver planificación)

Startup, proyecto, maven, codigo, tests

La primera versión de la aplicación debe contener el esqueleto mínimo necesario para permitir una integración con Maven y el Build server.

(Ver planificación)

Dominio, Web y “persistencia” en colecciones locales

Para esta entrega se deberá poder realizar las funciones solicitadas en un Tomcat local. Para verificar que se guardan los datos cargados se deberán utilizar colecciones.

(Ver planificación)

Interacción con Facebook

En esta entrega, se deberá agregar autenticación con Facebook (siendo una App Facebook) utilizando oAuth

(Ver planificación)

Entrega final: Integración con GAE

En esta entrega se espera que la aplicación corra en Google App Engine, persistiendo mediante alguna de las APIs provistas por el mismo. Deberá poder correrse el flujo completo de acciones.




Requerimientos



El sistema debe cumplir con los siguientes requerimientos:

  • Como ayudante TACS quiero poder corregir el TP mediante mvn test y correr el TP mediante mvn run.

  • Como ayudante TACS quiero poder descargar el TP mediante SVN.

  • Como alumno, quiero ver la lista de materias que puedo rendir.

  • Como alumno, quiero inscribirme a un final.

  • Como alumno, quiero registrar una nota con la que rendí un final

  • Como alumno, quiero ver los exámenes que rendí.

  • Como usuario de la Aplicación de FB, quiero poder instalar la aplicación.

  • Como alumno, quiero que cuando me inscribo a un final se publique en mi muro.

  • Como alumno, quiero que cuando rindo un final se publique en mi muro.

  • Como usuario de la Aplicación de FB, quiero que cuando hago clic en la publicación se instale la aplicación de FB

  • TODO: Agregar 2 reqs

Estos requerimientos deben estar cubiertos por la lógica de negocio de la aplicación y deben estar validados por tests unitarios. 



El sistema debe cumplir con los siguientes requerimientos "técnicos".

  • La aplicación de Facebook debe correr en modo iFrame

  • La aplicación debe “hostearse” en GAE

  • El esquema de persistencia no debe ser SQL

  • El código JavaScript utilizado debe estar escrito "a mano", es decir, sin generadores de código JS (estáticos o dinámicos).







Comments