Ingeniería de Software Libre para Ambientes Móviles

Page 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


Agenda

Introducci贸n Aplicaci贸n de Ingenier铆a de Software Cierre


Tecnología Móvil El mundo jamás se quedará quieto…

Tecnología Disruptiva


Computación… Vivimos en la era Post-PC…


¿Qué es esto?


Drones

https://www.youtube.com/watch?v=aGqvEE-oxkA


Ambientes M贸viles


驴Ambiente M贸vil?


Ambientes M贸viles

Los dispositivos m贸viles son una extensi贸n m谩s de nosotros


Ambientes Móviles

Dispositivos “Smart” e Interconectados Siempre


C贸mputo Ubicuo


C贸mputo en todo


Cómputo “Vestible”


Ambientes Dinรกmicos


Software is Eating the World


Tendencias Tecnológicas “En los próximos 10 años habrá muchos mas cambios que en los últimos 100 años” Bill Gates


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


Crecimiento de 2010 a 2020

Fuente: U.S. Bureau of Labor Statistics’ 2012-2013 Occupational Outlook Handbook


Tendencias 2014 Gartner Web-Scale IT Smart Machines 3D Printing The Era of Personal Cloud Software-Defined Anything


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


Tendencias Tecnol贸gicas


Evoluci贸n de las Interfaces de Usuario


Innovación… 1999 Blackberry Pager

2000 Primer Smartphone En 2010 tenía el 43% del mercado… El año pasado (2013) solo el 4%


Adaptaci贸n


Agenda Introducci贸n

Aplicaci贸n de Ingenier铆a de Software Cierre


Ing. de Software • Herramientas Métodos • Procesos Enfoque de Calidad


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].


驴C贸mo es nuestro Software?


Ing. de Software


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


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.


Âż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


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 innovación.

no

están

peleados

con

la


Problemática Casas Proyecto de PyMES ARQUITECTURAS SIMPLES Rentable $

“Casas de Perros” Proyectos Escolares SIN ARQUITECTURA Poco $

Edificios Grandes Corporativos ARQUITECTURAS COMPLEJAS Mucho $$$$


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.


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


Malas Prácticas Ventanas Rotas “Código mutante” “Diseño roto”


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


Metodologías Diseño simple Tarjetas CRC

Historias de Usuario Criterios de pruebas de aceptación Plan de Iteraciones Entregas de Software Incrementales Velocidad del Proyecto Medible

Spikes Prototipos

Planeación

Diseño

Refactoring Codificación

Pruebas

Pruebas de Unidad Pruebas de Aceptación

Programación en pares

Integración Contínua


Consideraciones del Entorno


Herramientas Nativas HĂ­bridas Web


Diseño El diseño no es cómo se ve… es como funciona Estructura de Datos

Algoritmos

Programas

9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que el caso inverso.


Pruebas de Software Mundo Real Validaci贸n Especificaci贸n Formal

Verificaci贸n

8.Ley de Linus

C贸digo


Pruebas de Software Utilizar la nube. Usar datos de prueba reales.

Utilizar dispositivos reales


Especificaci贸n Formal OCL (Lenguaje de Restricci贸n de Objetos) <<invariant>> numElements >= 0 HashTable <<precondition>> !containsKey(key) <<precondition>> containsKey(key) <<precondition>> containsKey(key)

numElements:int put(key,entry:Object) get(key):Object remove(key:Object) containsKey(key:Object):boolean size():int

<<postcondition>> get(key) == entry

<<postcondition>> !containsKey(key)


Mejores Pr谩cticas Entornos de Desarrollo Integrados Control de Versiones Pruebas Automatizadas Documentaci贸n Funcional


Agilidad

Documentaci贸n r谩pida


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”.


Arquitecturas y Patrones Patr贸n Arquitect贸nico MVC (ModeloVistaControlador) 2. Los buenos programadores saben que escribir. Los mejores, qu茅 reescribir (y reutilizar).


Mejores Pr谩cticas Dise帽o de la Experiencia del Usuario (UX) Utilizaci贸n de Lenguajes de Modelado y especificaciones formales C贸digo Limpio


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.


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


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


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


Agenda Introducci贸n Aplicaci贸n de Ingenier铆a de Software

Cierre


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.


Sistemas Conscientes del Contexto ¿Qué? WHAT

¿Donde? WHERE

Realizar servicios solos

Consciencia del dispositivo

Realizar servicios coordinados

¿Quién? WHO

¿Cuándo? WHEN

¿Cómo? HOW


RETOS


LBS Sistemas Basados en Localización ¿Dónde estoy?

¿Qué está cerca de?

¿Cómo puedo ir a?


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


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


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!!!


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, ‌


多Preguntas? jcolivares@itmorelia.edu.mx MSN: juancarlosolivares@hotmail.com /juancarlosolivaresrojas @jcolivares http://dsc.itmorelia.edu.mx/~jcolivares


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.