DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

136
DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA EN COMPONENTES PARA LA IMPLEMENTACIÓN DE APLICACIONES EN LA PLATAFORMA WINDOWS MOBILE LAURA CRISTINA MANZUR VILLALOBOS CARLOS ANDRES TORO BOLAÑOS REPORTE DE PROYECTO DE GRADO El presente documento consiste en un reporte de proyecto de grado en el campo de la construcción de software y específicamente de aplicaciones móviles orientadas a componentes genéricos, flexibles y reutilizables. Presenta la descripción general del proyecto Qualdev Móvil Windows Mobile, su diseño, arquitectura y los resultados del semestre. Además presenta unas conclusiones y trabajo futuro, dentro del marco del proyecto Qualdev Móvil Windows Mobile.

Transcript of DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

Page 1: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA EN COMPONENTES PARA LA IMPLEMENTACIÓN DE APLICACIONES EN LA

PLATAFORMA WINDOWS MOBILE

LAURA CRISTINA MANZUR VILLALOBOS CARLOS ANDRES TORO BOLAÑOS

REPORTE DE PROYECTO DE GRADO

El presente documento consiste en un reporte de proyecto de grado en el campo de la construcción de software y específicamente de aplicaciones móviles orientadas a componentes genéricos, flexibles y reutilizables. Presenta la descripción general del proyecto Qualdev Móvil Windows Mobile, su diseño, arquitectura y los resultados del semestre. Además presenta unas conclusiones y trabajo futuro, dentro del marco del proyecto Qualdev Móvil Windows Mobile.

Page 2: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA EN COMPONENTES PARA LA IMPLEMENTACIÓN DE APLICACIONES EN LA

PLATAFORMA WINDOWS MOBILE

LAURA CRISTINA MANZUR VILLALOBOS CARLOS ANDRES TORO BOLAÑOS

Proyecto de Grado

Director Rafael Gustavo Meneses Ramírez

Con la participación de Tatiana Paola Hernández Martínez

Camilo Andrés Varela León

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA DE SISTEMAS BOGOTÁ D. C., 2010

Page 3: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

3

Tabla de Contenido

I. LISTA DE FIGURAS ............................................................................................... 6

II. LISTA DE TABLAS ................................................................................................. 8

RESUMEN ...................................................................................................................... 9

1. INTRODUCCIÓN ................................................................................................... 10 1.1. OBJETIVOS .................................................................................................. 10

1.1.1. OBJETIVO GENERAL ........................................................................... 10 1.1.2. OBJETIVOS ESPECÍFICOS .................................................................. 11

2. CONTEXTO .......................................................................................................... 12

3. DISEÑO DE LA SOLUCIÓN ................................................................................. 14 3.1. ATRIBUTOS DE CALIDAD ............................................................................ 14

3.1.1. FLEXIBILIDAD ....................................................................................... 14 3.1.2. REUSABILIDAD ..................................................................................... 14 3.1.3. MANTENIBILIDAD ................................................................................. 15 3.1.4. EXTENSIBILIDAD .................................................................................. 15

3.2. DISEÑO DE ALTO NIVEL .............................................................................. 16 3.2.1. ARQUITECTURA GENERAL ................................................................. 16 3.2.2. ARQUITECTURA ESPECIFICA DE QUALDEV WINDOWS MOBILE .... 19 3.2.2.1. ARQUITECTURA DEL COMPONENTE MULTIMEDIA .......................... 20 3.2.2.2. ARQUITECTURA DEL COMPONENTE PERSISTENCIA ...................... 20 3.2.2.3. ARQUITECTURA DEL COMPONENTE COMUNICACIONES ............... 21 3.2.2.4. ARQUITECTURA DEL COMPONENTE CONVERSION DE DATOS ..... 22 3.2.2.5. ARQUITECTURA DEL COMPONENTE DE ADAPTACIÓN ................... 23

3.3. DISEÑO DETALLADO ................................................................................... 24 3.3.1. DIAGRAMAS DE CLASE QUALDEV WINDOWS MOBILE .................... 24 3.3.2. DIAGRAMAS DE CLASE DOCTOR CHAT ............................................ 29

4. CONSTRUCCIÓN DE LA SOLUCIÓN .................................................................. 32 4.1. PLATAFORMA DE DESARROLLO ................................................................ 32 4.2. DOCTOR CHAT EN FUNCIONAMIENTO ...................................................... 32 4.3. METRICAS .................................................................................................... 35

5. VALIDACIÓN ........................................................................................................ 37 5.1. PRUEBAS DE SISTEMA ............................................................................... 37 5.2. PRUEBAS DE INTEGRACIÓN ...................................................................... 37 5.3. PRUEBAS UNITARIAS .................................................................................. 37 5.4. RESULTADOS DE LA APLICACIÓN ............................................................. 37

6. CONCLUSIONES .................................................................................................. 40 6.1. DISCUSIÓN ................................................................................................... 40 6.2. TRABAJO PENDIENTE ................................................................................. 40 6.3. TRABAJO FUTURO....................................................................................... 41

7. BIBLIOGRAFÍA..................................................................................................... 43

8. GLOSARIO ........................................................................................................... 45

9. ANEXOS ............................................................................................................... 46 A. DR. CHAT ........................................................................................................... 46

Page 4: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

4

Introducción ........................................................................................................... 46 Descripción de la Aplicación .................................................................................. 46 Funcionalidades de la Aplicación ........................................................................... 46 Diseño de la Aplicación ......................................................................................... 47

B. DOCTORCH@T MÓVIL Y DOCTORCH@T MÓVIL GEOREFERENCIA ......................... 50 C. COMPONENTE DE ADAPTACIÓN ............................................................................ 50

Descripción Componente ...................................................................................... 50 Descripción Detallada ............................................................................................ 51 Referencias ........................................................................................................... 52

D. COMPONENTE DE COMUNICACIONES .................................................................... 53 Descripción Componente ...................................................................................... 53 Descripción Communication Facade ..................................................................... 54 Descripción SMS Component ................................................................................ 55 Descripción HTTP Component .............................................................................. 56

E. COMPONENTE DE CONVERSIÓN DE DATOS............................................................ 57 Descripción Componente ...................................................................................... 57 Descripción Detallada ............................................................................................ 58

F. COMPONENTE DE MANEJO DE MULTIMEDIA ........................................................... 59 Introducción ........................................................................................................... 59

G. COMPONENTE DE PERSISTENCIA .......................................................................... 62 Introducción ........................................................................................................... 62

H. PRUEBAS DE SISTEMA DR. CHAT WINDOWS MOBILE ............................................. 65 Introducción ........................................................................................................... 65 Escenarios de Pruebas.......................................................................................... 65 Resultados de las Pruebas .................................................................................... 71

I. PRUEBAS INTEGRACIÓN COMPONENTE ADAPTACIÓN ............................................. 75 Introducción ........................................................................................................... 75 Escenarios de Pruebas.......................................................................................... 75 Resultados de las Pruebas .................................................................................... 76

J. PRUEBAS INTEGRACIÓN COMPONENTE COMUNICACIONES Y CONVERSIÓN DE DATOS

77 Introducción ........................................................................................................... 77 Escenarios de Pruebas.......................................................................................... 77 Resultados de las Pruebas .................................................................................... 80

K. PRUEBAS DE INTEGRACIÓN COMPONENTE MULTIMEDIA ......................................... 81 Introducción ........................................................................................................... 81 Escenarios de Pruebas.......................................................................................... 81

L. PRUEBAS DE INTEGRACIÓN COMPONENTE PERSISTENCIA ...................................... 83 Introducción ........................................................................................................... 83 Escenarios de Pruebas.......................................................................................... 83

M. PRUEBAS UNITARIAS COMPONENTE COMUNICACIONES ......................................... 86 Introducción ........................................................................................................... 86 Escenarios de Pruebas.......................................................................................... 86 Escenario de Prueba 2 .......................................................................................... 87 Resultados de las Pruebas .................................................................................... 89

N. PRUEBAS UNITARIAS COMPONENTE CONVERSIÓN DE DATOS ................................. 90 Introducción ........................................................................................................... 90 Escenarios de Pruebas.......................................................................................... 90 Resultados de las Pruebas .................................................................................... 91

O. PRUEBAS UNITARIAS COMPONENTE MULTIMEDIA .................................................. 92 Introducción ........................................................................................................... 92

Page 5: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

5

Escenarios de Pruebas.......................................................................................... 92 P. PRUEBAS UNITARIAS COMPONENTE PERSISTENCIA ............................................... 95

Introducción ........................................................................................................... 95 Escenarios de Pruebas.......................................................................................... 96

Q. DESPLIEGUE DE UNA APLICACIÓN EN UN DISPOSITIVO BASADO EN WINDOWS MOBILE

98 Introducción ........................................................................................................... 98 Instrucciones ......................................................................................................... 99

R. INSTALACIÓN DE LAS HERRAMIENTAS DEL PROYECTO........................................... 100 Introducción ......................................................................................................... 100 Instalación de Visual Studio 2008 ........................................................................ 100 Instalación Windows Mobile 6.0 Standard SDK Refresh ...................................... 102 Instalación Windows Mobile 6.0 Standard Image ................................................. 105 Instalación del plugin de Motorola Q11 ................................................................ 106 Hacer uso de la utilidad Cellular Emulator ........................................................... 110 Desarrollo de una aplicación “Hola Mundo” en VS 2008 ...................................... 112 Referencias ......................................................................................................... 116

S. INTERFAZ DOCTORCHAT < MÓVIL WINDOWS MOBILE > ........................................ 117 Introducción ......................................................................................................... 117 Instrucciones ....................................................................................................... 117 Ejecutar las pruebas ............................................................................................ 119

T. MANIPULACIÓN DEL COMPORTAMIENTO DE LA APLICACIÓN POR LOS ESTADOS DEL

MÓVIL ...................................................................................................................... 119 INTRODUCCIÓN ......................................................................................................... 119

Instrucciones ....................................................................................................... 120 Referencias ......................................................................................................... 125

U. ADJUNTO DE ARCHIVOS MULTIMEDIA ................................................................... 126 Introducción ......................................................................................................... 126 Instrucciones ....................................................................................................... 126

V. ENVÍO DE DATOS MEDIANTE HTTP Y SMS .......................................................... 128 Introducción ......................................................................................................... 128 Instrucciones ....................................................................................................... 128

W. CREACIÓN DE PRUEBAS UNITARIAS EN C# ........................................................... 134 Introducción ......................................................................................................... 134 Creación de pruebas unitarias ............................................................................. 134

Page 6: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

6

I. LISTA DE FIGURAS Figura 1 – Diagrama de Despliegue Dr. Chat Windows Mobile .......................... 16

Figura 2 - Arquitectura específica Qualdev Windows Mobile .............................. 18

Figura 3 - Arquitectura específica Doctor Chat ................................................... 19

Figura 4 - Estructura del componente de multimedia.......................................... 20

Figura 5 - Estructura del componente de persistencia ........................................ 21

Figura 6 - Estructura del componente de comunicación ..................................... 22

Figura 7 - Estructura del componente de conversión de datos ........................... 23

Figura 8 - Arquitectura del componente de adaptación ...................................... 24

Figura 9 - Diagrama de clases componente multimedia ..................................... 25

Figura 10 - Diagrama de clases componente persistencia ................................. 26

Figura 11 - Diagrama de clases componente comunicación .............................. 27

Figura 12 - Diagrama de clases componente conversión de datos .................... 28

Figura 13 - Diagrama de clases componente de adaptación .............................. 29

Figura 14 - Diagrama de clases interfaz de usuario Dr. Chat ............................. 30

Figura 15 - Diagrama de clases controlador Dr. Chat ......................................... 31

Figura 16 - Ver noticias y realizar una consulta nueva ....................................... 33

Figura 17 - Ver consultas realizadas e información del paciente ........................ 34

Figura 18 - LOC de Dr. Chat y sus componentes ............................................... 35

Figura 19 - Esfuerzo requerido por Dr. Chat y sus componentes ....................... 36

Figura 20 - Estructura de funcionalidades principales ........................................ 47

Figura 21 - Estructura del suministro de noticias ................................................ 47

Figura 22 - Diseño general de la aplicación ........................................................ 48

Figura 23 - Diseño específico del user interface ................................................. 49

Figura 24 - Diseño específico del controlador ..................................................... 49

Figura 25 - Estructura del componente de adaptación ....................................... 50

Figura 26 - Interfaces del componente de adaptación ........................................ 50

Figura 27 - Diagrama de clases del componente de adaptación ........................ 52

Figura 28 - Estructura del componente de comunicaciones ............................... 53

Figura 29 - Interfaces del componente de comuniaciones .................................. 54

Figura 30 - Diagrama de clases de CommunicationFacade ............................... 55

Figura 31 - Diagrama de clases del SMS component ......................................... 56

Figura 32 - Diagrama de clases del HTTP component ....................................... 57

Figura 33 - Estructura del componente de conversión de datos ......................... 57

Figura 34 - Interfaces del componente de conversión de datos ......................... 58

Figura 35 - Diagrama de clases del componente de conversión de datos .......... 58

Figura 36 - Estructura del componente de multimedia ........................................ 59

Page 7: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

7

Figura 37 - Interfaces del componente ............................................................... 60

Figura 38 - Diagrama de clases del componente MediaManipulator .................. 60

Figura 39 - Diagrama de clases del componente InputMedia ............................ 61

Figura 40 - Estructura del componente de persistencia ...................................... 62

Figura 41 - Interfaces del componente ............................................................... 63

Figura 42 - Diagrama de clases del componente PersistenceManager .............. 63

Figura 43 - Diagrama de clases del componente FilePersistence ..................... 64

Figura 44 - Diagrama de clases del componente DbPersistence ...................... 65

Figura 45 - Microsoft ActuveSync 4.5 (Windows XP)........................................ 111

Figura 46 - Windows Mobile Device Center (Windows Vista/7) ........................ 111

Page 8: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

8

II. LISTA DE TABLAS

Tabla 1 - Integrantes del grupo de trabajo Qualdeb Móvil Windows Mobile ....... 13

Tabla 2 - Información requerida en IDictionary ................................................... 62

Page 9: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

9

RESUMEN

El presente documento consiste en un reporte de proyecto de grado en el campo

de la construcción de software y específicamente de aplicaciones móviles

orientadas a componentes genéricos, flexibles y reutilizables. Presenta la

descripción general del proyecto Qualdev Móvil Windows Mobile, su diseño,

arquitectura y los resultados del semestre. Además presenta unas conclusiones

y trabajo futuro, dentro del marco del proyecto Qualdev Móvil Windows Mobile.

Page 10: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

10

1. INTRODUCCIÓN

A partir del 2002 los teléfonos móviles de gama alta, o smartphones, se han ido

difundiendo cada vez más generando una nueva corriente de dispositivos

móviles. De ahí nace la necesidad de desarrollar aplicaciones que permitan a los

usuarios de los smartphones interactuar con los servicios más comunes en la

computación a través de sus teléfonos celulares. Por otro lado, la navegación en

internet ha permitido abrir las puertas a nuevos servicios y medios de

comunicación que han logrado ser integrados a los smartphones difundiendo

aún más su uso. Teniendo todo esto en cuenta, el sector de la salud se ha visto

beneficiado ofreciendo ciertos servicios a través de este medio. Así nace la

posibilidad de concretar citas médicas u otros por medio de los portales de las

EPS, entre otros.

Tomando esta oportunidad, nace una idea innovadora. Una aplicación que

permita a las personas la realización de consultas médicas a través de internet,

sin necesidad de concretar citas innecesarias. Este es el objetivo de Doctor Chat

(Ver Anexo B). Dentro de este contexto, se busca ofrecer este servicio a los

usuarios de dispositivos móviles como los celulares de gama alta o PDAs.

Teniendo esto en cuenta, se busca desarrollar esta aplicación para dispositivos

con el sistema operativo Windows Mobile, particularmente la versión 6. Teniendo

en mente una implementación de arquitectura basada en componentes, se

busca la creación de unidades funcionales que provean servicios útiles para

Doctor Chat y de carácter genérico, para que puedan ser empleados en otros

contextos.

1.1. OBJETIVOS

1.1.1. OBJETIVO GENERAL Construir una aplicación móvil basada en la plataforma Windows Mobile 6 que

permita realizar consultas médicas con envío de adjuntos multimedia, tomando

como base una versión existente sobre la plataforma J2ME, haciendo énfasis en

que éste será un caso de estudio para una arquitectura extensible y reutilizable

para disminuir el trabajo y realizar aplicaciones móviles sobre este framework de

desarrollo.

Page 11: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

11

1.1.2. OBJETIVOS ESPECÍFICOS

Diseñar e implementar una arquitectura extensible y sencilla para el

desarrollo de aplicaciones sobre la plataforma Windows Mobile.

Hacer una adaptación de la aplicación J2ME Doctor Chat que use la

arquitectura implementada integrando sus funcionalidades particulares.

o Registrar un paciente a la aplicación.

o Realizar y enviar una consulta médica.

o Consultar y editar las consultas realizadas con anterioridad.

Incluir funcionalidades adicionales a las existentes en la aplicación Doctor

Chat.

o Diseñar una funcionalidad que permita la recepción de noticias de

la Fundación Santa Fe de Bogotá en la página inicial de la

aplicación.

o Permitir la adaptación de la aplicación a cambios en el dispositivo

como lo es el estado cambiante de la batería.

o Integrar la manipulación y transmisión de multimedia en la

aplicación.

En la siguiente sección definiremos el contexto de la aplicación. Posteriormente,

en la tercera sección, expondremos el diseño de la solución planteada para

nuestra arquitectura reutilizable con los atributos de calidad identificados. La

cuarta sección presenta la construcción de la solución, describiendo la

plataforma de desarrollo empleada y mostrando la aplicación resultado que en

este caso será Doctor Chat. En la quinta sección presentamos las pruebas

realizadas sobre el sistema para garantizar su correcto funcionamiento y el

cumplimiento de los atributos de calidad identificados. Por último, se presentan

las conclusiones donde expondremos la experiencia vivida con la plataforma de

