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

Slides:



Advertisements
Presentaciones similares
Ciclo de vida de desarrollo de software
Advertisements

SISTEMAS II CICLO DE VIDA.
INGENIERÍA DE SOFTWARE Introducción Arquitectura de Software
Lecciones sobre ingeniería de software desde el Software Libre
PROCESO Y MODELOS EN LA INGENIERIA DE SOFTWARE
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
DIRECTOR: ING. DIEGO MARCILLO CODIRECTOR: ING. JAIME ANDRANGO
UNIVERSIDAD TECNOLÓGICA ISRAEL CARRERA DE SISTEMAS INFORMÁTICOS
Unidad II Interfaces Hombre Máquina
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de Metodologías ágiles.
Proyecto de Ingeniería de Software 2008
Análisis y Diseño de Aplicaciones Ingeniería de Software
Versión 2004 Enrique Bañuelos Gómez
SOA, Web 2.0 y Cloud Computing Tres aspectos innovadores en IT
M.S.C. Ivette Hernández Dávila
Trabajo Práctico Taller de Desarrollo de Proyectos 2 Septiembre 2009.
Desarrollo de aplicaciones web en entorno servidor
Reingeniería del Software
SEMANA Introducción.
Ingeniería de Software Orientado a Objetos
Ingenieria de software
Software Reengineering Juan Carlos Olivares Rojas MSN:
Tecnología para la Comunidad
Tema 1: Introducción al análisis y diseño de aplicaciones software
CONCEPTOS BÁSICOS Diseño de Sistemas.
Ingeniería de Software Asistida por Computadora
Ingeniería de Software
Programación Extrema Leonardo Ramírez Z.. Contenido Motivación ¿Qué es Programación Extrema? La filosofía detrás de la Programación Extrema El proceso.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Tema 1: Introducción a la Ingeniería de Software
Ing. en Sistemas de Información
Introducción a las pruebas del software.
Diseño de Software y su Proceso
LOGO e-Learning Desktop Integración de RIA’s a objetos de Aprendizaje Alvaro Rodríguez, Darvin Orozco, Rocael Hernández Universidad Galileo {alvrodriguez,
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de metodologías ágiles Tatiana Alejandra.
¿Qué es la Ingeniería del Software?
INGENIERIA DE SOFTWARE
Docente: Lic. M. Alina Vargas García Horario: Lunes 20:05 – 21:25 Miércoles 20:05 – 21:25 Gestión: 2011.
Juan Carlos Olivares Rojas
INGENIERÍA DEL SOFTWARE GESTIÓN DE PROYECTOS
Presentación efron Consulting
Guía metodológica para la gestión de proyectos de software en PyMEs que no son fábricas de software por medio de metodologías ágiles Tatiana Alejandra.
SWAPyME Autora: Tatiana Alejandra Oquendo Garzón
III. DESARROLLO DE SISTEMAS.. Podemos definir el desarrollo de sistemas informáticos como el proceso mediante el cual el conocimiento humano y el uso.
Actividad 20. Métodos de prueba en entornos especializados M.C. Juan Carlos Olivares Rojas Syllabus June, 2009.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Actividades en el Proceso de desarrollo de Software
Ingeniería del Software I
1 Introducción a la Arquitectura de Sistema Maximiliano Déboli Director De Desarrollo MVP Azure Lagash
“ NO HAY NADA MÁS DIFÍCIL DE CONSEGUIR, MÁS ARRIESGADO DE MANTENER NI MÁS INSEGURO DE TENER ÉXITO, QUE ESTAR A LA CABEZA EN LA INTRODUCCIÓN DE UN.
Por: Jaime Enrique Melendez Monreal Código: INGENIERÍA DE SOFTWARE.
Ciclo de Vida del Software
Notificándote ¿Qué hicimos?
Ingeniería en Informática F UNDAMENTOS DE C OMPUTACIÓN B ACHILLERATO EN I NGENIERÍA I NFORMÁTICA L IC. C ARLOS H. G UTIÉRREZ L EÓN.
Calidad de Software. AGENDA: Introducción: Mas allá de la codificación El ciclo de vida: Desde la concepción hasta la descontinuación Calidad: Lugar de.
MÓDULO INTRODUCCIÓN AL CICLO DE VIDA DEL SOFTWARE
INGENIERIA DE SOFTWARE
 es el conjunto de conocimientos y técnicas científicas aplicadas al desarrollo, implementación, mantenimiento y perfeccionamiento de estructuras (tanto.
Proceso de desarrollo de Software
¿Qué es la Ingeniería De Software? Ingeniería de Software.
Capas de ingeniería del Software. Rosendo Antonio Manuel Ingeniería en Sistemas Computacionales.
Título de la Presentación Estado del arte sobre el testeo de software en las Pymes de Aragón 12 de Noviembre de 2015.
Modelo de procesos de software
CICLO DE VIDA DE UN SOFTWARE. Es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados, que forman parte de.
Fundamentos de Ingeniería de Software
Diseño de interacción. El diseño de interacción es la disciplina encargada de definir cómo se utilizan los productos y servicios interactivos. Su objetivo.
1 CICLO DE VIDA. 2 CICLO DE VIDA DE Los Sistemas de Información “ Es un proceso por el cual los analistas de sistemas, los ingenieros computacionales,
Transcripción de la presentación:

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

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

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

Malos Olores BAD SMELLREFACTORING PROPUESTO CODIGO DUPLICADOEXTRAER EL MÉTODO SUBIR VARIABLES SUSTITUIR EL ALGORITMO MÉTODOS LARGOSEXTRAER EL MÉTODO INTRODUCIR OBJETOS COMO PARÁMETROS REEMPLAZAR EL MÉTODO CON UN OBJETO MÉTODO CLASES GRANDESEXTRAER CLASES EXTRAER SUBCLASES CARACTERÍSTICA DE LA “ENVIDIA”MOVER MÉTODO CLASES “PEREZOSAS”COLAPSAR JERARQUÍAS

Metodologías Historias de Usuario Criterios de pruebas de aceptación Plan de Iteraciones Diseño simple Tarjetas CRC Spikes Prototipos Programación en pares Pruebas de Unidad Entregas de Software Incrementales Velocidad del Proyecto Medible PlaneaciónDiseño Pruebas Pruebas de Aceptación Codificación Refactoring 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 Algoritmos Estructura de Datos Programas 9. Las estructuras de datos inteligentes y el código burdo funcionan mucho mejor que el caso inverso.

Pruebas de Software Especificación Formal Código Mundo Real Validación Verificación 8.Ley de Linus

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

Especificación Formal OCL (Lenguaje de Restricción de Objetos)

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

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.

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

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? MSN: