1. Events
Red social para compartir
documentos y podcasts
Autor: Pablo Rivera Conde
Director: César Fernández Acebal
sábado 19 de diciembre de 2009
2. ¿Cuál es el problema?
Aislamiento de personas con conocimientos o
intereses comunes.
Información muy dispersa.
Falta de publicidad de congresos con poco
presupuesto.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
3. ¿Que es events?
Se trata de una
red social...
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
4. ¿Que es events?
...para compartir
documentos y
eventos...
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
5. ¿Que es events?
...y aumentar la
comunicación
entre personas.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
6. ¿Qué me aporta?
Buscar más fácilmente documentos y
congresos que me interesen.
Buscar compañeros de trabajo, y gente con
gustos afines.
Compartir más fácilmente mi trabajo para
ayudar a los demás.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
7. ¿Qué me aporta?
Encontrar
Buscar más fácilmente documentos y
congresos que me interesen.
Buscar compañeros de trabajo, y gente con
gustos afines.
Compartir más fácilmente mi trabajo para
ayudar a los demás.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
8. ¿Inferir los gustos de cada usuario?
Sobre gustos no hay nada escrito
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
9. ¿Inferir los gustos de cada usuario?
Hasta que aparecieron las matemáticas
Sobre gustos no hay nada escrito
Filtrado colaborativo
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
10. Filtrado colaborativo
“Aquello que
coincide en el pasado
tenderá a coincidir
en el futuro.”
Uso de la
Inteligencia
Colectiva.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
11. Metodología del filtrado
colaborativo
Primero busca entidades cuya información de
gustos sea similar al que va a recibir
recomendaciones.
Después se calcula que ítems que no haya visto
van a ser de su gusto, basándose en la
recopilación anteriormente filtrada.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
12. Y todo esto, ¿Cómo?
Ruby
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
13. Ruby
Lenguaje de programación
dinámico.
De alto nivel.
Interpretado.
Orientación a objetos pura.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
14. Ruby
Gracias a su semántica y a la orientación pura
a objetos, es muy expresivo.
5.times{“Me encanta Ruby”}
Su capacidad de dinamismo añade una gran
flexibilidad al lenguaje.
class Numeric
def mi_suma(y)
z = 5.mi_suma 6
self.+(y)
#Ahora z vale 11
end
end
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
15. Ruby On Rails
Framework web basado en Ruby
Creado en 2005 por David Heinemeier
Hansson.
“Un framework creado por desarrolladores y para
desarrolladores.”
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
16. Ruby on Rails
Sigue el patrón MVC.
Filosofía REST.
Convención sobre configuración.
DRY (Don’t Repeat Yourself)
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
17. don’t Repeat Yourself
Se basa en que no haya nada redundante en la
aplicación.
No es solo refactorización de código, sino
ahorro real.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
18. Convention over configuration
Intenta evitar todo fichero de configuración
posible.
Para ello establece una serie de convenciones
que, de seguirse, minimizan el código a
escribir.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
19. Ejemplo de Coc
Para manipular Películas:
Objeto de modelo: Movie
Tabla de la base de datos: movies
Controlador: MoviesController
Vistas: Dentro de la carpeta movies:
new, index, show, edit
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
20. Ejemplo de Coc
Siguiendo este
Para manipular Películas: convenio no hace
falta especificar
Objeto de modelo: Movie nada más. Rails
sabrá cual es el
comportamiento.
Tabla de la base de datos: movies
Controlador: MoviesController
Vistas: Dentro de la carpeta movies:
new, index, show, edit
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
21. Problemas de Ruby on rails
Tanta convención resulta difícil de recordar al
principio.
Desarrollo muy rápido si se tiene buena
memoria.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
22. Pero no fueron los únicos
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
23. ¿Como fue el desarrollo?
Metodología de desarrollo ágil: AUP.
Se trata de una versión ágil del proceso
unificado (RUP) basándose en los riesgos.
Desarrollo mediante iteraciones.
Desarrollo guiado por las pruebas.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
25. Tarea Esfuerzo jun 2009
1) Desarrollo del proyecto 56s 1d 5h
1.1) Análisis 3s 1d
1.1.1) Análisis de requisitos 1s
1.1.2) Especificación de requisitos 3d
1.1.3) Análisis de subsistemas 4d
1.1.4) Análisis de clases 1d
1.1.5) Análisis de interfaces de usuario 1d
1.1.6) Especificación del plan de… 2d
1.2) Diseño 8s 4d
1.2.1) Estudio general de diseño 3d
1.2.2) Diseño del incremento 1 3d
1.2.3) Diseño del incremento 2 3d
1.2.4) Diseño del incremento 3 3d
1.2.5) Diseño del incremento 4 3d
1.2.6) Diseño del incremento 5 3d
1.2.7) Diseño del incremento 6 3d
1.2.8) Diseño del incremento 7 3d
1.2.9) Diseño del incremento 8 3d
1.2.10) Diseño del incremento 9 3d
1.2.11) Diseño del incremento 10 1s
1.2.12) Diseño del incremento 11 3d
1.2.13) Diseño del incremento 12 3d
1.2.14) Diseño del incremento 13 3d
1.3) Implementación 13s
1.3.1) Implementación del incremento… 1s
1.3.2) Implementación del incremento… 1s
1.3.3) Implementación del incremento… 1s
1.3.4) Entrega 1
1.3.5) Implementación del incremento… 1s
1.3.6) Implementación del incremento… 1s
1.3.7) Implementación del incremento… 1s
1.3.8) Entrega 2
1.3.9) Implementación del incremento… 1s
1.3.10) Implementación del incremento… 1s
1.3.11) Implementación del incremento… 1s
1.3.12) Implementación del incremento… 1s
1.3.13) Entrega 3
1.3.14) Implementación del incremento… 1s
1.3.15) Implementación del incremento… 1s
1.3.16) Implementación del incremento… 1s
1.3.17) Entrega 4
1.4) Pruebas unitarias y de integración 13s
1.4.1) Pruebas del incremento 1 1s
1.4.2) Pruebas del incremento 2 1s
1.4.3) Pruebas del incremento 3 1s
1.4.4) Pruebas del incremento 4 1s
1.4.5) Pruebas del incremento 5 1s
Planificación
1.4.6) Pruebas del incremento 6 1s
1.4.7) Pruebas del incremento 7 1s
1.4.8) Pruebas del incremento 8 1s
1.4.9) Pruebas del incremento 9 1s
1.4.10) Pruebas del incremento 10 1s
1.4.11) Pruebas del incremento 11 1s
1.4.12) Pruebas del incremento 12 1s
1.4.13) Pruebas del incremento 13 1s
1.5) Pruebas de sistema 1s
1.6) Implantación 1s
1.7) Formación 2s
1.8) Documentación 14s 1d 5h
sábado 19 de diciembre de 2009
26. jul 2009 ago 2009 sep 2009
Planificación
sábado 19 de diciembre de 2009
27. Tarea Esfuerzo jun 2009 jul 2009 ago 2009 sep 2009
1) Desarrollo del proyecto 56s 1d 5h
1.1) Análisis 3s 1d
1.1.1) Análisis de requisitos 1s
1.1.2) Especificación de requisitos 3d
1.1.3) Análisis de subsistemas 4d
1.1.4) Análisis de clases 1d
1.1.5) Análisis de interfaces de usuario 1d
1.1.6) Especificación del plan de… 2d
1.2) Diseño 8s 4d
1.2.1) Estudio general de diseño 3d
1.2.2) Diseño del incremento 1 3d
1.2.3) Diseño del incremento 2 3d
1.2.4) Diseño del incremento 3 3d
1.2.5) Diseño del incremento 4 3d
1.2.6) Diseño del incremento 5 3d
1.2.7) Diseño del incremento 6 3d
1.2.8) Diseño del incremento 7 3d
1.2.9) Diseño del incremento 8 3d
1.2.10) Diseño del incremento 9 3d
1.2.11) Diseño del incremento 10 1s
1.2.12) Diseño del incremento 11 3d
1.2.13) Diseño del incremento 12 3d
1.2.14) Diseño del incremento 13 3d
1.3) Implementación 13s
1.3.1) Implementación del incremento… 1s
1.3.2) Implementación del incremento… 1s
1.3.3) Implementación del incremento… 1s
1.3.4) Entrega 1
1.3.5) Implementación del incremento… 1s
1.3.6) Implementación del incremento… 1s
1.3.7) Implementación del incremento… 1s
1.3.8) Entrega 2
1.3.9) Implementación del incremento… 1s
1.3.10) Implementación del incremento… 1s
1.3.11) Implementación del incremento… 1s
1.3.12) Implementación del incremento… 1s
1.3.13) Entrega 3
1.3.14) Implementación del incremento… 1s
1.3.15) Implementación del incremento… 1s
1.3.16) Implementación del incremento… 1s
1.3.17) Entrega 4
1.4) Pruebas unitarias y de integración 13s
1.4.1) Pruebas del incremento 1 1s
1.4.2) Pruebas del incremento 2 1s
1.4.3) Pruebas del incremento 3 1s
1.4.4) Pruebas del incremento 4 1s
1.4.5) Pruebas del incremento 5 1s
1.4.6) Pruebas del incremento 6 1s
1.4.7) Pruebas del incremento 7 1s
1.4.8) Pruebas del incremento 8 1s
1.4.9) Pruebas del incremento 9 1s
1.4.10) Pruebas del incremento 10 1s
1.4.11) Pruebas del incremento 11 1s
1.4.12) Pruebas del incremento 12 1s
1.4.13) Pruebas del incremento 13 1s
1.5) Pruebas de sistema 1s
1.6) Implantación 1s
1.7) Formación 2s
1.8) Documentación 14s 1d 5h
Planificación
sábado 19 de diciembre de 2009
28. Diseño
Importancia de la modularidad para la
visualización de documentos.
Conseguido mediante el uso de gemas.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
29. Diseño modular
Componentes
Youtube
Events PDF
Slideshare
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
30. Diseño modular
Componentes
Youtube
Podcast
Events PDF
SlideShare
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
31. Convenio de las gemas
YoutubeDocument
- document: Document
+ <<static>> parseable?(document):boolean
+ to_html():XMLMarkup:Builder
+ method_missing(sym, params)
method_missing hace que todas
los métodos no redefinidos en
esta decoración se deleguen en
el objeto document
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
32. ¿Y las recomendaciones?
Se trata de una parte primordial de la
aplicación.
Debe ser lo suficientemente flexible para poder
recomendar cualquier objeto a otro objeto
cualquiera.
Debe ser también lo suficientemente flexible
para poder cambiar los datos con los que hacer
las recomendaciones.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
33. Recomendaciones
Se necesita tal flexibilidad que se desarrolla
como plugin.
Este plugin permitirá que cualquier objeto de
modelo pueda recibir recomendaciones de
cualquier otro objeto a partir de las
valoraciones que indique.
Uso de azúcar sintáctico.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
34. Recomendaciones:
Azúcar sintáctico
class User
recommend :documents do |user|
#código para recopilar las
valoraciones
#como un hash {documento => valor}
end
end
añade a las instancias de User los métodos
recommend_documents y similar_users
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
35. Conclusiones
El desarrollo guiado por pruebas es una
opción realmente buena de desarrollar
software.
El uso de repositorios de código y servidores
de integración continua son de gran ayuda.
Los lenguajes de alto nivel permiten una gran
mejora de la velocidad de desarrollo.
Introducción > Teóricamente > Diseño > Conclusiones > Demostración
sábado 19 de diciembre de 2009
36. Ampliaciones
Añadir soporte a más visualizaciones.
Creación de grupos que puedan figurar como
autores.
Cambio de paradigma de recogida de la
información para las recomendaciones.
sábado 19 de diciembre de 2009
38. Autoría de las fotos
http://www.flickr.com/photos/49503019876@N01/1659321885
http://www.flickr.com/photos/24183489@N00/91682524
http://www.flickr.com/photos/49462908@N00/4012030328
http://www.flickr.com/photos/22406241@N00/127707517
sábado 19 de diciembre de 2009