desarrollo, así como el trabajo futuro sobre este proyecto.

Page 12: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

12

2. CONTEXTO

El desarrollo de software basado en componentes tiene como objetivo la

reutilización de piezas de código pre-elaborado que permiten realizar diversas

tareas, conllevando a diversos beneficios como las mejoras a la calidad, la

reducción del ciclo de desarrollo y el mayor retorno sobre la inversión [1]. Las

piezas de código previamente mencionadas son denominadas componentes.

Los componente de software son todo aquel recurso desarrollado para un fin

concreto y que puede formar solo o junto con otro/s, un entorno funcional

requerido por cualquier proceso predefinido. Los componentes son

independientes entre ellos, y tienen su propia estructura e implementación.

El paradigma de ensamblar componentes y escribir código para hacer que estos

componentes funcionen se conoce como Desarrollo de Software Basado en

Componentes. El uso de este paradigma posee algunas ventajas [1]:

1. Reutilización del software. Nos lleva a alcanzar un mayor nivel de

reutilización de software.

2. Simplifica las pruebas. Permite que las pruebas sean ejecutadas

probando cada uno de los componentes antes de probar el conjunto

completo de componentes ensamblados.

3. Simplifica el mantenimiento del sistema. Cuando existe un débil

acoplamiento entre componentes, el desarrollador es libre de actualizar

y/o agregar componentes según sea necesario, sin afectar otras partes

del sistema.

4. Mayor calidad. Dado que un componente puede ser construido y luego

mejorado continuamente por un experto u organización, la calidad de una

aplicación basada en componentes mejorará con el paso del tiempo.

De la misma manera, la decisión de utilizar componentes de terceros en lugar de

desarrollarlos, posee algunas ventajas [1]:

1. Ciclos de desarrollo más cortos. La adición de una pieza dada de

funcionalidad tomará días en lugar de meses ó años.

2. Mejor ROI1. Usando correctamente esta estrategia, el retorno sobre la

inversión puede ser más favorable que desarrollando los componentes

uno mismo.

1 Retorno de la inversión, Return On Investment en inglés, hace referencia a un porcentaje que

se calcula en función de la inversión y los beneficios obtenidos para cuantificar la viabilidad de un proyecto.

Page 13: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

13

3. Funcionalidad mejorada. Para usar un componente que contenga una

pieza de funcionalidad, solo se necesita entender su naturaleza, más no

sus detalles internos. Así, una funcionalidad que sería impráctica de

implementar en la empresa, se vuelve ahora completamente asequible.

Dentro del contexto de desarrollo basado en componentes, se realizó la división

de responsabilidades para el desarrollo definiendo los siguientes roles dentro del

grupo:

Tabla 1 - Integrantes del grupo de trabajo Qualdeb Móvil Windows Mobile

Persona Rol Responsabilidad

Rafael Meneses Asesor Coordina el progreso del proyecto y las

funcionalidades con las que debe cumplir.

Camilo Varela Líder Coordina las tareas a realizar semanalmente y

el progreso del sistema como un todo.

Laura Manzur Planeación,

Desarrollador

Velar por el cumplimiento de las tareas de la

semana. Desarrollar componentes del

sistema.

Carlos Toro Pruebas,

Desarrollador

Desarrollar componentes del sistema.

Page 14: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

14

3. DISEÑO DE LA SOLUCIÓN

3.1. ATRIBUTOS DE CALIDAD

3.1.1. FLEXIBILIDAD El atributo de calidad de flexibilidad hace referencia a la capacidad del sistema

de permitir cambios de configuración como respuesta al contexto de ejecución

[13]. En la implementación del sistema planteada, se evidencia la flexibilidad de

los componentes en cuanto a cambios en la configuración de los mismos ya que

son genéricos, permitiendo paramétrizar las características de ellos.

Dentro de este contexto, es necesario definir una métrica que permita evaluar el

éxito de este atributo de calidad dentro de la implementación final de la

aplicación.

Métrica:

NUMERO ERRORES POSTERIOR CAMBIOS - NUMERO ERRORES PREVIO

CAMBIOS = 0

Esta métrica hace referencia a que el componente no debe cambiar cuando se

incluyen nuevos cambios dentro de los componentes. Dentro de ese contexto,

no se deben generar errores en la implementación de la aplicación final.

3.1.2. REUSABILIDAD El atributo de calidad de reusabilidad hace referencia al esfuerzo ganado al

poder utilizar componentes existentes [13]. Teniendo en cuenta que el sistema

está orientado al desarrollo por componentes, la reutilización de los mismos en

términos de otros usos o aplicaciones que los requieran no implica esfuerzo

alguno ya que son fáciles de conectar.

Dentro de este contexto, es necesario definir una métrica que permita evaluar el

éxito de este atributo de calidad dentro de la implementación final de la

aplicación.

Métrica:

(LOC COMPONENTES / LOC DR. CHAT) * 100 > 70%

Esta métrica hace referencia a la cantidad de líneas de código (LOC)

correspondientes a los componentes en relación a la aplicación final. Dentro de

Page 15: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

15

ese contexto, las líneas de código correspondientes a los componentes deben

ser mayores al 70% de las líneas de código de la aplicación. Esto quiere decir

que una implementación de una nueva aplicación no implica gran esfuerzo en

términos de tiempos de desarrollo.

3.1.3. MANTENIBILIDAD El atributo de calidad de mantenibilidad hace referencia al esfuerzo ahorrado

para corregir errores del sistema [13]. En un sistema basado en componentes, la

corrección de errores del sistema se facilita ya que es fácil identificar el

componente que generó los errores a corregir.

Dentro de este contexto, es necesario definir una métrica que permita evaluar el

éxito de este atributo de calidad dentro de la implementación final de la

aplicación.

Métrica:

TIEMPO DE CORRECION DE ERRORES < 30 MIN

Esta métrica hace referencia al esfuerzo por persona, en términos de tiempo,

que se requiere para la corrección de errores dentro del código de cada

componente. Dentro de ese contexto, dado que las funcionalidades están

enfocadas a componentes, es posible localizar de forma rápida y fácil donde se

encuentra el error. Esto agiliza el proceso de mantenimiento del código

disminuyendo los costos que ello implica.

3.1.4. EXTENSIBILIDAD El atributo de calidad de extensibilidad hace referencia a la capacidad de los

componentes de extender sus funcionalidades particulares de forma rápida y

efectiva sin generar cambios en la arquitectura propuesta [13].

Dentro de este contexto, es necesario definir una métrica que permita evaluar el

éxito de este atributo de calidad dentro de la implementación final de la

aplicación.

Métrica:

ESFUERZO PARA EXTENDER FUNCIONALIDADES ≤ 3 H

Esta métrica hace referencia al esfuerzo requerido por persona, en términos de

tiempo, para implementar nuevas funcionalidades dentro de cada componente.

Dentro de ese contexto, al tener las funcionalidades fraccionadas en

Page 16: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

16

componentes, los cambios necesarios son focalizados en un componente en

particular, facilitando la implementación de nuevas funcionalidades que

extienden las responsabilidades del componente.

3.2. DISEÑO DE ALTO NIVEL La arquitectura general de la implementación llamada por nosotros Qualdev

Windows Mobile está orientada a la reutilización de los componentes y al hecho

de que aplicaciones concretas, como Doctor Chat, hagan uso de estos

componentes de una manera sencilla y transparente. Por lo tanto, la puerta de

entrada a nuestro componente de Windows Mobile será una fachada que

expondrá todos los servicios necesarios para que una aplicación pueda

apoyarse en ésta para suplir la mayoría de sus requerimientos funcionales.

En el diseño de la solución que se plantea se mostrará desde dos frentes: en el

primero se mostrará el diseño de la arquitectura general llamada Qualdev

Windows Mobile y en segunda instancia, el diseño de la implementación de

Doctor Chat adaptado a este contexto.

3.2.1. ARQUITECTURA GENERAL

VISTA GENERAL DE LA ARQUITECTURA

Figura 1 – Diagrama de Despliegue Dr. Chat Windows Mobile

En el diagrama de despliegue en el dispositivo móvil (Ver Figura 1) podemos ver

cómo es la interacción entre la aplicación de estudio Doctor Chat y el

componente reutilizable que se diseño. Doctor Chat es una aplicación cliente

Page 17: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

17

que se comunicará con un intermediario que hace de Proxy2 contra un servidor

que poseerá los datos relevantes de los requerimientos funcionales de la

aplicación. La explicación del funcionamiento de la aplicación instalada en el

servidor está fuera del alcance de este documento.

Qualdev Windows Mobile se puede expresar como un componente que intentará

simplificar la interacción de aplicaciones especificas con el core del framework

de Windows Mobile; esto, con el fin de que cada aplicación se centre en el

desarrollo de sus requerimientos funcionales y no funcionales reduciendo su

dependencia con la tecnología. Es por ello que Doctor Chat como tal puede

considerarse como una aplicación sencilla porque toda la parte que involucra la

interacción con el framework de Windows Mobile está encapsulado en un

componente aislado y reutilizable.

Este componente consta de más componentes individuales que ofrecerán

servicios específicos y comunes para cualquier aplicación móvil como lo son:

Comunicación, Persistencia y Multimedia. Adicionalmente, se contará con un

componente que ayudará a la conversión de los objetos del negocio en formatos

específicos que sean empleados para el flujo de datos que sean coherentes

para el intercambio de información entre la aplicación y su entorno.

Nuestra arquitectura, además de ser orientada a la reutilización se basó en la

posible modificación del comportamiento de la misma en ejecución, para que se

pueda adaptar a cambios originados por el estado de determinadas propiedades

del dispositivo móvil. Por ello se diseño un componente que orquestará los

distintos componentes mediante los eventos generados por el dispositivo móvil,

cambiando el comportamiento de la aplicación que use el componente de

Qualdev Windows Mobile como lo es Doctor Chat en este caso.

2 En el contexto de comunicaciones entre aplicaciones, el término Proxy es usado para hacer

referencia a que una aplicación realiza una acción en representación de otra, controlando el acceso a esta.

Page 18: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

18

VISTA ESPECIFICA DE LA ARQUITECTURA QUALDEV WINDOWS MOBILE

Figura 2 - Arquitectura específica Qualdev Windows Mobile

Como ya se describió anteriormente, la arquitectura consta de componentes que

se encargan de funcionalidades especificas y un componente más, una fachada

que se encargará de exponer los servicios de cada componente en específico.

Entonces, la interfaz expuesta por esta fachada será el punto de entrada que

usará cualquier aplicación.

Adicionalmente el componente de adaptación consume a la fachada porque éste

será capaz de cambiar el comportamiento de los mismos en ejecución, entonces

para no tener que consumir las interfaces de cada componente como lo hace la

fachada, lo más sencillo es delegarle la responsabilidad a la misma fachada.

Page 19: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

19

VISTA ESPECIFICA DE LA ARQUITECTURA DOCTOR CHAT

Figura 3 - Arquitectura específica Doctor Chat

El diseño de la aplicación Doctor Chat (Ver Figura 3) se basa en un patrón MVC

(Ver Glosario), en donde el controlador será el encargado de orquestar el

funcionamiento de la misma. En la vista simplemente se manejará la lógica de

despliegue en la Interfaz, y en el modelo simplemente encontraremos las

entidades relevantes de la aplicación.

Al haber abstraído la interacción con la plataforma en el componente de Qualdev

Windows Mobile, Doctor Chat se convirtió en una aplicación bastante sencilla

que simplemente se adaptará de la mejor manera con este componente y se

enfocará en el desarrollo de sus requerimientos funcionales.

3.2.2. ARQUITECTURA ESPECIFICA DE QUALDEV WINDOWS MOBILE En este apartado se especificará la arquitectura de cada componente

perteneciente a Qualdev Windows Mobile. Para tener más detalle sobre cada

componente de la arquitectura, en los Anexos C-I, donde se encuentra una

descripción detallada de cada uno de estos.

Page 20: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

20

3.2.2.1. ARQUITECTURA DEL COMPONENTE MULTIMEDIA La manipulación de elementos multimedia es importante para aplicaciones que

requieren de utilización de imágenes, sonido y video entre otros. El objetivo de la

creación de un componente que permita la manipulación de multimedia es crítico

para el desarrollo de móviles ya que las nuevas gamas altas de equipos poseen

cámaras de fotografía y video, además de grabadores de audio para guardar o

compartir.

El componente de multimedia posee una estructura sencilla que facilita la

comunicación con demás componentes que se van a utilizar en la aplicación

(Ver Figura 4). El componente posee una interfaz, la cual será instanciada por la

aplicación o componente que va utilizar los servicios. Esta interfaz se comunica

con varias clases que modelan las diferentes características y servicios de los

elementos multimedia, los cuales se comunican con la interfaz del componente

de captura de archivos multimedia. Todo el componente se soporta sobre el

framework de Windows Mobile.

Figura 4 - Estructura del componente de multimedia

3.2.2.2. ARQUITECTURA DEL COMPONENTE PERSISTENCIA La persistencia es un factor muy importante en cualquier tipo de aplicaciones ya

que permite almacenar la información importante para que la aplicación funcione

con normalidad. El objetivo de la creación del componente es independizar todos

los componentes que participan de la aplicación del manejo de información. Esto

con el propósito de hacer la información más adaptable al contexto en el que se

encuentra la aplicación.

El componente de persistencia posee una estructura sencilla (Ver Figura 5),

donde se expone una única interfaz para la comunicación con éste. Esta interfaz

es implementada por una clase que orquesta el funcionamiento del componente.

Internamente se comunica con las interfaces de los servicios de persistencia por

archivos y de persistencia por base de datos. La base de datos está soportada

Page 21: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

21

por la librería de SQLite y los archivos están soportados por el framework de

Windows Mobile.

Figura 5 - Estructura del componente de persistencia

3.2.2.3. ARQUITECTURA DEL COMPONENTE COMUNICACIONES Para las aplicaciones móviles la capacidad de interactuar con su entorno en

arquitecturas distribuidas, se debe contar con mecanismos para que la

información fluya hacia sus destinos adecuadamente. Por lo tanto el objetivo de

la creación de un componente que permita la comunicación de la aplicación con

su entorno, es simplificar la interacción con el framework de Windows Mobile

proporcionando servicios sencillos para la comunicación por medio de distintos

protocolos. Estos se implementaron de tal forma que se vuelva transparente el

uso de la tecnología específica, proporcionando servicios simples de usar.

La estructura del componente (Ver Figura 6) se basa en una fachada que

encapsula los distintos servicios que puede proveer el componente así como

una forma sencilla para iniciarlos o detenerlos en ejecución. Los protocolos

implementados fueron comunicaciones por HTTP en su forma síncrona y

asíncrona, adicionalmente se implemento la capacidad de comunicarse por

medio de SMS.

Page 22: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

22

Figura 6 - Estructura del componente de comunicación

3.2.2.4. ARQUITECTURA DEL COMPONENTE CONVERSION DE DATOS Cuando hay comunicaciones entre distintos nodos se debe concertar cual va a

ser el formato del flujo de datos y para ello existen distintas implementaciones

estándar que facilitan dicha comunicación, algunas de ellas son XML3 y JSON4.

Por lo tanto, se quiso hacer un componente que simplificara la serialización de la

información en este tipo de formatos.

Este componente se encarga de la transformación de objetos del negocio a

formatos para el intercambio de datos. Estos formatos pueden ser JSON, XML o

un archivo propietario. Actualmente, solo está implementada la transformación a

JSON por medio de una librería externa que nos ayudó en su implementación

por medio de reflexión de los objetos.

La estructura de esta transformación es bastante simple (Ver Figura 7). Existe

una interfaz que expone los servicios para serializar o des-serializar el objeto de

negocio en el formato definido.

3 Es un lenguaje extensible basado en etiquetas que posee una estructura simple para

representar cualquier tipo de información. 4 Es un formato ligero para el intercambio de datos que resulta tener una ligera ventaja frente a

XML en términos de tamaño para representar la misma información.

Page 23: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

23

Figura 7 - Estructura del componente de conversión de datos

3.2.2.5. ARQUITECTURA DEL COMPONENTE DE ADAPTACIÓN En aplicaciones móviles existen muchas restricciones, pero el poder de

procesamiento ligado a la vida de la batería del dispositivo genera muchos

inconvenientes a las aplicaciones que corren sobre él. Es por ello que distintos

eventos como niveles bajos de batería o en otro contexto una llamada entrante

al dispositivo mientras se usa la aplicación son eventos deseables de monitorear

para que las aplicaciones respondan a ellos de la mejor manera.

El funcionamiento básico de este componente es el de adaptar la aplicación a

cambios en el dispositivo, para que la aplicación pueda tener un comportamiento

adecuado con los recursos disponibles del celular. Inicialmente, solo se

monitoreará la batería del dispositivo. Con estas propiedades se podrá

economizar el uso de la memoria cuando hay escasez de batería.

El diseño del componente es muy simple (Ver Figura 8) y así como el

componente de conversión de datos, se basa en una interfaz que expondrá los

servicios para que entren en funcionamiento en el momento que una aplicación

cualquiera como lo es Doctor Chat haga uso de esta interesante funcionalidad.

Este componente debía atacar ampliamente el concepto de extensibilidad ya

que son muchos los eventos generados en el dispositivo móvil que podrían ser

monitoreados, pero solo aquellos relacionados con el estado de la batería serían

genéricos para cualquier aplicación. Por esta razón, el hecho de poder

monitorear una nueva propiedad sería algo bastante sencillo si así se requiere.

Page 24: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

24

Figura 8 - Arquitectura del componente de adaptación

3.3. DISEÑO DETALLADO En esta sección se expondrá el diseño detallado de los componentes

pertenecientes a la arquitectura Qualdev Windows Mobile y Doctor Chat. Para

entrar más en detalle se debe consultar los Anexos C-I.

3.3.1. DIAGRAMAS DE CLASE QUALDEV WINDOWS MOBILE

DIAGRAMA DE CLASES COMPONENTE MULTIMEDIA El componente de multimedia (Ver Figura 9) posee como entrada la interface

IMediaManipulator, la cual se encarga de exponer las funcionalidades que el

componente presta. A esta interface se conecta la clase principal del

componente, MediaManipulator, la cual hace llamados a la interface IInputMedia

que presta los servicios de obtención de archivos multimedia, ya sea por medio

del hardware del dispositivo o por el sistema de archivos, para multimedia ya

existente.

Page 25: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

25

Figura 9 - Diagrama de clases componente multimedia

DIAGRAMA DE CLASES COMPONENTE PERSISTENCIA El componente de persistencia (Ver Figura 10) posee como entrada la interface

IPersistenceManager, la cual se encarga de exponer las funcionalidades que el

componente presta. A esta interface se conecta la clase principal del

componente, PersitenceManager, la cual hace llamados a las interfaces

IFilePersistence y IDbPersistence. Estas interfaces prestan los servicios de

persistencia por archivos y por base de datos, respectivamente.

Page 26: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

26

Figura 10 - Diagrama de clases componente persistencia

DIAGRAMA DE CLASES COMPONENTE COMUNICACIONES Este diagrama (Ver Figura 11) expone simplemente el comportamiento de la

fachada del componente de comunicaciones. Cabe resaltar que en este

componente reside la funcionalidad para la notificación de respuestas entrantes

a la aplicación por medio de protocolos asíncronos como lo es SMS por defecto

y el HTTP asíncrono. Es decir, las aplicaciones que quieran hacer uso de estas

funcionalidades deberán registrar un observador en el componente de

comunicaciones el cual tiene un método con la capacidad de recibir los datos

entrantes.

El resto de funciones son básicamente dos, la exposición de: (1) las

funcionalidades del protocolo HTTP y SMS y (2) la capacidad para detenerse y

arrancar en tiempo de ejecución.

Page 27: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

27

Con respecto a la implementación interna del componente HTTP y SMS lo más

relevante es la forma en que se diseñó la recepción de mensajes SMS los

cuales pueden venir en multiparte por las restricciones de tamaño del protocolo,

entonces por medio de un patrón estrategia se diseño una forma de poder tener

diferentes implementaciones, para que en ejecución pueda ser seleccionada la

estrategia más adecuada en términos de desempeño, confiabilidad, y uso de

recursos.

Figura 11 - Diagrama de clases componente comunicación

DIAGRAMA DE CLASES COMPONENTE CONVERSION DE DATOS Este diagrama (Ver Figura 12) expone simplemente el cómo la implementación

de la interfaz IConverter del componente podrá definir a qué formato se desee

convertir o des serializar los datos, Como ya hemos anotado, actualmente solo

existe la funcionalidad con el formato JSON pero la implementación de un nuevo

formato se basa en la extensión de la interfaz para que se cumpla el contrato.

Page 28: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

28

Figura 12 - Diagrama de clases componente conversión de datos

DIAGRAMA DE CLASES COMPONENTE DE ADAPTACIÓN El diagrama de clases del componente de adaptación (Ver Figura 13) muestra

cómo se logrará alcanzar el monitoreo de las propiedades del sistema. Se basa

en que se tendrá una lista de propiedades a monitorear que podrán ser externas

(creadas por alguna aplicación concretamente) ó las por defecto que son el

estado de la batería y el nivel de la misma.

La interfaz IPropertyStatus identifica a una propiedad para ser monitoreada, la

clase abstracta AbstractPropertySatus es una implementación genérica que

tiene la responsabilidad de implementar la funcionalidad de iniciar la propiedad y

delegarla a las propiedades concretas en dos modos distintos por medio de un

patrón plantilla: la persistente y la no persistente; el método que monitorea los

eventos como tal deberá ser implementado por cada propiedad especifica.

Como se puede ver en el diagrama, las propiedades deben extender el

comportamiento de la clase abstracta y definir los métodos necesarios para el

correcto funcionamiento. Entonces las propiedades que se quieran crear

distintas a las implementadas por defecto, deberán extender esta clase, lo que

las hará aptas para ser instaladas en la lista de propiedades monitoreadas del

componente.

Page 29: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

29

Figura 13 - Diagrama de clases componente de adaptación

3.3.2. DIAGRAMAS DE CLASE DOCTOR CHAT

DIAGRAMA DE CLASES INTERFAZ DE USUARIO El diseño específico de la interfaz del usuario se basa en la correspondencia de

una clase para cada pantalla, en donde cada pantalla tendrá la responsabilidad

de interactuar con el controlador, para los efectos de lógica de negocio que deba

realizar para suplir los requerimientos funcionales de la aplicación.

La pantalla principal será la contenedora de las demás pantallas y algunas de

ellas contendrán a las que dependan de ella, todo esto para la correcta

visualización de las mismas, específicamente para la funcionalidad de volver

para no tener que llevar un estado de los objetos que hace referencia a las

pantallas. El diseño se puede ver en la Figura 14.

Page 30: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

30

Figura 14 - Diagrama de clases interfaz de usuario Dr. Chat

DIAGRAMA DE CLASES CONTROLADOR El diseño específico del controlador de la aplicación se basa en una interfaz que

expone sus servicios y su implementación, que es 'Singleton', interactúa con el

componente de Qualdev Windows Mobile a través de su interfaz. Los servicios

expuestos por el controlador son exclusivamente los necesarios para cumplir los

requerimientos funcionales de la aplicación.

Además de la clase controlador existe una clase de utilidades que posee

funcionalidades de instanciación de objetos del modelo. El diseño se puede ver

en la Figura 15.

Page 31: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

31

Figura 15 - Diagrama de clases controlador Dr. Chat

Page 32: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

32

4. CONSTRUCCIÓN DE LA SOLUCIÓN

4.1. PLATAFORMA DE DESARROLLO Doctor Chat se desarrolló sobre las herramientas provistas por el Compact

Framework 3.55 de Windows Mobile. Para todas las funcionalidades del negocio

se uso el componente de Qualdev Windows Mobile explicado anteriormente, el

cual provee los distintos servicios necesarios para cumplir con los

requerimientos funcionales de la aplicación.

Dentro de las principales características de la plataforma encontramos: (1) la

sencillez para crear interfaces de usuario a través del IDE de desarrollo

Microsoft Visual Studio 2008, (2) la facilidad para crear aplicaciones en

ambientes distribuidos con distintos mecanismos de comunicaciones, entre ellos

un cliente de Web Services con soporte para WS-Security6, (3) la capacidad

para integrarse con una base de datos relacional local como SQL Mobile.

Las grandes debilidades de la plataforma son: (1) ser una subversión del

framework por lo que muchas funcionalidades no estarán presentes, sin

embargo esto es algo lógico si se desea desarrollar para este tipo de

dispositivos, y (2) la inhabilidad de poder tener código del lado servidor,

específicamente si se quieren exponer servicios para que otra aplicación lo

contacte es algo que hace falta en la plataforma [4].

4.2. DOCTOR CHAT EN FUNCIONAMIENTO En este punto se mostrarán algunos pantallazos del producto realizado que

muestran la aplicación en funcionamiento. Para entrar en más detalle de los

artefactos generados durante la etapa de análisis y del funcionamiento de la

aplicación se debe remitir a los anexos del documento. Particularmente, ver

Anexo A. Las Figura 16 y Figura 17 presentan las imágenes correspondientes a

la aplicación final Dr. Chat.

5 Versión compacta del .NET Framework de Microsoft enfocado a funcionar en dispositivos móviles, PDAs, y controladores de algunos periféricos. 6 Es un protocolo que provee una forma simple de seguridad en la invocación de Web Services agregando encabezados al mismo.

Page 33: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

33

Figura 16 - Ver noticias y realizar una consulta nueva

Page 34: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

34

Figura 17 - Ver consultas realizadas e información del paciente

Page 35: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

35

4.3. METRICAS Dentro del contexto del desarrollo de una aplicación se emplean una serie de

herramientas de análisis sobre el código generado. Dentro de éstas

herramientas existen estrategias que apoyan el análisis. Una de estas

estrategias es el conteo de líneas de código o LOC.

En la Figura 18 se presentan la cantidad de líneas de código desarrollados tanto

en la aplicación final como en cada componente.

Figura 18 - LOC de Dr. Chat y sus componentes

Sin embargo, estos resultados no son concluyentes por sí solos. Esto se debe a

que el esfuerzo requerido para la producción del código correspondiente a Dr.

Chat es menor al de los componentes en conjunto. A continuación, en la Figura

19, se presenta el esfuerzo requerido para la producción de cada una de las

partes de la aplicación.

Dr. Chat51%

Qualdev Móvil Windows Mobile

7%

Componente Multimedia

9%

Componente Persistencia

14%

Componente Adaptación

5%

Componente Comunicación

13%

Componente Conversión Datos

1%

LOC

Page 36: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

36

Figura 19 - Esfuerzo requerido por Dr. Chat y sus componentes

Teniendo esto en cuenta, podemos observar como cada componente posee una

cantidad de líneas de código considerables respecto a la aplicación final, la cual

posee la mayor cantidad de LOC. Sin embargo, al comparar el esfuerzo

requerido, podemos observar como el componente de comunicación y de

multimedia requirieron mayor esfuerzo siendo que sus LOC son mucho

menores. Esto apoya el factor de que la cantidad de LOC de Dr. Chat se debe a

la forma en cómo crea los interfaces gráficas el editor del IDE empleado, más

que el esfuerzo que implica el desarrollo. De esta forma, el esfuerzo requerido

en la creación de una nueva aplicación que consuma estos componentes se

reduce en un gran porcentaje respecto al requerido para el desarrollo de Dr.

Chat.

Dr. Chat21%

Qualev Movil Windows

Mobile1%

Comp. Multimedia

21%Comp.

Persistencia17%

Comp. Adaptacion

13%

Comp. Comunicación

26%

Comp. Conversion de

Datos1%

Horas

Page 37: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

37

5. VALIDACIÓN

5.1. PRUEBAS DE SISTEMA Las pruebas de sistema son aquellas que permiten ver el funcionamiento final de

los requerimientos especificados para la aplicación. Dentro de este contexto, no

se tienen en cuenta los componentes que intervienen en cada uno de ellos.

Estas pruebas tienen en cuenta tanto los casos exitosos como los casos que

deben modelar errores o caminos alternos. Para mayor detalle de las pruebas de

sistema, ver Anexo H.

5.2. PRUEBAS DE INTEGRACIÓN Las pruebas de integración permiten ver el comportamiento de los componentes

cuando son consumidos por otros componentes o aplicaciones. De esta manera

se pueden garantizar las funcionalidades de los mismos y el correcto manejo de

las excepciones que se lanzan, así como los contratos de configuración. Para

mayor detalle de las pruebas de integración, ver los Anexos I-L.

5.3. PRUEBAS UNITARIAS Se realizaron pruebas unitarias sobre los componentes desarrollados para los

cuales no es necesaria una interacción con otros componentes y/o aplicaciones.

Estas pruebas fueron exitosas el 100% de las veces garantizando el correcto

funcionamiento de las operaciones que ofrecen.

Dentro de este contexto, fue posible realizar pruebas unitarias sobre el

componente de persistencia y de comunicaciones. Estas pruebas tuvieron como

objetivo probar cada una de las responsabilidades del componente de persistir,

eliminar y obtener los objetos correspondientes a un tipo recibido como

parámetro. El tipo se desconoce para garantizar la genericidad del componente.

Para mayor detalle de las pruebas unitarias, ver los Anexos M-P.

5.4. RESULTADOS DE LA APLICACIÓN Para poder asegurar el funcionamiento de la aplicación resultante, fue necesaria

la implementación de una serie de pruebas en las cuales se definen unos

escenarios de prueba con sus correspondientes casos de prueba.

Dentro de las pruebas unitarias del componente de comunicaciones se probó el

envió exitoso del mensaje por medio del protocolo HTTP Asíncrono. El primer

intento fue fallido porque la implementación inicial del protocolo asíncrono se

había pensado utilizando un mecanismo de notificación controlado por un

Page 38: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

38

componente mediador dentro de la arquitectura, sin embargo al hacer el detalle

de la misma, éste componente se obvió. Esto causó que el mecanismo de

entrada de mensajes estuviera por implementar. Para la implementación se

utilizó una estrategia de Patrón Observador (Ver Glosario) en donde la clase que

quiera recibir los mensajes por protocolos asíncronos como HTTP Async y SMS

sirviera para esto. Luego de esta implementación en resultado de la prueba fue

exitoso. Este cambio en la implementación final tuvo un costo de 3 horas por

persona hasta su finalización.

Dentro de las pruebas de integración y de sistema, se detectaron una serie de

errores de codificación en términos de validación de parámetros o condicionales.

Estos errores implicaron un esfuerzo de corrección menor a 30 minutos por

persona.

Adicionalmente, se definieron unas métricas para los atributos de calidad

identificados previamente. Estos atributos especifican las características

deseadas en la aplicación final como prioridad. Teniendo esto en cuenta, es

necesario validar el cumplimiento de éstos atributos por medio de sus métricas.

El atributo de flexibilidad define la métrica siguiente:

NUMERO ERRORES POSTERIOR CAMBIOS - NUMERO ERRORES PREVIO

CAMBIOS = 0.

Para garantizar el cumplimiento de esta métrica, se documentó a fondo el

funcionamiento de cada componente con sus características y contratos de

configuración, evitando así el incumplimiento del atributo de calidad de

flexibilidad.

El atributo de reusabilidad define la siguiente métrica:

(LOC COMPONENTES / LOC DR. CHAT) * 100 > 70%.

El cumplimiento de esta métrica se puede evidenciar en la sección 4.3 donde se

exponen las LOC de cada componente y de la aplicación final. Tomando los

valores que allí se presentan, podemos notar cómo se cumple con ésta métrica

siendo que (3225/3386) * 100 = 95.24%.

El atributo de mantenibilidad define la siguiente métrica:

TIEMPO DE CORRECION DE ERRORES < 30 MIN.

El cumplimiento de esta métrica se puede evidenciar en la descripción de las

pruebas de sistema aplicadas y sus resultados, planteados previamente en ésta

sección.

Page 39: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

39

El atributo de extensibilidad define la siguiente métrica:

ESFUERZO PARA EXTENDER FUNCIONALIDADES ≤ 3 H.

El cumplimiento de esta métrica se puede evidenciar en la descripción que se

realizó previamente de las pruebas unitarias de comunicaciones. Allí se expresa

como la implementación de una extensión al componente, teniendo en cuenta

este cambio como una funcionalidad nueva, no planeada; requirió un tiempo de

desarrollo no mayor a 3 horas. Esto apoya el atributo de calidad planteado y su

métrica.

Page 40: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

40

6. CONCLUSIONES

6.1. DISCUSIÓN Dentro de los resultados obtenidos en el desarrollo del sistema, encontramos

que el aprendizaje de la plataforma constituyó un factor importante en los

tiempos de desarrollo invertidos. Windows Mobile es una plataforma sobre la

que se desarrolla en C#. Esto implica que debimos aprender el lenguaje para el

desarrollo del sistema. Aunque C# es un lenguaje orientado a objetos, lo que

reduce los tiempos de aprendizaje, se convierte en una limitante en los inicios

del proyecto.

Por otro lado, Windows Mobile posee una documentación escasa o difícil de

encontrar para apoyar el desarrollo, lo que obliga a navegar en internet en

distintos recursos como foros en busca de la solución. De igual forma, Windows

Mobile es un subconjunto de Windows o de la plataforma de desarrollo más

conocida como el Compact Framework 3.5 lo que implica que no todas las

funcionalidades disponibles en Windows lo están en Windows Mobile. Esto hace

más difícil encontrar algoritmos que se puedan implementar y funcionen. Existen

una serie de páginas web donde es posible apoyarse para el desarrollo de

funcionalidades que Windows Mobile no provee. Entre ellas podemos encontrar:

http://www.planet-source-code.com/

http://www.sourcecodesworld.com/

http://www.codeproject.com/

Estas páginas presentan un apoyo al desarrollador ya que permiten obtener

implementaciones realizadas por otras personas como open-source, las cuales

pueden ser utilizadas en la implementación que se está desarrollando,

disminuyendo el esfuerzo requerido en el proceso de codificación de la solución.

6.2. TRABAJO PENDIENTE

Teniendo en cuenta que el sistema desarrollado tiene un enfoque orientado a

componentes, cada componente tiene aproximaciones que se deben tener en

cuenta para el correcto funcionamiento del sistema.

El componente de comunicaciones plantea a trabajo futuro extender su

funcionalidad para permitir la transferencia de archivos multimedia como

adjuntos, implementando una estrategia para enviar múltiples adjuntos en una

misma trama para ahorro en el flujo de datos.

Page 41: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

41

El componente de persistencia plantea una implementación de la persistencia

por medio de base de datos locales al dispositivo. Esto es posible implementarlo

para mantener dos medios de persistencia en la aplicación: por archivos y por

base de datos. Para ello, se plantea el uso de colas donde se guarden los

objetos a persistir cuando el componente sólo maneja una forma de persistencia.

De esta forma, cuando se cambie el modo de persistencia o cuando se apague

el componente, es necesario persistir los objetos en la cola para mantener la

información sincronizada.

Por último, es importante dar correcto manejo a las excepciones que se lanzan

desde el componente de adaptación para poder localizar con mayor puntualidad

el componente responsable de la funcionalidad correspondiente.

6.3. TRABAJO FUTURO

Una vez se han identificado las funcionalidades necesarias para el correcto

funcionamiento de la aplicación, es necesario determinar que funcionalidades o

comportamientos son deseables modelar en la aplicación y pueden entrar en

desarrollo para la producción del mismo.

El componente de persistencia debe poder invocar los métodos GetObject

recibiendo como parámetro un objeto del tipo deseado. Esto con el objetivo de

poder iterar sobre un objeto con atributos constituidos ya que al ser el

componente genérico no conoce los tipos a modelar por la aplicación o

componente que lo consuma. La iteración sobre un objeto creado se hace con la

librería Reflection de Windows Mobile. Una vez recibido el objeto, es posible

reconstruirlo con los valores a retornar. Se desea poder hacer esto para evitar el

retorno de un objeto tipo TempObject, el cual requiere de algorítmica adicional

para obtener el resultado final. Adicionalmente, se desea poder manejar las

asociaciones de objetos con otros objetos, así como la posibilidad de tener

listas, ya sea de tipos simples u objetos.

Por otra parte, el componente de multimedia propone investigar con mayor

profundidad la compresión de archivos multimedia, particularmente los archivos

de audio. Esta compresión se puede hacer en términos de configuración del

bitrate del archivo ó la duración de la grabación. Para archivos multimedia de

imagen y video, podría disminuirse la calidad de los archivos para disminuir su

tamaño. Para mayor información en la compresión de archivos, revisar el

siguiente enlace de MSDN para el framework de .NET 3.5:

http://msdn.microsoft.com/es-es/library/system.io.compression%28v=VS.90%29.aspx

Page 42: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

42

De igual forma, se debe extender el componente de adaptación para considerar

un comportamiento distinto al de simplemente apagar o enchufar componentes

en ejecución.

Para la aplicación de Doctor Chat, es necesario establecer un sistema de

noticias que sea ofrecido por la Fundación Santa Fe, para recepción de la

aplicación teniendo en cuenta los temas de las consultas realizadas por el

usuario. Para ello, es necesario definir a mayor profundidad el protocolo a

implementar y la información contenida en las noticias. De igual forma, se desea

poder incluir manejo de 3D a la visualización de la aplicación para hacerla más

amigable al usuario, así como permitir la representación de la anatomía humana

para ser más especifico a la hora de señalar la ubicación del posible dolor al

hacer la consulta al médico especializado.

Page 43: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

43

7. BIBLIOGRAFÍA

1. Casal Terreros, J "Desarrollo de Software basado en Componentes".

Consultado el 25 de marzo de 2010 de: http://msdn.microsoft.com/es-

es/library/bb972268.aspx

2. Gamma, Erich, & Helm, Richard, & Johnson, Ralph, & Vlissides, John

(1994). "Design Patterns. Elements of Reusable Object-Oriented

Software". Adisson - Wesley

3. Wigley, Andy, & Moth, Daniel, & Foot, Peter (2007) "Microsoft Mobile

Development Handbook". Microsoft

4. Yao, Paul, & Durant, David (2010). ""Programming NET Compact

Framework 3.5 Second Edition". Adisson - Wesley

5. Radinger, Andrej (2009). "Getting Started with Building Windows Mobile

Solutions with Visual Studio and Windows Mobile 6 SDK". Consultado el

15 de febrero de 2010 de: http://msdn.microsoft.com/es-

co/library/dd721907%28en-us%29.aspx

6. Leroux Bustamante, Michele, & Landry, Nickolas (2009). ""WCG

Guidance for Mobile Developers". Consultado el 20 de marzo de 2010

de: http://wcfguidanceformobile.codeplex.com/

7. Lee, Wei-Meng (2008) "SMS Messaging Using the .NET Compact

Framework". Consultado el 15 de abril de 2010 de:

http://www.devx.com/wireless/Article/38571/0/page/1

8. Wilson, Jim. (2006) "The State and Notifications Broker Part I"

Consultado el 1 abril de 2010 de: http://msdn.microsoft.com/en-

us/library/aa456240.aspx

9. Wilson, Jim. (2006) "The State and Notifications Broker Part II"

Consultado el 1 abril de 2010 de: http://msdn.microsoft.com/en-

us/library/bb286907.aspx

Page 44: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

44

10. Wilson, Jim. (2006) "The State and Notifications Broker Part III"

Consultado el 3 abril de 2010 de: http://msdn.microsoft.com/en-

us/library/bb499669.aspx

11. Obajanjo, Dare. "A comparison of Microsoft C# Programming Language

to Sun Microsystems Java Programming Language". Consultado el 15

de febrero de 2010 de: http://www.25hoursaday.com/CsharpVsJava.html

12. Lhotka, Rockford. (2006) "Expert C# 2005 Business Objects, Second

Edition". Apress

13. J. Mylopoulos, L. Chung, B. Nixon, Representing and Using

Nonfunctional Requirements: A Process-Oriented Approach, IEEE

Transactions on Software Engineering, v.18 n.6, p.483-497, June 1992

[doi>10.1109/32.142871]

Page 45: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

45

8. GLOSARIO

Patrón Singleton

Es un patrón de diseño que asegura que sólo haya una instancia de la

clase dando un punto global de acceso a la misma.

Patrón Modelo, Vista, Controlador (MVC)

Es un estilo arquitectural para cualquier aplicación que separa los datos

de la aplicación, con la interfaz de usuario y con la lógica del negocio.

Patrón Plantilla

Es un patrón de comportamiento usado cuando la algorítmica de algún

método es cambiante pero alguna parte del mismo se puede reutilizar,

entonces se implementa con un método común que llama métodos

abstractos que alguien los extiende para lograr la funcionalidad

específica.

Patrón Observador

Es un patrón de comportamiento usado cuando un objeto puede

registrarse dinámicamente como dependiente de otro, este otro lo notifica

cada vez que su estado interno cambia, también conocido como patrón

suscriptor publicador.

Page 46: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

46

9. ANEXOS

A. Dr. Chat

Introducción

Doctor Chat Móvil hace parte de un proyecto del grupo de investigación

Qualdev de la Universidad de los Andes, que pretende colaborar con la División

de Educación de la Fundación Santa Fe a través del uso de tecnologías de

plataformas móviles para la extensión del servicio Doctor Chat. Esta aplicación

es la implementación para la plataforma Windows Mobile.

Descripción de la Aplicación

Doctor Chat Móvil es una aplicación cliente que debe interactuar con un servidor

para suplir las necesidades de enviar consultas y de recibir contestación a las

mismas. El servidor es algo común para los distintos clientes móviles

desarrollados en otras plataformas por lo que no se hará un énfasis en esta

parte.

Doctor Chat como aplicación móvil cuenta con una serie de requerimientos muy

básicos pero que necesitan la interacción de distintas funcionalidades

específicas como comunicaciones, persistencia y multimedia que son comunes

para cualquier aplicación celular. Estas funcionalidades son provistas por un

componente externo desarrollado por nosotros, que permite aislar la interacción

del framework de Windows Mobile con una aplicación concreta como Doctor

Chat.

Funcionalidades de la Aplicación

La aplicación como tal tiene cinco requerimientos los cuales son: registrar los

datos de un paciente, registrar una consulta, editar los datos de un paciente, ver

las consultas realizadas y editar las consultas realizadas.

Las funcionalidades de la aplicación están basadas en los requerimientos de la

misma, con algunas inclusiones realizadas que sería interesantes tenerlas en

funcionamiento como un suministro de noticias.

Para tener una concepción real de que es lo que se quiere realizar, se hizo un

análisis de las entidades para las funcionalidades de consultas y suministro de

noticias.

Page 47: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

47

Funcionalidades Principales

En Doctor Chat es posible tener registrado un paciente que para cada nueva

consulta deberá ser referenciado por la misma. Cada Consulta además de tener

un paciente, podrá recibir una respuesta.

La estructura de las funcionalidades principales es expresada en la Figura 20.

Figura 20 - Estructura de funcionalidades principales

Suministro de Noticias

Es posible la recepción de noticias en la aplicación provenientes de la Fundación

Santa Fe. Estas noticias son particulares de cada usuario y se presentan acorde

a los intereses y preocupaciones del usuario en cuanto a las consultas

realizadas. Las noticias se caracterizan por la manera expresada en la Figura

21.

Figura 21 - Estructura del suministro de noticias

Diseño de la Aplicación

Diseño General

El diseño general de la aplicación (Ver Figura 22) se basa en un patrón Modelo,

Vista, Controlador, en donde el controlador será el encargado de orquestar el

Page 48: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

48

funcionamiento de la misma. En la vista simplemente se manejaran la lógica de

despliegue en la Interfaz, y en el modelo simplemente encontraremos las

entidades relevantes de la aplicación. Las funcionalidades de comunicaciones,

persistencia y multimedia están encapsuladas en el componente de Qualdev

Windows Mobile el cual Dr. Chat consumirá a través de una interfaz. Es por ello

que Doctor Chat como tal es muy sencillo porque toda la parte que involucra la

interacción con el framework de Windows Mobile esta encapsulado en un

componente aislado y reutilizable.

Figura 22 - Diseño general de la aplicación

Diseño Especifico UI

El diseño específico de la interfaz del usuario se basa en una clase para cada

pantalla, en donde cada pantalla tendrá la responsabilidad de interactuar con el

controlador. La pantalla principal será la contenedora de las demás pantallas y

algunas de ellas contendrán a las que dependan de ella, todo esto para la

correcta visualización de las mismas. El diseño se puede ver en la Figura 23.

Page 49: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

49

Figura 23 - Diseño específico del user interface

Diseño Específico Controlador

El diseño específico del controlador de la aplicación se basa en una interfaz que

expone los servicios del mismo y su implementación que es un 'Singleton' el cual

interactúa con el componente de Qualdev Windows Mobile a través de su

interfaz. Además una clase de utilidades que posee funcionalidades de

instanciación de objetos del modelo. El diseño se puede ver en la Figura 24.

Figura 24 - Diseño específico del controlador

Page 50: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

50

B. DoctorCh@t Móvil y DoctorCh@t Móvil GeoReferencia Documento de Grado de Sebastián Rojas donde se detalla la aplicación original

de Doctor Chat para la plataforma Java Mobile Edition.

C. Componente de Adaptación

Descripción Componente

Encargado de proveer el servicio de que la aplicación se adapte a cambios

generados por el dispositivo móvil que puedan afectar el correcto funcionamiento

de la misma.

Funciones del Componente

Encargado de adaptar la aplicación a cambios en el dispositivo, para que la

aplicación pueda tener un comportamiento adecuado con los recursos

disponibles del celular. Inicialmente solo se monitoreara la batería del

dispositivo. Con estas propiedades se podrá economizar el uso de la memoria

cuando hay escasez de batería.

Diseño del Componente

Figura 25 - Estructura del componente de adaptación

Definición de Interfaces

Figura 26 - Interfaces del componente de adaptación

Page 51: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

51

Descripción Detallada

Descripción

El componente se basa en tener instaladas propiedades en la cual cada una

será capaz de cambiar el comportamiento de la aplicación cuando se generen

cambios en la misma. Por defecto podrán ser instanciadas dos propiedades que

se encargaran de detener ó iniciar componentes de la arquitectura monitoreando

el estado de la batería del celular.

Para hacer posible la extensibilidad del componente se deberá extender la

funcionalidad de la clase abstracta la cual encapsula los llamados a los métodos

de la arquitectura y a su vez de los servicios básicos de cada propiedad el cual

es su correcta inicialización y el manejo de los eventos referentes a los cambios

de la propiedad monitoreada.

Cada propiedad cuenta con dos modos de operación, el modo persistente y el

modo no persistente. El primero básicamente usará la propiedad del identificador

de la aplicación suministrado al componente (Ver Contrato de Configuración)

para registrar la propiedad en el registro del dispositivo móvil para que en

cualquier momento que esta propiedad cambie se le notifique a la aplicación así

no se encuentre corriendo; el modo no persistente simplemente significa que la

propiedad solo estará en servicio cuando la aplicación se esté corriendo.

Contrato de Configuración

Para poder usar el componente se debe cumplir el contrato el cual es definir el id

de la aplicación el cual se insertara en el registro del sistema operativo del

dispositivo móvil para poder notificar a la aplicación del cambio de cada

propiedad monitoreada así no esté inicializada.

Este debe ser un cadena de caracteres la cual cada propiedad le agregara un

sufijo. Por ejemplo la que recibirá el componente será: "QMaplicacionMovil" y

cada propiedad le agregara un sufijo de tipo: ".BatteryLevel" que será inherente

a cada propiedad.

Page 52: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

52

Diagrama de Clases

Figura 27 - Diagrama de clases del componente de adaptación

Referencias

The State and Notifications Broker API Part 1

http://msdn.microsoft.com/en-us/library/aa456240.aspx

The State and Notifications Broker API Part 2

http://msdn.microsoft.com/en-us/library/aa456240.aspx

The State and Notifications Broker API Part 3

http://msdn.microsoft.com/en-us/library/bb499669.aspx

Page 53: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

53

Microsoft Mobile Development Handbook 2007

D. Componente de Comunicaciones

Descripción Componente

Se encarga de la comunicación de la aplicación con su exterior por distintos

protocolos. Estos protocolos se implementaron de tal forma que se vuelva

transparente el uso de la tecnología específica proveyendo servicios simples de

usar.

Funciones del Componente

Encargado del envío y recepción de flujos de datos necesarios para el correcto

funcionamiento de la aplicación con su entorno

Diseño del Componente

Figura 28 - Estructura del componente de comunicaciones

Page 54: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

54

Definición de Interfaces

Figura 29 - Interfaces del componente de comuniaciones

Descripción Communication Facade

Descripción

Es la fachada del componente, encargado de exponer los servicios expuestos

por la implementación de cada protocolo en particular. Los posibles mensajes

que lleguen por medio de un protocolo Asíncrono serán notificados a este

componente el cual llamara al Sujeto del Patrón Observador para que notifique a

todos los observadores. Todos los Observadores que quieran recibir los

mensajes que lleguen por un protocolo Asíncrono deberán inscribirse como

observadores con la Fachada y por ende implementar la Interfaz

ICommunicationObserver.

Page 55: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

55

Diagrama de Clases

Figura 30 - Diagrama de clases de CommunicationFacade

Descripción SMS Component

Descripción

Componente encargado de enviar y recibir mensajes por medio del protocolo

SMS. Al iniciar el componente la aplicación es capaz de filtrar los mensajes SMS

recibidos en el dispositivo para determinar si le pertenece o no.

Dada la restricción de caracteres del protocolo SMS (70 Caracteres en Unicode

o 160 en ASCII) se implemento una estrategia para generar los mensajes SMS

multiparte necesarios para enviar la información necesaria. Para ello se definió

un header en el mensaje que aparte del formato contiene la información

necesaria para que los mensajes en la recepción puedan ser unidos sin ningún

inconveniente.

Para la recepción de mensajes se implemento por medio del patrón estrategia

una forma de poder tener diferentes estrategias de recepción de mensajes

multiparte, para que en ejecución pueda ser seleccionada la estrategia más

adecuada en términos de desempeño, confiabilidad, y uso de recursos.

Actualmente solo se implemento una estrategia simple que como propósito es

muy similar al UDP el cual es entregar solo los mensajes que lleguen

Page 56: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

56

correctamente. Para esto se almacena en un buffer cada parte del mensaje

multiparte, si llegase la parte de un mensaje no correspondiente a los guardados

en el buffer, el nuevo mensaje es almacenado y los demás son descartados.

Adicionalmente se definió un TTL(Time to Live) en el cual si el mensaje no se

completa el buffer será limpiado para no recargar la memoria del dispositivo

móvil.

Contrato de Configuración

Para poder usar el componente se debe cumplir el contrato el cual es definir el

Número Celular del Servidor y un Formato de mínimo 3 caracteres y máximo 6

caracteres que será el header de los mensajes generados para su correcta

identificación a la hora de enviar y recibirlos.

Diagrama de Clases

Figura 31 - Diagrama de clases del SMS component

Descripción HTTP Component

Descripción

Este componente provee el servicio para enviar mensajes de manera asíncrona

y síncrona a la URL especificada abstrayendo la implementación de la

tecnología volviendo transparente el envío de información a través del protocolo

HTTP.

Page 57: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

57

Diagrama de Clases

Figura 32 - Diagrama de clases del HTTP component

E. Componente de Conversión de Datos

Descripción Componente

Se encarga de la transformación de objetos del negocio a formatos para el

intercambio de datos. Estos formatos pueden ser JSON, XML o un archivo

propietario. Actualmente solo se implemento la transformación a JSON por

medio de una librería externa que nos ayudo a la implementación del mismo.

Funciones del Componente

Encargado de la transformación de objetos de negocio a un formato de

intercambio y viceversa.

Diseño del Componente

Figura 33 - Estructura del componente de conversión de datos

Page 58: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

58

Definición de Interfaces

Figura 34 - Interfaces del componente de conversión de datos

Descripción Detallada

Descripción

Al ser un componente tan sencillo, no se ve la necesidad de implementar

métodos para la inicialización o destrucción del mismo durante la ejecución para

el ahorro de recursos. Entonces los únicos servicios que expone el Componente

es la de serializar o de serializar un objeto del negocio de la aplicación en

formatos de intercambio. En este caso solo se implemento la transformación a

JSON ya que resulta más adecuado para el flujo de datos en aplicaciones

móviles por su tamaño más compacto con respecto a XML.

El Contrato del componente es enviar el objeto con sus propiedades definidas e

inicializadas para que al momento de serializar por medio de mecanismos de

reflexión se pueda generar el resultado esperado con mucha facilidad para el

que use el componente. De la misma manera para la de serialización del mismo

se debe enviar una referencia al objeto que debería construirse con la

información del JSON, XML o propietario en cuestión y el resultado será el

objeto con la información adecuada.

Diagrama de Clases

Figura 35 - Diagrama de clases del componente de conversión de datos

Page 59: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

59

F. Componente de Manejo de Multimedia

Introducción

La manipulación de elementos multimedia es importante para aplicaciones que

requieren de utilización de imágenes, sonido y video entre otros. El objetivo de la

creación de un componente que permita la manipulación de multimedia es crítico

para el desarrollo de móviles ya que las nuevas gamas altas de equipos poseen

cámaras de fotografía y video, además de grabadores de audio para guardar o

compartir.

A continuación se presenta la estructura del componente de multimedia así

como el contrato de configuración del mismo.

Estructura del Componente de Multimedia

El componente de multimedia posee una estructura sencilla para la

comunicación con demás componentes que se van a utilizar en la aplicación. El

componente posee una interfaz, la cual será instanciada por la aplicación o

componente que va utilizar los servicios. Esta interfaz se comunica con varias

clases que modelan las diferentes características y servicios de los elementos

