domingo, 8 de marzo de 2015

Sprint 2 Backlog



Framework

Cocoa Touch
En Objective-C cada clase normalmente se encuentra separada en dos ficheros:
  • La declaración de la interfaz en un fichero .h y la implementación en un fichero .m
   Generalmente, el nombre del fichero no tiene que coincidir con el nombre de la clase, por lo que se pueden tener varias clases definidas en un mismo fichero y además se puede utilizar cualquiera de ellas siempre y cuando se importe el fichero .h correspondiente.
   Se deben agrupar en el mismo fichero aquellas clases, funciones, y elementos que estén relacionados entre sí. Las clases NSString y NSMutableString se definen en el fichero de NSString.h(m). Básicamente, la clase NSMutableString es una subclase de la clase NSString, la cual añade algunos métodos para poder modificar la cadena. Cuando se crea una App con la implementación de un framework también se debe crear un único fichero .h el cual se encarga de importar todos los elementos del framework. En nuestro caso, utilizamos el framework Cocoa Touch por lo que necesitamos importar CocoaTouch/CocoaTouch.h. A pesar de que las clases de esta librería se declaran en diferentes ficheros de cabecera.
   La forma de crear una nueva clase con Xcode es select File > New > New File... > Cocoa Touch > Objective-C class. Esto permitirá especificar la superclase, poniendo por defecto NSObject, la cual es la superclase en última instancia de todas las clases. Posteriormentese debe dar un nombre y una ubicación a la clase y así se guardarán los ficheros .h y .m correspondientes.

Clases Básicas de Cocoa Touch
   El equivalente de Cocoa Touch se llama UIKit, el cual proporciona mecanismos de control de eventos y se ocupa de dibujar en la pantalla. Casi todas las necesidades de interfaz de usuario se contabilizan en UIKit permitiendo que los desarrolladores puedan crear elementos de interfaz de usuario personalizada con mayor facilidad. El segundo framework de Cocoa Touch es Foundation, es la capa que abstrae muchos de los elementos subyacentes del sistema operativo tales como tipos primitivos, gestión de paquete, operacio es de archivos y la creación de redes de los objetos de la interfaz de usuario en UIKit. En pocas palabras, Foundation es la puerta de entrada a todo lo que no figure explícitamente en la interfaz de usuario.
   La clase principal que todos los objetos de Cocoa heredan es NSObject. El prefijo NS tiene sus raíces en los orígenes no son de Apple de Cacao en NeXT. La mayoría de las clases en Cocoa son subclases de NSObject y muchas clases asumen que NSObject es la base de los objetos que se pueden extender. Por ejemplo, la clase NSArray, que representa una colección de punteros, requiere que cualquier puntero almacene puntos en una subclase NSObject. Cualquier clase personalizada que se cree debería heredar de NSObject.

Clases en UIKit
   En UIKit todas las clases que responden a la entrada del usuario, heredan de UIResponder, que es una subclase de NSObject que proporciona funcionalidad alrededor de la entrada del usuario manipulación.
   Además de la jerarquía de clases UIResponder, UIKit incluye un conjunto de clases que actúan como objetos de valor, controladores lógicos y abstracciones de características de hardware.






Entorno de Desarrollo

   Are You In? está siendo desarrollada para dispositivos móviles con sistema operativo iOS. Para la misma se está utilizando XCode como entorno de desarrollo, generalmente con el framework Cocoa Touch, el cual es específico para iOS. El lenguaje utilizado es Objective-C y sobretodo bajo el paradigma Modelo- Vista-Controlador. Adicionalmente, la utilización de una Cloud DB para la gestión externa de datos consistentes. Generalmente, es un espacio donde se almacena de forma consistente la información relacionada con los usuarios de nuestra App. Dicho almacenamiento se utiliza con el servicio ofrecido por Parse de Cloud DB. Esta herramienta evita la implementación de una interfaz de consultas que funcione como intermediaria entre nuestra App y la Base de Datos. En cierto sentido, la App móvil se comunica de forma directa con la Cloud DB, la cual le suministra los datos que necesita.


Comunicación Estándar



