Ingenieria de Sofware Libre para Ambientes Moviles

269 visualizaciones

Publicado el

Presentación en el Instituto Tecnológico Superior de Pátzcuaro y de Ciudad Guzmán

Publicado en: Software
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
269
En SlideShare
0
De insertados
0
Número de insertados
4
Acciones
Compartido
0
Descargas
1
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Ingenieria de Sofware Libre para Ambientes Moviles

  1. 1. Ingeniería de Software Libre para Ambientes Móviles M.C. Juan Carlos Olivares Rojas Pátzcuaro, Michoacán, 29 de abril de 2014
  2. 2. Agenda Introducción Aplicación de Ingeniería de Software Cierre
  3. 3. Tecnología Móvil El mundo jamás se quedará quieto… Tecnología Disruptiva
  4. 4. Computación… Vivimos en la era Post-PC…
  5. 5. ¿Qué es esto?
  6. 6. Drones https://www.youtube.com/watch?v=aGqvEE-oxkA
  7. 7. Ambientes Móviles
  8. 8. ¿Ambiente Móvil?
  9. 9. Ambientes Móviles Los dispositivos móviles son una extensión más de nosotros
  10. 10. Ambientes Móviles Dispositivos “Smart” e Interconectados Siempre
  11. 11. Cómputo Ubicuo
  12. 12. Cómputo en todo
  13. 13. Cómputo “Vestible”
  14. 14. Ambientes Dinámicos
  15. 15. Software is Eating the World
  16. 16. Tendencias Tecnológicas “En los próximos 10 años habrá muchos mas cambios que en los últimos 100 años” Bill Gates
  17. 17. Estadísticos… 5,200 millones de teléfonos celulares por 6,900 millones de personas. Más teléfonos móviles que cepillos de dientes. 1,000 millones de personas tienen Internet en casa 1,600 millones de personas tienen Internet en dispositivos móviles
  18. 18. Crecimiento de 2010 a 2020 Fuente: U.S. Bureau of Labor Statistics’ 2012-2013 Occupational Outlook Handbook
  19. 19. Tendencias 2014 Gartner Web-Scale IT Smart Machines 3D Printing The Era of Personal Cloud Software-Defined Anything
  20. 20. Tendencias 2014 Gartner Mobile Device Diversity and Management (BYOD) Mobile Apps and Applications The Internet of Everything Hybrid Cloud & IT as a Services Broker Cloud/Client Architecture
  21. 21. Tendencias Tecnológicas
  22. 22. Evolución de las Interfaces de Usuario
  23. 23. Innovación… 1999 Blackberry Pager 2000 Primer Smartphone En 2010 tenía el 43% del mercado… El año pasado (2013) solo el 4%
  24. 24. Adaptación
  25. 25. Agenda Introducción Aplicación de Ingeniería de Software Cierre
  26. 26. Ing. de Software • Herramientas Métodos • Procesos Enfoque de Calidad
  27. 27. Software La suma total de los programas de cómputo, procedimientos, reglas de documentación y datos asociados que forman parte de las operaciones de un sistema de cómputo [IEEE Computer Society Press, 1993].
  28. 28. ¿Cómo es nuestro Software?
  29. 29. Ing. de Software
  30. 30. Software hoy en día Mito: los programadores de ahora ya no programan como los de antes. Herramientas más fáciles y productivas El software es cada día más complejo
  31. 31. Negocio del Desarrollo de Software 80% Desarrollo de Software es para mantenimiento. 90% del Desarrollo de Software es hecho a la medida. Por lo tanto se necesita de un código simple, legible y bien diseñado para que en un futuro pueda ser extensible.
  32. 32. ¿Por qué programamos Objetos? Permite un mayor reuso El reuso evita programar de más Programando menos se cometen menos errores Teniendo menos errores se logra calidad
  33. 33. Los modelos no tienen la culpa… “Los culpables son los que los eligen sin saber para qué… pensando en cumplir con la certificación” Los procesos no están peleados con la innovación.
  34. 34. Problemática “Casas de Perros” Proyectos Escolares SIN ARQUITECTURA Poco $ Casas Proyecto de PyMES ARQUITECTURAS SIMPLES Rentable $ Edificios Grandes Corporativos ARQUITECTURAS COMPLEJAS Mucho $$$$
  35. 35. Ing. de Software para Ambientes Móviles Los bibliografía especializada apenas empieza a tratatar este tópico. Ya empieza a haber cursos específicos del tema.
  36. 36. Ing. de Software Libre Mucho del paradigma de Desarrollo de Software Libre se ha integrado a las “mejores prácticas” de la Ing. de Software Tradicional
  37. 37. Malas Prácticas Ventanas Rotas “Código mutante” “Diseño roto”
  38. 38. Malos Olores BAD SMELL REFACTORING PROPUESTO CODIGO DUPLICADO EXTRAER EL MÉTODO SUBIR VARIABLES SUSTITUIR EL ALGORITMO MÉTODOS LARGOS EXTRAER EL MÉTODO INTRODUCIR OBJETOS COMO PARÁMETROS REEMPLAZAR EL MÉTODO CON UN OBJETO MÉTODO CLASES GRANDES EXTRAER CLASES EXTRAER SUBCLASES CARACTERÍSTICA DE LA “ENVIDIA” MOVER MÉTODO CLASES “PEREZOSAS” COLAPSAR JERARQUÍAS
  39. 39. Metodologías Historias de Usuario Criterios de pruebas de aceptación Plan de Iteraciones Diseño simple Tarjetas CRC Spikes Prototipos Programación en paresPruebas de Unidad Entregas de Software Incrementales Velocidad del Proyecto Medible Planeación Diseño Pruebas Pruebas de Aceptación Codificación Refactoring Integración Contínua
  40. 40. Consideraciones del Entorno
  41. 41. Herramientas Nativas Híbridas Web
  42. 42. Diseño El diseño no es cómo se ve… es como funciona Algoritmos Estructura de Datos Programas 9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que el caso inverso.
  43. 43. Pruebas de Software Especificación Formal Código Mundo Real Validación Verificación 8.Ley de Linus
  44. 44. Pruebas de Software Utilizar la nube. Usar datos de prueba reales. Utilizar dispositivos reales
  45. 45. Especificación Formal OCL (Lenguaje de Restricción de Objetos) HashTable put(key,entry:Object) get(key):Object remove(key:Object) containsKey(key:Object):boolean <<invariant>> numElements >= 0 <<precondition>> !containsKey(key) <<precondition>> containsKey(key) <<precondition>> containsKey(key) <<postcondition>> get(key) == entry <<postcondition>> !containsKey(key) size():int numElements:int
  46. 46. Mejores Prácticas Entornos de Desarrollo Integrados Control de Versiones Pruebas Automatizadas Documentación Funcional
  47. 47. Agilidad Documentación rápida
  48. 48. Modelado 13. “La perfección (en diseño) se alcanza cuando ya no hay nada que agregar, sino cuando ya no hay nada que quitar”.
  49. 49. Arquitecturas y Patrones Patrón Arquitectónico MVC (Modelo- Vista- Controlador) 2. Los buenos programadores saben que escribir. Los mejores, qué reescribir (y reutilizar).
  50. 50. Mejores Prácticas Diseño de la Experiencia del Usuario (UX) Utilización de Lenguajes de Modelado y especificaciones formales Código Limpio
  51. 51. Código Limpio Tomar en consideración todos los warnigs, de preferencia tratarlos como errores. Codificar con propósito. Realizar funciones que se van a ocupar. No realizar código de más.
  52. 52. Código Claro ¿qué hay de malo en el siguiente código? for(int i=0; i<size(); i++) a = (b+c) / i; Eliminar evaluaciones innecesarias: int tmp = b+c; int s = size(); for(int i=0; i<s; i++) a = tmp / i; 52
  53. 53. Código Claro ¿Que hay de malo en el siguiente código? b = Math.abs(a) * c; d = e / (Math.abs(a) + b); Eliminar subexpresiones comunes: int tmp = Math.abs(a); b = tmp * c; d = e / (tmp + b); 53
  54. 54. Código Claro ¿Qué hay de malo en el siguiente código? for (int i=0; i <1000; i++) a = obj.b * i; Aprovechar las variables locales: int localb = obj.b; for (int i=0; i <1000; i++) a = localb * i; 54
  55. 55. Agenda Introducción Aplicación de Ingeniería de Software Cierre
  56. 56. Retos Sistemas Embebidos Sistemas de Tiempo Real Sistemas Distribuidos Sensibles al Contexto 17. Un sistema de seguridad es tan seguro como secreto. Cuídese de los secretos a medias.
  57. 57. Consciencia del dispositivo Sistemas Conscientes del Contexto ¿Donde? WHERE ¿Quién? WHO Realizar servicios solos Realizar servicios coordinados ¿Cuándo? WHEN ¿Qué? WHAT ¿Cómo? HOW
  58. 58. RETOS
  59. 59. LBS Sistemas Basados en Localización ¿Dónde estoy? ¿Qué está cerca de? ¿Cómo puedo ir a?
  60. 60. Tópicos de Interés Entornos de Desarrollos de Sw (PSP/TCP/CMMI/COBIT/ITIL) Desarrollo de Software Ágil (Metodologías de Desarrollo Adaptativas) Patrones de Análisis y Diseño
  61. 61. Tópicos de Interés Reingeniería y Reuso de Software Pruebas y Mantenimiento de Software Seguridad en el Desarrollo de Software Métricas y Estimación de Software
  62. 62. Conclusiones El mercado de TI requiere profesionistas competentes en el desarrollo de software para ambientes dinámicos. ¿Estamos preparados para enfrentar los retos tecnológicos? La Ingeniería de Software es vital!!!
  63. 63. Conclusiones Se ocupa adaptar el proceso de Desarrollo de Software a cualquier tipo de ambiente. Es importante innovar pero también es importante documentar dichas mejoras. Se ocupan de habilidades adicionales: lengua extranjera, liderazgo, relaciones humanas, …
  64. 64. ¿Preguntas? jcolivares@itmorelia.edu.mx MSN: juancarlosolivares@hotmail.com /juancarlosolivaresrojas @jcolivares http://dsc.itmorelia.edu.mx/~jcolivares

×