multimedia, los cuales se comunican con la interfaz del componente de captura

de archivos multimedia. Todo el componente se soporta sobre el framework de

Windows Mobile.

Figura 36 - Estructura del componente de multimedia

Definición de Interfaces

Las interfaces son las que exponen los servicios de cada componente. A

continuación se definen los mismos para el consumo interno y externo del

componente.

Page 60: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

60

Figura 37 - Interfaces del componente

Componente MediaManipulator

El componente MediaManipulator se encarga de exponer los servicios generales

de obtención de archivos multimedia. La estructura de este componente es la

siguiente.

Figura 38 - Diagrama de clases del componente MediaManipulator

Page 61: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

61

Componente InputMedia

El componente InputMedia expone los servicios de captura de archivos ya sea

mediante los dispositivos del equipo o los archivos existentes. La estructura del

componente es la siguiente.

Figura 39 - Diagrama de clases del componente InputMedia

Contrato de Configuración

Para la correcta utilización del componente de multimedia, es necesario respetar

las restricciones que impone el componente. Para la comunicación con el

componente, se utiliza la interfaz IMediaManipulator, la cual posee un método

attachMedia, el cual recibe como parámetro un IDictionary.

Un IDictionary funciona como un mapa de hash el cual permite asociar un valor

a una llave para la fácil localización de la información necesaria. La Tabla 2

muestra la información requerida a ser pasada en el IDictionary al componente

para su correcto funcionamiento.

Page 62: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

62

Tabla 2 - Información requerida en IDictionary

Llave Valor

tipo imagen, audio, video

obtención dispositivo, directorio

anchoImagen Numérico

altoImagen Numérico

maxDuracion Numérico

G. Componente de Persistencia

Introducción

La persistencia es un factor muy importante en cualquier tipo de aplicaciones ya

que permite guardar la información importante para que la aplicación funcione

con normalidad. El objetivo de la creación del componente es independizar todos

los componentes que participan de la aplicación del manejo de información. Esto

con el propósito de hacer la información más adaptable al contexto en el que se

encuentra la aplicación.

A continuación se presenta la estructura del componente de persistencia con sus

correspondientes diagramas.

Estructura del Componente de Persistencia

El componente de persistencia posee una estructura sencilla, donde se expone

una única interfaz para la comunicación con éste. Esta interfaz es implementada

por una clase que orquesta el funcionamiento del componente. Internamente

comunica con las interfaces de los servicios de persistencia por archivos y de

persistencia por base de datos. La base de datos se soporta sobre la librería de

SQLite y los archivos se soportan sobre el framework de Windows Mobile.

Figura 40 - Estructura del componente de persistencia

Page 63: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

63

Definición de Interfaces

Las interfaces son las que exponen los servicios de cada componente. A

continuación se definen los mismos para el consumo interno y externo del

componente.

Figura 41 - Interfaces del componente

Componente PersistenceManager

El componente PersistenceManager se encarga de exponer los diferentes

servicios de persistencia y controlar el modo en que se persiste la información,

ya sea por archivos o por base de datos. La estructura de este componente es la

siguiente.

Figura 42 - Diagrama de clases del componente PersistenceManager

Page 64: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

64

Componente FilePersistence

El componente FilePersistence expone los servicios de persistencia en archivos.

La estructura del componente es la siguiente.

Figura 43 - Diagrama de clases del componente FilePersistence

Manejo de Retornos

Los métodos GetObject y GetAllObjects retornan un objeto de tipo TempObject.

Este objeto posee una colección de objetos de tipo TempAttribute. Los

TempAttribute tienen un nombre y un valor. Luego de invocar un método que

retorne este objeto, es necesario iterar sobre los TempAttribute y buscar los que

tiene el atributo nombre con valor del nombre de los atributos de la clase

resultado.

Componente DbPersistence

El componente DbPersistence expone los servicios de persistencia en archivos.

La estructura del componente es la siguiente.

Page 65: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

65

Figura 44 - Diagrama de clases del componente DbPersistence

Es necesario recalcar que para el correcto funcionamiento de los métodos de

persistencia, todas las clases que se persisten deben tener un atributo id para

efectos de identificación de los mismos al momento de buscarlos.

H. Pruebas de Sistema Dr. Chat Windows Mobile

Introducción

Para lograr ver el efectivo funcionamiento de Dr. Chat, se realizaron pruebas de

caja negra o de sistema contra los requerimientos especificados, simplemente

es la documentación de los resultados esperados interactuando con la aplicación

final.

Escenarios de Pruebas

Para los escenarios de pruebas se probó sobre el proyecto real de Dr. Chat sin

generar una implementación real para las mismas.

Escenario de Prueba 1

Nombre: Registrar Datos de Paciente

Objetivo: Probar que se registren exitosamente los datos de un paciente en el

formulario destinado para ello. Por debajo se probará el componente de

Persistencia que es el único que interviene en este requerimiento.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia

no Válidas aliasPaciente String Letras Nulo

Page 66: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

66

edad Short Número Letras, Nulo genero Short Número Letras, Nulo estadoCivil Short Número Letras, Nulo profesionOcupacion String Letras Nulo pais Short Número Letras, Nulo ciudad Short Número Letras, Nulo email String Letras Nulo emailConfirmacion String Letras Nulo formadecontestacion Short Número Letras, Nulo

Casos de Prueba

Caso de Prueba: CP1 – Hay campos sin diligenciar en el formulario

a. Condiciones de Entrada

Condición de Entrada

Valor

aliasPaciente edad 55 genero 1 estadoCivil profesionOcupacion Tester pais ciudad 1 email [email protected] emailConfirmacion formadecontestacion 2

b. Resultado Esperado

i. Response:

Debe escribir un nombre o alias

Debe seleccionar un estado civil

Debe seleccionar un país

Debe ingresar un email válido y la confirmación debe ser el mismo

email.

Caso de Prueba: CP2 – La edad no puede ser expresada en caracteres

a. Condiciones de Entrada

Condición de Entrada

Valor

aliasPaciente Registrar Paciente edad cin genero 1 estadoCivil 1 profesionOcupacion Tester

Page 67: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

67

pais 57 ciudad 1 email [email protected] emailConfirmacion [email protected] formadecontestacion 2

b. Resultado Esperado

i. Response: La edad debe ser numérica.

Caso de Prueba: CP3 – Paciente Guardado Exitosamente.

a. Condiciones de Entrada

Condición de Entrada

Valor

aliasPaciente Registrar Paciente edad 55 genero 1 estadoCivil 1 profesionOcupacion Tester pais 57 ciudad 1 email [email protected] emailConfirmacion [email protected] formadecontestacion 2

b. Resultado Esperado

i. Response: Se guardo la información del Paciente Correctamente.

Escenario de Prueba 2

Nombre: Editar Datos de Paciente

Objetivo: Probar que se editen exitosamente los datos de un paciente en el

formulario destinado para ello. Por debajo se probará el componente de

Persistencia que es el único que interviene en este requerimiento.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia

no Válidas aliasPaciente String Letras Nulo edad Short Número Letras, Nulo genero Short Número Letras, Nulo estadoCivil Short Número Letras, Nulo profesionOcupacion String Letras Nulo pais Short Número Letras, Nulo

Page 68: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

68

ciudad Short Número Letras, Nulo email String Letras Nulo emailConfirmacion String Letras Nulo formadecontestacion Short Número Letras, Nulo

Casos de Prueba

Caso de Prueba: CP1 – Hay campos sin diligenciar en el formulario

a. Condiciones de Entrada

Condición de Entrada

Valor

aliasPaciente Editar Paciente edad genero 1 estadoCivil 1 profesionOcupacion pais 57 ciudad 1 email [email protected] emailConfirmacion [email protected] formadecontestacion 2

b. Resultado Esperado

i. Response:

La edad debe ser numérica

Debe escribir una profesión u ocupación

Caso de Prueba: CP2 – El paciente se edito satisfactoriamente

a. Condiciones de Entrada

Condición de Entrada

Valor

aliasPaciente Editar Paciente edad 55 genero 1 estadoCivil 1 profesionOcupacion Tester pais 57 ciudad 1 email [email protected] emailConfirmacion [email protected] formadecontestacion 2

b. Resultado Esperado

i. Response: Se guardo la información del Paciente Correctamente.

Page 69: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

69

Caso de Prueba: CP3 – Al recargar el panel con la información del paciente se

muestran los datos de la última edición.

a. Condiciones de Entrada

Se sale e ingresa nuevamente al Panel con la información del paciente

para validar que los datos son los correctos.

b. Resultado Esperado

Condición de Salida Valor aliasPaciente Editar Paciente edad 55 genero 1 estadoCivil 1 profesionOcupacion Tester pais 57 ciudad 1 email [email protected] emailConfirmacion [email protected] formadecontestacion 2

Escenario de Prueba 3

Nombre: Registrar consulta

Objetivo: Probar que registre exitosamente una consulta de un paciente en el

formulario destinado para ello. Por debajo se probará el componente de

Persistencia, Multimedia y Comunicación.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia

no Válidas consulta String Letras Nulo adjuntos List<String> Letras

Casos de Prueba

Caso de Prueba: CP1 – No se ingresa una consulta pero si adjuntos

a. Condiciones de Entrada

Condición de Entrada

Valor

consulta adjuntos \\My Documents\My Pictures\Flower.jpg

\\My Documents\Notes\rec63404256121000.wav

Page 70: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

70

b. Resultado Esperado

i. Response: Ingrese una Consulta

Caso de Prueba: CP2 – No se ingresan adjuntos pero si una consulta

a. Condiciones de Entrada

Condición de Entrada

Valor

consulta Registrar consulta adjuntos

b. Resultado Esperado

i. Response: Se envió la consulta satisfactoriamente.

Caso de Prueba: CP3 – Se ingresa tanto una consulta como adjuntos

a. Condiciones de Entrada

Condición de Entrada

Valor

consulta Registrar consulta adjuntos \\My Documents\My Pictures\Flower.jpg

\\My Documents\Notes\rec63404256121000.wav

b. Resultado Esperado

i. Response: Se envió la consulta satisfactoriamente.

Escenario de Prueba 4

Nombre: Ver consultas realizadas

Objetivo: Probar que se visualicen exitosamente las consultas realizadas por un

paciente en el formulario destinado para ello. Por debajo se probará el

componente de Persistencia y Comunicación.

Clases de Equivalencia

No hay.

Casos de Prueba

Caso de Prueba: CP1 – Ver consultas realizadas

a. Condiciones de Entrada

No hay.

b. Resultado Esperado

Page 71: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

71

i. Response: Listado de consultas realizadas.

Escenario de Prueba 5

Nombre: Editar consultas realizadas

Objetivo: Probar que se editen (borren) exitosamente las consultas realizadas

por un paciente en el formulario destinado para ello. Por debajo se probará el

componente de Persistencia.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia

no Válidas idConsulta Int64 Número Letras, Nulo

Casos de Prueba

Caso de Prueba: CP1 – Borrar consulta realizada

a. Condiciones de Entrada

Condición de Entrada

Valor

idConsulta 20100518004849000

b. Resultado Esperado

i. Response: La consulta fue borrada exitosamente.

Resultados de las Pruebas La ejecución de las pruebas se muestra en el siguiente formato.

Escenario de Prueba 1

Caso de Prueba: CP1 – Hay campos sin diligenciar en el formulario

Primer Intento Exitoso

Caso de Prueba: CP2 – La edad no puede ser expresada en caracteres

Primer Intento Exitoso

Page 72: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

72

Caso de Prueba: CP3 – Paciente Guardado Exitosamente.

Primer Intento Exitoso

Escenario de Prueba 2

Caso de Prueba: CP1 – Hay campos sin diligenciar en el formulario.

Primer Intento Exitoso

Caso de Prueba: CP2 – El paciente se edito satisfactoriamente.

Primer Intento Exitoso

Page 73: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

73

Caso de Prueba: CP3 – Al recargar el panel con la información del

paciente se muestran los datos de la última edición.

Primer Intento Exitoso

Escenario de Prueba 3

Caso de Prueba: CP1 – No se ingresa una consulta pero si adjuntos

Caso de Prueba: CP2 – No se ingresan adjuntos pero si una consulta

Page 74: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

74

Caso de Prueba: CP3 – Se ingresa tanto una consulta como adjuntos

Escenario de Prueba 4

Caso de Prueba: CP1 – Ver consultas realizadas

Escenario de Prueba 5

Caso de Prueba: CP1 – Borrar consulta realizada

Page 75: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

75

I. Pruebas Integración Componente Adaptación

Introducción

Para lograr ver la funcionalidad del componente de Adaptación se creara un

cliente que muestre el estado de los componentes de la arquitectura de Qualdev

Windows Mobile y de como el cambio en el estado de la batería generará

cambios en el estado de los componentes de la Arquitectura.

Escenarios de Pruebas

Para los escenarios de pruebas se decidió crear un cliente móvil que en pantalla

muestre el estado de los componentes.

Escenario de Prueba 1

Nombre: Correcta funcionalidad del componente con la propiedad del nivel de la

batería

Objetivo: Probar el correcto funcionamiento de los componentes generando

cambios en el nivel de la batería y certificar el cambio de los mismos.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia Válidas

Clases de Equivalencia no

Válidas

baterryLevel BatteryLevel

BatteryLevel

Nulo

Casos de Prueba

Caso de Prueba: CP1 – Los componentes de la arquitectura se detengan

cuando la batería este muy baja.

a. Condiciones de Entrada

Condición de Entrada

Valor

Page 76: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

76

baterryLevel VeryLow

b. Resultado Esperado

i. Response:

HttpComponent : Stopped

PersistenceComponent : Stopped

MultimediaComponent : Stopped

Caso de Prueba: CP2 – Los componentes de la arquitectura se arrancan

cuando la batería pase a un estado con alta disponibilidad.

a. Condiciones de Entrada

Condición de Entrada

Valor

baterryLevel High

b. Resultado Esperado

i. Response:

HttpComponent : Started

PersistenceComponent : Started

MultimediaComponent : Started

Resultados de las Pruebas

La ejecución de las pruebas se muestra en el siguiente formato.

Escenario de Prueba 1

Caso de Prueba: CP1 – Los componentes de la arquitectura se detengan

cuando la batería este muy baja.

Resultado Exitoso

Caso de Prueba: CP2 – Los componentes de la arquitectura se arrancan

cuando la batería pase a un estado con alta disponibilidad.

Resultado Exitoso

Page 77: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

77

J. Pruebas Integración Componente Comunicaciones y Conversión de Datos

Introducción

Para lograr ver la interacción entre los componentes de Comunicaciones y

Conversión de datos se realizaron pruebas de Caja Negra en donde se quería

probar el comportamiento de los Componentes en un contexto real.

Adicionalmente se encontrara el proyecto base en el cual se realizaron estas

pruebas.

Escenarios de Pruebas

Para los escenarios de pruebas se decidió interactuar con el Intermediario del

caso de estudio de DR. Chat el cual será probado con los requerimientos de

registrar un paciente y enviar una consulta. Adicionalmente se probara el

Componente de SMS con datos precisos.

Escenario de Prueba 1

Nombre: Envíos exitosos para registrar y enviar una consulta

Objetivo: Probar que se registre un paciente exitosamente y que se envié una

consulta exitosamente. Comprobando que la respuesta del servidor sea la

adecuada. En los métodos Síncrono y Asíncrono.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

consulta Consulta Consulta

{id, IMEI, texto,

consecutivo,

latitud, longitud,

conCoordenadas,

sector }

Nulo

Page 78: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

78

paciente Paciente Paciente

{id, IMEI, aliasPaciente,

edad, genero,

estadoCivil,

profesionOcupacion,

pais,ciudad, email,

formadecontestacion}

Nulo

url String Letras Nulo

Casos de Prueba

Caso de Prueba: CP1 – Registro del Paciente exitoso por medio del protocolo

HTTP Síncrono

a. Condiciones de Entrada

Condición de

Entrada

Valor

consulta c.id=123;

c.IMEI="123";

c.texto="Texto!!";

c.consecutivo=123456;

c.latitud=0.0;

c.longitud=0.0;

c.conCoordenadas=false;

c.sector=3;

URL http://157.253.204.33:8080/DrChatWebAdapter/Pregunta

b. Resultado Esperado

i. Response: Json con el Exitoso!

Caso de Prueba: CP2 – Envío de Consulta exitoso por medio del protocolo

HTTP Asíncrono

a. Condiciones de Entrada

Condición de

Entrada

Valor

paciente p.id = 1;

p.ciudad = 1;

p.genero = 1;

p.pais = 57;

p.IMEI = "127";

p.email = "[email protected]";

p.estadoCivil = 1;

p.formadecontestacion = 0;

p.edad = 21;

p.aliasPaciente = "Pepo";

p.profesionOcupacion = "Estudiante";

URL http://157.253.204.33:8080/DrChatWebAdapter/Paciente

b. Resultado Esperado

Page 79: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

79

i. Ninguno

ii. Los Observadores sean notificados con el response del servidor: Json

con el Exitoso!

Escenario de Prueba 2

Nombre: Envió Exitoso del Mensaje Por Medio del Protocolo SMS

Objetivo: Probar que los métodos del Componente SMS Funcionen

Adecuadamente.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

smsComponent ISMSComponent SMSComponent Nulo

Format String Letras Menor a 3 Caracteres Mayor a 6 caracteres

ServerNumber String Letras Nulo

Casos de Prueba

Caso de Prueba: CP1 – Número requerido de Mensajes es Adecuado con ASCII

y se envía el Mensaje

a. Condiciones de Entrada

Condición de Entrada Valor

Message "Mensaje a Enviar por SMS con 180 caracteres. Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno"

b. Resultado Esperado

i. Se Necesitan 2 SMS para enviar el Mensaje

ii. El Mensaje fue Enviado Exitosamente en 2 Mensajes Distintos

Caso de Prueba: CP2 – Número requerido de Mensajes es Adecuado con

UNICODE y se envía el mensaje

a. Condiciones de Entrada

Condición de Entrada Valor

Message "Mensaje a Enviar por SMS con 210 caracteres algunos especiales como la

