lunes, 19 de mayo de 2014

Unidad 5 ADMINISTRACIÓN DE DATOS EN DISPOSITIVOS MÓVILES

5.1 INTRODUCCIÓN


Un Objeto de Acceso a Datos o Data Access Object (DAO) son una serie de objetos que le permiten tener acceso y manipular datos mediante programación en bases de datos locales o remotos. Puede utilizar DAO para administrar bases de datos, así como sus objetos y su estructura.


Es un componente de software que suministra una interfaz común entre la aplicación y uno o más dispositivos de almacenamiento de datos, tales como una Base de datos o un archivo. El término se aplica frecuentemente al Patrón de diseño Object.

Los Objetos de Acceso a Datos son un Patrón de Diseño Core J2EE y considerados una buena práctica. 
Los Objetos de Acceso a Datos pueden usarse en Java para aislar a una aplicación de la tecnología de persistencia Java subyacente(API de Persistencia Java), la cual podría ser JDBC, JDO, EJB,CMP(Persistencia controlada por el Contenedor), TopLink, Hibernate, iBATIS, o cualquier otra tecnología de persistencia. Usando Objetos de Acceso de Datos significa que la tecnología subyacente puede ser actualizada o cambiada sin cambiar otras partes de la aplicación.

La flexibilidad tiene un precio. Cuando se añaden DAOs a una aplicación, la complejidad adicional de usar otra capa de persistencia incrementa la cantidad de código ejecutado durante tiempo de ejecución. La configuración de las capas de persistencia requiere en la mayoría de los casos mucho trabajo.

Para tener acceso y manipular datos mediante programa debe comprender la jerarquía de DAO. El orden de los objetos en DAO se conoce como su modelo de objetos. El modelo de objetos de DAO le permite escribir código que puede aprovechar la funcionalidad de la base de datos.


5.2 MODELOS DE OBJETO DE ACCESO A DATOS

En software de computadores, un Data Access Object (DAO, Objeto de Acceso a Datos) es un componente de software que suministra una interfaz común entre la aplicación y uno o más dispositivos de almacenamiento de datos, tales como una Base de datos o un archivo.


VENTAJAS:

Los Objetos de Acceso a Datos son un Patrón de los subordinados de Diseño Core J2EE y considerados una buena práctica. La ventaja de usar objetos de acceso a datos es que cualquier objeto de negocio (aquel que contiene detalles específicos de operación o aplicación) no requiere conocimiento directo del destino final de la información que manipula.

Los Objetos de Acceso a Datos pueden usarse en Java para aislar a una aplicación de la tecnología de persistencia Java subyacente (API de Persistencia Java), la cual podría ser JDBC, JDO, Enterprise JavaBeans, TopLink, EclipseLink, Hibernate, iBATIS, o cualquier otra tecnología de persistencia.

Usando Objetos de Acceso de Datos significa que la tecnología subyacente puede ser actualizada o cambiada sin cambiar otras partes de la aplicación.
JDBC: Java Database Connectivity, más conocida, es una API que permite la ejecución de operaciones sobre bases de datos desde el lenguaje de programación Java, independientemente del sistema operativo donde se ejecute o de la base de datos a la cual se accede, utilizando el dialecto SQL del modelo de base de datos que se utilice.
Otra  ventaja de usar objetos de acceso a datos es que cualquier objeto de negocio (aquel que contiene detalles específicos de operación o aplicación) no requiere conocimiento directo del destino final de la información que manipula.

DESVENTAJAS:

La flexibilidad tiene un precio. Cuando se añaden DAOs a una aplicación, la complejidad adicional de usar otra capa de persistencia incrementa la cantidad de código ejecutado durante tiempo de ejecución. La configuración de las capas de persistencia requiere en la mayoría de los casos mucho trabajo.

Las aplicaciones críticas con el rendimiento no deberían usar DAOs.

5.4 XML

Siglas en inglés de eXtensible Markup Language ('lenguaje de marcas extensible'), es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C) utilizado para almacenar datos en forma legible. Deriva del lenguaje SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML) para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones se deben comunicar entre sí o integrar información. (Bases de datos Silberschatz).
XML no ha nacido sólo para su aplicación para Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa imaginable.
XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil.
  
VENTAJAS:

·         Es extensible: Después de diseñado y puesto en producción, es posible extender XML con la adición de nuevas etiquetas, de modo que se pueda continuar utilizando sin complicación alguna.
·         El analizador es un componente estándar, no es necesario crear un analizador específico para cada versión de lenguaje XML. Esto posibilita el empleo de cualquiera de los analizadores disponibles. De esta manera se evitan bugs y se acelera el desarrollo de aplicaciones.
·         Si un tercero decide usar un documento creado en XML, es sencillo entender su estructura y procesarla. Mejora la compatibilidad entre aplicaciones. Podemos comunicar aplicaciones de distintas plataformas, sin que importe el origen de los datos, es decir, podríamos tener una aplicación en Linux con una base de datos Postgres y comunicarla con otra aplicación en Windows y Base de Datos MS-SQL Server.
·   Transformamos datos en información, pues se le añade un significado concreto y los asociamos a un contexto, con lo cual tenemos flexibilidad para estructurar documentos.

