Framework para desarrollo de apps móviles

24
Framework para desarrollo de apps móviles IIG. Iván G. Campaña N. @icampana

Transcript of Framework para desarrollo de apps móviles

Page 1: Framework para desarrollo de apps móviles

Framework para desarrollo de apps móvilesIIG. Iván G. Campaña N.@icampana

Page 2: Framework para desarrollo de apps móviles

¿Qué es un framework de software? ¿Lo necesito? ¿Va a resolver mis problemas?

Page 3: Framework para desarrollo de apps móviles

¿Qué es un framework de software?

● En términos sencillos:○ Un marco de trabajo que incluye los principios básicos de la

ingeniería de software, las mejores prácticas en base a la experiencia de proyectos anteriores y el uso de herramientas de construcción de software para agilizar y estandarizar el proceso.

● Para un ingeniero:○ Las normativas y estándares a seguir.

● Para un técnico:○ Las herramientas a utilizar (un componente de software).

● Para un diseñador:○ Los límites bajo los cuales puedo desarrollar mi trabajo

Framework para desarrollo de apps móviles

Page 4: Framework para desarrollo de apps móviles

¿Qué es un framework de software?

● “En el desarrollo de software, un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, que puede servir de base para la organización y desarrollo de software.

Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto.”

http://es.wikipedia.org/wiki/Framework

Framework para desarrollo de apps móviles

Page 5: Framework para desarrollo de apps móviles

¿Qué es un framework de software?

● Siempre van asociados a un concepto tomado de la ingeniería de software:○ Reutilización de componentes○ OOD○ UML○ XP○ MVC

● Frameworks conocidos:○ Ruby on Rails○ .NET○ Django○ Laravel○ Symphony

Framework para desarrollo de apps móviles

Page 6: Framework para desarrollo de apps móviles

Metodología vs Framework

