3. Evolución de la Computación
• Los paradigmas en la computación han
evolucionado a través del tiempo:
• 50’s-70’s: “Una computadora múltiples
usuarios”
• 80’s-90’s: “Una computadora un usuario”
• 2000’s: “Un usuario múltiples computadoras”
4. ¿Qué es el cómputo móvil?
• Parte de la computación que está
relacionada con la “movilidad” de los datos,
las aplicaciones y los dispositivos.
• Se debe tener movilidad y conectividad
desde cualquier punto. Es decir el cómputo
debe de ser omniprescente o ubiquo.
• En inglés recibe el nombre de mobicomp o
ubicomp
11. 11
Introducción
Grado de penetración de los dispositivos móviles en nuestra sociedad
Llaves
0%
Cartera
Celulares
Tarjetas
Llaves del trabajo
Periódico
Espejo
MP3/Walkman
Videojuego
Cámara
Credenciales
80% 90% 100%50% 60% 70%10% 20% 30% 40%
Siempre
Frecuentemente
12. Estadísticas
• 2,000 millones de celulares (400 millones de
celulares con capacidad de Internet) vs. 500
millones de computadoras conectadas a
Internet (54% laptops y 46% escritorio)
• “Para el año 2009, más de la mitad de los
microprocesadores fabricados en el mundo
estarán destinados a dispositivos móviles.”
16. Certificaciones
• Oracle 28,600
• Sw. Quality Eng. 29,000
• Solaris 29,100
• MS System Eng. 29,200
• SEI 29,500
• IBM DB2 29,500
• SAP 30,200
• Seguridad 33,200
• IBM Websphere 33,900
• PMI 40,300
17. Ingeniería del Software
• El desarrollo de software es un proceso
artesanal dado que a la programación de
computadoras se le denomina arte.
• El objetivo fundamental de la ISw es lograr la
calidad del software.
• La ISw es un conjunto de “mejores prácticas”
que si no se llevan a la práctica no sirven de
nada.
18. Construcción de una casa para “wendo”
Puede hacerlo una sola persona
Requiere:
Modelado mínimo
Proceso simple
Herramientas simples
19. Construcción de una casa
Construida eficientemente y en un tiempo
razonable por un equipo
Requiere:
Modelado
Proceso bien definido
Herramientas más sofisticadas
20. Construcción de un rascacielos
I. Introducción: Modelado de SW
No cualquier persona o grupo de persona lo realiza.
Imposible sin técnicas de Ingeniería
21. Tipos de Software
• Pressman clasifica el software de la
siguiente manera:
– Software empotrado
– Software para PCs
– Software de Inteligencia Artificial
– Software de Gestión
– Software de Tiempo Real
– Software Científico
– Software de Sistemas
24. 24
Problemática
La gran mayoría
de las
aplicaciones
móviles no están
diseñados
tomando en
cuenta las
características y
limitaciones de los
dispositivos
móviles
800
600
25. Problemática
• Se tiene la creencia de que se trata de
desarrollos tradicionales pero en “chiquito”.
• Las herramientas y entornos de
programación intentan ser semejantes a los
utilizados en aplicaciones tradicionales.
• Se tiene una gran heterogeneidad de
dispositivos y sistemas operativos
26. Problemática
• 96% de los internautas poseen celular:
– Nokia 26%
– SonyEricsson 23%
– Motorola 21%
– LG 6%
– Ericsson 5%
– Samsung 4%
– Siemens, BenQ, Blackberry 1% c/u
– Otros 8%
26Fuente AMIPCI-AMECE
28. Problemática
• Existen pocos
estudios formales y
metodologías para el
desarrollo de
aplicaciones móviles.
• Los libros
tradicionales de ISw
no tratan este tópico.
28
29. Tipos de aplicaciones
• Stand-alone (autónomas)
• Online (clientes ligeros, desarrollos
Web móviles)
• Smart client (aquellos que son
sensibles al contexto)
30. Herramientas
• J2ME (Java 2 Micro Edition)
• .NET Compact Framework
• Aplicaciones Nativas (C, C++): eMbedded
Visual Tools: está conformada por
eMbedded Visual Basic y eMbedded Visual
C++. SDK de Symbian, etc.
31. .NET CF
ProgramaciónProgramación
Smart DeviceSmart Device
ProgramaciónProgramación
Smart DeviceSmart Device
Controles ASP.NETControles ASP.NET
MobileMobile
Controles ASP.NETControles ASP.NET
MobileMobile
Navegador WebNavegador Web
móvilmóvil
Navegador WebNavegador Web
móvilmóvil
.NET Compact.NET Compact
FrameworkFramework
.NET Compact.NET Compact
FrameworkFramework
Código LocalCódigo Local
Páginas WebPáginas Web
remotasremotas
Sistema OperativoSistema OperativoSistema OperativoSistema Operativo
36. Solución
• Estudiar las capacidades y limitaciones de
los dispositivos móviles para saber que se
puede hacer en el dispositivo y que cosas
son imposibles de implementar.
• Desarrollar una interfaz adecuada que
minimice las acciones por parte del usuario
y que se adapte al tamaño de las pantallas
de despliegue. Las interfaces deben ser
intuitivas.
37. Solución
• El acceso a los datos debe de ser en forma
estructurada utilizando XML, o bien si se
permite un manejador de BD empotrado.
• Utilizar herramientas de profiling para medir
el rendimiento.
• Hacer hincapié en el reuso.
37
38. Solución
• Utilizar servicios Web (SOA) para la
implementación de los procesos de negocio.
Esto permite consumirlo en diversas clases
de aplicaciones.
• Se debe construir tarde (entender todos los
requerimientos).
• Usar datos reales. Nada de datos de prueba,
se necesitaría invertir dos veces más tiempo.
38
39. Solución
• Realizar refactorización de código para mantener
las aplicaciones más entendibles o bien consumir
menos espacio en aplicaciones Web.
• Usar implementaciones reales. No utilizar
emuladores.
• Mezclar siempre programadores con probadores
de software. Probar con muchos usuarios de
distintos tipos.
40. Solución
• Evitar lo más posible el copy & paste (utilizar
métodos de refactorización).
• 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.
40
41. Solución
• Se deben tomar en cuenta factores de
usabilidad, accesibilidad y ergonomía de las
interfaces de usuario.
• Los mensajes de salida deben de ser
breves. Se deben considerar interfaces en
donde el usuario escriba menos.
• Reducir el número de interfaces. Entre
menos más fácil de usar y encontrar errores.
41
42. Solución
• Utilizar patrones de diseño en la solución. Se
recomienda utilizar el patrón MVC (Modelo-
Vista-Controlador). Existen muchos tipos de
patrones para problemas conocidos.
42
Implementación del
Patrón Singletón
Patrón MVC
43. Solución
• Activar las opciones de optimización de los
compiladores que de manera
predeterminada vienen desactivada por que
lo hacen más lento.
• Realizar código que sea portable para
utilizarlo en distintas plataformas.
• Las aplicaciones deben basarse en
estándares (en Web utilizar MobileOk)
43
44. Solución
• Utilizar conexiones a las BD el menor tiempo
posible (cerrar conexiones innecesarias)
• De ser posible, utilizar procedimientos
almacenados. Paginar los Recordsets.
• Las aplicaciones para dispositivos móviles
deben de estar optimizadas en dos aspectos
cruciales: tamaño y velocidad.
44
45. Optimización del tamaño
• Evitar el uso de objetos siempre que sea
posible.
• Cuando usamos objetos, debemos
reciclarlos siempre que se pueda.
• Limpiar objetos explícitamente cuando se
dejen de usar. Los recolectores de basura
no son del todo eficientes.
45
46. Optimización del tamaño
• Usar un ofuscador para reducir tamaño y
hacer ilegible nuestro código.
• Realizar empaquetamiento de las clases a
través de un archivo jar o mecanismos
similares.
• La optimización de velocidad es muy
importante. A continuación se muestran
ejemplos muy sencillos.
46
47. Optimización de velocidad
• Eliminar evaluaciones innecesarias:
for(int i=0; i<size(); i++)
a = (b+c) / i;
• Optimizado:
int tmp = b+c;
int s = size();
for(int i=0; i<s; i++)
a = tmp / i;
47
48. Optimización de velocidad
• Eliminar subexpresiones comunes:
b = Math.abs(a) * c;
d = e / (Math.abs(a) + b);
• Optimizado:
int tmp = Math.abs(a);
b = tmp * c;
d = e / (tmp + b);
48
49. Optimización de velocidad
• Aprovechar las variables locales:
for (int i=0; i <1000; i++)
a = obj.b * i;
• Optimizado:
int localb = obj.b;
for (int i=0; i <1000; i++)
a = localb * i;
49
50. Optimización de velocidad
• Expandir los ciclos:
for(int i=0; i <1000, i++)
a[i] = 25;
• Optimizado:
for(int i=0; i <100; i++) {
a[i++] = 25;
a[i++] = 25; //8 veces más
}
50
51. Optimización de velocidad
• Si se usan métodos gráficos solo actualizar las
partes de la pantalla que cambian.
• Evitar la creación de objetos intermedios. Por
ejemplo: cada vez que se concatena una cadena
se crea un objeto intermedio. En Java en lugar de
String se recomienda StringBuffer.
• Utilizar metodologías de software libre (ej. La
Catedral y el Bazar de Erick S. Raymond)
51
53. Conclusiones
53
• El cómputo móvil llegó para quedarse y es
toda una realidad (ya no es una tecnología
emergente).
• El cómputo móvil apenas se empieza a
desarrollar por lo que existen muchas áreas
de oportunidad ($).
• La mayoría de las aplicaciones son para el
área de entretenimiento.
54. Conclusiones
54
• El cómputo móvil no va sustituir otra clase
de cómputo pero si está modificando el
actual.
• Se deben tomar consideraciones muy
particulares para el desarrollo de software en
dispositivos móviles ya que no es cierto que
sean “aplicaciones en chiquito”.
Se debe dar una cordial bienvenida, introduciendo el tiempo.
El objetivo de este trabajo es utilizar las recomendaciones para el diseño accesible de páginas Web y aplicarlas para la correcta visualización de recursos Web en dispositivos móviles. Se realizó un pequeño estudio tomando en cuenta dichas consideraciones, obteniendo que es factible aplicar dichas recomendaciones o prácticas de buen diseño para su uso en dispositivos móviles. También se presenta una propuesta para solucionar el problema de la correcta visualización de páginas Web en dispositivos móviles.
La interfaz del alumno se creará con los siguientes módulos:
Acceso al sistema, permitirá al alumno ingresar al sistema, previa alta en el módulo administrador de cursos.
Visualizador de diapositivas, mostrará al alumno la información del curso en base a lo programado en el grafo instruccional.
Visualizador de ejercicios, tomará la consulta escrita por el alumno, la ejecutará en las tablas de ejercicios del servidor y mostrará los resultados obtenidos.
Visualizador de exámenes,realizará las evaluaciones al alumno, programadas en el grafo instruccional, y enviará los resultados al módulo pedagógico para que el planificador actualice el grafo instruccional.
Modo de operación
Desde un navegador, ya sea en Internet o Intranet.
El usuario entrará al módulo de acceso al sistema, el cuál revisará el nombre de la cuenta y su contraseña.
Dependiendo de la información registrada en la BD, el planificador determinará la acción a seguir, continuar con el despliegue de información a través del visualizador de diapositivas, realizar un ejemplo interactivo a través del visualizador de ejercicios, o la aplicación de una evaluación a través del visualizador de exámenes..
Actualmente gracias al avance de tecnologías como las redes inalámbricas (acaparan el 52% de las conexiones en los hogares en los Estados Unidos) y la miniaturización de componentes electrónicos, han traído como consecuencia que los dispositivos móviles se usen cada vez con mayor frecuencia por el público en general en diversas actividades en especial la Web.
De acuerdo con [4], para el 2010 se espera 1,300 millones de usuarios de PCs, por 2,500 millones de usuarios móviles.
Por otra parte, en Estados Unidos sólo se utiliza 15 minutos (en la gran mayoría menos, salvo algunos países asiáticos como Japón o Corea) al mes para navegación en la Web a través de un dispositivo móvil [2].
Como puede observarse existe una gran contradicción dado que por una parte, el uso de dispositivos móviles está creciendo vertiginosamente; por otra parte, el acceso a la Web en dispositivos móviles es mínimo.
Ante todo esto salta una pregunta al aire: ¿Por qué el acceso a la Web a través de dispositivos móviles es tan bajo?
Esto se debe a diversos factores como: diferentes lenguajes de marcado (HTML, CHTML, WML, etc.) que son incompatibles entre sí y que no pueden ser visualizados de forma correcta, limitaciones inherentes a los dispositivos móviles (resoluciones de pantalla pequeña, pocos colores, poco espacio de almacenamiento, poco ancho de banda, altos costos de las redes de telecomunicación), pero sobre todo a que los sitios se encuentran estructuralmente mal diseñados. Todo esto conlleva a una mala experiencia de navegación por parte de los usuarios y a que elijan métodos alternos de acceso a la Web.
Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).
Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).
Extraída desde la presentación “Software Architecture and UML” de Grady Booch (Rational Software).
Obviamente el debe ser el contexto de desarrollo (envergadura del proyecto) el que determine la configuración adecuada del proceso y los recursos necesarios. Existen propuestas radicales que promueven un proceso/modelado más “ligth”, tales como: Extreme Programming (Kent Beck) y Agile Modeling (Scott Ambler). Sin embargo, en muchos proyectos es difícil eludir un proceso y modelado más rigurosos, debido por ejemplo a relaciones contractuales, envergadura del proyecto en tiempo y participantes, etc.
Una lectura interesante:
Extreme Programming in the Quick-change Era &apos;Beware of the religion of the code-generating modeling tool.‘by Alexandra Weber Morales
About 30 years ago, Barry Boehm theorized that the cost of software change increased exponentially over time; that is, if an error caught in requirements gathering cost $1, an error caught during deployment would cost $1000.
&quot;What if,&quot; said Robert Martin, a former preacher who now uses his persuasive speaking skills to promote Smalltalk guru Kent Beck&apos;s Extreme Programming (XP) methodology, &quot;you took a moment to suspend disbelief and considered that--due to today&apos;s technology--the cost of change is essentially flat. When costs don&apos;t change over time, up-front speculative work is a liability. Ambiguity and volatility are reasons to delay.&quot;
In such a world, Martin told a packed room at the UML World conference in New York city on June 14, developers need a process that exploits a flat change/cost curve?and XP is that process. The five-year-old methodology values communication (but not on paper), simplicity, feedback and courage. It&apos;s designed for small to medium-sized teams of no more than 12 people who work in a common area, integrate and test their code constantly, pair program on single computers and use whiteboards hung on the periphery to hash out designs. Source code is the preferred archival medium, and cards containing &quot;user stories&quot;(requirements written by customers) and tasks are the &quot;high-density storage mechanism,&quot; according to Martin, who runs a training firm called Object Mentor out of Green Oaks, IL. &quot;Where does modeling fit in?“ asked an audience member, reminding Martin that his talk, at this point nearly over, had promised to describe the interaction between the UML and XP.
&quot;Paper and pencil or whiteboards are the best CASE tools I know of. In Kent&apos;s case, he uses CRC cards, not the UML,&quot; said Martin. &quot;But whether it&apos;s Booch notation or UML, you do the highest-level map you can, but you don&apos;t do all your design up front. Remember, in XP it&apos;s not an archival resource, it&apos;s a communication device. The only archive I want is the code and a few poignant, incisive documents explaining why I made certain decisions.&quot;
Does this mean that ever more sophisticated modeling tools have no place in XP? Not exactly, said Martin. &quot;If a code-generating tool works for you, use it. After all, that&apos;s what a compiler does. But beware of the religion of modeling tools that spit out executable prototypes. Sometimes getting the code from the tool is more time-consuming than writing it yourself.&quot;
El objetivo de este trabajo es utilizar las recomendaciones para el diseño accesible de páginas Web y aplicarlas para la correcta visualización de recursos Web en dispositivos móviles. Se realizó un pequeño estudio tomando en cuenta dichas consideraciones, obteniendo que es factible aplicar dichas recomendaciones o prácticas de buen diseño para su uso en dispositivos móviles. También se presenta una propuesta para solucionar el problema de la correcta visualización de páginas Web en dispositivos móviles.
Hablar de toda la problemática en los dispositivos móviles.
Hablar de costos y demás características
No existe una metodología para el desarrollo de esta clase de aplicaciones.
Stand-alone: se desarrollan para ser instaladas y ejecutadas en el dispositivo móvil y funcionan sin conexión a Internet o sin depender de un servidor central.
Online: es una solución a través de Internet, utilizando páginas Web para la interfaz del equipo, y toda la ejecución se realiza en el servidor.
Smart client: junta lo mejor de las aplicaciones Stand-alone y Online, ya que consta de aplicaciones que se distribuyen e instalan en los equipos, pero que también utilizan la conexión para comunicarse e interactuar con un servidor.
El objetivo de este trabajo es utilizar las recomendaciones para el diseño accesible de páginas Web y aplicarlas para la correcta visualización de recursos Web en dispositivos móviles. Se realizó un pequeño estudio tomando en cuenta dichas consideraciones, obteniendo que es factible aplicar dichas recomendaciones o prácticas de buen diseño para su uso en dispositivos móviles. También se presenta una propuesta para solucionar el problema de la correcta visualización de páginas Web en dispositivos móviles.
Diseño sencillo.
El objetivo de este trabajo es utilizar las recomendaciones para el diseño accesible de páginas Web y aplicarlas para la correcta visualización de recursos Web en dispositivos móviles. Se realizó un pequeño estudio tomando en cuenta dichas consideraciones, obteniendo que es factible aplicar dichas recomendaciones o prácticas de buen diseño para su uso en dispositivos móviles. También se presenta una propuesta para solucionar el problema de la correcta visualización de páginas Web en dispositivos móviles.