Post on 16-Jul-2015
transcript
Ingeniería de Software
Libre para Ambientes
Móviles
M.C. Juan Carlos Olivares Rojas
Pátzcuaro, Michoacán, 29 de abril de 2014
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
Innovación…
1999 Blackberry Pager
2000 Primer Smartphone
En 2010 tenía el 43% del mercado…
El año pasado (2013) solo el 4%
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].
Software hoy en díaMito: 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 no están peleados con la
innovación.
Problemática
“Casas de Perros”
Proyectos Escolares
SIN ARQUITECTURA
Poco $
Casas
Proyecto de PyMES
ARQUITECTURAS SIMPLES
Rentable $
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
Malos OloresBAD 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íasHistorias 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
Diseño
El diseño no es cómo se ve…
es como funciona
AlgoritmosEstructura de Datos
Programas9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que el caso inverso.
Especificación Formal
OCL (Lenguaje de Restricción de Objetos)
HashTable
put(key,entry:Object)get(key):Objectremove(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
Mejores Prácticas
Entornos de Desarrollo Integrados
Control de Versiones
Pruebas Automatizadas
Documentación Funcional
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 (Modelo-
Vista-
Controlador)
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
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.
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
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 profesionistascompetentes en el desarrollo de software paraambientes 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