Comunicación con Parse



   La interfaz iOS – Parse permite la comunicación e interacción de la App con la Cloud BD, la cual cuenta con una API específica para iOS del sitio web Parse.com y además ofrece una capa de abstracción sobre SQL. ¡Simplicidad!
   Dicho anteriormente, el IDE utilizado es Xcode junto con iPhone SDK de Apple para el desarrollo de software de iOS. Conjuntamente con Xcode Interface Builder es una herramienta gráfica que se aplica para la creación de interfaces de usuario.
   Con Objective-C (lenguaje de programación orientado a objetos) es posible compilar cualquier programa escrito en lenguaje C mediante un compilador de Objective-C. Adicionalmente, la interfaz e implementación de una clase se ubican en bloques de código separados. Cocoa Touch, el framework utilizado, proporciona una capa de abstracción al sistema operativo iOS que incluye una librería distinta para la interfaz de usuario y junto al Interface Builder generan la interfaz de usuario para la App. Todas las herramientas de desarrollo de aplicaciones que están basadas en Cocoa Touch se incluyen en el SDK de iOS.

Modelo Vista Controlador (MVC)
   Datos (Modelo), interfaz de usuario (Vista) y lógica de negocio (Controlador).
  1. El Modelo está compuesto por clases simples las cuales representarán de forma abstracta las entidades que se gestionarán en la aplicación.
  2. Las Vistas son construidas utilizando el Interface Builder.
  3. Finalmente, los Controladores son aquellas clases que extienden de alguna clase genérica incluida en el UIKit. Es un framework, contenido en Cocoa Touch que provee las clases necesarias para construir y gestionar interfaces de usuario en aplicaciones iOS.


   Cuando se vista mediante el Interface Builder y entrelazarla con el código del controlador se utilizan las propiedades Outlets. Por otro lado, la interacción del usuario con los elementos de la vista es por medio de los métodos llamados “Actions”.
   De esta manera, el controlador se comunica directamente con su modelo y con su vista.

Parse Cloud BD
   Como ya se dijo, Parse es una herramienta utilizada para persistencia remota de los datos de los usuarios de la App, mediante una API específica para iOS la cual debe ser integrada en la App. Además, permite gestionar estos datos a través del navegador web de una forma más simple desde el punto de vista visual y funcional.
   Por otro lado, Parse cuenta con una clase específica que sirve para gestionar los usuarios: PFUser. Con ella, permite registrar a los usuarios (log in). Adicionalmente, cuenta con una funcionalidad importante mediante la clase PFPush llo que permite crear notificaciones a usuarios predeterminados y enviarlas al servidor Parse para que este se comunique con el servidor de Apple (APNS) y así realice el envío a los dispositivos correspondientes.


Swift
   Es un lenguaje de programación multiparadigma, creado por Apple y está diseñado para integrarse con los el framework Cocoa Touch. Cabe destacar que puede usar cualquier librería programada en Objective-C y con ello llamar a funciones de C. En cuanto a los tipos de datos, estos se dividen en dos grupos:


  • Tipo de valor se guarda una copia de su contenido. Recomendado cuando se requiere copiar su información o se vaya a trabajar con multithreads.
  • Tipo por referencia se asigna una instancia compartida que es mutable aún si son usadas en constantes. Modificar una instancia se verá reflejado en todas las variables y constantes que la compartan. Recomendado cuando se requiera compartir datos mutables.

lunes, 19 de enero de 2015