ESTRUCTURA DE XML:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Edit_Mensaje SYSTEM "Edit_Mensaje.dtd">

<Edit_Mensaje>
     <Mensaje>
          <Remitente>
               <Nombre>Nombre del remitente</Nombre>
               <Mail> Correo del remitente </Mail>
          </Remitente>
          <Destinatario>
               <Nombre>Nombre del destinatario</Nombre>
               <Mail>Correo del destinatario</Mail>
          </Destinatario>
          <Texto>
               <Asunto>
                    Este es mi documento con una estructura muy sencilla
                    no contiene atributos ni entidades...
               </Asunto>
               <Parrafo>
                    Este es mi documento con una estructura muy sencilla
                    no contiene atributos ni entidades...
               </Parrafo>
          </Texto>
     </Mensaje>
</Edit_Mensaje>

5.5 JSON

JSON, acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML.
                                     
La simplicidad de JSON ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos en este contexto es que es mucho más sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando la función eval(), lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web.

EJEMPLO DE JSON

En teoría, es trivial analizar JSON en JavaScript usando la función eval() incorporada en el lenguaje. Por ejemplo:

miObjeto = eval('(' + json_datos + ')');
En la práctica, las consideraciones de seguridad por lo general recomiendan no usar eval sobre datos crudos y debería usarse un analizador JavaScript distinto para garantizar la seguridad. El analizador proporcionado por JSON.org usa eval() en su función de análisis, protegiéndola con una expresión regular de forma que la función sólo ve expresiones seguras.

DIFERENCIA ENTRE XML Y JSON:
A continuación se muestra un ejemplo simple de definición de barra de menús usando JSON y XML.
JSON:
 {"menu": {
   "id": "file",
   "value": "File",
   "popup": {
     "menuitem": [
       {"value": "New", "onclick": "CreateNewDoc()"},
       {"value": "Open", "onclick": "OpenDoc()"},
       {"value": "Close", "onclick": "CloseDoc()"}
     ]
   }
 }
}
XML:
  <menu id="file" value="File">
    <popup>
      <menuitem value="New" onclick="CreateNewDoc()" />
      <menuitem value="Open" onclick="OpenDoc()" />
      <menuitem value="Close" onclick="CloseDoc()" />
    </popup>
  </menu>

UNIDAD 4 Desarrollo de aplicaciones móviles

4.1 Instalación

Consisten  en  instalar  un  plugin  específico  de  Android  para  la plataforma  Eclipse. Esta  herramienta,  llamada  ADT  (Android  Development  Tools), facilita  enormemente  la  creación  de proyectos,  su  implementación,  depuración  y ejecución, por lo que es altamente recomendable si se quiere trabajar con Android.
  
1.- Acceder al menú: Help -> Software Updates. 
Desde aquí podemos controlar todas las actualizaciones y plugins de Eclipse. Nosotros necesitaremos añadir una nueva dirección para que el sistema localice e instale el plugin de Android.


2.- Pulsamos sobre “Add site” y en la nueva ventana que se abre (la mostrada en la imagen) debemos insertar en el campo  Location: https://dlssl.google.com/android/eclipse/


Nota: Si no os reconoce la dirección probad con “http” en vez de “https”.
3.- Una vez añadido el sitio, marcamos e instalamos el nuevo plugin que nos aparecerá en la lista. En caso de que nos pidiera instalar otro plugin, lo buscaremos mediante el buscador de plugin y lo instalaremos de la misma manera que hemos instalado el de Android.

4.2 Metodología de desarrollo y ejecución

Una metodología de desarrollo de software se refiere a un framework que es usado para estructurar, planear y controlar el proceso de desarrollo en sistemas de información.
A lo largo del tiempo, una gran cantidad de métodos han sido desarrollados diferenciándose por su fortaleza y debilidad.
El framework para metodología de desarrollo de software consiste en:
·         Una filosofía de desarrollo de programas de computación con el enfoque del proceso de desarrollo de software
·         Herramientas, modelos y métodos para asistir al proceso de desarrollo de software
Estos frameworks son a menudo vinculados a algún tipo de organización, que además desarrolla, apoya el uso y promueve la metodología. La metodología es a menudo documentada en algún tipo de documentación formal.

TIPOS DE METODOLOGÍAS DE DESARROLLO

