Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ingeniería del Software: Nuestro producto debe funcionar

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.

  • Login to see the comments

  • Be the first to like this

Ingeniería del Software: Nuestro producto debe funcionar

  1. 1. Francisco Sánchez Cid http://web.iti.upv.es/~fsanchez cid@iti.es @_Francisco_1978Ingeniería del Software:Nuestro producto, debefuncionar
  2. 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”
  3. 3. Instituto Tecnológico deInformática Quiénes somos, qué hacemos
  4. 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
  5. 5. Capacidades en Optimización y BI Inteligencia de negocio Big Data Data Mining
  6. 6. Tecnologías inteligentes de digitalizaciónSistema OCR/ ICR capaz de reconocer yexportar 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. 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. 8. Sistema avanzado de inspección industrial en 3DSistema de inspección que aplica técnicas de Visión Artificial para el control decalidad 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. 9. • Inteligencia ambientalY además... • Sensorización avanzada • Sistemas embebidos y de comunicaciones • Cloud computing • Análisis, Diseño y Desarrollo Software • ... • ¡ah! y Calidad del Software
  10. 10. ACME TPV Un año de desarrollo
  11. 11. El lanzamientoLanzamiento Desarrollo EntregaTodo 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. 12. El lanzamientoLanzamiento Desarrollo EntregaDecisiones 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. 13. El lanzamientoLanzamiento Desarrollo EntregaDecisiones 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. 14. El lanzamientoLanzamiento Desarrollo EntregaA 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
  15. 15. El desarrolloLanzamiento Desarrollo Entrega ¡Comenzamos a trabajar! ¿y por donde empiezo?
  16. 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. 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 deDefinir 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. 18. Diseño: Definir la Arquitectura Arquitectura en capas (MVC): Modelo, Vista, Controlador Estados Modelo: BBDD relacional, con autogeneración JPAComunicaciones Operadores Vista: Swing básica Controlador: Java 7 Servicios HW PersistenciaDisp. GUI MySQL DB XML
  19. 19. Arquitectura modular: Estados Máquina de estados: EstadosComunicaciones Operadores Servicios HW Persistencia En lugar de... GUDisp. MySQL DB XML I
  20. 20. Definir la Arquitectura Java Persistence API (JPA): >> Autogeneración Estados >> Cambio rápidoComunicaciones Operadores Modelo ER (Tablas) Servicios HW Persistencia Entidades (Clases GU Autogeneradas)Disp. MySQL DB XML I Controladores (Clases Programadas)
  21. 21. Persistencia modelo de datos Modelo ER (Tablas) Entidades (ClasesAutogeneradas)Controladores Automático (ClasesProgramadas)
  22. 22. El desarrolloLanzamiento Desarrollo EntregaYa 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. 23. El desarrolloLanzamiento Desarrollo EntregaYa 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. 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únRiesgos del proyecto
  25. 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únRiesgos del proyecto Además, ¿cuando os retrasabais, a quién llamabais?
  26. 26. El desarrolloLanzamiento Desarrollo EntregaProseguimos con el desarrollo...Tenemos un montón de HW implementado, perollegan nuevos problemas
  27. 27. Distintas versiones para un mismo dispositivoImpresora ¿Se os ocurre alguna solución?Escáner
  28. 28. Distintas versiones para un mismo dispositivoHerencia: funcionalidad común heredada
  29. 29. Distintas versiones para un mismo dispositivoInterfaces: funcionalidad común definida y acotada
  30. 30. Distintas versiones para un mismo dispositivoPatrones: patrón factoría. Instanciamos segúnconfiguración y conseguimos independencia
  31. 31. El desarrolloLanzamiento Desarrollo EntregaYa 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. 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 destinoLas comunicaciones • Hay mensajes para muchos destinos a la vez
  33. 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 destinoLas comunicaciones • Hay mensajes para muchos destinos a la vez De nuevo, os pregunto ¿qué podemos hacer para gestionar bien estas comunicaciones?
  34. 34. Patrones de Integración Empresarial Publish-SubscribeLas comunicaciones Guaranteed Delivery Durable Subscriber
  35. 35. Modelo de colasPatrones 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. 36. El desarrolloLanzamiento Desarrollo EntregaY 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. 37. Volvemos al lanzamientoLanzamiento Desarrollo EntregaDecisiones 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. 38. Volvemos al lanzamientoLanzamiento Desarrollo EntregaDecisiones 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. 39. Si queremos conseguir la implicación del equipoEl Jefe de Proyecto, debe ser elprimero y el último
  40. 40. La importancia del testeoLanzamiento Desarrollo Entrega
  41. 41. La importancia del testeoLanzamiento 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. 42. Y respecto a la entrega......esa es otra historia
  43. 43. ALGUNOS CONSEJOS Espero que os sirvan...
  44. 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. 45. Consejo 2: Sed diseñadores• Maneja el MVC con soltura:• Aprende el porqué de 3 cosas: – Interfaces – Herencia – Patrones
  46. 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. 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
  48. 48. Y eso es todo...¿preguntas?

×