Análisis de las Aplicaciones Similares a Nuestra Propuesta

  Hemos decidido iniciar con una de las aplicaciones de mensajería móvil más popular: Whatsapp
  El proceso de registro en Whatsapp es básicamente introducir el número de teléfono móvil con su código de país y proporcionar un nombre de usuario. La aplicación reconoce a los usuarios registrados en la agenda de contactos automáticamente y a su vez permite bloquear a los mismos en caso de que no se desee interactuar con ellos. Por otro lado, las funciones que permite llevar a cabo Whatsapp son: enviar mensajes de texto o audio, compartir fotos, videos, ubicación, contacto y sobretodo crear grupos para compartir información con los integrantes del mismo. Sin embargo, uno de los puntos a tratar es que los chats grupales son, en algunas ocasiones, muy agobiantes con la masiva participación de las personas que lo componen y tantas notificaciones. Como su nombre lo indica es un chat grupal y cada quien tiene la libertad de compartir lo que quiera sin límite, pero hay momentos en los cuales es necesario dar información de algo importante, como establecer una reunión y el mensaje se pierde entre tantos.  
  Por otro lado, si bien sabemos servicios como Twitter y Facebook han revolucionado el concepto de red social, con sus increíbles funcionalidades como medio de comunicación y sobretodo la interacción con personas que no conoces. El gran problema de ambos servicios es su privacidad, por un tanto Facebook es mucho más fiel en ese aspecto ya que se pueden establecer parámetros a través de las opciones de configuración y tener una cuenta mucho más reservada. Twitter por su parte con su comunicación inmediata permite comunicar lo que podemos al instante y cualquier persona, que esté conectada a nosotros, se puede enterar de ello y con el uso de hashtags nos permite entrar en un trending topic y que los diferentes usuarios puedan ver nuestro contenido o nosotros poder ver el de ellos. Gracias a los retweets nuestros mensajes se viralizan y llegan a usuarios que no nos siguen. En cuestión, hay momentos en los cuales seguimos a un usuario que aporta cierta información de interés pero no siempre es de nuestro gusto. Si por ejemplo un maestro de Karate decide comunicar a sus seguidores las clases que ofrecerá, especificando sus detalles como hora, día y lugar, es cierto que las personas que lo siguen están conscientes de enterarse de tal información, pero el maestro de Karate tiene la libertad de darle retweet a tweets que le fueron de su agrado y a sus seguidores realmente no les importe o simplemente el maestro desea twittear cosas que  sean desagradables ya sea por ideología política, ofensas o críticas lo cual abriría un debate. Cualquiera que fuera la razón, la publicación de información en twitter se va anexando a una lista por así decirlo y llega a un punto que se va perdiendo la secuencia, quedando alguna información importante, como la clase de Karate, muy arriba y difícil de ubicar.
 Por otra parte, Facebook cuenta con la opción de generar eventos lo cual ha sido en los últimos tiempos una herramienta útil y organizada para compartir con tus amigos o incluso con personas que no conoces. Sin embargo, ésta última presenta riesgos en cuanto a la privacidad y seguridad se refiere. No obstante, a la hora de crear un evento se puede modificar la configuración de quiénes pueden acceder a él por invitación. Asimismo, se puede activar la opción de permitir a tus amigos que inviten a terceras personas. A pesar de que se cuenta con todas esas opciones, la información del evento quedará a la vista de todos los amigos que se tienen y ya no es tan privado, pues por razones personales no todos comparten los mismos gustos o no les interese asistir (generando SPAM). Cabe destacar que también se pueden seleccionar a personas que realmente puedan y les interese asistir al evento. Por lo tanto, al seleccionar a los invitados (uno por uno) se aprovechan ciertas categorías como ciudad de origen, educación o lugar de trabajo pero dado el caso que algunos contactos no tienen en su perfil esa información, entonces se deben buscar manualmente. Además que es muy engorroso si para el evento se desean invitar a 120 personas y se tienen 2000 amigos en la cuenta.
  Otro de los puntos a tratar es que no todas las personas utilizan Facebook, Twitter, Whatsapp o servicios similares que por razones personales no sienten la necesidad de compartir su vida o no se sienten satisfechos por las funcionalidades ofrecidas por éstas.
  
  Con Are You In ? El proceso es totalmente diferente. En primer lugar, el registro pide llenar un formulario proporcionando el nombre, apellido, nombre de usuario y contraseña. Lo cual permite que la localización de usuarios sea a través del nombre de usuario (pin, acercando dispositivos) comentar al respecto....Añadir una contraseña evita situaciones como que alguien maliciosamente tome nuestro dispositivo y tenga acceso a la información, elimine algún grupo o agregue personas sin nuestro consentimiento. Además, el usuario podría acceder a su cuenta a través de otro dispositivo.

Are You In ? se presenta como una nueva solución, que surge con la idea para que los usuarios sean capaces de generar eventos privados y compartirlos con sus contactos. Un candidato tiene la opción de crear diferentes grupos dependiendo de la actividad de su interés a convocar y de esta manera, los interesados tienen la opción de formar parte o no del grupo creado y a través de peticiones aceptar o rechazar la convocatoria a un evento. Para así tener una presencia en el grupo y mayor organización.

miércoles, 14 de enero de 2015

Descripción de la Idea

Are You In? se presenta como una nueva solución, que surge con la idea para que los usuarios seamos capaces de generar eventos privados y compartirlos con nuestros contactos. La idea es que mediante la aplicación un candidato tiene la opción de crear diferentes grupos dependiendo de la actividad de su interés a convocar. De esta manera, los interesados tienen la opción de formar parte o no del grupo creado y a través de peticiones aceptar o rechazar la convocatoria a un evento y así tener una presencia en el grupo y mayor organización.
Problema a Resolver  

El problema que resuelve es la accesibilidad privada con la que contaría las personas que forman parte de un grupo social con el fin de participar en diferentes eventos, de una manera organizada y directa en tiempo real. Otra solución planteada es que sería una herramienta muy útil a nivel empresarial y corporativa para coordinar reuniones y conferencias. También sirve para instituciones educativas para invitar a los estudiantes a participar de los diferentes eventos que la misma organiza.

Modelo Canvas

Presentación Idea