1970
·         Programación estructurada sol desde 1969
·         Programación estructurada Jackson desde 1975
1980
·         Structured Systems Analysis and Design Methodology (SSADM) desde 1980
·         Structured Analysis and Design Technique (SADT) desde 1980
·         Ingeniería de la información (IE/IEM) desde 1981
1990
·         Rapid application development (RAD) desde 1991.
·         Programación orientada a objetos (OOP) a lo largo de la década de los 90's
·         Virtual finite state machine (VFSM) desde 1990s
·         Dynamic Systems Development Method desarrollado en UK desde 1995.
·         Scrum (desarrollo), en la última parte de los 90's
·         Rational Unified Process (RUP) desde 1999.
·         Extreme Programming(XP) desde 1999
Nuevo milenio
·         Enterprise Unified Process (EUP) extensiones RUP desde 2002
·         Constructionist design methodology (CDM) desde 2004 por Kristinn R. Thórisson
·         Agile Unified Process (AUP) desde 2005 por Scott Ambler

4.3 Uso de formularios Web móvil

Existe una serie de consejos interesantes a tener en cuenta cuando se diseña un formulario que queremos que sea sencillo de usar en un móvil. Los veremos a continuación, pero en general nos sirve la máxima comentada en el artículo anterior "Más es menos", porque cuanto menor y más objetivo sea el formulario, más contentos estarán tus usuarios.

1.- Minimizar la entrada de texto 
2.- Minimizar el número de campos
3.- Utilizar campos input del HTML5
4.- Alinear etiquetas arriba
5.- Eliminar contenido accesorio 
6.- Evitar formularios multicolumna
7.- Recordar datos introducidos anteriormente
8.- Obtener automáticamente los datos que se pueda
9.- Uso inteligente de los campos INPUT con autocompletar
10.- Opción para ver la clave escrita en los campos “password” 



4.4 Uso de controles

Esta parte se centra en otros tres componentes básicos imprescindibles del desarrollo de 
aplicaciones: las imágenes (ImageView), las etiquetas (TextView) y por último los cuadros de texto (EditText).

Control ImageViewEl control ImageView permite mostrar imágenes en la aplicación. La propiedad más interesante 
es android:src, que permite indicar la imagen a mostrar. Nuevamente, lo normal será indicar como origen de la imagen el identificador de un recurso de nuestra carpeta /res/drawable, por 
ejemplo android:src=”@drawable/unaimagen”.

<ImageView 
 android:id="@+id/ImgFoto" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:src="@drawable/icon" 

 android:contentDescription="@string/imagen_ejemplo"/> 


Control TextViewEl control TextView es otro de los clásicos en la programación de GUIs, las etiquetas de texto, y se utiliza para mostrar un determinado texto al usuario. Al igual que en el caso de los botones, el texto del control se establece mediante la propiedad android:text. A parte de esta propiedad, la naturaleza del control hace que las más interesantes sean las que establecen el formato del texto mostrado, que al igual que en el caso de los botones son las siguientes: android:background (color de fondo), android:textColor (color del texto), android: textSize (tamaño de la fuente) y android:typeface (estilo del texto: negrita, cursiva, …). 




<TextView 
 android:id="@+id/LblEtiqueta" 
 android:layout_width="matchfill_parent" 
 android:layout_height="wrap_content" 
 android:text="@string/escribe_algoEscribe algo:" 
 android:background="#AA44FF" 
 android:typeface="monospace"/>


Control EditTextEl control EditText es el componente de edición de texto que proporciona la plataforma Android. 

Permite la introducción y edición de texto por parte del usuario, por lo que en tiempo de diseño la propiedad más interesante a establecer, además de su posición/tamaño y formato, es el texto a mostrar, atributo android:text. Por supuesto si se quiere que el cuadro de texto aparezca inicializado con ningún texto, no es necesario incluir esta propiedad en el layout XML. Lo que sí se debería establecer será la propiedad android:inputType. Esta propiedad indica el tipo de contenido que se va a introducir en el cuadro de texto, como por ejemplo una dirección de correo electrónico (textEmailAddress), un número genérico (number), un número de teléfono (phone), una dirección web (textUri), o un texto genérico (text).



4.5 Creación Interfaces de usuario

Es el diseño de computadoras, aplicaciones, máquinas, dispositivos de comunicación móvil, aplicaciones de software, y sitios web enfocado en la experiencia de usuario y la interacción.
Normalmente es una actividad multidisciplinar que involucra a varias ramas es decir al diseño y el conocimiento como el diseño gráfico, industrial, web, de software y la ergonomía; y está implicado en un amplio rango de proyectos, desde sistemas para computadoras, vehículos hasta aviones comerciales.
Su objetivo es que las aplicaciones o los objetos sean más atractivos y además, hacer que la interacción con el usuario sea lo más intuitiva posible, conocido como el diseño centrado en el usuario. En este sentido las disciplinas del diseño industrial y gráfico se encargan de que la actividad a desarrollar se comunique y aprenda lo más rápidamente, a través de recursos como la gráfica, los pictogramas, los estereotipos y la simbología, todo sin afectar el funcionamiento técnico eficiente.
En el proceso de diseño de una interfaz de usuario se pueden distinguir cuatro fases o pasos fundamentales:     
1.    Reunir y analizar la información del usuario
2.    Diseñar la interfaz de usuario
3.    Construir la interfaz de usuario
4.    Validar la interfaz de usuario