Top Banner
Ingeniería de Software Libre para Ambientes Móviles M.C. Juan Carlos Olivares Rojas Pátzcuaro, Michoacán, 29 de abril de 2014
64

Ingenieria de Sofware Libre para Ambientes Moviles

Jul 16, 2015

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ingenieria de Sofware Libre para Ambientes Moviles

Ingeniería de Software

Libre para Ambientes

Móviles

M.C. Juan Carlos Olivares Rojas

Pátzcuaro, Michoacán, 29 de abril de 2014

Page 2: Ingenieria de Sofware Libre para Ambientes Moviles

Agenda

Introducción

Aplicación de Ingeniería de Software

Cierre

Page 3: Ingenieria de Sofware Libre para Ambientes Moviles

Tecnología Móvil

El mundo jamás se quedará quieto…

Tecnología Disruptiva

Page 4: Ingenieria de Sofware Libre para Ambientes Moviles

Computación…

Vivimos en la era Post-PC…

Page 5: Ingenieria de Sofware Libre para Ambientes Moviles

¿Qué es esto?

Page 6: Ingenieria de Sofware Libre para Ambientes Moviles

Drones

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

Page 7: Ingenieria de Sofware Libre para Ambientes Moviles

Ambientes Móviles

Page 8: Ingenieria de Sofware Libre para Ambientes Moviles

¿Ambiente Móvil?

Page 9: Ingenieria de Sofware Libre para Ambientes Moviles

Ambientes Móviles

Los dispositivos

móviles son una

extensión más de

nosotros

Page 10: Ingenieria de Sofware Libre para Ambientes Moviles

Ambientes Móviles

Dispositivos “Smart” e Interconectados Siempre

Page 11: Ingenieria de Sofware Libre para Ambientes Moviles

Cómputo Ubicuo

Page 12: Ingenieria de Sofware Libre para Ambientes Moviles

Cómputo en todo

Page 13: Ingenieria de Sofware Libre para Ambientes Moviles

Cómputo “Vestible”

Page 14: Ingenieria de Sofware Libre para Ambientes Moviles

Ambientes Dinámicos

Page 15: Ingenieria de Sofware Libre para Ambientes Moviles

Software is Eating the World

Page 16: Ingenieria de Sofware Libre para Ambientes Moviles

Tendencias Tecnológicas

“En los próximos 10 años habrá muchos mas

cambios

que en los últimos 100 años”

Bill Gates

Page 17: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 18: Ingenieria de Sofware Libre para Ambientes Moviles

Crecimiento de 2010 a 2020

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

Page 19: Ingenieria de Sofware Libre para Ambientes Moviles

Tendencias 2014 Gartner

Web-Scale IT

Smart Machines

3D Printing

The Era of Personal Cloud

Software-Defined Anything

Page 20: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 21: Ingenieria de Sofware Libre para Ambientes Moviles

Tendencias Tecnológicas

Page 22: Ingenieria de Sofware Libre para Ambientes Moviles

Evolución de las Interfaces de Usuario

Page 23: Ingenieria de Sofware Libre para Ambientes Moviles

Innovación…

1999 Blackberry Pager

2000 Primer Smartphone

En 2010 tenía el 43% del mercado…

El año pasado (2013) solo el 4%

Page 24: Ingenieria de Sofware Libre para Ambientes Moviles

Adaptación

Page 25: Ingenieria de Sofware Libre para Ambientes Moviles

Agenda

Introducción

Aplicación de Ingeniería de

Software

Cierre

Page 26: Ingenieria de Sofware Libre para Ambientes Moviles

Ing. de Software

• Herramientas

Métodos

• Procesos

Enfoque de Calidad

Page 27: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 28: Ingenieria de Sofware Libre para Ambientes Moviles

¿Cómo es nuestro Software?

Page 29: Ingenieria de Sofware Libre para Ambientes Moviles

Ing. de Software

Page 30: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 31: Ingenieria de Sofware Libre para Ambientes Moviles

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.

Page 32: Ingenieria de Sofware Libre para Ambientes Moviles

¿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

Page 33: Ingenieria de Sofware Libre para Ambientes Moviles

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.

Page 34: Ingenieria de Sofware Libre para Ambientes Moviles

Problemática

“Casas de Perros”

Proyectos Escolares

SIN ARQUITECTURA

Poco $

Casas

Proyecto de PyMES

ARQUITECTURAS SIMPLES

Rentable $

Edificios

Grandes Corporativos

ARQUITECTURAS COMPLEJAS

Mucho $$$$

Page 35: Ingenieria de Sofware Libre para Ambientes Moviles

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.

Page 36: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 37: Ingenieria de Sofware Libre para Ambientes Moviles

Malas Prácticas

Ventanas Rotas

“Código mutante”

“Diseño roto”

Page 38: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 39: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 40: Ingenieria de Sofware Libre para Ambientes Moviles

Consideraciones del Entorno

Page 41: Ingenieria de Sofware Libre para Ambientes Moviles

Herramientas

Nativas

Híbridas

Web

Page 42: Ingenieria de Sofware Libre para Ambientes Moviles

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.

Page 43: Ingenieria de Sofware Libre para Ambientes Moviles

Pruebas de Software

Especificación Formal

Código

Mundo Real

Validación

Verificación

8.Ley de Linus

Page 44: Ingenieria de Sofware Libre para Ambientes Moviles

Pruebas de Software

Utilizar la nube.

Usar datos de prueba reales.

Utilizar dispositivos reales

Page 45: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 46: Ingenieria de Sofware Libre para Ambientes Moviles

Mejores Prácticas

Entornos de Desarrollo Integrados

Control de Versiones

Pruebas Automatizadas

Documentación Funcional

Page 47: Ingenieria de Sofware Libre para Ambientes Moviles

Agilidad

Documentación rápida

Page 48: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 49: Ingenieria de Sofware Libre para Ambientes Moviles

Arquitecturas y Patrones

Patrón

Arquitectónico

MVC (Modelo-

Vista-

Controlador)

2. Los buenos programadores saben que escribir. Los mejores, qué reescribir (y reutilizar).

Page 50: Ingenieria de Sofware Libre para Ambientes Moviles

Mejores Prácticas

Diseño de la Experiencia del Usuario (UX)

Utilización de Lenguajes de Modelado y

especificaciones formales

Código Limpio

Page 51: Ingenieria de Sofware Libre para Ambientes Moviles

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.

Page 52: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 53: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 54: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 55: Ingenieria de Sofware Libre para Ambientes Moviles

Agenda

Introducción

Aplicación de Ingeniería de Software

Cierre

Page 56: Ingenieria de Sofware Libre para Ambientes Moviles

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.

Page 57: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 58: Ingenieria de Sofware Libre para Ambientes Moviles

RE

TO

S

Page 59: Ingenieria de Sofware Libre para Ambientes Moviles

LBS

Sistemas Basados en Localización

¿Dónde estoy? ¿Qué está cerca de? ¿Cómo puedo ir a?

Page 60: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 61: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 62: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 63: Ingenieria de Sofware Libre para Ambientes Moviles

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

Page 64: Ingenieria de Sofware Libre para Ambientes Moviles

¿Preguntas?

[email protected]

MSN: [email protected]

/juancarlosolivaresrojas

@jcolivares

http://dsc.itmorelia.edu.mx/~jcolivares