Un framework puede definir un esquema (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación:

El paradigma MVC (Model-View-Controller) en términos sencillos indica que se debe “separar en tu aplicación el manejo de datos, las operaciones, y la presentación”.

Sin embargo, existen frameworks basados en MVC pueden llegar al nivel de definir los nombres archivos, estructura de directorios, las convenciones de programación, etc.

La metodología de trabajo normalmente es independiente a cada equipo humano, pero de ser necesario se puede incluir fragmentos de metodología para ayudar a acelerar el proceso y estandarizar como parte del framework.

Framework para desarrollo de apps móviles

Page 7: Framework para desarrollo de apps móviles

¿Porqué usar un framework?

● Evitar el efecto NIH (Not Invented Here) y DRY (Don’t Repeat Yourself)● Tener componentes probados, revisados y validados para cumplir con las

normativas de un equipo.● Evitar el tener que plantear una estructura global, sino definir un

“esqueleto” con el cual partir y agregar elementos.● Establecer un mismo “lenguaje”, esto facilita la colaboración. Permite

poder revisar cualquier proyecto en base a un mismo conjunto de métricas.○ Es más sencillo de entender y modificar.

● Permite desarrollar o encontrar herramientas (utilidades, librerías) que se adapten con facilidad al framework con el cual vamos a trabajar.

Framework para desarrollo de apps móviles

Page 8: Framework para desarrollo de apps móviles

¿Porqué usar un framework?

Uno de los mayores problemas de los frameworks existentes es es que hay demasiados:

La elección del framework estará marcada por:● El tipo de aplicación a desarrollar● El lenguaje de programación y otras tecnologías concretas: base de datos,

sistema operativo, etc.● Las necesidades relacionadas con el “time to market”● En el caso de la aplicaciones móviles el tiempo de desarrollo siempre

busca ser lo más corto posible. (Release early, release often)● El área de mercado que quiero cubrir:

○ Puede ir relacionado en este caso con los dispositivos a los que se dirija.

Framework para desarrollo de apps móviles

Page 9: Framework para desarrollo de apps móviles

Patrones de diseño de software

● Proporcionan un catálogo de elementos reusables.● Evitar la reiteración en la búsqueda de soluciones a

problemas ya conocidos.● Estandariza el léxico utilizado entre diseñadores.● Estandarizar el modo en que se realiza el diseño.

Patrones de diseño conocidos:- MVC- Proxy- Intérprete

Framework para desarrollo de apps móviles

Page 10: Framework para desarrollo de apps móviles

Patrones de diseño móvil

● Cada plataforma, vendedor y compañía han establecido sus lineamientos básicos.

● Podemos ajustarnos a ellos para mantener uniformidad y una experiencia similar.

● Siempre está la opción de crear un estilo diferente, pero nos enfrentamos crear rechazo.○ Tiendas de aplicaciones con políticas que regulan el uso y

funcionamiento de las aplicaciones.○ Experiencias de usuario a las cuales cada grupo objetivo está

acostumbrado.

Framework para desarrollo de apps móviles

Page 11: Framework para desarrollo de apps móviles

Release early, release often

Framework para desarrollo de apps móviles

● Concepto básico utilizado en el software libre y las metodologías ágiles.

● No quiere decir liberar algo lleno de bugs (fallos).● Es la metodología aplicada por la mayoría de las

startups al desarrollar aplicaciones móviles.● Se expone una funcionalidad al cliente de forma

mucho más rápida (por prototipos semi/funcionales) para obtener retroalimentación.

● Permite adaptar el desarrollo y hacer cambios de curso antes de llegar a puntos críticos.

● Se fragmenta las funcionalidades y se las puede evaluar con mayor rapidez (estableciendo unidades de prueba).

Page 12: Framework para desarrollo de apps móviles

Ambiente de Integración continua

Framework para desarrollo de apps móviles

Utilizar los elementos de ingeniería de forma “astuta”, para que sean un apoyo al proceso, no una traba...● Control de versiones (SCM)

○ Recomendable escoger una herramienta estándar: git, subversion, mercurial

● Unidades de prueba (SQA)○ Mientras el lenguaje lo permita (99% de las veces)

● Integración y actualización de código (DevOps)○ Si no se cuenta con un equipo dedicado, proveer un

espacio que les permita realizar integraciones generales.

Page 13: Framework para desarrollo de apps móviles

Estándares aplicables y reutilizables

Framework para desarrollo de apps móviles

Un proyecto de aplicación móvil es un proyecto de software como tal.

Los principios básicos de ingeniería se mantienen y se aplican, la metodología puede variar, pero no deja de seguir siendo un proyecto de ingeniería. (Ej: Ing. de software de Pressman 2010)

Recomendaciones: Scrum + XP (O metodologías ágiles en general).

Page 14: Framework para desarrollo de apps móviles

Estándares aplicables y reutilizables

Framework para desarrollo de apps móviles

Tendencias actuales:

- Aplicaciones móviles basadas en HTML5 + Javascript + CSS 3

- Aplicaciones híbridas- Generadores de código

- Mantenimiento en el tiempo.

Page 15: Framework para desarrollo de apps móviles

Framework para desarrollo de apps móviles

¿Qué formato utilizo para el diseño?

Page 16: Framework para desarrollo de apps móviles

Lineamientos de diseño

Framework para desarrollo de apps móviles

Page 17: Framework para desarrollo de apps móviles

Lineamientos de diseño

Framework para desarrollo de apps móviles

Los patrones vienen dados por quienes controlan el software:

Google (Android): Material Design http://www.google.com/design/spec/material-design/introduction.html

Apple (iOS): Human Interface Guidelines:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/

Page 18: Framework para desarrollo de apps móviles

Lineamientos de diseño

Framework para desarrollo de apps móviles

¿Otras alternativas?

DIY

Page 19: Framework para desarrollo de apps móviles

Construcción de software enfocado en accesibilidad

Framework para desarrollo de apps móviles

● Las aplicaciones móviles y web pueden ser interpretadas por dispositivos de ayuda a personas con capacidades reducidas.

● Capacidades comúnmente relegadas:○ Visión, movilidad, audición

● Al tomar un estándar podemos establecer pautas que reduzcan la brecha y aumenten el uso.

● ¿Alguien sabe qué le pasa a un Daltónico al usar una aplicación con una sola gama de colores?

Page 20: Framework para desarrollo de apps móviles

Construcción de software enfocado en accesibilidad

Framework para desarrollo de apps móviles

Page 21: Framework para desarrollo de apps móviles

Desarrollo por prototipos

Framework para desarrollo de apps móviles

Funcionales / semifuncionales- Se parte con el diseño de la experiencia- Se agregan funcionalidades de forma gradual - Se prueba rendimiento mientras se avanza.

¿Cómo evaluarlos?- Se establecen entregables- Cada elemento pasa por el proceso de validación,

pruebas y verificación.- Inclusive un dibujo en una hoja de papel es un

entregable que forma parte del proyecto.

Page 22: Framework para desarrollo de apps móviles

Integración de información

Framework para desarrollo de apps móviles

Interoperatividad e independencia de implementación.● No deberían limitarse a un estándar único:

○ json○ rest○ soap○ xml-rpc

● La información puede tener un repositorio base (en un formato estándar) y simplemente establecer consumidores de información (que utilicen los estándares previos).

Page 23: Framework para desarrollo de apps móviles

Manejo de múltiple plataformas

Framework para desarrollo de apps móviles

Manejo de múltiple plataformas / resoluciones.

- Cómo manejamos todos los tipos de dispositivos- Cuántos se pueden utilizar como para considerar una

base válida.- El diseño responsivo (responsive design) es una

opción.- ¿Cuántos diseños de interfaces de usuario deben

existir?- ¿Cuántos se deben soportar?

Page 24: Framework para desarrollo de apps móviles

Herramientas aplicables

Framework para desarrollo de apps móviles

● Mockups, Wireframes y prototipos (DIA / Pencil: http://pencil.evolus.vn/ )

● Integración contínua (Jenkins: http://jenkins-ci.org/ )● Unidades de prueba (Cucumber: http://cukes.info/ )● Revisión de código: ( Gerrit / https://code.google.

com/p/gerrit/ )● Frameworks de desarrollo: Ionic, Phonegap, Titanium,

Codename One, Angular.js● SCM, control de versiones: git, subversion● Metodologías de trabajo: Scrum, XP