Está en la página 1de 15

ELECTIVA PROFESIONAL II

PROGRAMACIÓN MOVIL

Unidad IV:
ARQUITECTURA Y ENTORNO
DE DESARROLLO APP
Ing. Katty Lagos Ortiz MSc.
Contenido:
 Historia y Evolución de Android
 Historia y Evolución de IOS
 Arquitectura de Android
 Arquitectura de IOS
 Metodologías de desarrollo para APP
 Entornos de desarrollo Android
 Entornos de desarrollo IOS
Arquitectura de Android
Tras la versión Jelly Bean, el sistema Android está basado en el
núcleo de Linux 3.0, y las primeras versiones estaban
basadas en el núcleo 2.6. Este núcleo tiene en cuenta la
gestión de las capas inferiores, tales como los procesos, la
gestión de la memoria, los permisos de usuario y la capa de
hardware.

Sobre este núcleo, se sitúa la capa de bibliotecas principales


del sistema proporcionadas por los fabricantes. Éstas, de bajo
nivel, están escritas en C y/o C++.

Proporcionan los servicios esenciales tales como la gestión de


la visualización 2D y 3D, un motor de base de datos SQLite, la
reproducción y la grabación de audio y vídeo, un motor de
navegador web… Las funcionalidades ofrecidas por estas
bibliotecas las recoge y utiliza la capa superior bajo la forma
de bibliotecas Java.
Detalle de la arquitectura Android
•Aplicaciones: cualquier tipo de aplicación Android. Es la capa que utiliza el usuario.

•Framework de Android: Acceso al API de Android para reutilizar componentes o


modificarlos. Es la capa en la que trabajaremos como desarrolladores Android (trabajaremos
con SDK; veremos cómo se utiliza). Todo en esta capa será una representación exacta de la
capa HAL.

•Bibliotecas nativas en C/C++: el desarrollador puede usarlas a través del Framework. Es la


capa en la que
podremos trabajar como desarrolladores Android a bajo nivel (se trabaja con el NDK y se
programa en C/C++).

•Runtime de Android: bibliotecas del lenguaje Java que se ejecutan sobre:


-Una única instancia en la máquina virtual Dalvik (antigua)
-Sobre el entorno de ejecución Android Runtime (o conocido por sus siglas ART)

•Comunicación ligada entre procesos (Binder IPC, Inter-Procces Communication):


Mecanismo que permite al Framework ir más allá de un proceso y llamar a los servicios del
sistema operativo Android. Lo que permite a las APIs interactuar con los servicios del sistema
operativo Android. Estas comunicaciones están ocultas para el desarrollador en la capa de
Framework (hablaremos más de esto en el capítulo de Services).
•Servicios del Sistema Android: Casi todas las funcionalidades en el API del Framework se
comunicarán con algún servicio (Service) del sistema para acceder a hardware implicado.
Cada servicio se divide en componentes enfocados en funcionalidades. Los servicios se
agrupan en:
-System: Incluye gestores de ventanas, de notificaciones, etc
-Media: Incluye aquellos involucrados en la reproducción y la grabación multimedia (imágenes,
audio, video, etc)

•Capa de abstracción del Hardware (HAL, Hardware Abstraction Layer): Interfaz que
permite al sistema
operativo Android llamar a la capa de drivers (controladores) del dispositivo.

•Kernel (núcleo) Linux: Capa de abstracción del hardware y servicios de seguridad,


gestión de memoria, de
procesos, pila de red, modelo de los controladores.

•Ensamblador: lenguaje de bajo nivel para circuitos integrados programables. Es una


representación mnemotécnica del código máquina en binario y varias constantes para
programar de una manera más sencilla que utilizar directamente el binario.

•Firmware: Instrucciones máquina grabadas en un chip para propósitos específicos.

•Hardware: Son las partes físicas y los componentes.


Arquitectura IOS
iOS es el sistema operativo de Apple para dispositivos móviles,
originalmente fue desarrollado para el dispositivo iPhone y ha sido
reutilizado posteriormente para otros dispositivos de la empresa tales como
iPod o iPad. iOS no permite trabajar utilizando Adobe Flash ni Java, lo que
hace poco compatible el desarrollo paralelo de aplicaciones iOS y Android,
ya que no se podría reutilizar el código. En cambio si permite utilizar
HTML5.
Detalle de la arquitectura IOS
El sistema operativo de Apple está distribuido en cuatro
capas diferenciadas por su funcionalidad:
– Cocoa Touch
Es la capa superior, la que los usuarios utilizan para
interactuar con las aplicaciones, es decir, la capa visible.
Es la zona donde nos encontramos los componentes
visuales, se trata de una capa de abstraccion.

– Media
Se trata de una capa basada en la mezcla de lenguaje C
y Objective C que contiene las tecnologías que dan
acceso a ficheros multimedia relacionados con audio,
gráficos, vídeos, etc.
– Core Services
Se trata de la capa de servicios principales disponibles
en el dispositivo y que pueden ser utilizados por todas
las aplicaciones, como pueden ser: base de datos
SQLite, acceso a la red, soporte para XML.

