27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

download 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

of 173

Transcript of 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    1/173

    ESTUDIOS CON RECONOCIMIENTO DE VALIDEZ OFICIAL

    NUMERO 00922681 DE FECHA 23 DE JUNIO DE 1992

    SVES. DESARROLLO DE APLICACIONES PARA

    DISPOSITIVOS MVILES

    TESIS

    QUE PARA OBTENER EL TTULO DE

    INGENIERO EN COMPUTACIN

    PRESENTA:

    IVN CARLOS RIVERA GONZLEZ

    ASESOR: EUGENIO JACOBO HERNNDEZ VALDELAMAR

    MXICO, D.F. MARZO DE 2003

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    2/173

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    3/173

    RESUMEN

    El inters por crear aplicaciones para Dispositivos Mviles ha aumentado en la

    misma medida que estos han demostrado su funcionalidad. Adems, con el

    aumento en las capacidades de procesamiento de estos dispositivos se ha abierto

    todo un abanico de posibilidades de aplicacin de los mismos.

    Sin embargo, cuando se considera elaborar aplicaciones para dispositos mviles,

    la principal dificultad que se debe enfrentar es la eleccin de una plataforma de

    desarrollo, entendida sta como una combinacin de metodologa de anlisis y

    diseo de sistemas, lenguaje de programacin, sistema operativo sobre el que se

    trabaja, etc.

    Para enfrentar un problema como este, se debe plantear la eleccin de una

    Metodologa de Anlisis y Diseo de Sistemas adecuada, muy probablementeOrientada a Objetos. Se debe hacer un Anlisis y Diseo adecuados,

    considerando las limitaciones de la plataforma.

    A partir de un Anlisis cuidadoso y diseando las aplicaciones considerando las

    restricciones propias de un dispositivo mvil, la correcta aplicacin de la

    plataforma elegida redundar en un proceso de desarrollo ms eficiente, rpido,

    econmico y con aplicaciones mas robustas.

    Como un ejemplo de aplicacin de este trabajo, se estudia el Sistema deVigilancia Epidemiolgica Simplificada (SVES) de la Secretara de Salubridad y

    Asistencia.

    Los asistentes personales digitalizados son dispositivos con una gran capacidad

    de procesamiento a un costo relativamente bajo que ponen al alcance de las

    masas la posibilidad de realizar actividades que antes solo se podan realizar con

    una computadora personal.

    Considerando esto, al desarrollar un sistema para PDAs que aplique la

    metodologa del SVES, una franja mas grande de la poblacin tendr acceso a

    este mecanismo de atencin.

    El presente trabajo demostrar que es posible aplicar una metodologa de Anlisis

    y Diseo de Sistemas que considere las limitaciones de una plataforma como las

    PDAs para desarrollar aplicaciones de Cmputo Mvil.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    4/173

    II

    INDICE

    INTRODUCCIN.....................................................................................................1

    CAPITULO I DESARROLLO DE SISTEMAS ..........................................................4

    I.1 Conceptos del Software ..................................................................................5

    I.2 Lenguajes de Programacin ...........................................................................6

    I.2.1 Qu es un lenguaje de programacin ...................................................6

    I.2.2 Evolucin de los Lenguajes de Programacin ......................................9

    I.2.3 Clasificacin de los Lenguajes de Programacin................................12

    I.2.4 El proceso de la programacin............................................................14

    I.3 Tipos de Sistemas de Cmputo ....................................................................15

    I.3.1 Aplicaciones Monolticas.....................................................................16

    I.3.2 Modelo Cliente / Servidor....................................................................16

    I.3.3 Sistemas Distribuidos..........................................................................21

    I.3.4 Cmputo Mvil ....................................................................................22

    I.3.5 Comentarios Finales ...........................................................................25

    CAPITULO II DESARROLLO DE APLICACIONES PARA ASISTENTES

    PERSONALES DIGITALIZADOS ..........................................................................26

    II.1 Introduccin a las PDAs...............................................................................27II.2 Arquitectura de Hardware de la plataforma Palm.........................................28

    II.3 Arquitectura del Sistema Operativo Palm.....................................................32

    II.4 Tipos de aplicaciones...................................................................................35

    II.4.1 Aplicaciones Web reducidas ..............................................................35

    II.4.2 Aplicaciones estndar de Palm..........................................................37

    II.4.3 Conduits .............................................................................................38

    II.5 Estructura de una aplicacin Palm...............................................................39

    II.5.1 Como se genera un ejecutable ..........................................................41

    II.5.2 Common Object File Format ..............................................................43

    II.5.2.1 Archivo Objeto ......................................................................43

    II.5.2.2 COFF....................................................................................44

    II.5.2.3 COFF y Palm........................................................................46

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    5/173

    III

    II.5.2.4 PRC-Tools ............................................................................46

    II.5.2.5 CodeWarrior .........................................................................48

    II.5.2.6 Otros .....................................................................................48

    II.6 Integracin de un ambiente de desarrollo Palm...........................................49

    II.6.1 Herramientas de desarrollo disponibles.................................................49

    II.6.1.1 Herramientas Orientadas a formularios ..........................................50

    II.6.1.2 Herramientas Orientadas a la programacin tradicional .................52

    II.6.2 El PalmOs Emulator (POSE).................................................................54

    II.7 Caractersticas del API de Palm...................................................................56

    II.7.1 APIs Definidas por el usuario.............................................................59

    II.7.2 El ambiente de desarrollo para este trabajo.......................................60

    II.7.3 CodeWarrior.......................................................................................60II.7.4 Eligiendo entre C y C++.....................................................................61

    CAPITULO III OMT PARA EL ANLISIS Y DISEO DE APLICACIONES EN

    ASISTENTES PERSONALES DIGITALIZADOS...................................................66

    III.1 Elementos de OMT .....................................................................................67

    III.1.1 Modelo de Objetos ............................................................................67

    III.1.2 Modelo Dinmico ..............................................................................68

    III.1.3 Modelo Funcional..............................................................................68III.1.4 Relacin entre los Modelos...............................................................69

    III.2 Proceso de Anlisis y Diseo en OMT........................................................70

    III.2.1 Anlisis..............................................................................................71

    III.2.1.1 Casos de Uso.............................................................................74

    III.2.2 Diseo ...............................................................................................75

    III.2.2.1 Diseo de sistemas. ...................................................................75

    III.2.2.2 Diseo de objetos.......................................................................77

    III.3 Patrones de Diseo.....................................................................................79

    III.3.1 Qu son los patrones ........................................................................79

    III.3.1.1 Ventajas de los patrones de diseo............................................81

    III.3.2 Patrn Modelo Vista Controlador ......................................................82

    III.3.2.1 Modelo Vista Controlador y desarrollo para Palm.......................87

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    6/173

    IV

    III.4 Restricciones dadas por la plataforma........................................................87

    III.4.1 Los distintos modelos de Palm..........................................................89

    III.4.2 Caractersticas generales de las computadoras de mano,

    independientemente de la marca................................................................90

    III.4.3 Comentarios Finales .........................................................................90

    CAPITULO IV CASO DE ESTUDIO: SVES...........................................................95

    IV.1 Sistemas de Apoyo en la toma de decisiones ...........................................96

    IV.1.1 Proceso general de toma de decisiones...........................................97

    IV.1.2 Sistemas de diagnstico mdico. .....................................................98

    IV.1.2.1 Perspectiva Histrica..................................................................99

    IV.1.2.2 Sistemas Expertos ...................................................................100

    IV.1.2.3 Funcionamiento de los sistemas de diagnstico medico..........101IV.1.2.4 Ejemplo ....................................................................................101

    IV.2 Antecedentes del Sistema de Vigilancia Epidemiolgica..........................102

    IV.3 Sistema de vigilancia epidemiolgica .......................................................105

    IV.3.1 Sistemas no convencionales de Informacin..................................106

    IV.3.2 Aspectos epidemiolgicos ..............................................................107

    IV.4 Sistema de Vigilancia Epidemiolgica Simplificada..................................107

    IV.4.1 Componentes del SVES.................................................................108IV.4.2 Padecimientos Incluidos .................................................................109

    IV.5 Formatos e instructivos de registro y notificacin .....................................111

    IV.5.1 Plantilla para el Diagnstico Individual de Enfermedades ..............111

    IV.6 Anlisis y Diseo del Sistema...................................................................113

    IV.6.1 Anlisis de la Vista..........................................................................113

    IV.6.1.1 Enunciado del problema...........................................................113

    IV.6.1.2 Modelo de Objetos ...................................................................113

    IV.6.1.3 Identificacin de Objetos y Clases ...........................................113

    IV.6.1.4 Diccionario de Datos ................................................................122

    IV.6.1.5 Identificar Asociaciones entre clases .......................................122

    IV.6.1.6 Identificar Atributos...................................................................122

    IV.6.1.7 Refinamiento del modelo usando herencia ..............................125

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    7/173

    V

    IV.6.1.8 Modelo Dinmico......................................................................126

    IV.6.1.9 Modelo Funcional.....................................................................128

    IV.6.1.10 Iterar.......................................................................................130

    IV.6.2 Anlisis del Modelo.........................................................................130

    IV.6.2.1 Enunciado del problema (EP)...................................................130

    IV.6.2.2 Modelo de Objetos ...................................................................130

    IV.6.2.2.1 Identificacin de Objetos y Clases .................................130

    IV.6.2.2.2 Buscar sujetos en el EP .................................................132

    IV.6.2.3 Identificar Asociaciones entre clases .......................................134

    IV.6.2.4 Identificar Atributos...................................................................134

    IV.6.2.5 Modelo Dinmico......................................................................135

    IV.6.2.6 Modelo Funcional.....................................................................136IV.6.2.7 Iterar el proceso .......................................................................137

    IV.7 Anlisis del Controlador............................................................................138

    IV.7.1 Enunciado del problema (EP) .........................................................140

    IV.7.1.1Modelo de Objetos ....................................................................140

    IV.7.1.2Modelo Dinmico.......................................................................141

    IV.7.1.3Modelo Funcional......................................................................142

    CONCLUSIONES................................................................................................144BIBLIOGRAFA....................................................................................................152

    ANEXOS..............................................................................................................159

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    8/173

    VI

    LISTA DE FIGURAS

    Figura 1.1 Tipos de software ...................................................................................5

    Figura 1.2 Construccin de un ejecutable ...............................................................8

    Figura 1.3 Ensamblador, Compilador e Interprete.................................................10

    Figura 1.4 Niveles de los lenguajes de programacin ...........................................13

    Figura 1.5 Proceso de programacin.....................................................................15

    Figura 1.6 Comunicacin Cliente / Servidor ..........................................................17

    Figura 1.7 Clientes y servidores en Internet ..........................................................19

    Figura 1.8 Sistemas Distribuidos ...........................................................................21

    Figura 1.9 Cmputo Mvil......................................................................................23

    Figura 1.10 Flujos de Informacin en cmputo mvil. ...........................................24

    Figura 2.1 Palm m505............................................................................................27

    Figura 2.2 Palm IIIe ...............................................................................................28

    Figura 2.3 El procesador Dragonball .....................................................................29

    Figura 2.4 Arquitectura del PalmOS ......................................................................33

    Figura 2.5 Ejecucin de una aplicacin web reducida...........................................36

    Figura 2.6 Otra vista de una aplicacin web reducida ...........................................37

    Figura 2.7 Calculadora ..........................................................................................37Figura 2.8 Juego pBill para Palm...........................................................................38

    Figura 2.9 Reloj .....................................................................................................38

    Figura 2.10 Conduit de sincronizacin diaria de Palm...........................................39

    Figura 2.11 Secuencia de llamadas de Funciones ................................................41

    Figura 2.12 Niveles de programacin....................................................................43

    Figura 2.14 Generacin de un ejecutable..............................................................44

    Figura 2.15 Generacin de un ejecutable con PRC-Tools.....................................48

    Figura 2.16 PE-Coff de Microsoft...........................................................................49

    Figura 2.17 Satellite Forms....................................................................................51

    Figura 2.18 Pendragon Forms...............................................................................52

    Figura 2.19 Organizacin de la API de Palm.........................................................57

    Figura 3.1 Relacin entre los modelos de OMT.....................................................69

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    9/173

    VII

    Figura 3.2 El Proceso de desarrollo de OMT.........................................................70

    Figura 3.3 Casos de Uso.......................................................................................75

    Figura 3.4 Modelo Vista Controlador .....................................................................83

    Figura 3.5 Un solo Modelo puede tener varias vistas y controladores...................83

    Figura 3.6 Arquitectura de Modelo Vista Controlador............................................86

    Figura 4.1 Proceso de toma de decisiones............................................................97

    Figura 4.3 Agenda ...............................................................................................114

    Figura 4.4 Agregar una cita .................................................................................115

    Figura 4.5 Detalles de la cita ...............................................................................115

    Figura 4.6 Nota ligada a una cita.........................................................................116

    Figura 4.7 Agregar una Direccin........................................................................116

    Figura 4.8 Forma Acerca de ................................................................................117Figura 4.9 Catalogo del Constructor....................................................................118

    Figura 4.11 Diagrama de clases de la Vista ........................................................125

    Figura 4.12. Caso de Uso MV1A. El PalmOS inicia una aplicacin:....................126

    Figura 4.13. Caso de Uso MV1B. El Usuario o el PalmOS finalizan la aplicacin:

    .............................................................................................................................127

    Figura 4.14 Diagrama de flujo de eventos del caso de uso Arranque y finalizacin

    de una aplicacin.................................................................................................128Figura 4.15 Primera versin del diagrama de clases del Modelo ........................135

    Figura 4.16. Caso de Uso MD01. Usuario diagnstica un padecimiento.............135

    Figura 4.17 Diagrama de Flujo de Eventos de Elaboracin de un diagnstico....136

    Figura 4.18 Algoritmo para obtener un diagnstico .............................................137

    Figura 4.19 Diagrama de Clases del Modelo.......................................................138

    Figura 4.20 Funciones creadas por Codewarrior.................................................140

    Figura 4.21 Modelo de objetos del Controlador...................................................141

    Figura 4.22. El Usuario diagnostica padecimiento...............................................141

    Figura 4.23 Diagrama de clases de la Vista. .......................................................143

    Figura C2. Patrn Modelo Vista Controlador Adaptador......................................151

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    10/173

    VIII

    LISTA DE TABLAS

    Tabla 2.1. Archivos importantes de la Interfaz de Programacin de Aplicaciones de

    Palm.......................................................................................................................59

    Tabla 3.1 Lista de Modelos de PDAs por Fabricante.............................................87

    Tabla 3.1 (cont.) Lista de Modelos de PDAs por Fabricante .................................88

    Tabla 3.2. Comparacin entre los modelos de Palm Inc. ......................................89

    Tabla 3.3 Comparacin de modelos de Handhelds contra una PC.......................91

    Tabla 3.3 Comparacin de modelos de Handhelds contra una PC (cont).............92

    Tabla 3.3 Comparacin de modelos de Handhelds contra una PC (cont).............93

    Tabla 3.3 Comparacin de modelos de Handhelds contra una PC (cont).............94

    Tabla 4.2 Conocimiento del experto mdico, resumido en una tabla. .................102

    Tabla 4.10 Propiedades de los objetos de la interfaz grfica ..............................124

    Tabla C1. Comparacin de cdigo entre versiones del SVES.............................149

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    11/173

    INTRODUCCIN

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    12/173

    2

    Hasta hace relativamente poco tiempo, en los pases en vas de desarrollo comoMxico, los avances tecnolgicos llegaban con un importante retraso respecto a

    su aparicin en los pases desarrollados.

    Sin embargo, hoy en da, Internet, la televisin, las telecomunicaciones, etc.

    permiten que se tenga acceso a la tecnologa de forma mas o menos simultanea

    en todo el mundo.

    Un ejemplo de esta afirmacin es la plataforma de asistentes personales

    digitalizados desarrollados por la Firma Palm Inc. cuyo ltimo dispositivo: el Palm

    Tungnsten T, se present en Mxico antes que en el resto del mundo.

    Los asistentes personales digitalizados son una plataforma de un gran potencial,

    ya que poseen una capacidad de procesamiento poderosa a un precio

    relativamente bajo.

    Pero adems, en el rea de desarrollo de aplicaciones para estos dispositivos se

    ha presentado un fenmeno particular: los desarrolladores de programas para

    Palm estn dispersos por el mundo, y no solo en los pases ms industrializados o

    econmicamente ms poderosos. Este fenmeno esta ligado al hecho de que los

    detalles de la plataforma, la documentacin y las herramientas de desarrollo estn

    disponibles para todo el pblico, en forma totalmente gratuita.

    Con todo, la programacin de aplicaciones para dispositivos mviles es un rea de

    incipiente crecimiento en Mxico. Incluso en el mundo (segn cifras de Palm Inc.)

    el nmero de desarrolladores registrados es de apenas varios cientos.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    13/173

    3

    Esto ofrece a los programadores de los pases en vas de desarrollo la

    oportunidad de experimentar, de ser propositivos y no solo simples usuarios de la

    tecnologa importada.

    Sin pretender convertirse en la piedra angular de la programacin para

    dispositivos mviles en Mxico este trabajo busca, precisamente: proponer, dar

    ideas, pasar de ser usuarios a ser desarrolladores de nueva tecnologa.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    14/173

    CAPITULO I

    DESARROLLO DE SISTEMAS

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    15/173

    5

    I.1 Conceptos del Software

    A principios de los 80 no estaba claro cun importante sera el desarrollo de

    software. Hoy en da, se ha convertido en el eje de evolucin de la industria de la

    computacin, y es el motor que conduce la toma de decisiones comerciales. Esto

    ha provocado que cambie la percepcin que el pblico tenia del software: de ser

    un aditamento adicional a la computadora, a ser una plataforma de trabajo que

    corre sobre un hardware no especfico.

    En nuestros das el software tiene un doble papel: es un producto que permite

    explotar toda la potencia del hardware informtico; ya sea almacenado dentro de

    un telfono celular o dentro de una computadora bancaria, el software transforma

    informacin, produciendo, gestionando, modificando, mostrando o transmitiendo

    informacin, pero el software tambin sirve como vehculo para hacer entrega de

    un producto, ya que acta como la base de control de la computadora, lacomunicacin de informacin, y la creacin y control de otros programas.

    Figura 1.1 Tipos de software

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    16/173

    6

    Dentro del gran conjunto de programas representados por el termino "software",

    se pueden hacer dos grandes divisiones, de acuerdo a la funcin que

    desempean. Una formada por el llamado Software de Sistema, encargado de

    apoyar al usuario en la administracin de su hardware, y la otra conformada por el

    Software de Aplicacin, subconjunto que agrupa a todos los programas que

    resuelven necesidades y problemas especficos de los usuarios. As, cuando un

    usuario desea capturar un texto y darle formato, utilizar distintos tipos y tamaos

    de letra y revisarlo ortogrficamente, tiene que recurrir a un software de aplicacin.

    Igual debe hacerlo si desea capturar y manipular grandes volmenes de datos, o

    hacer muchos clculos o si lo que quiere es construir imgenes y darles

    animacin. Mientras que si respalda archivos o administra impresoras, estar

    usando software de sistema. Aunque el trmino "Sistema" se usa tambin comosinnimo de software, y en especial en el presente documento, especficamente

    del software de aplicacin.

    Pero, para que la computadora pueda ejecutar cualquier tarea, se le debe

    programar para que la haga, colocando en su memoria principal un algoritmo

    apropiado, expresado en algn lenguaje de programacin.

    I.2 Lenguajes de Programacin

    I.2.1 Qu es un lenguaje de programacin

    Como se menciona en el captulo anterior, se presenta la necesidad de expresar

    los algoritmos en una sintaxis no ambigua y a un nivel de detalle bien establecido.

    Estos dos requisitos se resuelven mediante el uso de primitivas. [Brookshear,

    1995] explica que una primitiva consiste en una estructura semntica bien definida

    junto con una sintaxis no ambigua para representarla.

    Tenemos entonces, que para representar algoritmos se debe contar con una

    coleccin suficientemente rica de primitivas que, junto con las reglas de

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    17/173

    7

    combinacin para representar estructuras ms complejas, constituyen un lenguaje

    de programacin.

    La Enciclopedia de Trminos de Microcomputacin define Lenguaje de

    programacin como los conjuntos de smbolos y de reglas que se pueden

    combinar en forma sistemtica para comunicar pensamientos e ideas, y

    especficamente aquellos que sirven para escribir instrucciones de computadora.

    El lenguaje Incluye vocabulario, y reglas o convenciones que rigen la forma y

    secuencia en que se escriben las instrucciones para su ejecucin en la

    computadora.

    Tambin para [Joyanes, 1988] un lenguaje de programacin es un conjunto de

    reglas, smbolos y palabras que permiten construir un programa. Al igual que los

    lenguajes humanos tales como el ingls o el espaol, los lenguajes de

    programacin poseen una estructura (gramtica o sintaxis) y un significado

    (semntica).

    La sintaxis es el conjunto de reglas que gobiernan la construccin o formacin de

    sentencias (instrucciones) vlidas en el lenguaje. La semntica es el conjunto de

    reglas que proporcionan el significado de una sentencia o instruccin del lenguaje.

    El vocabulario de un lenguaje es un conjunto de smbolos. Los smbolos usuales

    son: letras, dgitos, smbolos especiales (,;:/&+-*, etc.) y palabras reservadas o

    claves, y las reglas sintcticas son los mtodos de produccin de sentencias o

    instrucciones vlidas que permitirn formar un programa.

    Segn menciona [Brookshear, op. cit.], la implantacin de los lenguajes de

    programacin de alto nivel se basa en el proceso de convertir programas escritos

    en esos lenguajes en programas escritos en lenguaje de mquina.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    18/173

    8

    La traduccin de un programa consiste en tres actividades: anlisis lxico, anlisis

    sintctico y generacin de cdigo

    Figura 1.2 Construccin de un ejecutable

    El anlisis lxico es el proceso de reconocer qu cadenas de smbolos del

    programa que se ha de traducir (llamado programa fuente) representan en

    realidad un solo objeto elemental. Por ejemplo, la cadena de smbolos 153 no

    debe representarse como un 1 seguido de un 5 seguido de un 3, sino que debe

    reconocerse como la representacin de un solo valor numrico. De manerasimilar, aunque los identificadores que aparecen en un programa estn formados

    por varios caracteres, se deben interpretar colectivamente como un nombre, no

    como caracteres individuales.

    La segunda actividad del proceso de traduccin, el anlisis sintctico, es el

    proceso de analizar la estructura gramatical de un enunciado y reconocer el papel

    de sus componentes.

    A fin de simplificar la tarea del anlisis sintctico, la coleccin de estructuras de

    enunciados que tiene un lenguaje de programacin es menos variada que la de un

    A n l i s i s

    l x i c o

    A n l i s i s

    s i n t c t i c o

    Ge n e r a c i n

    d e c d i g o

    P r o g r a maF u e n t e

    P r o g r a mo b j e t o

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    19/173

    9

    lenguaje natural, y est limitada a unas cuantas formas cuidadosamente

    escogidas.

    La actividad final en la traduccin de un programa es la generacin de cdigo, esel proceso de construir secuencias de instrucciones en lenguaje de mquina que

    simulen a los enunciados reconocidos por el analizador sintctico, y es el que

    genera el producto final del proceso de traduccin: el programa objeto.

    I.2.2 Evolucin de los Lenguajes de Programacin

    Al igual que el software, hay varias formas desde las que pueden verse o

    clasificarse los lenguajes de programacin: por su nivel, por sus principalesaplicaciones, etc. Adems, estas visiones estn condicionadas por la evolucin

    histrica por la que ha transcurrido el lenguaje.

    Los primeros lenguajes de programacin -lenguajes de maquina y ensamblador-

    reciben el nombre de lenguajes de bajo nivel, debido a que los programadores que

    codifican en estos lenguajes deben escribir instrucciones con el nivel ms fino de

    detalle. Cada lnea de cdigo corresponde a una sola accin del sistemacomputacional. El lenguaje de maquina, el cual consta de cadenas de bits 0 y 1 es

    la "lengua parlante" de la computadora.

    El mecanismo de escoger nombres descriptivos para las celdas de memoria y usar

    nombres mnemnicos para representar cdigos de operacin, aument

    considerablemente la comprensibilidad de las secuencias de instrucciones de

    mquina.

    Cuando se introdujeron estas tcnicas, los programadores usaban esta notacin al

    disear los programas en papel, y luego la traducan a una forma que pudiera

    entender la mquina. Este proceso de traduccin es suficientemente sencillo como

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    20/173

    10

    para que la propia computadora lo pueda llevar a cabo, lo que dio lugar a que el

    uso de nombres mnemnicos se formalizara para dar origen a un lenguaje de

    programacin denominado "lenguaje ensamblador", y a un programa, tambin

    llamado "ensamblador" que traduca otros programas escritos en lenguaje

    ensamblador a lenguaje de mquina.

    Figura 1.3 Ensamblador, Compilador e Interprete

    Los lenguajes ensambladores representaron un gran avance en la bsqueda de

    mejores ambientes de programacin. Por ello, se les denomin lenguajes de

    segunda generacin, siendo la primera generacin la de los propios lenguajes de

    mquina.

    Aunque los lenguajes de segunda generacin tenan muchas ventajas respecto a

    su contrapartida de lenguajes de mquina, todava dejaban mucho que desear en

    cuanto a ofrecer el entorno de programacin definitivo. Despus de todo, las

    primitivas empleadas en los lenguajes ensambladores eran esencialmente las

    mismas que las del lenguaje de mquina correspondiente; la nica diferencia era

    la sintaxis de su representacin.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    21/173

    11

    Una consecuencia importante de esta ntima asociacin entre los lenguajes

    ensamblador y de mquina es que cualquier programa escrito en lenguaje

    ensamblador depende inherentemente de la mquina; esto es, las instrucciones

    del programa se expresan en trminos de los atributos de una mquina especfica.

    Por tanto, un programa escrito en lenguaje ensamblador no se puede transportar

    fcilmente a otra mquina porque se tiene que reescribir de modo que se ajuste a

    la configuracin de registros y al conjunto de instrucciones de la nueva mquina,

    ya que cada tipo de microprocesador tiene su propio lenguaje ensamblador

    asociado (entendiendo que el lenguaje Ensamblador es simplemente una

    representacin simblica del lenguaje mquina). Por tanto, es necesario un

    profundo conocimiento de la arquitectura de la computadora para poder realizar

    una programacin efectiva.

    Otra desventaja de los lenguajes ensambladores es que el programador, aunque

    no tiene que codificar las instrucciones en forma de patrones de bits, s est

    obligado a pensar en trminos de los pequeos pasos incrementales del lenguaje

    de la mquina, y no puede concentrarse en la solucin global de la tarea por

    realizar.

    Las primitivas elementales en que se debe expresar finalmente un producto no

    son necesariamente las primitivas que deben usarse al disearlo. El proceso de

    diseo se presta mejor al empleo de primitivas de alto nivel, cada una de las

    cuales representa un concepto asociado a una caracterstica importante del

    producto. Una vez terminado el diseo, se podrn traducir esas primitivas a

    conceptos de ms bajo nivel relacionados con los detalles de la implantacin.

    De acuerdo con esta filosofa se empezaron a crear lenguajes de programacin

    que fueran ms propicios para la elaboracin de software que los lenguajes

    ensambladores de bajo nivel. El resultado fue la aparicin de una tercera

    generacin de lenguajes de programacin que difera de las anteriores en que sus

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    22/173

    12

    primitivas eran de alto nivel y adems independientes de las mquinas.

    En general, la estrategia para crear lenguajes de programacin de tercera

    generacin fue identificar una coleccin de primitivas de alto nivel con las que se

    poda crear software. Todas estas primitivas se disearon de modo que se

    pudieran implantar como una secuencia de las primitivas de bajo nivel disponibles

    en los lenguajes de mquina.

    Una vez identificado este conjunto de primitivas de alto nivel, se escribi un

    programa llamado traductor, que traduca a lenguaje de mquina los programas

    expresados en dichas primitivas de alto nivel. Todo lo que tena que hacer el

    traductor era reconocer las primitivas y convertirlas en sus equivalentes en

    lenguaje de mquina.

    I.2.3 Clasificacin de los Lenguajes de Programacin

    Surgen as, los "lenguajes declarativos" que son ms parecidos al ingls en la

    forma en que se expresan y en su funcionalidad, y estn al nivel ms alto respecto

    a los otros. Son fundamentalmente lenguajes de rdenes, dominados por

    sentencias que expresan "lo que hay que hacer" en vez de "como hacerlo". Un

    ejemplo de estos lenguajes es el lenguaje estadstico SPSS, y el lenguaje de

    consulta estructurada en bases de datos (SQL). Estos lenguajes se desarrollaron

    con la idea de que los profesionistas pudieran asimilar ms rpidamente el

    lenguaje y usarlo en su trabajo, sin necesidad de conocimientos prcticos de

    programacin.

    Los lenguajes de "alto nivel" son los ms utilizados como lenguajes deprogramacin. Aunque no son fundamentalmente declarativos, estos lenguajes

    permiten que los algoritmos se expresen en un nivel y estilo de escritura

    fcilmente legible y comprensible por otros programadores. Adems, los lenguajes

    de alto nivel tienen normalmente la caracterstica de "transportabilidad". Es decir,

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    23/173

    13

    estn implementados sobre varias mquinas, de forma que un programa puede

    ser fcilmente "transportado" o transferido de una maquina a otra sin ninguna

    revisin sustancial. Es este sentido, se les denomina "independientes de la

    mquina".

    Ejemplos de estos lenguajes de alto nivel son Pascal, APL, FORTRAN, (para

    aplicaciones cientficas), COBOL (usado en aplicaciones de procesamiento de

    datos), LISP y PROLOG (para aplicaciones de inteligencia artificial) C y Ada (para

    aplicaciones de programacin de sistemas). Aunque existen actualmente en uso

    mas de 100 lenguajes de este tipo y muchos de ellos se encuentran en varias

    versiones.

    Figura 1.4 Niveles de los lenguajes de programacin

    Los lenguajes de muy alto nivel, que aparecieron por primera vez en la dcada de

    1960, se crearon para cubrir necesidades especializadas del usuario. Con ellos,

    solo se necesita prescribir lo que la computadora har en vez de como hacerlo.

    Este tipo de recurso facilita mucho la programacin. De este modo, los lenguajes

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    24/173

    14

    de alto y bajo nivel a veces se conocen como lenguajes procedurales, debido a

    que requieren que las personas escriban procedimientos detallados que indiquen

    a la computadora como realizar tareas individuales. Los lenguajes de muy alto

    nivel, en contraste reciben el nombre de lenguajes no procedurales.

    Los lenguajes de muy alto nivel presentan algunas desventajas graves: carecen

    de flexibilidad; generalmente, cada uno est diseado para un tipo especfico de

    tarea. No se puede, por ejemplo, procesar una nmina con un lenguaje de

    procesamiento de palabras. Debido a que se enfocan a aplicaciones especficas,

    los lenguajes de muy alto nivel a veces se conocen como lenguajes dependientes

    del problema. Una segunda desventaja principal es que hay muchas aplicaciones

    importantes que no son cubiertas por estos lenguajes. No obstante, en las reas

    para las cuales se encuentran disponibles, ofrecen obvias ventajas, tanto a los

    programadores como a los usuarios.

    I.2.4 El proceso de la programacin

    Originalmente, el proceso de programacin se realizaba por el laborioso mtodo

    de expresar todos los algoritmos en el lenguaje de mquina. El primer paso dado

    para eliminar estas complejidades fue acabar con el empleo de dgitos numricos

    para representar cdigos de operacin y operandos del lenguaje de mquina. As

    se extendi la costumbre de asignar nombres mnemnicos a los diversos cdigos

    de operacin y usarlos en vez de la representacin hexadecimal durante el

    proceso de diseo. Por ejemplo, en vez del cdigo de operacin para cargar un

    registro, el programador usara el nombre LDA (Cargar valor en el registro

    acumulador). En el caso de los operandos, se disearon reglas para que el

    programador pudiera asignar nombres (llamados identificadores) a posiciones dememoria y usar tales nombres en una instruccin en vez de las direcciones de

    memoria.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    25/173

    15

    Se podra considerar la programacin como el conjunto de actividades y

    operaciones tendientes a indicar a la computadora como debe realizar las

    funciones previstas en el algoritmo.

    El proceso completo se enlista a continuacin.

    1. Detectar o definir un problema

    2. Disear un Algoritmo de Solucin

    3. Escribir un programa

    4. Ejecutar el programa

    5. Validar resultados

    6. Depurar el programa

    Volver a (4)

    Figura 1.5 Proceso de programacin

    Este proceso no ha cambiado a lo largo del tiempo ni con la evolucin de los

    lenguajes de programacin. En todo caso, cada nueva generacin (lenguaje) ha

    ido haciendo ms fcil y / o eficiente, una o mas etapas de este proceso.

    I.3 Tipos de Sistemas de CmputoUn sistema es una coleccin de elementos y procedimientos que interactan para

    cumplir una meta. Un partido de ftbol, por ejemplo, se juega conforme a un

    sistema. Consta de una coleccin de elementos -dos equipos, un campo de

    juego, rbitros- y procedimientos -las reglas del juego- que interactan para

    determinar qu equipo es el ganador. Un sistema de trnsito es una coleccin de

    personas, mquinas, reglas de trabajo, tarifas y programas que llevan a las

    personas de un lugar a otro. Y un sistema computacional es una coleccin de

    personas, hardware, software, datos y procedimientos que interactan con el

    objeto de realizar tareas de procesamiento de datos.

    La funcin de un sistema, ya sea manual o computarizado, es mantener a la

    organizacin bien administrada y funcionando sin altibajos. Los sistemas se crean

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    26/173

    16

    y modifican en respuesta a las necesidades cambiantes de una organizacin y a

    las condiciones en transformacin del medio que la rodea. Cuando surgen

    conflictos en un sistema existente o se necesita un nuevo sistema, el desarrollo de

    sistemas entra en accin. El desarrollo de sistemas es un proceso que en forma

    muy general consta del anlisis de un sistema, el diseo de uno nuevo o las

    modificaciones a uno ya existente, la adquisicin del hardware y software

    necesarios y hacer que un sistema nuevo o modificado trabaje.

    I.3.1 Aplicaciones Monolticas

    Los procesos contables sirvieron de punto de entrada a los primeros proyectos

    informticos. Paulatinamente los sistemas asimilaron una mayor cantidad de

    responsabilidades convirtindose as en grandes aplicaciones monolticas,

    bloques de software cimentados sobre otros bloques. En esta arquitectura, toda la

    "inteligencia" del sistema esta concentrada en una computadora central (host) y

    los usuarios interactan con ella a travs de terminales que reciben las

    instrucciones por medio de un teclado y las envan al host. Esta interaccin no

    esta limitada a cierto hardware, ya que los usuarios pueden conectarse usando

    PCs o terminales de trabajo de Unix, etc.

    Una limitacin de esta arquitectura es que rara vez soporta interfaces grficas, opuede acceder a mltiples bases de datos.

    I.3.2 Modelo Cliente / Servidor

    Debido a la complejidad que pueden alcanzar las redes de computadoras, estas

    se organizan en una serie de capas o niveles, cada una construida sobre la inferior

    [Tanembaum, 1997]. La Arquitectura de la red indica el nmero de capas, su

    nombre, contenido y funcin, sin embargo, en todas las arquitecturas el propsitode cada capa es ofrecer servicios a las capas superiores, estableciendo una

    conversacin con las capas similares de otros equipos.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    27/173

    17

    Las reglas y convenciones que se siguen en estas conversaciones se conocen

    como protocolos de comunicacin entre capas. Y el conjunto de capas y

    protocolos se conoce como arquitectura de red.

    La arquitectura "peer to peer" se refiere a un tipo de red en la que cada estacin

    de trabajo tiene capacidades y responsabilidades equivalentes, por lo que es

    econmica y fcil de implementar, aunque cuando esta sometida a grandes cargas

    de trabajo no ofrece el desempeo de otras arquitecturas.

    El termino cliente / servidor fue usado por vez primera en la dcada de los 80

    para referirse a las computadoras personales (PC) conectadas a una red. Elmodelo Cliente / Servidor como se concibe actualmente empez a ganar

    aceptacin a finales de esa misma dcada.

    En este modelo, un cliente es un ente que solicita servicios o recursos, mientras

    que el servidor es el ente que los ofrece. Estos entes pueden ser computadoras o

    procesos en una red. Los servicios ofrecidos pueden ser archivos, dispositivos e

    incluso procesamiento de instrucciones.

    Figura 1.6 Comunicacin Cliente / Servidor

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    28/173

    18

    El rol del proceso servidor puede ser asumido por el mismo sistema operativo, por

    un equipo despachando archivos en una red e incluso por otra computadora de las

    mismas caractersticas fsicas que el cliente pero con la habilidad de ofrecer un

    servicio del que aquel carece. [Sadoski, 1997]

    Desde el punto de vista de la programacin, se considera a la arquitectura cliente /

    servidor como la extensin lgica de la programacin modular.

    La programacin modular se basa en el hecho de que al separar una pieza de

    software grande en partes ms simples, crea la posibilidad de que se faciliten el

    desarrollo y mantenimiento del todo. La arquitectura cliente / servidor va masadelante reconociendo que estos mdulos no requieren ejecutarse dentro del

    mismo espacio de memoria. La continuacin de este concepto es que los clientes

    y servidores se ejecuten en las plataformas de hardware y software que resulten

    ms apropiadas para el desempeo de sus funciones. Los programas servidores

    normalmente reciben las solicitudes de los programas clientes, ejecutan algn tipo

    de manipulacin con los datos (recuperar datos de una Base de Datos, efectuar

    algn clculo, implementar alguna regla de negocio, etc.), y envan la respuesta

    apropiada al cliente.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    29/173

    19

    Figura 1.7 Clientes y servidores en Internet

    En el modelo cliente / servidor, el procesamiento de la computadora se divide

    entre los "clientes" de una red y los "servidores", con cada funcin asignada a la

    mquina con ms capacidad para llevarla a cabo (la parte del cliente en una

    aplicacin corre en el sistema de los clientes, y la parte de la aplicacin

    correspondiente al servidor, en la o las computadoras servidores). El usuario

    generalmente interacta solo con la porcin del cliente de la aplicacin, que en

    general consiste en la interfaz de usuario, el proceso de captura de datos, la

    consulta a la base de datos y la obtencin de informes. El servidor realiza las

    funciones de fondo, no visibles por los usuarios, como la administracin de los

    dispositivos perifricos o el control del acceso a las bases de datos compartidas.

    La divisin exacta de las tareas depende de los requerimientos de las

    aplicaciones, requerimientos de procesamiento, nmero de usuarios y recursos

    disponibles. Entre las tareas del cliente pueden incluirse la obtencin de las

    entradas del usuario, hacer solicitudes de datos a los servidores, realizar clculos

    en datos locales y desplegar resultados. La parte del servidor capturar o

    procesar los datos.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    30/173

    20

    En resumen, las caractersticas bsicas de la arquitectura son:

    La combinacin de un cliente o front-end que interacta con el usuario, y un

    servidor o back-end que interacta con un recurso compartido. El procesocliente contiene la lgica especfica de la solucin y ofrece una interfaz

    entre el usuario y el resto del sistema, mientras que el proceso servidor

    acta como el motor de software que administra los recursos compartidos

    (bases da datos, impresoras, mdems, etc.).

    Los procesos front-end y back-end ocupan recursos fundamentalmente

    diferentes (espacio en disco, velocidad del procesador, dispositivos deentrada / salida, etc.). El sistema operativo tambin puede ser diferente.

    Tpicamente se trata de ambientes heterogneos, conformados por

    computadoras de diferentes marcas. El cliente y el servidor se comunican a

    travs de una conjunto bien definido de interfaces de programas -

    aplicacin (APIs, por sus siglas en ingles) o de llamadas a Procedimientos

    Remotos (RPCs).

    Una caracterstica muy importante de estos sistemas es su escalabilidad.

    Ya que pueden ser escalados tanto horizontalmente (aadiendo o quitando

    clientes), como verticalmente (migrando los servicios a equipos ms

    potentes) con un impacto mnimo en su desempeo general.

    El modelo cliente / servidor requiere que los programas de aplicaciones sean

    escritos como dos componentes separados de software que corren en distintas

    mquinas pero que operan como una sola aplicacin.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    31/173

    21

    I.3.3 Sistemas Distribuidos

    Los sistemas distribuidos surgen en 1993, y se basan en el uso de modelos de

    negocio compartidos y reusables. El negocio se define entonces como un sistema

    compuesto a su vez de otros subsistemas de negocio. Una vez ms, se trata de

    una extensin del modelo cliente / servidor en donde los equipos que ofrecen

    servicios se pueden encontrar separados unos de otros.

    Figura 1.8 Sistemas Distribuidos

    El funcionamiento de Internet esta basado en este concepto, ya que bsicamente,

    se puede considerar al Web como un sistema distribuido de hipermedia [Wilde,

    1999] en el que la informacin se encuentra almacenada en forma de pginas

    Web, que se encuentran entrelazadas unas con otras mediante ligas URL.

    Existen programas cliente, llamados navegadores, y programas servidores

    localizados en diferentes lugares geogrficos. El programa servidor se ejecuta en

    un host de Internet, y responde a las solicitudes de informacin que le hacen losclientes. Cuando recibe una solicitud, el servidor debe responderla en forma

    simple, dejando al cliente o navegador, la responsabilidad de determinar la forma

    apropiada en que esta informacin debe ser mostrada al usuario. Este mecanismo

    de trabajo facilita que en los servidores se pueda mantener almacenada

    informacin en formatos muy diferentes.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    32/173

    22

    El navegador es entonces un programa que se usa para tener acceso a los

    servidores de Web y que despliega los documentos recuperados de esos

    servidores. Desde el punto de vista de la tecnologa cliente-servidor, un navegador

    es el cliente del servidor de Web.

    I.3.4 Cmputo Mvil

    Actualmente, la comunicacin de datos, esto es, el intercambio de informacin

    (archivos, faxes, correo electrnico, acceso a Internet) se realiza usando redes de

    telecomunicacin ya existentes. Los sistemas de comunicacin mvil con voz

    (telfonos celulares, radios de onda corta, etc.) estn ampliamente establecidos en

    todo el mundo y en los ltimos aos ha habido un rpido crecimiento en el nmero

    de suscriptores de las diferentes redes de telefona celular. Una extensin de esta

    tecnologa es la habilidad de enviar y recibir datos a travs de estas redes

    celulares, siendo este el principio bsico del Cmputo Mvil.

    La tecnologa de intercambio de datos a travs de comunicacin mvil se a

    convertido en una rama importante de la industria, evolucionando rpidamente y

    permitiendo hoy en da que sus usuarios puedan transmitir y recibir datos desde

    lugares remotos, a travs de dispositivos como telfonos celulares y mdems

    conectados a laptops y agendas electrnicas.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    33/173

    23

    Figura 1.9 Cmputo Mvil

    El cmputo mvil permite sincronizar y controlar procesos y eventos donde el

    acceso a datos e informacin es prcticamente imposible por otros medios.

    Algunos ejemplos de aplicacin del cmputo mvil son: Acceso a expedientes clnicos en lnea en casos de emergencia.

    Envo de fotografas de siniestros desde el lugar del accidente para su

    anlisis, interpretacin y devolucin (ajustadores de seguros).

    Monitoreo y diagnstico especializado de mquinas para su mantenimiento

    y reparacin en el campo (por ejemplo bombas de agua, de gas, de aceite).

    Acceso a planos y datos para la administracin de servicios pblicos

    (drenajes, energa elctrica).

    Monitoreo de descargas de aguas residuales.

    El cmputo mvil facilita los servicios de venta, facturacin, cobranza y calidad en

    el servicio obteniendo y proporcionando datos e informacin en el lugar y en el

    momento donde se realiza la operacin. Por ejemplo, proporcionando informacin

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    34/173

    24

    sobre productos almacenados o en produccin, informando sobre el status o

    localizacin de un pedido ya realizado o informando sobre el estado crediticio de

    un cliente, confirmando cantidades y materiales recibidos por el cliente y

    optimizando transacciones de venta y produccin, capturando los datos del cliente

    y llevndolos directamente a los almacenes de envo o reas de produccin.

    Figura 1.10 Flujos de Informacin en cmputo mvil.

    En otros pases, el cmputo mvil ha resultado de mucha utilidad en eventos

    especiales de conteo o levantamiento de encuestas: Aplicando encuestas sobre

    preferencias o evaluando algn producto o servicio, contando peridicamenteartculos de venta en estantes especializados y enviando esta informacin a

    centros de logstica (peridicos, revistas).

    A travs del uso de circuitos integrados (microlocalizadores) y ayuda satelital es

    posible rastrear productos, unidades mviles o bien personas, permitiendo

    replantear rutas de servicio o transporte en casos de emergencia (accidentes,

    robos), proponer mejores rutas de acceso, localizar unidades para el control deparadas y consumo de combustible, dar seguimiento a unidades de transporte

    bancario.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    35/173

    25

    I.3.5 Comentarios Finales

    Como se mencion al principio del captulo, una aplicacin puede constituir en si

    misma un sistema, pero tambin puede ser que la aplicacin mvil sea parte de un

    sistema de informacin ms grande. Esto se aplica tambin para las aplicaciones

    en cmputo mvil: los datos almacenados en el dispositivo mvil pueden ser

    procesados por este mismo, o ser enviados a otro (normalmente un equipo fijo,

    mas grande) para su procesamiento.

    Este trabajo pretende explorar las capacidades que tienen los dispositivos PDA

    para recopilar y procesar informacin, adems de delinear una metodologa que

    facilite el desarrollo de aplicaciones para estos.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    36/173

    CAPITULO II

    DESARROLLO DE APLICACIONES PARA

    ASISTENTES PERSONALES DIGITALIZADOS

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    37/173

    27

    II.1 Introduccin a las PDAs

    Antes de hablar sobre el desarrollo de aplicaciones para Asistentes PersonalesDigitalizados (PDAs) por sus siglas en ingles, se mencionarn algunascaractersticas de estos.

    Se har una mencin especial de las caractersticas de las aplicaciones de la

    marca Palm, que actualmente, segn su fabricante, son las ms ampliamentedifundidas.

    Figura 2.1 Palm m505

    El trmino PDA define a "cualquier dispositivo mvil, que pueda ser operado con

    una mano, y que tenga la capacidad de almacenar y procesar informacin para

    uso personal o de negocio, as como administrar la agenda y el directorio

    telefnico. El trmino handheld se usa como sinnimo de PDA.

    Algunas PDAs tienen un pequeo teclado, otras ms tienen una rea de la

    pantalla capaz de detectar trazos y reconocer escritura; algunas incluso poseen la

    capacidad de reconocer voz.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    38/173

    28

    Figura 2.2 Palm IIIe

    Adems de los usos descritos, se han desarrollado muchas aplicaciones para

    PDAs y recientemente, se les empieza a combinar con telfonos y sistemas de

    radio localizacin.".

    La compaa pionera en el desarrollo de PDAs fue Apple, quien introdujo al

    mercado su computadora Newton en 1993.

    Segn la pgina oficial de Palm (www.palm.com): "los modelos de esta compaa

    constituyen el 78% del mercado actual de PDAs, y su xito se basa en el hecho de

    que, mas que tratar de hacer que sus dispositivos se comporten como

    Computadoras Personales, han tratado de hacer algo mejor, basados en cuatro

    preceptos bsicos: sus dispositivos son simples, expandibles , de alta usabilidad y

    movilidad". Esta filosofa de diseo, esta siendo apoyada por ms de 145,000

    desarrolladores alrededor del mundo.

    II.2 Arquitectura de Hardware de la plataforma Palm

    Hasta los modelos de la serie M50X, absolutamente todos los modelos de Palm,

    usan un procesador de Motorola llamado Dragonball, y especficamente algunos

    modelos emplean variantes del Dragonball como son el EZ o el VZ.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    39/173

    29

    Figura 2.3 El procesador Dragonball

    El Dragonball fue ideado como una versin de bajo consumo de Motorola

    MC68000, que ya usaban a finales de los 80s computadoras como la Amiga o el

    Atari. Existen tres variantes de este procesador: el modelo base, denominado DB

    (Dragonball), el EZ que se caracteriza por tener un diseo ms simple, menor

    tamao, menor costo y nuevas caractersticas como son un controlador de LCD

    mejorado, nuevo hardware de control de sonido y diferentes puertos de E / S.

    Por ltimo, el modelo VZ, que aporta una mayor velocidad de proceso (hasta 33

    MHz) y menor consumo de energa, entre otras caractersticas.

    En estos dispositivos, que a diferencia de las computadoras de escritorio, no

    cuentan con un medio de almacenamiento secundario (discos flexibles o discos

    duros, etc.), la memoria cobra un papel importante, por que todos los programas ydatos estn almacenados en memoria y se requiere un rpido acceso a estos.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    40/173

    30

    La memoria RAM empleada en estos dispositivos es rpida y no voltil, gracias a

    una alimentacin continua de corriente, incluso cuando el dispositivo est

    apagado.

    Los modelos de Palm incluyen dos tipos de memoria, la memoria ROM donde se

    aloja el sistema operativo y la memoria RAM donde residen los programas de

    usuario y sus datos. El tamao de las ROM habitualmente es de 2 MB, mientras

    que el tamao de RAM es variable, pudiendo oscilar entre los 128 KB (del modelo

    Pilot 1000) hasta los 16 MB de los modelos ms recientes. Desde el punto de vista

    del programador, la memoria que se puede solicitar al sistema (Dynamic Heap) es

    mucho menor, varia entre 32 KB y 256 KB.

    A partir de los modelos Palm III y Palm IIIe, los dispositivos estn equipados con

    memoria flash ROM que permite actualizar el sistema operativo.

    Tambin existen tarjetas de memoria que permiten aumentar la capacidad de

    almacenamiento de los dispositivos. Por ejemplo, hay tarjetas CompactFlash para

    dispositivos como el TRGpro de HandEra que permiten almacenar 40MBadicionales.

    Sony por su parte comercializa otro dispositivo de expansin de memoria conocido

    como MemoryStick que permite almacenar hasta 128MB de informacin. Sin

    embargo este tipo de memoria es ms lento que la memoria RAM incluida en los

    dispositivos.

    Las dos formas que tiene un usuario de interactuar con el Palm son:

    a travs del digitalizador de escritura y

    a travs de la pantalla.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    41/173

    31

    El digitalizador de escritura no es como tal una parte del hardware. En esencia, es

    un software que, haciendo uso de redes neuronales reconoce los caracteres que

    escribimos sobre la pantalla tctil.

    Comnmente la pantalla de cristal lquido tiene unas dimensiones de 160 x 160

    pxeles (los modelos recientes ofrecen resoluciones mayores). La frecuencia de

    actualizacin de la pantalla es, en la mayora de los casos, de 85 Hz. Las pantallas

    pueden manipular colores desde cuatro tonos de gris (en los equipos que emplean

    el Palm OS 3.0 o superior), hasta 65536 colores, usando 16 bits de profundidad de

    color.

    En todos los modelos la pantalla es tctil, para permitir la interaccin con el

    usuario, y adems, algunos de ellos permiten iluminar la pantalla para trabajar en

    lugares con poca luz. Cabe destacar que, aunque el mtodo principal de

    introduccin de datos es el digitalizador de escritura, tambin es posible hacerlo a

    travs de un teclado en pantalla.

    Las posibilidades de conexin ya sea entre Palms o con otros dispositivos, es unaparte muy importante de estos, ya que permitirn compartir informacin, de modo

    que no se conviertan en una plataforma aislada.

    El Palm tiene 2 formas de interconectarse con otros dispositivos; mediante

    comunicaciones por infrarrojo (IrDA), o mediante comunicaciones serie.

    El sistema IrDA permite comunicarse y compartir informacin con cualquier

    dispositivo que soporte este protocolo, como por ejemplo, un telfono mvil, una

    impresora u otros dispositivos Palm. Para realizar una comunicacin mediante

    IrDA, los dispositivos que se van a comunicar deben estar situados a una distancia

    mxima de un metro y sin obstculos en medio.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    42/173

    32

    El puerto serie permite conectarse tanto con la PC como con otros dispositivos. La

    comunicacin serie esta completamente basada en interrupciones para la

    transmisin de datos. Se utilizan cinco seales externas para soportar esta

    comunicacin:

    SG (signal ground)

    TxD (transmit data)

    RxD (receive data)

    CTS (clear to send)

    RTS (request to send)

    La PDA se comunica con la PC a travs de la base (cradle). La base es una

    interfaz entre el PC y el Palm. Se trata de un soporte de plstico cuyas funciones

    son: recargar las bateras del Palm (cuando el modelo lo permite) y sincronizar los

    datos del Palm con la PC mediante la pulsacin de un botn.

    La sincronizacin a travs de la base se realiza usando el puerto serie, pero los

    modelos recientes de Palm incluyen un puerto de infrarrojos y soporte para el

    protocolo de comunicaciones TCP/IP (empleado por ejemplo por los navegadores

    web) .

    Recientemente, Palm a incorporado el estndar Bluetooth en todos sus

    dispositivos.

    II.3 Arquitectura del Sistema Operativo PalmPalm OS es un sistema operativo diseado especficamente para su utilizacin en

    PDAs, comercializado por la empresa Palm Computing. Este sistema operativo

    presenta caractersticas especficas debido a las restricciones de los dispositivos

    que lo emplean. Estas restricciones son esencialmente tres: tamao del

    dispositivo, memoria y capacidad de procesamiento de datos.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    43/173

    33

    Figura 2.4 Arquitectura del PalmOS

    Como se muestra en la figura anterior (Figura 2.4) el sistema operativo da soporte,

    desde los servicios y libreras del sistema hasta la capa de abstraccin del

    hardware.

    A continuacin se describen los elementos mas relevantes del sistema operativo,

    desde el punto de vista del programador.

    Eventos: Los eventos informan a la aplicacin de qu es lo qu est ocurriendo en

    el sistema, desde una pulsacin de un botn de un teclado externo, hasta el inicio

    de una operacin de sincronizacin. Se pueden distinguir eventos de alto nivel y

    de bajo nivel. Los de alto nivel son los relacionados con la aplicacin en si, por

    ejemplo, si se selecciona un tem del men. Los de bajo nivel son aquellos

    relacionados con el sistema operativo.

    La memoria y sus limitaciones: La memoria en los Palm es un recurso muy

    escaso. La RAM est dividida en dos reas, la memoria de almacenamiento

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    44/173

    34

    (sistema de archivos) y memoria dinmica (la que emplea la aplicacin durante la

    ejecucin). Cada una de estas es gestionada por una parte distinta del sistema

    operativo, en el primer caso el Database Manager y en el segundo por el Memory

    Manager.

    La memoria dinmica se utiliza, tanto para las variables globales y variables

    reservadas por el Palm OS, como para las variables globales, espacio de stack y

    reservas dinmicas de la aplicacin. La memoria esta dividida en tres bloques

    (Heap) que son el dinmico, de almacenamiento y de ROM.

    Los Heaps son bloques de memoria reservados en forma contigua, estos bloquespueden estar en tres estados distintos: libres, mviles y fijos.

    Controles y formularios: Un formulario es, en general, una pantalla para cada vista

    de la aplicacin.

    Los formularios contienen controles. Un control puede ser: un botn, una etiqueta,

    una lista, una tabla, un bitmap, un campo de texto o cualquier otro objeto definido

    por el usuario (Gadgets).

    Los controles se almacenan como recursos de la aplicacin, estos son necesarios

    cuando se necesita crear un elemento de interfaz de la aplicacin, ya que un

    recurso define cual es la apariencia del elemento y donde est colocado dentro del

    formulario.

    Mens: Los mens estn asociados con un formulario, generalmente se definen

    en tiempo de compilacin, aunque estos mens pueden cambiarse

    dinmicamente. Los mens se componen de barras de men y de opciones dentro

    de estos. Estas opciones del men podrn tener asociados atajos (shortcuts). Los

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    45/173

    35

    shortcuts son letras del alfabeto que permitirn acceder rpidamente a las

    opciones sin desplegar el men.

    Comunicaciones: Palm OS da soporte a tres protocolos de comunicaciones IrDA,serie y TCP/IP. El sistema operativo proveer de una serie de funciones para

    trabajar con estos protocolos. TCP/IP esta disponible slo sobre el puerto serie o

    sobre una conexin con MODEM. Para utilizar TCP/IP se utiliza el Palm Software

    Development Kit (Herramientas de Desarrollo de Software, distribuidas

    gratuitamente por Palm), esta Interfaz de desarrollo de aplicaciones tiene una

    librera de sockets y esta diseada de forma muy similar al API de sockets de

    Berkley.

    II.4 Tipos de aplicaciones

    El PalmOS almacena tanto datos como programas en forma de bases de datos.

    En general, se pueden desarrollar tres tipos de aplicaciones para la plataforma

    Palm.

    II.4.1 Aplicaciones Web reducidas

    Una aplicacin Web en un Palm es un conjunto de paginas HTML comprimidas en

    un formato especial (PQA). El funcionamiento de una aplicacin de Web reducida

    es el siguiente: las pginas Web comprimidas residen el Palm y los usuarios

    rellenan los formularios HTML suministrados por estas paginas. Cuando el usuario

    pulsa el botn enviar, la aplicacin Web enva la peticin a un servidor proxy. Este

    servidor la traduce en una peticin HTTP, y la reenva al servidor Web adecuado.

    Por norma general este servidor Web ejecuta un script CGI que genera la pagina

    de respuesta. Esta pagina es reenviada de nuevo al proxy que la comprime y la

    descarga al dispositivo para que pueda presentarse.

    Estas paginas HTML comprimidas deben ser compactas y pequeas,

    considerando que se van a mostrar en la pequea pantalla de la Palm. Tambin

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    46/173

    36

    hay que tener en cuenta que se descargan a travs de una conexin relativamente

    lenta.

    Figura 2.5 Ejecucin de una aplicacin web reducida.

    La ejecucin de estas pginas web se realiza mediante el visor de aplicaciones

    web. Cuando el usuario pulsa el icono de una aplicacin web, se lanzar primero

    el visor y este mostrar el contenido de la pagina web.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    47/173

    37

    Figura 2.6 Otra vista de una aplicacin web reducida

    II.4.2 Aplicaciones estndar de Palm

    Se definen como aplicaciones con un slo hilo de control, dirigidas a eventos y

    mono-tarea. Esto implica que slo habr una aplicacin en ejecucin en uninstante de tiempo dado. En general, los usuarios "navegan" entre las diferentes

    aplicaciones, en lugar de salir o terminar aplicaciones como en una PC.

    Figura 2.7 Calculadora

    Por otro lado, aunque las aplicaciones Palm estn dirigidas a eventos, tambin

    pueden realizar funciones fuera del ciclo de eventos, como respuesta a otras

    peticiones del sistema operativo. Por ejemplo, si se realiza la bsqueda de una

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    48/173

    38

    palabra, se intentar encontrar en todos los registros de todas las aplicaciones esa

    palabra. Esto implica que se lanzar cada una de las aplicaciones y se le pedir

    que verifique sus registros para ver si contiene esa palabra.

    Figura 2.8 Juego pBill para Palm

    Las aplicaciones Palm OS se compilan en archivos PRC (Palm Resource File). Un

    mismo fichero PRC correr en todos los dispositivos Palm OS.

    Figura 2.9 Reloj

    II.4.3 Conduits

    Un conduit es un programa que se ejecuta en la PC, cuando se presiona el botn

    de sincronizacin en la base (cradle) de la Palm. Su funcin es la de realizar la

    sincronizacin de los datos entre aplicaciones de la PC y aplicaciones en la Palm.

    Este tipo de aplicaciones slo se desarrolla cuando se debe realizar unatraduccin del formato de los datos. Existe un kit de desarrollo especial para estasaplicaciones: Palm Conduit Development Kit (CDK), adems de las solucionesofrecidas por terceros.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    49/173

    39

    Figura 2.10 Conduit de sincronizacin diaria de Palm

    II.5 Estructura de una aplicacin Palm.

    Como menciona [Forester, 2000] la programacin de aplicaciones para Palm OSest orientada a eventos. Estos eventos pueden ser producidos por el usuario (por

    ejemplo al escribir sobre la pantalla) por el sistema operativo o por la aplicacin

    misma, y son almacenados en la cola de eventos del sistema operativo. Estos son

    procesados segn el mtodo FIFO (First In First Out: el primer evento que entra es

    el primero que se procesa).

    Es responsabilidad del programador decidir para que eventos se programar unarespuesta especfica, dejando el control del resto al Sistema Operativo.

    Cuando el sistema operativo lanza una aplicacin, invoca a la funcin PilotMain y

    le pasa como parmetro un cdigo que indica a la aplicacin la forma en que debe

    arrancar; si seala que la aplicacin debe arrancar y mostrar su interfaz de

    usuario, se denomina un arranque normal.

    Pero este cdigo puede indicar a la aplicacin que debe arrancar, realizar alguna

    tarea pequea y luego terminar (como cuando se usa la funcin global de

    "encontrar", que busca una cadena de caracteres en las bases de datos de todas

    las aplicaciones). Existen cdigos de arranque para muchos propsitos, como

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    50/173

    40

    abrir una base de datos en un registro predeterminado, notificar a la aplicacin que

    se acaba de realizar una sincronizacin exitosa, etc.

    Adems, existe una estructura de datos que describe el tipo de evento que estaocurriendo en un momento dado [Ibid.]. En esta estructura se almacena el tipo de

    evento que esta ocurriendo (por ejemplo, presionar con el lpiz algn botn) as

    como la informacin relativa a ese evento (por ejemplo, las coordenadas en las

    que el lpiz toc la pantalla).

    Si se realiz un arranque normal, la funcin PilotMain invoca a StartApplication (en

    esta funcin se recomienda inicializar las bases de datos y obtener del sistemaoperativo las preferencias del usuario), enseguida, llama a la funcin

    FrmGotoForm, quien se encarga de cargar y mostrar la forma indicada.

    Despus la ejecucin pasa a la funcin EventLoop, quien es la responsable de

    procesar todos los eventos recibidos por la aplicacin.

    Cada nuevo evento se acomoda al final de la cola de eventos, de donde la funcin

    EventLoop los va tomando y procesando, en el siguiente orden:

    Eventos del sistema

    Eventos de la barra de men.

    Eventos que carguen en memoria una nueva forma

    Eventos especficos de la forma que se encuentra activa.

    Este proceso se repite mientras existan eventos pendientes en la cola. Y la

    funcin termina cuando recibe un appStopEvent. En este momento, regresa la

    ejecucin a PilotMain.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    51/173

    41

    Finalmente, la funcin StopApplication cierra las bases de datos, indica al sistema

    operativo que almacene las preferencias del usuario y realiza todas las tareas

    necesarias para que la aplicacin termine en forma correcta.

    El siguiente diagrama muestra el orden en que son llamadas las principales

    funciones de cualquier aplicacin Palm:

    Figura 2.11 Secuencia de llamadas de FuncionesLa funcin denominada en el diagrama como PersonalHandleEvent es la

    encargada de procesar los eventos generados por el usuario en la forma activa.

    As, si el usuario posiciona el apuntador sobre un campo de texto, o si presiona un

    botn, o mueve la barra de desplazamiento de una tabla, en esta funcin se debe

    codificar la respuesta a esos eventos.

    II.5.1 Como se genera un ejecutable

    Desarrollar aplicaciones para los Asistentes Personales Digitalizados,

    independientemente de la marca que los construya, conlleva tomar en cuenta

    algunas cuestiones, empezando por que la programacin puede desarrollarse en

    C o C++ (o varios otros lenguajes para los que existen compiladores que generan

    cdigo que se puede ejecutar en PDAs), sin olvidar que, como se ha citado

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    52/173

    42

    anteriormente, una aplicacin para Palm es simplemente una base de datos que

    contiene por una parte el cdigo ejecutable y por otra los elementos grficos y

    dems datos.

    En el caso especfico de la programacin para dispositivos Palm, se deben

    generar archivos de "recursos" que describen la interfaz con el usuario y su

    funcionamiento. Normalmente, estos archivos se obtienen usando un programa

    independiente del compilador o del ambiente de desarrollo integrado.

    Los archivos de recursos contienen la jerarqua de objetos de la interfaz grfica,

    empezando por la 'forma' (similar a la 'ventana' cuando se desarrolla paraWindows) a la que se le van aadiendo otros objetos como barras de men (a las

    que a su vez se les aaden mens), botones, campos de texto, tablas, etc. En

    este archivo se deben inducir tambin los mapas de bits (bitmaps) que se van a

    usar en la aplicacin.

    El resto del proceso de desarrollo consiste en codificar la respuesta a los eventos

    que le pueden ocurrir a los diferentes objetos de la forma.

    Una vez que se ha generado un programa, se procede a compilarlo, depurarlo,

    corrigiendo los eventuales errores y repitiendo esta ultima parte del proceso hasta

    que se obtiene un programa libre de errores.

    En esta etapa, es poco conveniente probar los programas en dispositivos reales,

    por que existen errores que pueden incluso, provocar la prdida total de la

    informacin almacenada en la Palm. Por esto ltimo, se recomienda probar la

    aplicacin en un programa, llamado PalmOS Emulator, que se ejecuta en la PC y

    simula totalmente la funcionalidad de una Palm (1).

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    53/173

    43

    Cuando se han eliminado todos los errores, y el programa se ejecuta sin

    problemas en el emulador, esta listo para instalarse en un dispositivo real.

    Codigo

    Maquina

    01

    0Loader

    Memoria

    Ensamblador

    Mnemonicos

    mov AX,0

    llda BX

    Ensamblador Ligador

    Lenguaje

    de

    Alto

    Nivel

    Lenguajes

    de

    Programacin

    (P.E.Pascal)

    Compilador

    Interprete

    Figura 2.12 Niveles de programacin

    II.5.2 Common Object File Format

    II.5.2.1 Archivo Objeto

    Como se explica en [PCWebopaedia, 2003] cuando se programa, se escribe

    cdigo en forma de cdigo fuente: instrucciones de algn lenguaje particular, como

    C o Fortran. Sin embargo las computadoras slo pueden ejecutar instrucciones

    escritas en lenguaje de mquina.

    Para pasar de cdigo fuente a lenguaje de mquina, los programas deben sertransformados por un compilador. El compilador genera un archivo intermedio con

    cdigo llamado objeto. Este archivo sirve de entrada al encadenador (linker) que

    resuelve las llamadas que el archivo objeto hace a las libreras propias del

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    54/173

    44

    lenguaje. El termino "archivo objeto" no necesariamente implica alguna conexin

    con la programacin orientada a objetos.

    Como se ha sealado, cuando un compilador procesa el cdigo fuente (en nuestro

    caso, en C o C++), genera un archivo objeto, que posee un formato especfico. En

    Windows, los compiladores generan archivos en formato PE COFF. En Linux,

    GCC puede generar archivo en formato ELF (u otro, dependiendo de la necesidad

    del programador y la configuracin del ambiente de desarrollo).

    Figura 2.14 Generacin de un ejecutable.

    II.5.2.2 COFF

    Debido a que un microprocesador solo ejecuta sus propias instrucciones nativas,

    una solucin eficiente para desarrollar programas que se ejecuten en una

    plataforma diferente a aquella en la que se programa, consiste en crear cdigobinario para la plataforma destino, a partir de programas fuentes (usualmente en C

    o C++).

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    55/173

    45

    Pero para explotar al mximo las caractersticas fsicas del dispositivo destino, se

    requieren hacer optimizaciones adicionales. En la literatura existen tcnicas de

    optimizacin de cdigo para diferentes arquitecturas de hardware. Algunos

    procesadores de la familia Intel, por ejemplo, incluyen su propio coprocesador de

    punto flotante, mientras que en los procesadores Motorola de la familia 68000, la

    aritmtica de punto flotante se debe hacer a travs de libreras de software.

    Por otro lado, como el mismo sistema operativo esta escrito (al menos en parte)

    con instrucciones de cdigo nativo, es ms eficiente que los programas

    interacten directamente con este, y no a travs de interfaces o maquinas virtuales

    como la maquina virtual de Java.

    La mayor dificultad que se presenta cuando se desarrollan ejecutables en cdigo

    nativo es, como puede observarse, que normalmente el cdigo nativo no funciona

    en dos plataformas de hardware diferentes. Y an cuando el hardware sea el

    mismo, pequeas inconsistencias en la plataforma pueden ser suficientes para

    causar problemas.

    Algunos sistemas operativos, como el PalmOS, ofrecen acceso a rutinas internas

    a travs de las llamadas system traps. Estas son instrucciones que hacen

    llamadas directas a servicios del sistema operativo. Pero para tener acceso a

    estos servicios, la aplicacin debe ligarse contra libreras de sistema ofrecidas

    normalmente por el desarrollador del hardware. Estas libreras tienen un formato

    binario particular al que el compilador le debe dar soporte. Un ejemplo de este tipo

    de formatos es el Common Object File Format (COFF)

    Los formatos ELF y COFF son muy similares, y permiten prcticamente la misma

    funcionalidad. Ambos pueden usarse para especificar cdigo objeto (de archivos

    generados por el compilador), y cdigo ejecutable (archivos producidos por la

    herramienta de encadenado). Estos formatos contienen secciones. Las secciones

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    56/173

    46

    que se encuentran tanto en archivos objeto como ejecutables son: .text, que

    contiene el cdigo binario ejecutable; .data, que contiene datos inicializados en el

    programa (como en una declaracin "int a=7;" donde se declara un entero y se

    inicializa con un valor de 7); y .bss (blow stack segment), seccin que almacena

    datos no inicializados (como cuando se declara "int arreglo[100000];". En este

    ltimo caso, no se reserva espacio para la variable sino hasta cuando se el archivo

    esta en ejecucin).

    II.5.2.3 COFF y Palm

    En Unix, segn explica la pagina del Manual de COFF, la salida de las

    herramientas de encadenamiento (linker) y el ensamblador (llamadas a.out por

    omisin) estn codificadas en formato Common Object File. Un archivo de objeto

    comn (common object file) consiste de un encabezado de archivo, un

    encabezado de sistema (en el caso de los archivos producidos por el linker), una

    tabla de encabezados de seccin, una seccin de datos, informacin de

    relocalizacin, nmeros de lnea opcionales, una tabla de smbolos y una tabla de

    cadenas.

    II.5.2.4 PRC-ToolsLas PRC-Tools incluyen una herramienta de post-encadenado llamada "build-prc".

    Esta herramienta tiene un doble propsito: convertir recursos de cdigo y datos al

    formato que el PalmOS espera; y en general, construir programas para Palm

    (PRCs) a partir de colecciones de archivos de recursos separados.

    Las PRC-Tools incluyen una herramienta de post-encadenado llamada "build-prc".

    Esta herramienta tiene un doble propsito: convertir recursos de cdigo y datos al

    formato que el PalmOS espera; y en general, construir programas para Palm(PRCs) a partir de colecciones de archivos de recursos separados.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    57/173

    47

    Las PRC-Tools producen cdigo en formato m68k-coff, es decir, cdigo para

    procesadores de la arquitectura M68000 de Motora, usando el formato binario

    COFF.

    Se debe sealar que en situaciones de desarrollo como la descrita, en donde se

    cuenta con una herramienta de post-encadenamiento, la eleccin de un formato

    binario no es significativa (mas all de los requerimientos y restricciones de la

    herramienta de post-encadenamiento). La plataforma de destino nunca trabaja con

    el formato binario producido por el encadenador, sino que, como se muestra en la

    figura siguiente, el proceso de post-encadenamiento "traduce" la salida del

    encadenador, en un archivo ejecutable para la plataforma destino.

  • 5/26/2018 27269939 Desarrollo de Aplicaciones Para Dispositivos Moviles Tesis de Ivan Carlos Rivera Gonzalez

    58/173

    48

    Figura 2.15 Generacin de un ejecutable con PRC-Tools

    Otra de las herramie