Presentación con algunos consejos acerca de la gestión de un proyecto software, basado en un caso real. Destaca la importancia del equipo, de la planificación del proyecto, y de un correcto análisis de requisitos.
Proyecto integrador. Las TIC en la sociedad S4.pptx
Ingeniería del Software: Nuestro producto debe funcionar
1. Francisco Sánchez Cid
http://web.iti.upv.es/~fsanchez
cid@iti.es
@_Francisco_1978
Ingeniería del Software:
Nuestro producto, debe
funcionar
2. Contenido de la charla
Instituto ACME TPV Algunos
Tecnológico de
Informática consejos
Ingeniería del software práctica: “nuestro producto debe funcionar”
4. ITI “Quiénes somos”
• Centro Tecnológico especializado en Investigación, Desarrollo e
Innovación en Tecnologías de la Información y Comunicación
• Somos una asociación sin ánimo de lucro y pertenecemos a la Red
de Institutos Tecnológicos de la Comunidad Valenciana (junto al del
Juguete, el Cerámico, el de la Madera..)
• El ITI desarrolla una labor de I+D+I transfiriendo a las empresas la
posibilidad de incorporar a sus productos las tecnologías y
capacidades desarrolladas en proyectos de I+D+I
6. Tecnologías inteligentes de
digitalización
Sistema OCR/ ICR capaz de reconocer y
exportar información impresa y manuscrita
Características
Tecnología propia
Plantillas, gestión de lotes y
validación inteligente
Exportación de resultados en
varios formatos, compatible con
diferentes plataformas Proceso sencillo
Integrable con otros sistemas
de gestión documental y otras
herramientas de gestión
Papel Digitalización Validación Exportación
7. Control de Accesos y Presencia por Reconocimiento Facial
Sistema de IDENTIFICACIÓN y/o VERIFICACIÓN biométrica basada en
análisis de imágenes faciales.
A partir de una o varias imágenes de la cara de una persona se puede
averiguar o validar la identidad de esta.
¿Porqué biometría facial?
• Es la forma más natural de identificarnos: los humanos nos reconocemos
mirándonos a la cara sin ningún otro tipo de interacción (habla, tacto…).
• Por supuesto no nos reconocemos mirándonos al IRIS o las huellas de los
dedos
• Los accesos son auditables de forma rápida y segura por el personal responsable de los accesos y la seguridad.
Simplemente hay que mirar la foto de quien ha entrado y si ha habido un intento de suplantación de un usuario.
• Con las huellas dactilares es imposible saber si quien ha entrado es quien dice ser por la huella o si se trata de un
impostor
iticab.iti.es
8. Sistema avanzado de inspección industrial en 3D
Sistema de inspección que aplica técnicas de Visión Artificial para el control de
calidad o clasificación.
Realiza la adquisición de imágenes de un objeto a través de múltiples cámaras,
mientras la pieza está en caída libre.
9. • Inteligencia ambiental
Y además...
• Sensorización avanzada
• Sistemas embebidos y de
comunicaciones
• Cloud computing
• Análisis, Diseño y Desarrollo
Software
• ...
• ¡ah! y Calidad del Software
11. El lanzamiento
Lanzamiento Desarrollo Entrega
Todo comienza con entrevistas con el cliente:
• Visión del sistema: qué componentes hay, qué
interacciones
• Requisitos de alto nivel: la funcionalidad a
grandes rasgos
• Plan inicial: una estimación muy arriesgada
12. El lanzamiento
Lanzamiento Desarrollo Entrega
Decisiones que marcarán el futuro del proyecto:
• El equipo de desarrollo: perfil tecnológico, perfil personal, roles
• Análisis de requisitos: la base para poder cerrar una entrega
13. El lanzamiento
Lanzamiento Desarrollo Entrega
Decisiones que marcarán el futuro del proyecto:
• Tecnologías: Java 7, MySQL, JPA, ActiveMQ, ...
¿Cómo elegir y quién debe elegir?
¿Elegiríais la última versión?
• Entorno de trabajo: Netbeans, Eclipse, Windows, Linux, Trac, SVN...
¿Flexibilidad a cambio de complejidad?
14. El lanzamiento
Lanzamiento Desarrollo Entrega
A estas alturas, debe estar claro:
• Análisis de Requisitos: documento de referencia, en el que se define
toda la funcionalidad a implementar. Ni más ni menos.
Documento crítico
• Plan del proyecto: hoy en día es común trabajar de forma
iterativa, pero es necesario un plan que establezca horizontes de
entrega
El plan hay que revisarlo por iteraciones
16. Al comienzo, el proyecto está muy poco definido, pero el
equipo está a la espera de trabajo
¿Qué podemos asignarles?
Definir y asignar
17. Al comienzo, el proyecto está muy poco definido, pero el
equipo está a la espera de trabajo
¿Qué podemos asignarles?
• Crear la estructura de proyecto, con paquetes principales, y reglas
de empaquetado y despliegue
• Formación: servidores sobre los que se desplegará, sistemas de
Definir y asignar
gestión de BBDD, nuevas tecnologías a aplicar...
• Si tenemos que trabajar con hardware específico: primeras
pruebas de control
Entre tanto, seguimos con el diseño del sistema:
• Arquitectura: separación en componentes, primeros diagramas de
clase y de secuencia
• Modelo de datos: primeras entidades a persistir, con su
descripción completa y todos los atributos que creamos
necesarios
18. Diseño: Definir la Arquitectura
Arquitectura en capas (MVC):
Modelo, Vista, Controlador
Estados Modelo: BBDD relacional, con
autogeneración JPA
Comunicaciones Operadores Vista: Swing básica
Controlador: Java 7
Servicios
HW Persistencia
Disp. GUI MySQL DB XML
19. Arquitectura modular: Estados
Máquina de estados:
Estados
Comunicaciones Operadores
Servicios
HW Persistencia En lugar de...
GU
Disp. MySQL DB XML
I
20. Definir la Arquitectura
Java Persistence API (JPA):
>> Autogeneración
Estados >> Cambio rápido
Comunicaciones Operadores
Modelo ER
(Tablas)
Servicios
HW Persistencia Entidades
(Clases
GU Autogeneradas)
Disp. MySQL DB XML
I
Controladores
(Clases
Programadas)
21. Persistencia modelo de datos
Modelo ER
(Tablas)
Entidades
(Clases
Autogeneradas)
Controladores Automático
(Clases
Programadas)
22. El desarrollo
Lanzamiento Desarrollo Entrega
Ya podemos trabajar de verdad:
Cada miembro del equipo tiene
una responsabilidad
Persistencia -> Técnico 1
Flujo de caja -> Técnico 2
Ofertas -> Técnico 3
Hardware -> Técnico 4
Comunicaciones -> Técnico 5
23. El desarrollo
Lanzamiento Desarrollo Entrega
Ya podemos trabajar de verdad:
Cada miembro del equipo tiene
una responsabilidad
Persistencia -> Técnico 1
Flujo de caja -> Técnico 2
Ofertas -> Técnico 3
Hardware -> Técnico 4
Comunicaciones -> Técnico 5
¿Detectáis algún riesgo ahí arriba?
24. ¿Qué ocurre si alguien del equipo falla?
• Evaluar el retraso: tiempo de transferencia, búsqueda de un
nuevo miembro para el equipo
• Depende de quién falle, pero sólo hay una solución:
documentación y puesta en común
Riesgos del proyecto
25. ¿Qué ocurre si alguien del equipo falla?
• Evaluar el retraso: tiempo de transferencia, búsqueda de un
nuevo miembro para el equipo
• Depende de quién falle, pero sólo hay una solución:
documentación y puesta en común
Riesgos del proyecto
Además, ¿cuando os retrasabais, a quién llamabais?
26. El desarrollo
Lanzamiento Desarrollo Entrega
Proseguimos con el desarrollo...
Tenemos un montón de HW implementado, pero
llegan nuevos problemas
29. Distintas versiones para un mismo dispositivo
Interfaces: funcionalidad común definida y acotada
30. Distintas versiones para un mismo dispositivo
Patrones: patrón factoría. Instanciamos según
configuración y conseguimos independencia
31. El desarrollo
Lanzamiento Desarrollo Entrega
Ya estamos a mitad de camino...
¿Qué hace nuestra TPV?
• Identifica los productos y los añade al ticket de venta
• Aplica ofertas
• Transfiere la información de venta al servidor de tienda
• Recibe cambios en los datos del servidor de ventas
• Identifica a los clientes por fidelización
• Realiza recargas de telefonía móvil
• Permite pagos con tarjeta de crédito
• ...
32. Surge un nuevo problema
La cantidad de mensajes que van y vienen en la tienda es
ingente, y además:
• Los mensajes deben llegar siempre a su destino.
• Si el destino no está accesible, hay que esperar a que lo esté
• Hay mensajes para un único destino
Las comunicaciones
• Hay mensajes para muchos destinos a la vez
33. Surge un nuevo problema
La cantidad de mensajes que van y vienen en la tienda es
ingente, y además:
• Los mensajes deben llegar siempre a su destino.
• Si el destino no está accesible, hay que esperar a que lo esté
• Hay mensajes para un único destino
Las comunicaciones
• Hay mensajes para muchos destinos a la vez
De nuevo, os pregunto ¿qué podemos hacer
para gestionar bien estas comunicaciones?
34. Patrones de Integración Empresarial
Publish-Subscribe
Las comunicaciones
Guaranteed Delivery
Durable Subscriber
35. Modelo de colas
Patrones de integración basados en mensajería
>> Confirmación de entrega de mensajes
>> Persistencia de la mensajería
>> Durabilidad de los mensajes
>> Independencia de la localización física
36. El desarrollo
Lanzamiento Desarrollo Entrega
Y nos acercamos al final
• Hay cambios de última hora en los requisitos
• El equipo de test no para de reportar incidencias
• Comienzan las prisas en el desarrollo. Hay que echar horas
extras. Toca trabajar algún festivo y fin de semana
• El estrés del equipo se dispara
• El cliente pide informes de avance continuos
Si no actuamos, el proyecto se nos va de las manos
¿qué podemos hacer?
37. Volvemos al lanzamiento
Lanzamiento Desarrollo Entrega
Decisiones que marcarán el futuro del proyecto:
Hay que quitar presión.
• El equipo de desarrollo: perfil tecnológico, perfil personal, roles
Actividades fuera de la
oficina, flexibilidad
horaria, teletrabajo, ...
• Análisis de requisitos: la base para poder cerrar una entrega
38. Volvemos al lanzamiento
Lanzamiento Desarrollo Entrega
Decisiones que marcarán el futuro del proyecto:
• Hay que se inflexible con el perfil tecnológico, perfil personal, roles
El equipo de desarrollo:
cliente. Los nuevos
requisitos implican
tiempo, esfuerzo, y dinero
• Análisis de requisitos: la base para poder cerrar una entrega
39. Si queremos conseguir la implicación del equipo
El Jefe de Proyecto, debe ser el
primero y el último
41. La importancia del testeo
Lanzamiento Desarrollo Entrega
Al final del desarrollo es cuando se hacen más patentes las virtudes del testeo.
Por ejemplo, el testeo unitario:
• Al implementarlo, parece tedioso e innecesario: “sabemos lo que
estamos haciendo y qué debe devolver nuestra función”
• Pasan 10 meses
• Se han implementado 500 nuevas funciones
• Se va el desarrollador
• Hay que hacer una modificación en (por ejemplo) el cálculo del
margen para el reparto de las ofertas en un lote de productos, que
lleva funcionando bien casi 1 año
¿Alguien se atreve?
42. Y respecto a la entrega...
...esa es otra historia
44. Consejo 1: Sed ingenieros
• Todos empezamos desde
abajo, así que…
– Hazte un buen
programador
– Pero no lo olvides:
• Eres Ingeniero, aunque
tu rol sea programador
– Hazte un buen tecnólogo
• No es sólo
programar, es conocer
la tecnología
– Internacionalízate
45. Consejo 2: Sed diseñadores
• Maneja el MVC con soltura:
• Aprende el porqué de 3 cosas:
– Interfaces
– Herencia
– Patrones
46. Consejo 3: Sed técnicos
• Respecto a la programación:
– Ingenia, busca, no des nada por seguro: duda de todo.
– Sé maduro: aplica patrones
– Sé limpio: aplica formatos estándar
– Consulta (o participa) en proyectos de SW libre
• Respecto a la tecnología:
– No sólo programes, conoce la tecnología
– Aprende a crear tu propio criterio: busca y compara
– No es Java, sino Struts, Hibernate, Spring…
– No es .NET, sino SQLServer, Sharepoint, Visual Studio…
47. Consejo 4: Disfruta de lo que haces
• Respecto a ti:
• Sé humilde, pero
intrépido
• Saca todo el partido
de los que saben
• Procura estar al día
en tecnología
Y entre nosotros…
Aquello que hagas, hazlo
bien