Page 80: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

80

ñ. Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno!"

b. Resultado Esperado

i. Se Necesitan 4 SMS para enviar el Mensaje

ii. El Mensaje fue Enviado Exitosamente en 4 Mensajes Distintos

Resultados de las Pruebas

La ejecución de las pruebas se muestra en el siguiente formato.

Escenario de Prueba 1

Caso de Prueba: CP1 – Registro del Paciente exitoso por medio del

protocolo HTTP Síncrono

Se registra el paciente exitosamente codificando los parámetros en un

mensaje de salida JSON correcto, sin embargo el mensaje JSON de

respuesta hace referencia a un error que se sale del contexto puesto que

es relevante al servidor y no a la aplicación móvil que en este caso es el

Cliente.

Caso de Prueba: CP2 – Envío de Consulta exitoso por medio del

protocolo HTTP Asíncrono

Se hace la consulta exitosamente codificando los parámetros en un

mensaje de salida JSON correcto, sin embargo el mensaje JSON de

respuesta hace referencia a un error que se sale del contexto puesto que

es relevante al servidor y no a la aplicación móvil que en este caso es el

Cliente. La respuesta se muestra en interfaz en el momento en que llega

al ser un pedido asíncrono. Sin embargo al ejecutar otra prueba hubo

problema de conexión GPRS y en el componente no se hace un correcto

tratamiento con las excepciones por lo que la aplicación se interrumpe, lo

que incurre a hacer unos cambios en este aspecto al Componente de

Comunicaciones HTTP

Escenario de Prueba 2

Caso de Prueba: CP1 – Número requerido de Mensajes es Adecuado con

ASCII y se envía el Mensaje

Se esperaba que con el header y el mensaje a Enviar se necesitaran dos

mensajes y los mismos fueran enviados. Al ejecutar la prueba el resultado

fue exitoso y por medio del Cellular Emulator se certifico el contenido de

los mensajes salientes.

Page 81: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

81

Caso de Prueba: Caso de Prueba: CP2 – Número requerido de Mensajes

es Adecuado con UNICODE y se envía el mensaje

Se esperaba que con el header y el mensaje a Enviar se necesitaran

cuatro mensajes y los mismos fueran enviados. Al ejecutar la prueba el

resultado fue exitoso y por medio del Cellular Emulator se certifico el

contenido de los mensajes salientes.

K. Pruebas de Integración Componente Multimedia

Introducción

Para lograr ver la interacción entre el componente de multimedia y la aplicación

componente que lo consuma, se realizaron pruebas de Caja Negra en donde se

quería probar el comportamiento del componente en un contexto real.

Escenarios de Pruebas

Nombre: Captura exitosa de elementos multimedia.

Objetivo: Probar que se capturan exitosamente los diferentes tipos de

multimedia.

Clases de Equivalencia

Page 82: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

82

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

tipo String imagen, audio, video

Vacío Valores diferentes

obtención String dispositivo, directorio

Vacío Valor diferentes

Casos de Prueba

Caso de Prueba: CP1 – Captura de imagen desde cámara

a. Condiciones de Entrada

Condición de Entrada Valor

tipo imagen

obtención dispositivo

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP2 – Captura de imagen desde sistema de archivos

a. Condiciones de Entrada

Condición de Entrada Valor

tipo imagen

obtención directorio

b. Resultado Esperado i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP3 – Captura de audio desde grabadora

a. Condiciones de Entrada

Condición de Entrada Valor

tipo audio

obtención dispositivo

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP4 – Captura de audio desde sistema de archivos

a. Condiciones de Entrada

Condición de Entrada Valor

tipo audio

obtención directorio

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Page 83: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

83

Caso de Prueba: CP5 – Captura de video desde cámara

a. Condiciones de Entrada

Condición de Entrada Valor

tipo video

obtención dispositivo

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP6 – Captura de video desde sistema de archivos

a. Condiciones de Entrada

Condición de Entrada Valor

tipo video

obtención directorio

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

L. Pruebas de Integración Componente Persistencia

Introducción

Para lograr ver la interacción entre el componente de persistencia y la aplicación

o componente que lo consuma, se realizaron pruebas de Caja Negra en donde

se quería probar el comportamiento del componente en un contexto real.

Escenarios de Pruebas

Nombre: Retorno y persistencia exitosa de los elementos especificados.

Objetivo: Probar que se retornan y persisten exitosamente los elementos que se

solicitan.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

Mode String file, database, file_database

Vacío Valores diferentes

objName String Letras Caracteres especiales

object Object dispositivo, directorio

Vacío Valor diferentes

Casos de Prueba

Caso de Prueba: CP1 – Guardar los datos de un objeto

Page 84: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

84

a. Condiciones de Entrada

Condición de Entrada Valor

object Persona ( id = 1, nombre = “Laura”, edad = 21, genero = “Femenino”, estadoCivil = “Soltera”, pais = “Colombia”, ciudad = “Bogota”, email = “[email protected]”, formaContestacion = “Email” )

b. Resultado Esperado

i. Ninguno.

Caso de Prueba: CP2 – Eliminar un objeto

a. Condiciones de Entrada

Condición de Entrada Valor

object Persona ( id = 1, nombre = “Laura”, edad = 21, genero = “Femenino”, estadoCivil = “Soltera”, pais = “Colombia”, ciudad = “Bogota”, email = “[email protected]”, formaContestacion = “Email” )

b. Resultado Esperado

i. Ninguno.

Caso de Prueba: CP3 – Retornar un objeto de acuerdo a un tipo e id

a. Condiciones de Entrada

Condición de Entrada Valor

objName Persona

id 1

b. Resultado Esperado

Page 85: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

85

i. El objeto de tipo Persona con el 1.

Persona (

id = 1,

nombre = “Laura”,

edad = 21,

genero = “Femenino”,

estadoCivil = “Soltera”,

pais = “Colombia”,

ciudad = “Bogota”,

email = “[email protected]”,

formaContestacion = “Email”

)

Caso de Prueba: CP4 – Retornar un conjunto de objetos de acuerdo a un tipo

a. Condiciones de Entrada

Condición de Entrada Valor

objName Persona

b. Resultado Esperado

i. El conjunto de objetos de tipo Persona.

Persona (

id = 1,

nombre = “Laura”,

edad = 21,

genero = “Femenino”,

estadoCivil = “Soltera”,

pais = “Colombia”,

ciudad = “Bogota”,

email = “[email protected]”,

formaContestacion = “Email”

),

Persona (

id = 2,

nombre = “Daniel”,

edad = 21,

genero = “Masculino”,

estadoCivil = “Soltero”,

pais = “Colombia”,

ciudad = “Bogota”,

Page 86: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

86

email = “[email protected]”,

formaContestacion = “Email”

)

M. Pruebas Unitarias Componente Comunicaciones

Introducción

Al desarrollar un nuevo software, la primera etapa de pruebas a considerar es la

etapa de pruebas unitarias o también llamada pruebas de caja blanca. El

objetivo fundamental de las pruebas unitarias es asegurar el correcto

funcionamiento de las interfaces, o flujo de datos entre componentes. Las

pruebas unitarias son más exhaustivas que otros tipos de pruebas, implican

hacer pruebas por clase, función y otras unidades mínimas que se hayan

considerado. Las pruebas se realizan sobre las entradas y salidas y se

comprueban que los resultados sean los esperados.

A continuación se presentan los escenarios de pruebas y sus correspondientes

casos de prueba para ejecutar en el componente de comunicaciones.

Escenarios de Pruebas

Para los escenarios de pruebas de HTTP se monto un Handler en ASP.NET el

cual retornara el mensaje entrante precedido de un "Hello World!"

Escenario de Prueba 1

Nombre: Envió exitoso del mensaje por medio del protocolo HTTP

Objetivo: Probar que se envié exitosamente el mensaje comprobando que la

respuesta del servidor sea la adecuada. En los métodos Síncrono y Asíncrono.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

url String Letras Nulo

message String Letras Nulo

httpComponent IHTTPComponent HTTPComponent Nulo

Casos de Prueba

Caso de Prueba: CP1 – Envió exitoso del mensaje por medio del protocolo

HTTP Síncrono

a. Condiciones de Entrada

Condición de

Valor

Page 87: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

87

Entrada

Message Mensaje Enviado que será un JSON o XML Sincrono

URL http://192.168.174.129/TestCommunication/handler.ashx

b. Resultado Esperado

i. Response: Hello World! Mensaje Enviado que será un JSON o XML

Sincrono

Caso de Prueba: CP2 – Envió exitoso del mensaje por medio del protocolo

HTTP Asíncrono

a. Condiciones de Entrada

Condición de

Entrada

Valor

Message Mensaje Enviado que será un JSON o XML Asincrono

URL http://192.168.174.129/TestCommunication/handler.ashx

b. Resultado Esperado

i. Ninguno

ii. Los Observadores sean notificado con el response del servidor: Hello

World! Mensaje Enviado que será un JSON o XML Asincrono

Caso de Prueba: CP3 – Envió erróneo del mensaje por medio del protocolo

HTTP Asíncrono

a. Condiciones de Entrada

Condición de Entrada

Valor

Message Mensaje Enviado que será un JSON o XML Asincrono

URL http://192.168.174.129/TestCommunication/handler.ashx

httpComponent Nulo, por no ser inicializado

b. Resultado Esperado

i. Se lanza una Excepción por intentar mandar un mensaje con el

Componente HTTP Parado.

Escenario de Prueba 2

Nombre: Envió Exitoso del Mensaje Por Medio del Protocolo SMS

Objetivo: Probar que los métodos del Componente SMS Funcionen

Adecuadamente.

Clases de Equivalencia

Page 88: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

88

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

smsComponent ISMSComponent SMSComponent Nulo

Format String Letras Menor a 3 Caracteres Mayor a 6 caracteres

ServerNumber String Letras Nulo

Casos de Prueba

Caso de Prueba: CP1 – Envió exitoso SMS

a. Condiciones de Entrada

Condición de Entrada Valor

Message "Mensaje a Enviar por SMS"

b. Resultado Esperado

i. No se lanza ninguna excepción enviando el Mensaje.

Caso de Prueba: CP3 – Número requerido de Mensajes es Adecuado con ASCII

a. Condiciones de Entrada

Condición de Entrada Valor

Message "Mensaje a Enviar por SMS con 180 caracteres. Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno"

b. Resultado Esperado

i. Se Necesitan 2 SMS para enviar el Mensaje.

Caso de Prueba: CP3 – Número requerido de Mensajes es Adecuado con

UNICODE

a. Condiciones de Entrada

Condición de Entrada Valor

Message "Mensaje a Enviar por SMS con 210 caracteres algunos especiales como la ñ. Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno Relleno!"

Page 89: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

89

b. Resultado Esperado

i. Se Necesitan 3 SMS para enviar el Mensaje.

Caso de Prueba: CP5 – Componente SMS Inicializado Erróneamente

a. Condiciones de Entrada

Condición de Entrada Valor

formato AB

serverNumber 3001234567

b. Resultado Esperado

i. Se lanza una excepción indicando que el formato debe ser mayor a 3

caracteres y menor a 6 caracteres.

Resultados de las Pruebas

La ejecución de las pruebas se muestra en el siguiente formato.

Escenario de Prueba 1

Caso de Prueba: CP1 – Envió exitoso del mensaje por medio del

protocolo HTTP Síncrono

Primer Intento Exitoso

Caso de Prueba: CP2 – Envió exitoso del mensaje por medio del

protocolo HTTP Asíncrono

Primer Intento Fallido, porque la implementación inicial del protocolo

Asíncrono se había pensado con un mecanismo de notificación

controlado por un componente mediador dentro de la arquitectura, sin

embargo al hacer el detalle de la misma este componente se obvio. Por lo

tanto el mecanismo de entrada de mensajes estaba por implementar. Se

implemento el mecanismo de entrada con una estrategia de Patrón

Observador en donde la clase que quiera recibir los mensajes por

protocolos asíncronos como HTTP Async y SMS sirviera para esto.

En el primer intento luego de esta implementación en resultado de la

prueba fue exitoso.

Caso de Prueba: CP3 – Envió erróneo del mensaje por medio del

protocolo HTTP Asíncrono

Primer Intento Exitoso

Page 90: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

90

Escenario de Prueba 2

Este escenario no fue probado porque se necesitaba probar sobre el emulador y

la imagen del dispositivo por lo que la mejor alternativa era hacer pruebas de

caja negra.

N. Pruebas Unitarias Componente Conversión de Datos

Introducción

Al desarrollar un nuevo software, la primera etapa de pruebas a considerar es la

etapa de pruebas unitarias o también llamada pruebas de caja blanca. El

objetivo fundamental de las pruebas unitarias es asegurar el correcto

funcionamiento de las interfaces, o flujo de datos entre componentes. Las

pruebas unitarias son más exhaustivas que otros tipos de pruebas, implican

hacer pruebas por clase, función y otras unidades mínimas que se hayan

considerado. Las pruebas se realizan sobre las entradas y salidas y se

comprueban que los resultados sean los esperados.

A continuación se presentan los escenarios de pruebas y sus correspondientes

casos de prueba para ejecutar en el componente de conversión de datos.

Escenarios de Pruebas

Escenario de Prueba 1

Nombre: Serialización y Deserialización de un Objeto a formato JSON

Objetivo: Probar que se haga la conversión de un objeto de prueba

exitosamente a su similar en Json.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

obj Object Paciente

{id, nombre, ciudad,

genero,pais,

email}

Nulo

json String Letras Nulo

Casos de Prueba

Caso de Prueba: CP1 – Serialización exitoso del objeto Paciente por medio

componente Converter en su implementación JSON.

a. Condiciones de Entrada

Page 91: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

91

Condición de Entrada

Valor

pacienteTestObj pacienteTestObj.ciudad = "Bogotá";

pacienteTestObj.email = "[email protected]";

pacienteTestObj.genero = "Femenino";

pacienteTestObj.id ="1";

pacienteTestObj.nombre="Niña de Prueba";

pacienteTestObj.pais = "Colombia";

b. Resultado Esperado