– Core OS
El núcelo del sistema. Recordar que el sistema operativo
iOS está basado en el OS X de Apple, que fue
desarrollado a partir de una base Unix. Elementos de
seguridad, memoria, procesos o manejo de ficheros son
los que podemos encontrar en esta capa.
Metodologías de desarrollo para
APP

¿QUÉ ES UNA METODOLOGÍA DE DESARROLLO? Una


metodología es una colección de procedimientos,
técnicas, herramientas y documentos auxiliares que
ayudan a los desarrolladores de software en sus
esfuerzos por implementar nuevos sistemas de
información.

Una metodología está formada por fases, cada una de


las cuales se puede dividir en sub- fases, que guiarán a
los desarrolladores de sistemas a elegir las técnicas
más apropiadas en cada momento del proyecto y
también a planificarlo, gestionarlo, controlarlo y
evaluarlo.
MODELO WATERFALL (CASCADA) Clásico.
• Sólo aplicable cuando están totalmente cerrados los requisitos y
no van a cambiar. ›No hay retroalimentación entre las fases en
que se divide el proyecto. Por lo que cada fase se va cerrando de
forma secuencial. Todo el proceso está fijado por fechas límites
y presupuestos. ›Este modelo sólo es aconsejable para proyectos
móviles muy controlados y previsibles, no existe incertidumbre
por lo que se quiere hacer ni influyen los cambios en la industria.
Desarrollo rápido de aplicaciones
• Se da énfasis a la obtención de un prototipo funcional de una
aplicación para posteriormente ir mejorándolo incluyendo más
funcionalidades y complejidad. Es recomendable el uso de
patrones de diseño bien conocidos para adaptarse a los cambios
de requisitos. ›Se suele usar cuando los plazos de entrega son
muy cortos y se precisa tener un entregable de forma inmediata.
No se descarta utilizar otras metodologías de forma posterior, ya
que este tipo de desarrollo puede ser usado para mostrar un
esbozo de la aplicación a un cliente, generalmente en un par de
días.
Desarrollo ágil
• En primer lugar, la alta volatilidad del entorno hace que
constantemente el equipo de desarrollo se deba adaptar a
nuevos terminales, cambios en la plataforma o en el
entorno de desarrollo. Un ritmo cambiante que requiere
una alta respuesta al cambio más que al seguimiento de
un plan concreto.
• Los equipos de desarrollo móvil suelen se integrados por
pocas personas. No más de ocho o diez desarrolladores
entorno a un misma aplicación o, incluso, un único
desarrollador. Las interacciones en el proceso y las
herramientas son más controlables y es posible una fluida
comunicación entre los miembros del equipo.

Mobile-D
• El objetivo de este método es conseguir ciclos de
desarrollo muy rápidos en equipos muy pequeños. Fue
creado en un proyecto finlandés en 2005, pero sigue
estando vigente. Basado en metodologías conocidas pero
aplicadas de forma estricta como: extreme programming,
Crystal Methodologies y Rational Unified Process. ›Se
compone de distintas fases: exploración, inicialización,
fase de producto, fase de estabilización y la fase de
pruebas. Cada una tiene un día de planificación y otro de
entrega.
EXTREME PROGRAMING (XP)
• Se centra en las mejores prácticas para el desarrollo de software.
Consta de doce prácticas: el juego de planificación, pequeñas
emisiones, la metáfora, el diseño sencillo, las pruebas, la
refactorización, la programación en parejas, la propiedad
colectiva, integración continua, semana 40-h, los clientes en el
lugar, y los estándares de codificación

HYBRID METHODOLOGY DESING


• Esta metodología utiliza el modelo iterativo incremental para el
proceso de desarrollo y así lograr la rápida entrega de software y
mejorar las capacidades de gestión de riesgos. Algunas de las
características ágiles que se destacan y que también se alinean
con las necesidades de desarrollo de aplicaciones móviles son
según:
• Desarrollo basado en pruebas.
• Participación continúa del cliente.
• Establecimiento de prioridades en los requisitos.
• Comunicación efectiva.
• Calidad garantizada.
• Desarrolladores expertos.
• Revisión de todo el proceso y sesiones de aprendizaje
MOBILE DEVELOPMENT PROCESS SPIRAL
• Esta propuesta metodológica utiliza el modelo
de desarrollo en espiral como base, e incorpora
procesos de evaluación de la usabilidad,
priorizando la participación del usuario en
todos los procesos del ciclo de vida de diseño,
con el fin de garantizar un diseño centrado en
el usuario, aun cuando se trata de un modelo
de proceso orientado a proyectos grandes y
costosos, ya que está destinado a ser un
modelo de reducción de riesgos.

También podría gustarte