i. ExpectedJSON: {"id":"1","nombre":"Niña de

Prueba","ciudad":"Bogotá","genero":"Femenino","pais":"Colombia","ema

il":"[email protected]"}

Caso de Prueba: CP2 – Deserialización exitosa del JSON al objeto Paciente.

a. Condiciones de Entrada

Condición de

Entrada

Valor

jsonEntry {"id":"1","nombre":"Niña de Prueba","ciudad":"Bogotá","genero":"Femenino","pais":"Colombia","email":"[email protected]"}

objCast New Paciente()

b. Resultado Esperado

i. response.ciudad = "Bogotá";

ii. response.email = "[email protected]";

iii. response.genero = "Femenino";

iv. response.id ="1";

v. response.nombre="Niña de Prueba";

vi. response.pais = "Colombia";

Resultados de las Pruebas

La ejecución de las pruebas se muestra en el siguiente formato.

Escenario de Prueba 1

Caso de Prueba: CP1 – Serialización exitoso del objeto Paciente por

medio componente Converter en su implementación JSON

Primer Intento Exitoso

Caso de Prueba: CP2 – – Deserialización exitosa del JSON al objeto

Paciente

Primer Intento Exitoso

Page 92: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

92

O. Pruebas Unitarias Componente Multimedia

Introducción

Al desarrollar un nuevo software, la primera etapa de pruebas a considerar es la

etapa de pruebas unitarias o también llamada pruebas de caja blanca. El

objetivo fundamental de las pruebas unitarias es asegurar el correcto

funcionamiento de las interfaces, o flujo de datos entre componentes. Las

pruebas unitarias son más exhaustivas que otros tipos de pruebas, implican

hacer pruebas por clase, función y otras unidades mínimas que se hayan

considerado. Las pruebas se realizan sobre las entradas y salidas y se

comprueban que los resultados sean los esperados.

A continuación se presentan los escenarios de pruebas y sus correspondientes

casos de prueba para ejecutar en el componente de multimedia.

Escenarios de Pruebas

Escenario de Prueba 1

Nombre: Captura exitosa de elementos multimedia.

Objetivo: Probar que se capturan exitosamente los diferentes tipos de

multimedia.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

Tipo String imagen, audio, video

Vacío Valores diferentes

obtención String dispositivo, directorio

Vacío Valor diferentes

Casos de Prueba

Caso de Prueba: CP1 – Captura de imagen desde cámara

a. Condiciones de Entrada

Condición de Entrada Valor

tipo imagen

obtención dispositivo

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP2 – Captura de imagen desde sistema de archivos

Page 93: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

93

a. Condiciones de Entrada

Condición de Entrada Valor

tipo imagen

obtención directorio

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP3 – Captura de audio desde grabadora

a. Condiciones de Entrada

Condición de Entrada Valor

tipo audio

obtención dispositivo

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP4 – Captura de audio desde sistema de archivos

a. Condiciones de Entrada

Condición de Entrada Valor

tipo audio

obtención directorio

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP5 – Captura de video desde cámara

a. Condiciones de Entrada

Condición de Entrada Valor

tipo video

obtención dispositivo

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP6 – Captura de video desde sistema de archivos

a. Condiciones de Entrada

Condición de Entrada Valor

tipo video

obtención directorio

Page 94: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

94

b. Resultado Esperado

i. Elemento de tipo Media: diferente de null

Caso de Prueba: CP7 – Iniciar el componente de multimedia

a. Condiciones de Entrada: No hay

b. Resultado Esperado

i. Atributo input: diferente de null.

Caso de Prueba: CP8 – Detener el componente de multimedia

a. Condiciones de Entrada: No hay

b. Resultado Esperado

i. Atributo input: igual a null.

Escenario de Prueba 2

Nombre: Manejo de excepciones de captura de multimedia exitoso.

Objetivo: Probar que se manejan las excepciones lanzadas por la captura de

multimedia de forma exitosa.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

tipo String imagen, audio, video

Vacío Valores diferentes

obtención String dispositivo, directorio

Vacío Valor diferentes

Casos de Prueba

Caso de Prueba: CP1 – Captura de imagen desde cámara

a. Condiciones de Entrada

Condición de Entrada Valor

tipo imagen

obtención dispositivo

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo adjuntar la imagen.

Caso de Prueba: CP3 – Captura de audio desde grabadora

a. Condiciones de Entrada

Condición de Entrada Valor

tipo audio

Page 95: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

95

obtención dispositivo

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo adjuntar el audio.

Caso de Prueba: CP5 – Captura de video desde cámara

a. Condiciones de Entrada

Condición de Entrada Valor

tipo video

obtención dispositivo

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo adjuntar el video.

Caso de Prueba: CP6 – Captura de multimedia desde sistema de archivos

a. Condiciones de Entrada

Condición de Entrada Valor

tipo imagen, audio, video

obtención directorio

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo adjuntar el elemento

multimedia desde el sistema de archivos.

Caso de Prueba: CP7 – Adjuntar elemento multimedia

a. Condiciones de Entrada:

Condición de Entrada Valor

tipo imagen, audio, video

obtención dispositivo, directorio

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo adjuntar el elemento

multimedia solicitado.

P. Pruebas Unitarias Componente Persistencia

Introducción

Para lograr ver la interacción entre el componente de persistencia y la aplicación

o componente que lo consuma, se realizaron pruebas de Caja Negra en donde

se quería probar el comportamiento del componente en un contexto real.

Page 96: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

96

Escenarios de Pruebas

Escenario de Prueba 1

Nombre: Retorno y persistencia exitosa de los elementos especificados.

Objetivo: Probar que se retornan y persisten exitosamente los elementos que se

solicitan.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

Mode String file, database, file_database

Vacío Valores diferentes

objName String Letras Caracteres especiales

object Object dispositivo, directorio

Vacío Valor diferentes

Casos de Prueba

Caso de Prueba: CP1 – Iniciar el componente de persistencia

a. Condiciones de Entrada

Condición de Entrada Valor

Mode file, database, file_database

b. Resultado Esperado

i. Atributo filePersistence: diferente de null ó

ii. Atributo dbPersistence: diferente de null

Caso de Prueba: CP2 – Detener el componente de persistencia

a. Condiciones de Entrada

Condición de Entrada Valor

Mode file, database, file_database

b. Resultado Esperado

i. Atributo filePersistence: igual a null ó

ii. Atributo dbPersistence: igual a null

Caso de Prueba: CP3 – Persistir un objeto

a. Condiciones de Entrada

Condición de Entrada Valor

object Un objeto cualquiera con atributos con valor.

Page 97: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

97

b. Resultado Esperado

i. Se persistió el objeto correctamente.

Caso de Prueba: CP4 – Eliminar un objeto

a. Condiciones de Entrada

Condición de Entrada Valor

object Un objeto cualquiera con atributos con valor.

b. Resultado Esperado

i. Se eliminó el objeto correctamente

Caso de Prueba: CP5 – Retornar un objeto

a. Condiciones de Entrada

Condición de Entrada Valor

objName El tipo del objeto buscado. El nombre de la clase.

id El identificador de la clase.

b. Resultado Esperado

i. Se retorna un objeto con las características buscadas.

Caso de Prueba: CP6 – Retornar todos los objetos de un mismo tipo

a. Condiciones de Entrada

Condición de Entrada Valor

objName El tipo del objeto buscado. El nombre de la clase.

b. Resultado Esperado

i. Se retorna el conjunto de objetos del tipo especificado.

Escenario de Prueba 2

Nombre: Manejo de excepciones de obtención de elementos por parte del

componente de persistencia.

Objetivo: Probar que se manejan las excepciones lanzadas el retorno de

objetos.

Clases de Equivalencia

Condición de Entrada

Tipo Clases de Equivalencia

Válidas

Clases de Equivalencia no

Válidas

Page 98: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

98

Mode String file, database, file_database

Vacío Valores diferentes

objName String Letras Caracteres especiales

object Object dispositivo, directorio

Vacío Valor diferentes

Casos de Prueba

Caso de Prueba: CP1 – Retornar un objeto

a. Condiciones de Entrada

Condición de Entrada Valor

objName El tipo del objeto buscado. El nombre de la clase.

id El identificador de la clase.

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo retornar el objeto

deseado.

Caso de Prueba: CP3 – Retornar todos los objetos de un tipo

a. Condiciones de Entrada

Condición de Entrada Valor

objName El tipo del objeto buscado. El nombre de la clase.

b. Resultado Esperado

i. Se lanza una excepción indicando que no se pudo retornar el conjunto

de objetos deseados.

Q. Despliegue de una aplicación en un dispositivo basado en Windows Mobile

Introducción

En este tutorial se mostrarán los pasos necesarios para lograr desplegar una

aplicación en un dispositivo basado en Windows Mobile.

Los pasos a realizar son:

Tener una versión estable de la aplicación desarrollada en Visual Studio

2008

Empaquetar la aplicación en un contenedor CAB

Copiar el contenedor CAB en el dispositivo e instalar la aplicación desde

el mismo.

Page 99: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

99

Instrucciones

Empaquetar la aplicación en un contenedor CAB

1. En la solución de nuestra aplicación agregaremos un nuevo proyecto.

Para esto haremos clic derecho sobre la solución y agregaremos un

proyecto "Smart Device CAB Project" ubicado en Other Project Types >

Setup and Deployment.

2. Haga clic sobre Application Folder dentro de la vista File System Editor. Si

no puede esta vista, haga clic derecho sobre el proyecto CAB, después

clic en View y finalmente en File System.

3. Haga clic sobre Action en la Barra de Herramientas de Visual Studio y

luego Project Output.

4. En el proyecto seleccionar nuestra aplicación asegurarnos de seleccionar

Primary Output y seleccionar OK.

5. Como último paso debemos hacer clic derecho sobre el proyecto CAB y

seleccionar Build, esto nos generara el archivo CAB en el lugar donde se

encuentra ubicado el proyecto en el computador dentro de una carpeta

Debug.

Page 100: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

100

Despliegue de la aplicación en el Dispositivo Móvil.

1. Este paso puede ser el más fácil e intuitivo ya que se debe conectar el

dispositivo al computador y por medio de Windows Active Sync para

Windows XP o Windows Mobile Device Center para Windows Vista/7 se

copia el CAB al Dispositivo.

2. Finalmente desde el dispositivo se debe ejecutar el contenedor .CAB que

se encargara de instalar nuestra aplicación en el dispositivo.

R. Instalación de las herramientas del proyecto

Introducción

A continuación se presenta la instalación de las herramientas mínimas para

ejecutar aplicaciones que en Windows Mobile para dispositivos móviles

Motorola.

Las herramientas necesarias son:

Visual Studio 2008

SDK de Windows Mobile

Plugin de Motorola Q11

Microsoft ActiveSync ó Windows Mobile Device Center

Por último se va a presentar un ejemplo de una aplicación sencilla de “Hello

World!”.

Instalación de Visual Studio 2008

Visual Studio 2008 es una herramienta licenciada. Es necesario que lo obtenga

directamente con Microsoft a través de la página o en su tienda más cercana.

1. Una vez haya obtenido Visual Studio 2008, ejecute el instalador y acepte

la configuración que por defecto trae el instalador.

2. En la ventana de inicio, seleccionar Install Visual Studio 2008.

Page 101: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

101

3. Esperar a que el instalador cargue todos los archivos y presionar Next.

4. Leer y aceptar los términos de la licencia y presionar Next.

5. Seleccionar la configuración por defecto y presionar Install.

Page 102: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

102

6. Esperar a que se termine de instalar todos los componentes necesarios y

presionar Finish.

Instalación Windows Mobile 6.0 Standard SDK Refresh

La instalación del SDK agrega encabezados, librerías, imágenes de emulación,

documentación y herramientas para Visual Studio para la construcción de

aplicaciones para la plataforma Windows Mobile 6.0.

Se usa la versión estándar que es la que en nuestro caso es la que aplicaría

para la construcción de aplicaciones para dispositivos Smartphone. La versión

clásica aplicaría en el caso de dispositivos PocketPC y la profesional para

teléfonos PocketPC.

1. Descargar el SDK de Windows Mobile 6.0 Standard.

2. Ejecutar el instalador descargado del link anterior.

3. Se muestra una pantalla de bienvenida al instalador, en la cual

presionamos el botón “Next”.

Page 103: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

103

4. A continuación se muestran la licencia y términos de uso, seleccionamos

la opción “Accept” y luego damos clic en “Next”.

5. Luego se solicitan algunos datos de usuario, los llenamos y damos clic en

“Next”.

Page 104: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

104

6. Luego seleccionamos la ruta de instalación y damos clic en “Next”.

7. Si estamos seguros de que los datos ingresados son correctos, hacemos

clic en “Install”, de lo contrario hacemos clic en “Back” y modificamos la

información necesaria.

Page 105: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

105

8. La instalación se lleva a cabo durante varios minutos, al finalizar se

muestra la siguiente pantalla en la que damos clic en “Finish” para

finalizar.

Instalación Windows Mobile 6.0 Standard Image

La instalación de la imagen es necesaria para el despliegue de las aplicaciones

y la ejecución de estas dentro de un ambiente Windows Mobile.

Page 106: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

106

Se usa la versión estándar que es la que aplica para nuestro caso, Windows

Mobile para Smartphones. La versión profesional se usa para dispositivos

PocketPC.

Para la instalación de la imagen, se siguen los mismos pasos que se realizaron

en la instalación del SDK para Windows Mobile.

Instalación del plugin de Motorola Q11

El plugin proporcionado por Motorola nos permite que nuestro emulador tenga la

apariencia del modelo en el cual vamos a probar el despliegue de la aplicación y

de esta forma tener un correcto funcionamiento del equipo con esta.

1. Descargar el plugin para Windows Mobile proporcionado por Motorola

desde su sitio para desarrolladores MOTODEV.

2. Instalar el plugin siguiendo los pasos del wizard, teniendo en cuenta que

el SDK debió ser instalado previamente.

3. Ahora hay que relacionar el plugin de Motorola con el emulador

previamente instalado con el SDK, para poder usarlo en nuestro ambiente

de desarrollo. Para esto tenemos que abrir Visual Studio 2008 e ir a Tools

> Options

Page 107: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

107

4. En la ventana que aparece debemos ir a Device Tools > Form Factors

5. Debemos seleccionar Windows Mobile 6 SDK Standard en el combo box

y hacer clic sobre Windows Mobile 6 Standard QVGA seguido por Save

As...

6. El nombre a escoger será Motorola Q11 y al crearse se debe seleccionar

y hacer clic sobre Properties...

7. En Skin debemos buscar la ubicación en donde quedo instalado el plugin

de Motorola y hacer referencia al XML que se encuentra ahí.

8. En el campo Skin Defaults se debe ajustar los tamaños a como se ven en

la imagen.

Page 108: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

108

9. Ahora debemos ir a Device Tools > Devices para realizar unos pasos muy

parecidos a los realizados anteriormente.

10. Debemos seleccionar Windows Mobile 6 SDK Standard en el combo box

y hacer clic sobre Windows Mobile 6 Standard Emulator seguido por Save

As... y el nombre a escoger es Motorola Q11.

11. Debemos hacer clic sobre Properties... > Emulator Options y en ese punto

se mostrara una nueva pantalla donde debemos volver a relacionar el

Skin del plugin con el emulador.

12. En la pestaña Display debemos volver a configurar el campo Skin y el

tamaño del video para que concuerden con nuestro equipo.

13. En este punto ya podremos inicializar nuestro emulador con la apariencia

del Motorola Q11, para esto debemos ir a Tools > Device Emulator

Manager.

Page 109: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

109

14. Finalmente haremos clic derecho sobre Motorola Q11 y daremos clic

sobre Connect. De este modo arranca el emulador con la apariencia

deseada.

Page 110: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

110

Hacer uso de la utilidad Cellular Emulator Con la instalación del SDK 6.0 de Windows Mobile obtenemos una utilidad

llamada Cellular Emulator que nos permite simular ciertos eventos al celular

como llamadas, mensajes de texto, conectividad 3G, GPRS o simplemente

conectividad en general para poder manipularlo como si realmente tuviéramos el

equipo móvil físico conectado al computador. Para tareas de despliegue de

aplicaciones saberlo usar correctamente será clave. Debemos tener claro que

esta utilidad no funciona sobre sistemas operativos de 64 bits.

1. Correr la utilidad ubicada dentro de la carpeta de instalación del SDK 6.0

de Windows Mobile, usualmente ubicada dentro de una subcarpeta

"Tools"

2. Correr el emulador del Motorola Q11 e ir a File>Configure... y ahí dentro a

la pestaña Peripherals.

3. En el campo Serial Port 0 configurar el puerto COM del mismo número en

el que aparece en la esquina inferior izquierda de la utilidad Cellular

Emulator, si la opción no aparece en el ComboBox, seleccionar el puerto

COM mediante teclado y finalmente dar OK.

4. Después debemos reiniciar el emulador del Motorola Q11 haciendo clic en

File>Reset>Soft.

Page 111: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

111

5. En este punto desde la utilidad podremos simular los eventos de los

cuales habíamos hablado en la introducción, como envío de llamadas,

mensajes de texto, conectividad 3G, etc.

6. Ahora debemos instalar la utilidad que provee Microsoft para la

interacción con nuestros dispositivos móviles basados en Windows

Mobile. Microsoft ActiveSync (Windows XP) ó Windows Mobile Device

Center (Windows 7/Vista). Pueden encontrar links de descarga al final del

tutorial.

7. Para hacer la conexión efectiva debemos configurar la nueva aplicación

de la siguiente manera dependiendo de cual aplique:

Figura 45 - Microsoft ActuveSync 4.5 (Windows XP)

Figura 46 - Windows Mobile Device Center (Windows Vista/7)

Page 112: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

112

8. Finalmente desde el Device Emulator Manager debemos hacer clic

derecho sobre la imagen del emulador que estemos corriendo (En este

caso Motorola Q11) y seleccionar la opción Cradle. Esto simulara que

conectáramos el dispositivo móvil mediante un cable al computador.

9. Ahora mediante Microsoft ActiveSync o Windows Mobile Device Center

podremos interactuar con los archivos del celular.

Desarrollo de una aplicación “Hola Mundo” en VS 2008 Se desarrollará una aplicación sencilla en la que se mostrará es uso de cuadro

de texto, un botón y evento al hacer clic. También se mostrara su despliegue en

el emulador de Windows Mobile para Motorola Q11.

1. En Visual Studio 2008 seleccionamos ArchivoNuevoProyecto. En

caso de que se nos muestre una selección de lenguaje, elegimos C#.

2. En la ventana de proyecto nuevo seleccionamos en tipo de proyecto

Visual C# Smart Devices, y seleccionamos la plantilla Smart Device

Project. En la parte superior derecha hay un menú desplegable, aquí

seleccionamos la opción .NET Framework 2.0. En la parte inferior

escribimos el nombre del proyecto, en este caso “HolaMundo”, y

seleccionamos la ubicación en la que lo vamos a crear.

Page 113: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

113

3. Ahora seleccionamos la plataforma, para nuestro caso elegimos Windows

Mobile 6 Standard SDK; la versión del framework que seria ,NET

Compact Framework Versión 2.0; y seleccionamos la plantilla Device

Application.

Page 114: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

114

4. Aquí se nos muestra una forma vacía, le cambiamos el titula a “Hola

Mundo” en la sección de propiedades. Le agregamos una etiqueta que

diga “Escriba un texto” y por último agregamos un cuadro de texto.

Hacemos clic en la parte inferior de la forma, en esta parte se encuentran

ubicados los botones del dispositivo, escribimos “Mostrar Texto” y

hacemos doble clic sobre este para que nos cree la acción de hacer clic y

nos cambie a la vista de código. Escribimos lo siguiente:

private void menuItem1_Click(object sender, EventArgs e)

{

if (textBox1.Text.Trim().Equals(""))

MessageBox.Show("No ha escrito nada");

else

MessageBox.Show(textBox1.Text);

}

Page 115: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

115

5. Acá ya podemos ejecutar la aplicación. Elegimos el menú DebugStart

Debugging. Acá aparece un ventana en donde elegimos donde se va a

hacer el despliegue, elegimos la opción para Motorola Q11 que definimos

en la instalación, y desplegamos.

6. Al desplegar se ejecuta el emulador, este se demora un poco mientras

carga la imagen del sistema operativo y luego muestra nuestra aplicación.

Acá ya podemos interactuar con ella escribiendo en el cuadro de texto y el

botón al cual le definimos función.

Page 116: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

116

Referencias

Windows Mobile 6.0 Standard SDK Refresh:

http://www.microsoft.com/downloads/details.aspx?FamilyID=06111A3A-

A651-4745-88EF-3D48091A390B&displaylang=en

Windows Mobile 6.0 Standard Image:

http://www.microsoft.com/downloads/details.aspx?familyid=38c46aa8-

1dd7-426f-a913-4f370a65a582&displaylang=en

Página de Desarrolladores Motorola:

http://developer.motorola.com/

Ruta de descarga:

http://developer.motorola.com/docstools/windows-mobile-

plugins/MOTO_Q11_plug-in.msi

Ruta de descarga Windows Mobile Device Center:

http://www.microsoft.com/windowsmobile/en-

us/downloads/microsoft/device-center-download.mspx

Page 117: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

117

Ruta de descarga Microsoft ActiveSync 4.5:

http://www.microsoft.com/downloads/details.aspx?familyid=9e641c34-6f7f-

404d-a04b-dc09f8141141

S. Interfaz DoctorChat < Móvil Windows Mobile >

Introducción

En este tutorial se mostrarán los pasos necesarios para crear la estructura de los

formularios base para la aplicación DoctorChat.

Los pasos a seguir son:

Crear un proyecto base para un Smartphone (Plantilla para Motorola Q).

Desarrollar el formulario inicial.

Desarrollar un formulario hijo.

Ejecutar las pruebas.

NOTA: Este documento hace referencia al proyecto de Visual Studio 2008,

DrChatWM.

Instrucciones

Creación proyecto base

1. Crearemos un proyecto nuevo para un Smart Device basado en el SDK

6.0 Standard para Smartphones.

2. Se agregan los componentes visuales para interactuar con los formularios

hijo, puede ser un LinkLabel.

3. A este LinkLabel le agregamos la funcionalidad para el evento Clic.

Page 118: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

118

4. En la funcionalidad adjuntar multimedia, en cada uno de los métodos para

adjuntar los archivos, haremos la conexión a cada funcionalidad.

Desarrollar el formulario inicial

1. El formulario inicial es una única instancia, por lo que podemos dejar la

implementación con un patrón Singleton.

private static readonly FormDoctorChat instance = new FormDoctorChat();

private FormDoctorChat()

{

InitializeComponent();

}

public static FormDoctorChat Instance

{

get

{

return instance;

}

}

2. En la funcionalidad del LinkLabel para el evento Clic, ingresaremos el

código necesario para crear un formulario hijo y mostrarlo.

private void linkLabelNuevaConsulta_Click(object sender, EventArgs e)

{

Form nuevaConsulta = new FormNuevaConsulta(this);

nuevaConsulta.Show();

this.Hide();

}

3. Ya con esto podemos lanzar un formulario hijo desde la pantalla principal.

Desarrollar un formulario hijo

1. Agregamos un formulario nuevo a la solución.

2. A este le agregamos los componentes visuales requeridos.

3. Para poderlo relacionar con el padre, creamos un constructor adicional

para poder hacerle referencia.

public FormNuevaConsulta(Form padre)

Page 119: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

119

{

InitializeComponent();

this.padre = padre;

}

4. Y para poder volver al padre la agregamos un método que cierre el

formulario hijo y nos vuelva a mostrar el padre.

private void menuItemVolver_Click(object sender, EventArgs e)

{

if (padre != null)

padre.Show();

this.Close();

}

Este código lo podemos adicionar a la funcionalidad de un menú para el

evento Clic.

Ejecutar las pruebas

Una vez conectados todos los elementos a sus correspondientes

funcionalidades, es posible ejecutar la aplicación para ver sus resultados.

T. Manipulación del comportamiento de la aplicación por los estados del Móvil

Introducción

En este tutorial se mostrarán los pasos necesarios para manejar la aplicación

mediante el monitoreo de distintas propiedades del Celular en Windows Mobile

mediante el uso de la librería Microsoft.WindowsMobile.Status, específicamente

monitorearemos la batería del dispositivo.. Adicionalmente se registrara la

aplicación en el registro del sistema operativo para que lance la aplicación

cuando cambie algún estado del teléfono móvil.

Los pasos a realizar son:

Crear un proyecto base para un Smarthphone

Desarrollar el monitoreo de la Batería

Desarrollar el registro de la aplicación en el registro del dispositivo.

Ejecutar las pruebas

Page 120: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

120

Instrucciones

Creación proyecto base

1. Crearemos un proyecto nuevo para un Smart Device basado en el SDK

6.0 Standard para Smartphones.

2. Agregaremos algunos componentes visuales a la aplicación,

específicamente para que sean modificados con el cambio de la batería

del celular. Será simplemente un Label que notifique el estado de la

batería al usuario.

3. Adicionalmente le agregaremos funcionalidad a la tecla de función

izquierda para salir de la aplicación. Para esto haremos un clic sobre la

misma en el diseño para cambiarles el nombre seguido de un doble clic

para entrar a la implementación de las funciones.

4. En la funcionalidad de Exit pondremos: Application.Exit().

5. Adicionalmente crearemos un método que cambie el texto del Label que

informa el estado de la batería.

Desarrollar el monitoreo de la Batería

1. Windows Mobile nos provee una librería (Status) la cual es capaz de consultar distintas propiedades del dispositivo en el registro del sistema operativo, tales propiedades referentes a la conectividad, hardware,

Page 121: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

121

telefonía, etc. A su vez provee una forma para monitorear estas propiedades y notificarnos de los cambios que apliquen sobre ellas.

2. Para agregar la funcionalidad del monitoreo del estado de la batería en el dispositivo primero debemos agregar una referencia a la librería de .NET CF para poder usar las clases relacionadas con esto. Para esto haremos clic derecho sobre el proyecto y seleccionaremos "Add Reference". Las librerías a selecciona será: Microsoft.WindowsMobile.Status la cual podemos encontrar en la carpeta Managed Libraries dentro de la instalación del SDK 6.0.

3. Ahora crearemos una nueva clase donde realizaremos todo el manejo del estado de la Aplicación y la agregaremos a la solución. La llamaremos 'BatteryStatusSample'.

4. Debemos importar en la clase el paquete antes referenciado mediante: using Microsoft.WindowsMobile.Status;.

5. Para obtener el estado de la batería debemos hacer referencia al objeto

SystemState que encapsula la información del dispositivo reflejada en el registro del mismo, para posteriormente obtener la propiedad que nos

interesa, en este caso PowerBatteryStrength.

6. Desarrollaremos un método que cambiara el texto del estado de la batería en la interfaz dependiendo del estado real de la batería.

Page 122: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

122

7. Ahora monitorearemos cada vez que la batería del dispositivo cambie su

valor en el registro, acción que es controlada por el sistema operativo

para que el estado de nuestra aplicación cambie de la misma manera.

Para esto debemos crear un objeto SystemState que controlara solo una

propiedad que queramos monitorear.

8. A su vez debemos informarle cual será el handler que recibirá las

notificaciones en los cambios presentados en esa propiedad y donde

nosotros finalmente volveremos a llamar a nuestro método notifyBatteryLevel.

9. El handler es muy sencillo de implementar y básicamente se encargara de

llamar nuestro método ya creado como se dijo anteriormente. Cabe

destacar que args.NewValue obtiene el valor entrante de la propiedad que

se está monitoreando, el cual debe hacérsele un cast para determinar el

tipo correcto que en este caso es BatteryLevel.

Page 123: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

123

Desarrollar el registro de la aplicación en el registro

1. Las Notificaciones que recibe nuestra aplicación por medio del objeto

SystemState también se pueden hacer persistentes y de este modo el

dispositivo será capaz de ejecutar nuestra aplicación si está cerrada

cuando un evento se genere por el cambio del estado del celular en la

propiedad que queramos monitorear.

2. Para implementar este tipo de notificaciones persistentes debemos tener

un appId el cual identificara nuestra aplicación en el registro del Sistema

Operativo.

3. Ahora se tiene que usar una función que revisa si en el registro ya está la

propiedad que queríamos monitorear y la sacara de ahí, sino estuviese la

creara.

4. Este método initialize lo debemos llamar en el constructor de nuestra

clase de ejemplo para que se evalué al comienzo de la aplicación.

5. Cuando llegue un evento del cambio del estado de la batería al Celular si

ya está la propiedad en el registro y nuestra aplicación no está en

ejecución el SO se encargara de arrancarla por nosotros y nosotros en la

mayor brevedad deberemos llamar a nuestro método.

Page 124: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

124

Ejecutar las pruebas

1. Simplemente debemos correr nuestra aplicación por primera vez para que

la propiedad que queramos monitorear se instale en el registro y a su vez

ya podamos ver en funcionamiento la misma.

2. Para que la batería del dispositivo cambie efectivamente en el emulador

debemos ir a File>Configure>Peripherals en este punto podremos colocar

el estado de la batería en un punto que consideremos pertinente para

realizar las pruebas.

Page 125: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

125

3. Certificar que se genero el cambio en nuestra aplicación con lo que

habíamos puesto en nuestro código.

4. Ahora cerraremos la aplicación y volveremos a cambiar el estado de la

batería (60%) para certificar que la aplicación se ejecute y se muestre el

estado real.

Referencias

The State and Notifications Broker API Part 1

http://msdn.microsoft.com/en-us/library/aa456240.aspx

The State and Notifications Broker API Part 2

http://msdn.microsoft.com/en-us/library/aa456240.aspx

Page 126: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

126

The State and Notifications Broker API Part 3

http://msdn.microsoft.com/en-us/library/bb499669.aspx

Microsoft Mobile Development Handbook 2007

U. Adjunto de archivos multimedia

Introducción

En este tutorial se mostrarán los pasos necesarios para seleccionar y/o capturar

archivos multimedia para adjuntar a un formulario en Windows Mobile.

Los pasos a seguir son:

Crear un proyecto base para un Smartphone.

Desarrollar el adjunto de un archivo multimedia.

Ejecutar las pruebas.

NOTA: Este documento hace referencia al proyecto de Visual Studio 2008,

PruebasConceptosMultimedia.

Instrucciones

Creación proyecto base

1. Crearemos un proyecto nuevo para un Smart Device basado en el SDK

6.0 Standard para Smartphones.

2. Agregaremos algunos componentes visuales a la aplicación, un Label que

diga "Archivos seleccionados" y un List View para desplegar los archivos

que se han adjuntado.

3. Adicionalmente le agregaremos funcionalidad a la tecla izquierda para

adjuntar los archivos. Esta tendrá 3 submenús, uno para cada tipo de

multimedia: imagen, audio y video. De la misma manera, cada uno tendrá

un submenú dando la opción de adjuntar desde archivos o capturar el

multimedia que se desea. Para esto haremos un clic sobre la misma en el

diseño para cambiarles el nombre seguido de un doble clic para entrar a

la implementación de las funciones.

Page 127: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

127

4. En la funcionalidad adjuntar multimedia, en cada uno de los métodos para

adjuntar los archivos, haremos la conexión a cada funcionalidad.

Desarrollar el adjunto de un archivo multimedia

1. Primero, debemos agregar la referencia al archivo multimedia.dll que nos

permitirá las funcionalidades de adjuntar archivos multimedia. Para esto

haremos click derecho sobre el proyecto y seleccionaremos “Add

Reference”.

2. Debemos importar el paquete antes referenciado mediante la instrucción using mobile.wm.lib.multimedia;

3. Para implementar el adjunto de multimedia, simplemente haremos el

llamado a la función

public Media AttachMedia(IDictionary<string, string> tabla)

de la interface ImediaManipulator. Esta función retorna un objeto de tipo

Media, al cual se le puede pedir información para desplegar como el

nombre del archivo.

Un ejemplo de un método para adjuntar una imagen desde archivo sería:

Page 128: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

128

NOTA: Para ver el contrato de llamados al método

AttachMedia(IDictionary<string, string> tabla), referirse al documento del

componente de multimedia.

Ejecutar las pruebas

Una vez conectados todos los submenús a sus correspondientes

funcionalidades, es posible ejecutar la aplicación para ver sus resultados.

V. Envío de datos mediante HTTP y SMS

Introducción

En este tutorial se mostrarán los pasos necesarios para enviar información

mediante el uso del protocolo HTTP y SMS en Windows Mobile. Adicionalmente

se creara un servicio en un servidor web(IIS) que escuche las peticiones

enviadas por el móvil.

Los pasos a realizar son:

Crear un proyecto base para un Smarthphone

Desarrollar el envío mediante SMS

Desarrollar el envío mediante HTTP

Desarrollar un handler web y desplegarlo en ISS

Configurar el emulador para conexiones GPRS

Ejecutar las pruebas

Instrucciones

Creación proyecto base

1. Crearemos un proyecto nuevo para un Smart Device basado en el SDK

6.0 Standard para Smartphones.

Page 129: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

129

2. Agregaremos algunos componentes visuales a la aplicación, un Label que

diga "Mensaje a Enviar" y un Text Box para el mensaje que deseemos

enviar por los distintos protocolos.

3. Adicionalmente le agregaremos funcionalidad a las dos teclas de función

una para salir de la aplicación y la otra para enviar el mensaje. Para esto

haremos un clic sobre la misma en el diseño para cambiarles el nombre

seguido de un doble clic para entrar a la implementación de las funciones.

4. En la funcionalidad de Exit pondremos: Application.Exit(); y en el otro

después se harán los llamados a los métodos de enviar por SMS y enviar

por HTTP.

Desarrollar el envío mediante SMS

1. Primero debemos agregar dos referencias a algunas librerías de .NET

para poder usar las clases relacionadas con SMS. Para esto haremos clic

derecho sobre el proyecto y seleccionaremos "Add Reference". Las

librerías a seleccionar serán:

Microsoft.WindowsMobile y

Microsoft.WindowsMobile.PocketOutlook, las cuales las podemos

Page 130: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

130

encontrar en la carpeta Managed Libraries dentro de la instalación del

SDK 6.0.

2. Debemos importar en la clase el paquete antes referenciado mediante: using Microsoft.WindowsMobile.PocketOutlook;

3. Para implementar el envió de SMS simplemente haremos referencia a la

clase SMSMessage a la cual le diremos cual será el numero al cual

enviaremos la información y la información como tal. Adicionalmente

pondremos una especie de alerta en el dispositivo cuando el mensaje se

haya enviado satisfactoriamente o la traza del error si hay.

Desarrollar un servicio Web y desplegarlo

1. Debemos importar en la clase los paquetes: using System.Net;

using System.IO;

2. Para implementar el envió de HTTP simplemente debemos crear un

request mediante el uso de la clase HttpWebRequest la cual le diremos

cual será el URL del servicio que nos estará escuchando. Adicionalmente

pondremos una especie de alerta en el dispositivo cuando el mensaje se

haya enviado satisfactoriamente o la traza del error si hay.

Page 131: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

131

3. Adicionalmente hay q reconstruir la respuesta mediante el uso de clases

de IO.

Desarrollar un handler web y desplegarlo en IIS

1. Como requisito hay que tener instalado el servidor Web de Microsoft

Information Internet Services(ISS) como ese no es el objetivo del tutorial

no explicaremos aquí como se instala y configura.

2. Debemos crear un nuevo proyecto web vacio al cual le agregaremos

nuestro handler que es una especie de Servlet en su equivalente en

JAVA. Para esto debemos ir a File>New>Web Site>Empty Web Site

Seleccionar HTTP como Location y una dirección de este tipo:

http://localhost/WebSite.

3. Ahora agregaremos un handler sencillo creado por Visual Studio, para

esto haremos clic derecho sobre el proyecto y seleccionaremos AddItem>

Generic Handler.

Page 132: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

132

4. Este Handler implementa de la Interfaz IHttpHandler la cual posee un

método llamado ProcessRequest que procesa el request y genera el

response que en este caso es muy simple.

5. Al haber creado el proyecto en Location HTTP por debajo se crea un

Directorio Virtual en IIS que se sincroniza con los archivos que trabajemos

en Visual Studio, por esta razón el handler ya se encuentra arriba en la

dirección especificada mas el nombre del Handler.

Configurar el emulador para conexiones GPRS

1. Debemos crear un nuevo perfil de las conexiones GPRS dentro del

emulador al cual hagamos el despliegue. Para esto dentro del SO de

Windows Mobile debemos navegar por el menú a:

Menu>Settings>Connections>GPRS y haremos clic sobre New.

2. En este punto en Description le daremos un nombre al perfil y le diremos

que se conecte a la red WAP. Adicionalmente tendremos que poner

cualquier nombre en Acces point, los demás campos pueden quedar

vacios.

Page 133: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

133

3. Ahora debemos abrir ir a: Menu>Settings>Connections>Proxy y haremos

clic sobre New.

4. Pondremos un nombre en Description y haremos un mapeo entre WAP

Network y The Internet. Los otros campos pueden permanecer como

vienen.

5. Ahora debemos ir a: Menu>Settings>Connections>Menu> Advanced.

Escoger para WAP Network y The Internet el primer perfil creado, los

otros dejarlos en Automatic.

6. Ahora debemos abrir el browser Internet Explorer e iremos a: Menu>

Tools> Options> Connections y escogeremos Internet como la red a

escoger.

Page 134: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

134

Ejecutar las pruebas

1. En este punto debemos ejecutar la aplicación provista por el SDK 6.0

Cellular Emulator, si hay dudas sobre la configuración del mismo remitirse

al tutorial "Instalación de Herramientas".

2. Este aplicativo nos permite monitorear la conectividad SMS y GPRS por

distintas pestañas.

3. A nuestro proyecto debemos llamar en el método enviar a las funciones

http y SMS y definir una URL correcta que apunte al Handler (el servidor

será la ip del lugar donde se está ejecutando el IIS).

4. Ahora debemos correr el aplicativo sobre el emulador y enviar un

mensaje.

Si llegan a haber problemas de conectividad GPRS se debe reiniciar el

emulador y hacer clic sobre el botón reset en la pestaña Configuration del

Cellular Emulator.

W. Creación de pruebas unitarias en C#

Introducción

A continuación se mostraran los pasos a seguir para crear y ejecutar una prueba

unitaria.

Creación de pruebas unitarias

1. Se abre el archivo al cual se le quiere crear una prueba unitaria.

Page 135: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

135

2. Se hace clic derecho sobre código fuente del archivo y se elige la opción

“Create Unit Tests…”

3. Ahora aparece una pantalla como la que se muestra a continuación. Acá

seleccionamos los métodos a los que se le quieren hacer pruebas.

Se revisa que el combo “Output Project” especifique que se van a crear

las pruebas en C# y hacemos clic en OK.

4. A continuación damos nombre a nuestro proyecto de pruebas.

5. Después de esto ya se crea la plantilla de pruebas con las pruebas para

los métodos seleccionados. Con la configuración por defecto, todas las

pruebas quedan con Assert.Inconclusive por lo que por defecto todas las

pruebas fallan, al modificar la prueba hay que revisar que esta línea no

quede.

Por defecto hay una sección en el código #region Additional test

attributes, en la que se encuentran métodos de inicio y limpieza para

antes y después de ejecutar las pruebas.

Page 136: DESARROLLO DE UNA ARQUITECTURA REUTILIZABLE BASADA …

136

6. Para correr las pruebas solo es necesario ejecutar el código (F5). En caso

de que se presente un error de seguridad, la forma más fácil de

solucionarlo es desactivar la seguridad en el emulador, para esto con el

emulador en ejecución, vamos a Tools Device Security Manager.

Acá seleccionamos el dispositivo, la configuración “Security Off” y damos

clic en “Deploy to Device”. Si se realizó correctamente, ya se puede volver

a ejecutar las pruebas sin problema.