SG #05 https://sg.com.mx/ en Pruebas Controladas de MoProSoft. https://sg.com.mx/revista/5/pruebas-controladas-moprosoft <span class="field field--name-title field--type-string field--label-hidden">Pruebas Controladas de MoProSoft.</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Anonymous</span></span> <span class="field field--name-created field--type-created field--label-hidden">Tue, 11/27/2007 - 10:58</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/05" hreflang="und">SG #05</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/secci%C3%B3n-revista/procesos" hreflang="und">Procesos de desarrollo de software</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/autores-sg/claudia-alquicira" hreflang="und">Claudia Alquicira</a></li> <li><a href="/autores-sg/angelica-su" hreflang="und">Angélica Su</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Como ustedes saben, una de las estrategias de ProSoft es alcanzar niveles internacionales en capacidad de procesos, y como parte de esta estrategia se creó MoProSoft (ver “Tejiendo Nuestra Red”, pg. 6). La preocupación posterior fue cómo demostrar que realmente se está cumplimiento con lo establecido en MoProSoft. Fue así que surgió el Método de Evaluación, EvalProSoft, desarrollado en conjunto por miembros del grupo editor de MoProSoft, y expertos en evaluaciones en estándares internacionales. En este artículo, las autoras, quienes forman parte del grupo editor de MoProSoft y EvalProSoft, comparten su experiencia en el proyecto de pruebas controladas de este modelo.</p><h3>Proyecto de Pruebas Controladas</h3><p>Podríamos decir que la creación de MoProSoft y de su Método de Evaluación, fue la parte fácil de todo este esfuerzo. El reto ahora era comprobar que el modelo funcionaba en la vida real, es decir que era aplicable a empresas mexicanas dedicadas al desarrollo de software. Estas pruebas del modelo se realizaron con apoyo de la Secretaría de Economía, en un proyecto denominado Pruebas Controladas de MoProSoft. La parte fundamental de este proyecto fue la participación de las cuatro empresas mexicanas seleccionadas: Magnabyte, E-Genium, Arquitectura en Tecnología de México (ARTEC), y Sistemas de Gestión Administrativa (SGA).</p><h3>Estrategia de Implantación de MoProSoft</h3><p>Por ser MoProSoft un modelo de reciente creación, lo importante era definir la estrategia de implantación en las empresas. Una estrategia de implantación para cualquier modelo de referencia tiene que estar basada en lo que se quiere alcanzar. Bajo esta premisa, era importante definir MoProSoft por Niveles de Capacidad, para poder indicar a las empresas piloto, cual era el camino a seguir. Para este trabajo utilizamos como base la sección 5. Marco de Medición de Capacidades del Proceso del estándar ISO/IEC 15504-2. La razón de realizar este trabajo fue porque el Método de Evaluación se basa en este estándar para evaluar los niveles de capacidad de los procesos. El resultado de este trabajo lo bautizamos de cariño como “MoProSoft Coloreado”.</p><p>Los factores que fundamentan la definición de esta estrategia son:</p><ul><li>La definición del nivel de capacidad a alcanzar en cada uno de los procesos. La regla consistía en que cada proceso debía estar un nivel arriba del resultado que se obtuviera en el diagnóstico inicial.</li><li>La definición de las reglas de ajuste de los procesos. Se utilizaron los procesos de MoProSoft como base, se establecieron las secciones del proceso sobre las cuales podrían hacer adaptaciones, así como recomendaciones de ajustes genéricos que aplicaban a todos los procesos.</li></ul><p>El siguiente elemento fue definir el Plan de Procesos y el Plan General de Implantación que utilizaríamos. En estos documentos se estableció el orden de definición e implantación de los procesos.</p><p>Dado que Gestión de Procesos es el motor del modelo, fue el primer proceso por definir en conjunto con el proceso de Conocimiento de la Organización, ya que éste permite que se mantenga la integridad de la información generada por la organización. Posteriormente el proceso que establece orden y da lineamientos a nivel organización y debe mostrar su compromiso en este esfuerzo, era Gestión de Negocio, así que este es el siguiente en la lista.</p><p>Una de las restricciones con las que se contaba era el tiempo, por lo que se decidió definir los procesos de la categoría de operación: Administración de Proyectos Específicos y Desarrollo y Mantenimiento. Adicionalmente era importante motivar a la organización a definir y mejorar procesos que ya utilizaban en la práctica por ser parte de su experiencia y conocimiento, y para poder aplicarlo en proyectos piloto, que les permitiera empezar a ver resultados a corto plazo. Posteriormente para poder ligar la operación con la administración, se definió Gestión de Proyectos, y el proceso de Gestión de Recursos. Como hemos mencionado, la definición de la estrategia de implantación se basó en la propia aplicación del proceso de Gestión de Procesos y de la experiencia propia de consultoría. La estrategia de implantación que se utilizó en cada empresa está constituida por las siguientes fases:</p><ul><li>Planeación del proyecto de mejora (Plan de Procesos)</li><li>Definición de los procesos (Documentación de Procesos)</li><li>Implantación</li></ul><p>Una de las decisiones que se tomó, fue que la definición e implantación se realizaría en forma iterativa. Es decir, se define el proceso, se capacita en éste y se pone en marcha en la organización. La capacitación y puesta en marcha se hacía en paralelo con la definición del proceso de la siguiente iteración. Esta decisión de realizar la implantación de forma iterativa permite a la organización madurar y mejorar sus procesos, e ir realizando el despliegue de los procesos de forma escalonada.</p><h3>Experiencia en la Empresa</h3><p>Para iniciar con el pie derecho en el proyecto de Pruebas Controladas, primero realizamos la reunión de inicio, con la finalidad de confirmar el compromiso del director de la empresa y los miembros de la organización. Sin embargo, era importante que supieran de qué se trataba el modelo en el que se acaban de comprometer, por tanto se dio una capacitación introductoria. En la mayoría de las empresas participó un alto porcentaje de los involucrados directamente en el desarrollo de software, y la parte directiva de la misma.</p><h3>Planeación del Proyecto de Mejora</h3><p>La planeación del proyecto se realizó en una reunión con el responsable de Gestión de Procesos para el establecimiento del alcance del proyecto de mejora en su organización, definiendo los responsables de cada proceso, los recursos que se iban a requerir para la implantación, el plan de manejo de riesgos, la definición de los proyectos pilotos candidatos y la fecha de la evaluación final. Toda esta información se consolidó en el Plan de Procesos. El Plan de Procesos se validó con el director de la empresa, para obtener su apoyo y compromiso de que lo establecido en éste se llevara a cabo.</p><h3>Definición de los Procesos</h3><p>Para definir los procesos, primero se presentaba el proceso al responsable del mismo, y en caso de existir, al equipo de definición.</p><p>El ajuste al proceso estaba a cargo del responsable, y consistió en la integración de las prácticas (actividades, herramientas, procesos, procedimientos o metodología) de la organización a los procesos MoProSoft, así como la definición o ajuste de plantillas, que sustentarían los productos establecidos en el modelo.</p><p>La verificación del ajuste al proceso, era una actividad de nuestra responsabilidad como consultoras, e incluía la revisión del cumplimiento de reglas de ajuste de procesos, y la verificación de la consistencia entre los documentos definidos para el proceso, y entre todos los procesos.</p><h3>Implantación</h3><p>Para iniciar con la implantación de los procesos se confirmaron los proyectos candidatos a pilotos para poner en marcha los procesos definidos. Los responsables de los procesos definidos proporcionaron la capacitación del proceso ajustado al resto de la organización. Las consultoras asesorábamos en dudas que surgían en la organización en llevar a cabo a los procesos, que en ocasiones implicaba realizar ajustes a los mismos. Adicionalmente, se realizaban sesiones con los responsables de procesos, para verificar que sus actividades se realizaran conforme a lo definido.</p><p>Durante esta etapa, fue de gran importancia la participación de los equipos de trabajo involucrados en los diferentes proyectos.</p><h3>Experiencia en Consultoría</h3><p>Como resultado del esfuerzo realizado, en las cuatro empresas piloto se elevaron los niveles de capacidad de procesos. Esto se pudo comprobar mediante la aplicación de evaluaciones (assessments). Este resultado significó lo siguiente:</p><ul><li>El modelo MoProSoft puede ser utilizado exitosamente en empresas pequeñas de desarrollo de software.</li><li>Establecer el camino a seguir utilizando MoProSoft por niveles de capacidad, permite a las empresas definir metas alcanzables que los motiva a continuar con la mejora de procesos.</li><li>Se verificó que para poder implantar exitosamente MoProSoft es necesario implantar en primera instancia el proceso de Gestión de Procesos, a pesar de que en un principio fue difícil conseguir este compromiso.</li><li>Las empresas piloto entendieron que es importante no sólo tener bien definidos los procesos relacionados con la operación de la administración y desarrollo de software, sino que es básico establecer una planeación estratégica y soportarla con la gestión de recursos.</li><li>Después de haber realizado las primeras iteraciones, las empresas realizaban tareas por cuenta propia y la parte de consultoría sólo la verificaba, por lo que demostraba el compromiso de la organización.</li><li>Con base en la experiencia de este proyecto se documentaron las sugerencias de mejora desde el punto de vista de consultoría.</li><li>Se obtuvo una retroalimentación bidireccional entre organizaciones y consultoras, por la misma concepción del proyecto. Es decir, se estableció un acuerdo de colaboración mutuo y no como tradicionalmente se realiza, la contratación de consultores para proveer un servicio.</li><li>Al término de la consultoría, las empresas mostraron su interés de continuar con el esfuerzo de mejora basándose en MoProSoft.</li></ul><p>Finalmente, es importante mencionar que por ser un proyecto de mejora, algunos elementos presentados en este trabajo pueden variar con base al contexto de cada organización. En este caso, por ser un proyecto de Pruebas Controladas, se utilizó la misma estrategia en las cuatro empresas, teniendo buenos resultados en todas ellas.</p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Claudia Alquicira trabaja en Avantare Consutores como consultor en programas de mejora en organizaciones de desarrollo de software. Claudia cuenta con una Maestría en Ciencias de la Computación y sus áreas de interés son la ingeniería de software, calidad y tecnología orientada a objetos.</p> <p>Angélica Su es Consultor en Procesos de Software y Administrador de Proyectos. Participó en la elaboración de MoProSoft y EvalProSoft, en la implantación de MoProSoft en proyectos pilotos, en el proyecto de Pruebas Controladas. Ha trabajado en proyectos de mejora en la realización de diagnósticos y evaluación formal CBA-IPI y asesoría en procesos basados en SW-CMM, CMMI e ISO 9000.</p> </div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> <div class="field field--name-field-tags field--type-entity-reference field--label-above field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label">Tags</h3> <ul class='links field__items'> <li><a href="/tags/moprosoft" hreflang="und">Moprosoft</a></li> <li><a href="/tags/spi" hreflang="und">SPI</a></li> </ul> </div> Tue, 27 Nov 2007 16:58:30 +0000 Anonymous 531 at https://sg.com.mx https://sg.com.mx/revista/5/pruebas-controladas-moprosoft#comments J2ME: Desarrollo de aplicaciones para teléfonos celulares https://sg.com.mx/revista/05/j2me-desarrollo-aplicaciones-para-tel-fonos-celulares <span class="field field--name-title field--type-string field--label-hidden">J2ME: Desarrollo de aplicaciones para teléfonos celulares</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Anonymous</span></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 11/21/2007 - 17:17</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/05" hreflang="und">SG #05</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/revista/secciones/programacion" hreflang="und">Programación</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/buzz/autores/victor-quijano" hreflang="und">Víctor Quijano</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>En este artículo hablaremos de conceptos básicos de J2ME, la versión de Java para dispositivos móviles, y aprenderemos a hacer un “hola mundo”.</p><!--break--><p>Los dispositivos móviles están en todas partes, en particular los teléfonos celulares; tan simple como mirar a las personas en la calle, 4 de cada 10 tiene un teléfono celular. Gartner estima que en el 2005 se venderán 750 millones de unidades en todo el mundo, lo que significa un 13% de aumento respecto al 2004. Más que una evolución, es una explosión de dispositivos móviles.</p><p>Existen varios lenguajes (tecnologías) para programar teléfonos celulares, como BREW, Symbian C++, J2ME, etc. Para fines de este artículo vamos a experimentar con J2ME. La Tabla 1 muestra un pequeño listado de diferentes aparatos y sus capacidades.</p><h3><span class="subtitulo2">Ediciones de Java</span></h3><p>La plataforma Java está compuesta por tres ediciones distintas:<br /> • Java 2 Edición Empresarial (J2EE), para servidores empresariales y estaciones de trabajo que integran sus operaciones entre clientes, proveedores y empleados.<br /> • Java 2 Edición Estándar (J2SE), para su uso en computadoras personales y servidores.<br /> • Java 2 Edición Micro (J2ME), para dispositivos móviles.</p><p><img src="/images/stories/200505/programacion_1.gif" width="400" height="323" /></p><p><span class="pie_foto">Tabla 1. Ejemplos de capacidad en distintos teléfonos.<br /></span></p><h3><span class="subtitulo2">Conceptos básicos en J2ME</span></h3><p>¿Cómo puede correr Java en un refrigerador, en un celular, en un PDA? Para responder a esta pregunta se requiere explicar cuatro elementos importantes: (Ver Fig. 1)</p><p><img src="/sites/default/files/images/stories/200505/programacion_2.gif" width="250" height="149" /> <br /> <span class="pie_foto"> Figura 2. Configuraciones en J2ME. </span></p><ul><li>Sistema Operativo. Sistema que controla las funciones básicas del dispositivo, por lo general cerrado y propiedad del fabricante.</li><li>Maquina virtual (JVM). Java es un lenguaje interpretado que requiere de una máquina virtual, sin embargo, la JVM de un PDA no es la misma que un servidor corporativo, intervienen factores como el recolector de basura, el tamaño de la pila, entre otros.</li><li>Configuraciones. La configuración define el núcleo de J2ME (runtime environment) en la JVM. Se incluye un subconjunto de clases de la edición estándar de Java (J2SE), mas las clases específicas de J2ME por familias (dispositivos con características similares). (Ver Fig. 2).</li><li>Perfiles (profiles) - Son librerías de alto nivel que se agregan a la configuración o también por tipos de aplicación; los perfiles son específicos al tipo de dispositivo. Un perfil puede ser agregado a otro perfil. De ahí que los fabricantes como Nokia provean APIs de programación para sus modelos más recientes.</li></ul><p><img src="/sites/default/files/images/stories/200505/j2me-fig2.jpg" width="366" height="201" /></p><p>Figura 2. Configuraciones.</p><p>Al mencionar las siglas CLDC/MIDP nos referimos a la configuración (CLDC) y el perfil (MIDP) para programar aplicaciones Midlets en teléfonos celulares.</p><p>Existe una natural resistencia a programar Midlets. Por ejemplo, alguien puede decir “yo soy un programador Java de aplicaciones corporativas”, ¿cómo afecta al ciclo de desarrollo Java el uso de configuraciones y perfiles?</p><p>Las configuraciones aceptan archivos Java (.class) y JAR, la diferencia está en el compilador y la forma de compilar. El principal cambio es no usar la versión más reciente de Java; SUN recomienda JSDK 1.3 (sí, leyó usted bien); en sí, con Java 2 es suficiente. Recuerde que si maneja adecuadamente sus variables de ambiente, como JAVA_HOME, es posible tener varias versiones de JDK instaladas en una computadora.</p><h3><span class="subtitulo2">Hola Mundo Midlet</span></h3><p>Ahora vamos a hacer el ejemplo clásico, un hola mundo (HolaMidlet). El código lo vamos a comentar y razonar línea por línea.</p><p>Favor de verificar que tenga la versión 2 de Java instalado en su computadora (se probó con buenos resultados JSDK 1.4.2 para Windows). Luego se debe instalar la herramienta Wireless Toolkit 2.2 (WTK) de Sun. Una vez instalados, pruebe el buen funcionamiento al correr un proyecto demo (ej. Demo3D) con el programa Ktoolbar localizado en Inicio/Programas/J2ME Wireless Toolkit.</p><p>*Nota: Al momento de escribir este artículo ya estaba disponible la versión 2.3 beta, para los aventureros.</p><p><img src="/images/stories/200505/programacion_4.gif" width="400" height="309" /> <br /> <span class="pie_foto"> Figura 3. Ktoolbar.</span></p><p>En la figura 3 se observa que es un entorno bastante simple pero carece de un editor de texto. Para el ejemplo es suficiente NotePad. Este entorno está basado en proyectos, por lo que se requiere crear uno. A continuación, nos pedirá nombre del proyecto y clase principal para ejecutar nuestra aplicación. Los pasos en orden son:</p><ol><li>Crear un nuevo proyecto (New Project) o abrir uno existente (Open Project).</li><li>Configurar la aplicción Midlet (Preferences).</li><li>Compilar (Build).</li><li>Ejecutar (Build).</li><li>Empacar en archivos JAR y JAD (Project/Package/Create Package).</li></ol><p>*Nota: La mayoría de los equipos con MIDP 1.0 sólo soportan archivos JAR máximo 64K. Sin embargo, los equipos más recientes vienen con MIDP 2.0 y mayor capacidad de almacenamiento, algunos incluso utilizan tarjetas de ampliación de memoria.</p><p>La configuración es importante para distribuir la aplicación (Preferences en el paso 2), y son parte de la especificación del archivo JAD:</p><p><img src="/sites/default/files/images/stories/200505/programacion_5.gif" width="300" height="237" />&nbsp;<br /> <span class="pie_foto"> Tabla 2. Archivo JAD. </span></p><p>Las configuraciones opcionales son:</p><p><img src="/images/stories/200505/programacion_6.gif" width="300" height="295" /></p><p><span class="pie_foto">Tabla 3. Configuración en WTK.</span></p><p>Con la opción User Defined el usuario puede ingresar sus configuraciones personales o que dependan del equipo.</p><p>Al crear un proyecto, el WTK, también crea una estructura de directorios. En este caso en el directorio c:\WTK2.2\HelloMidlet con los siguientes subdirectorios:</p><p><img src="/sites/default/files/images/stories/200505/programacion_7.gif" width="300" height="199" /></p><p>Programar Midlets recuerda mucho a programar Applets, los cuales cayeron en desuso (mejor dicho, se perdió el gusto de programarlos).</p><p>Un MIDlet hereda o extiende la clase javax.microedition.midlet.MIDlet. Los métodos requeridos son:</p><ul><li>startApp - Inicia la aplicación.</li><li>pauseApp – Pausa la aplicación.</li><li>destroyApp – Destruye la aplicación, para que pueda ser eliminada de memoria.</li></ul><p>Como pueden ver, un Midlet incluso tiene un comportamiento más simple que el de un Applet (arranca, para y se detiene).</p><p>El siguiente código muestra el esqueleto mínimo de un MIDlet:</p><p><script type="text/javascript" src="https://gist.github.com/pedrogk/923f2053781935d3d7983ad0e20d8e42.js"></script></p><p>&nbsp;</p><p>El código anterior es un código zombie, camina pero no reacciona. Para corregir esto falta el manejo de eventos, lo cual requiere implementar la interface CommandListener y esto nos lleva a definir el método CommandAction().</p><p>Para hacer esto, agregamos el import correspondiente:</p><p><code>import javax.microedition.lcdui. CommandListener;</code></p><p>y modificamos la definición de la clase:</p><p><code>public class HolaMidlet extends MIDlet implements CommandListener {</code></p><p><span class="subtitulo2"> ¿Qué nos falta? Implementar el método CommandAction. </span></p><p><code>public void commandAction(Command c, Displayable s) <br /> { <br />&nbsp; if (c == cmdExit) {<br />&nbsp;&nbsp;&nbsp; destroyApp(false); <br />&nbsp;&nbsp;&nbsp; notifyDestroyed(); <br />&nbsp; }<br /> }</code></p><p>Para que esto funcione, es necesario importar las clases correspondientes a Command y Displayable.</p><p><code>import javax.microedition.lcdui.Command;<br /> import javax.microedition.lcdui.Displayable;</code></p><p>Así como definir la variable cmdExit, la cual representa al comando para el botón de salida (exit).</p><p><code>private Command cmdExit;</code></p><p>Ahora declaramos un objeto display, que utilizaremos como referencia a la pantalla. Primero importamos la clase correspondiente:</p><p><code>import javax.microedition.lcdui.Display;</code></p><p>y luego definimos la variable a nivel de clase:</p><p><code>private Display display;</code></p><p>En nuestro constructor vamos a inicializar el valor de los objetos display y cmdExit.</p><p><code>display = Display.getDisplay(this);<br /> cmdExit = new Command(“Salir”, Command.EXIT, 1);</code></p><p>La instancia de clase cmdExit muestra en pantalla la palabra “Salir” con la función de más alta prioridad (1) y que sea del tipo EXIT.</p><p>Falta agregar el texto “Hola mundo móvil”, lo cual haremos utilizando un objeto TextBox, que permite al usuario ingresar y editar texto.</p><p>Primero importamos la clase correspondiente</p><p><code>import javax.microedition.lcdui.TextBox;</code></p><p>y definimos el objeto</p><p><code>private TextBox tbxMain;</code></p><p>Posteriormente creamos la instancia de la clase TextBox, lo cual se hace indicando el título, texto de mensaje, y tamaño</p><p><code>tbxMain = new TextBox(“HelloMidlet”, “Hola Mundo Móvil”, 50, 0);</code></p><p>Por último agregamos el comando de salida, y preparamos al programa que esté al pendiente de este evento.</p><p><code>tbxMain.addCommand(cmdExit);<br /> tbxMain.setCommandListener(this);</code></p><p>Después de compilar la aplicación y generar el archivo JAR correspondiente, la forma más simple para instalarla en el dispositivo es usar un cable de datos, o transmisión inalámbrica (IR o bluetooth). Como recomendación final verifique las versiones de CLDC y MIDP de su teléfono para que pueda correr en su teléfono.</p><p>El listado final del código queda de la siguiente manera:</p><script type="text/javascript" src="https://gist.github.com/pedrogk/590c125f02da48dc115055a7f209658f.js"></script><p>&nbsp;</p><h3><span class="subtitulo2">Conclusión</span></h3><p>¿Por qué usar J2ME? Algunas ventajas reportadas:</p><ul><li>Es un estándar actual de la industria respaldado por Sun Microsystems.</li><li>Puede correr en el escritorio y en dispositivos móviles.</li><li>Continuas versiones de actualización a través de un comité JCP (Java Community Process).</li><li>APIs de desarrollo de terceros para nuevas características en los equipos de nueva generación.</li></ul><p>Sin embargo, J2ME también puede tener algunas desventajas, entre las cuales están:</p><ul><li>Es un lenguaje interpretado, una aplicación Midlet mal planeada puede ser lenta.</li><li>La memoria libre de cada teléfono y el tamaño máximo del archivo JAR/JAD.</li><li>Aritmética de punto flotante no implementada en versiones anteriores.</li></ul><p>Los Midlets han dejado de ser aplicaciones sólo para juegos, pasando por aplicaciones personales y ahora llegan al ambiente corporativo con acceso a bases de datos. J2ME es una tecnología madura. Lleva seis años de vida y se dice que lo mejor está por venir. ¿Usted qué opina?</p><p><strong>Referencias</strong></p><ol><li>“J2ME Building Blocks for Mobile Devices”. KVM and the CLDC. SUN. USA. 2000</li><li>“J2ME technology turns 5!”. http://developers.sun.com</li><li>Sun Java Wireless Toolkit http://java.sun.com/products/sjwtoolkit/</li><li>“Gartner Says Mobile Phone Sales Rose 17 percent ...”. http://www.gartner.com/press_releases/asset_127760_11.html</li><li>J2ME Polish: Device Database. http://www.j2mepolish.org/devices-overview.html</li></ol></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Víctor Manuel Quijano Abán es candidato al grado en la maestría en sistemas computacionales, egresado del Instituto Tecnológico de Mérida. Actualmente trabaja en un corporativo de medios de comunicación y ha trabajado en centros de investigación, gobierno federal y conservación en medio ambiente. Empezó a programar antes de que aparecieran las primeras PCs y es aficionado a los lenguajes scripts y código multiplataforma.</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Wed, 21 Nov 2007 23:17:23 +0000 Anonymous 498 at https://sg.com.mx https://sg.com.mx/revista/05/j2me-desarrollo-aplicaciones-para-tel-fonos-celulares#comments Inteligencia Artificial: Base tecnológica de las empresas desarrolladoras de software https://sg.com.mx/revista/05/inteligencia-artificial-base-tecnol-gica-las-empresas-desarrolladoras-software <span class="field field--name-title field--type-string field--label-hidden">Inteligencia Artificial: Base tecnológica de las empresas desarrolladoras de software</span> <span class="field field--name-uid field--type-entity-reference field--label-hidden"><span lang="" typeof="schema:Person" property="schema:name" datatype="">Anonymous</span></span> <span class="field field--name-created field--type-created field--label-hidden">Wed, 11/21/2007 - 14:46</span> <div class="field field--name-field-numrevista field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Publicado en</h3> <ul class='links field__items'> <li><a href="/revista/05" hreflang="und">SG #05</a></li> </ul> </div> <div class="field field--name-field-seccion field--type-entity-reference field--label-hidden field--entity-reference-target-type-taxonomy-term clearfix"> <ul class='links field__items'> <li><a href="/secci%C3%B3n-revista/portada" hreflang="und">Temas especiales</a></li> </ul> </div> <div class="field field--name-field-autor field--type-entity-reference field--label-inline field--entity-reference-target-type-taxonomy-term clearfix"> <h3 class="field__label inline">Autor</h3> <ul class='links field__items'> <li><a href="/sgvirtual/speakers/rodolfo-garc-cruz" hreflang="und">Rodolfo García Cruz</a></li> </ul> </div> <div class="text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><!--break--><p>El éxito de una empresa basada en tecnología depende de manera decisiva de su base tecnológica, que es su capacidad para explotar la tecnología como una competencia medular, invertir en tecnología futura, incorporar tecnología más avanzada en productos y servicios, y hacerlo en menos tiempo y con menos dinero que los competidores. Los siguientes ejemplos ilustran las ventajas que diversas empresas han obtenido al aprovechar su base tecnológica.</p><ul><li>La institución financiera KPMG International enfrentó (como muchas otras) la necesidad de automatizar el proceso de revisión de nuevos solicitantes de crédito a partir de historiales crediticios para tomar una decisión. Actualmente la empresa utiliza un sistema experto llamado Loan Probe para este fin.</li><li>Los casinos en Estados Unidos enfrentan a posibles estafadores utilizando el sistema NORA (Non-Obvious Relationship Awareness) que busca conexiones entre jugadores, trabajadores y organizaciones. La empresa desarrolladora de NORA, Systems Research and Development, hoy es proveedora del gobierno de los EEUU ya que su tecnología se considera útil para la seguridad nacional.</li><li>Empresas multinacionales como Ford, encuentran frecuentemente que su expertise en áreas específicas se encuentra repartido en diferentes países. Para reducir costos y facilitar el entrenamiento de sus empleados, han buscado recopilar esta experiencia al desarrollar sistemas como POM (Prototype Optimization Model), que reúne reglas para coordinar, planear y presupuestar los programas de prueba de prototipos. POM ahorra hoy a Ford más de USD 250 millones al año.Todos estos desarrollos han producido beneficios probados y cuantificables aplicando técnicas de Inteligencia Artificial (AI). La investigación en el área de AI intenta explicar la forma en que los seres humanos razonan. Siendo ésta una meta muy ambiciosa, en la práctica es necesario acotar las funciones del razonamiento a áreas específicas como la visión, el lenguaje, el reconocimiento de patrones y el aprendizaje. La ventaja tecnológica que AI ofrece a la industria radica en que permite automatizar estas funciones, y si bien no hace innecesario al experto humano, sí facilita su labor y genera ahorros considerables en horas-hombre.</li></ul><p>Cuando una empresa basada en tecnología considera un cambio estratégico como los citados anteriormente o evalúa su estrategia actual, debe efectuar un análisis crítico de su capacidad para explotar el cambio. El concepto de base tecnológica provee un marco teórico para evaluar esta capacidad. Este artículo presenta sus componentes y demuestra la viabilidad de la adopción de la AI como ventaja tecnológica esencial para incrementar el valor agregado del software hecho en México.</p><h3><span class="subtitulo2">Los Componentes de la Base Tecnológica</span></h3><p>La Figura 1 muestra los elementos que se deben tomar en cuenta para evaluar la base tecnológica de una empresa.</p><p><img src="/sites/default/files/images/stories/200505/base1.png" width="400" /> <br /> <span class="pie_foto"> Figura 1. La base tecnológica de la empresa. [1] </span></p><ul><li>Ventajas tecnológicas esenciales. Reflejan el aprendizaje colectivo en áreas técnicas específicas y el acervo resultante de know-how, con la consiguiente propiedad intelectual. Estas ventajas dependen de la experiencia acumulada en el desarrollo y explotación de tecnología. Una evaluación detallada de las ventajas tecnológicas esenciales debe distinguir entre las tecnologías de producto y de proceso. Una clasificación útil para las ventajas tecnológicas es la que las divide en tecnologías clave, de base, de paso y emergentes. Las tecnologías clave son indispensables para la ventaja competitiva ya que ofrecen la oportunidad de lograr una diferenciación significativa en el producto o proceso. Las tecnologías de base son necesarias para permanecer en el mercado, aunque no ofrecen ninguna ventaja competitiva; todos los participantes tienen acceso a ellas. Por ejemplo, todas las empresas de software tienen acceso a lenguajes de programación, compiladores, ambientes de desarrollo, etc. Las tecnologías de paso todavía no se han establecido en la industria, pero tienen el potencial comprobado para convertirse en tecnologías clave. Las tecnologías emergentes están en el horizonte y todavía no se han probado siquiera. Como se imaginarán, no se puede contar con tecnologías clave sin haber desarrollado y probado tecnologías de paso y emergentes. Por ejemplo, antes de Google, los buscadores de Internet contaban la frecuencia con que los términos buscados aparecían en las páginas, y consideraban que, mientras más veces apareciera el término, más relevante era la página. En 1996, Larry Page y Serguei Brin, pensaron que sería mejor definir la relevancia de la búsqueda como la “popularidad” de las páginas, esto es, mientras más veces la página fuera visitada, más relevante sería. El motor de búsqueda es hoy tecnología clave de Google, y sigue siendo materia de investigación.</li><li>Ventajas organizacionales.– Son los factores que permiten a la empresa crear y explotar nuevas tecnologías. Incluyen cinco elementos: las aptitudes del personal, los procedimientos para toma de decisiones y distribución de información, la estructura organizacional, las estrategias que guían la acción, y la cultura que moldea suposiciones y valores compartidos.</li><li>Ventajas externas.– Es la red de conexiones que la empresa establece con su entorno. Incluye contactos con proveedores, clientes, competidores, asociaciones, comunidad, etc. De estos contactos depende la capacidad de la organización para encontrar, construir y explotar la tecnología propia. Innumerables desarrollos tecnológicos son producto de la colaboración entre estos grupos.</li><li>Procesos de desarrollo.– El desarrollo de productos y procesos genera valor agregado para la supervivencia de la empresa, mientras que el desarrollo de tecnología genera diferenciadores que con el tiempo se volverán clave.</li><li>Ventajas complementarias.– Aquí se incluyen disciplinas como mercadotecnia, distribución, manufactura, servicio al cliente. Aunque pueden no representar propiedad intelectual en el mismo sentido que una patente o un registro, son decisivas para el éxito comercial de las empresas, y también se benefician de la aplicación de AI. Por ejemplo, es sabido que American Airlines pudo obtener una importante ventaja a partir de sus avanzados sistemas de información para la expedición de boletos, diseño de rutas mediante programación matemática y asignación de reservas, codificado en un sistema de nombre Sabre. La minería de datos, que es el proceso automático de identificación de patrones en bases de datos, puede apoyar de manera importante a la mercadotecnia. El autor realizó un estudio de este tipo para una pequeña industria química [2].</li></ul><p>Evidentemente, la labor de las empresas desarrolladoras de software consiste en crear programas para automatizar las ventajas complementarias, organizacionales y los procesos de desarrollo de sus clientes. Sin embargo, la gran ventaja de los desarrolladores de software de los países primermundistas sobre sus competidores, ha sido la investigación en AI y otras áreas de las matemáticas aplicadas como la estadística. Como lo indica la Figura 2, las empresas con desarrollos tecnológicos y conocimientos propios pueden formar una base de clientes más numerosa y fuerte que aquellas pobres en conocimiento y carentes de propiedad intelectual, pues las primeras pueden ofrecer productos y servicios que representan valor real para sus clientes.</p><p><img src="/sites/default/files/images/stories/200505/base2.png" width="400" /> <br /> <span class="subtitulo2"> Figura 2. El ambiente de negocios de las empresas de software. VTE – ventaja tecnológica esencial, VE – ventaja externa, PD – procesos de desarrollo, VC – ventaja complementaria, VO – ventaja organizacional. </span></p><h3><span class="subtitulo2">Las Funciones de la Inteligencia</span></h3><p>¿Qué ventajas concretas ofrece AI a las empresas desarrolladoras de software? La emulación del comportamiento inteligente ha permitido automatizar las siguientes tareas: [3]</p><p>• Aprendizaje a partir de la experiencia.– El aprendizaje es una habilidad fundamental de la mente humana y se ha logrado emular con éxito en programas que juegan al ajedrez o que eliminan virus informáticos, por citar tan sólo dos ejemplos. IBM, que se ha transformado de fabricante de hardware a desarrollador de software, creó el programa Deep Blue para retar y vencer al campeón mundial de ajedrez. IBM también ha creado programas para eliminar virus que emplean redes neuronales que generalizan aprendiendo a partir de ejemplos de virus conocidos.</p><p>• Manejo de situaciones complejas.– Todos los seres humanos estamos envueltos en ambientes complejos y cambiantes, por lo que es importante desarrollar herramientas para apoyar la toma de decisiones de los líderes de las organizaciones. Existen sistemas para apoyo a toma de decisiones (DSS, por sus siglas en inglés) en diversas áreas como comercio, lucha contra la pobreza, agricultura, economía, medio ambiente, terrorismo, etc.</p><p>• Resolución de problemas con información faltante.– Rara vez conocemos toda la información relacionada a un problema antes de resolverlo. Todos los días nos topamos con situaciones que implican tomar decisiones con información imprecisa o faltante. Esta área de investigación ha producido resultados de gran importancia, como el famoso sistema experto MYCIN, desarrollado en Stanford, que apoya a los médicos en el diagnóstico y tratamiento de infecciones en la sangre.</p><p>• Identificación de información prioritaria.– Hoy en día se cuenta con vastas bases de datos con todo tipo de información. Por ello se ha vuelto indispensable filtrarla y procesarla, para eliminar los datos innecesarios y explotar inteligentemente el conocimiento. Un ejemplo es LSI Indicator, un sistema experto creado por la empresa de bienes raíces LSI, que ayuda a determinar el valor real de una propiedad utilizando bases de datos compartidas por la industria [4].</p><p>• Prevención y diagnóstico de situaciones indeseables.– Dada la complejidad de las modernas plantas industriales, la información producida por los sistemas de control se ha vuelto difícil de interpretar con la velocidad requerida. Por ello, se han aplicado técnicas de reconocimiento de patrones a los datos producidos por estos sistemas para identificar fallas antes de que éstas ocurran, lo cual ha generado ahorros significativos. En China existen aplicaciones de este tipo para la identificación de fallas en redes eléctricas.</p><p>• Interpretación de imágenes.– Esta tarea es difícil de automatizar, pues la naturaleza de las computadoras no les permite identificar patrones visuales u objetos con la misma facilidad que los seres vivos. Sin embargo, existen numerosas aplicaciones que realizan esta labor, como el sistema de identificación y análisis de huellas digitales del Departamento de Justicia de Estados Unidos, o el sistema de organización del correo del servicio postal del mismo país, que “lee” las direcciones de los destinatarios escritas en los sobres de las cartas.</p><p>• Procesamiento simbólico.– Existen programas que apoyan a los matemáticos en manipulaciones simbólicas, como por ejemplo General Problem Solver (GPS) de la Universidad Carnegie Mellon, que combina reglas de inferencia y heurísticas para automatizar la comprobación de teoremas.</p><p>• Uso de heurísticas.– Innumerables empresas tratan de optimizar sus operaciones utilizando modelos matemáticos cuya solución exacta es difícil y computacionalmente costosa. En el campo de AI se han desarrollado heurísticas que permiten la solución aproximada de estos problemas en un tiempo razonable y a bajo costo. Problemas de logística, secuenciamiento de tareas de manufactura y optimización de portafolios de inversión, ente otros, han sido resueltos satisfactoriamente de esta forma.</p><p>Es claro que no puede decirse que ninguna de estas aplicaciones sea “inteligente” en el sentido en que lo es un ser humano, ni mucho menos que ayude a resolver las preguntas trascendentales sobre la inteligencia. Pero definitivamente sí resuelven problemas prácticos que las empresas y los gobiernos enfrentan todos los días, y automatizan actividades específicas que comúnmente se asocian con la inteligencia. Por ello, AI es un área de la ingeniería en constante desarrollo y que beneficia directamente a la industria del software, como han demostrado los ejemplos expuestos.</p><h3><span class="subtitulo2">Pensando en el Futuro</span></h3><p>Las empresas líderes en el desarrollo de software (como en todas las actividades productivas) obtienen ventajas competitivas a través de la investigación y el desarrollo. En este artículo se presentaron los componentes de la base tecnológica de las empresas y se proponen las técnicas de la Inteligencia Artificial como ventaja tecnológica esencial en el desarrollo de software, más allá de la tecnología de base a la que todos los competidores tienen acceso. De ninguna manera AI aspira a eliminar al experto humano, sino más bien a apoyar al personal para facilitar su labor, tomar mejores decisiones y producir ahorros cuantificables.</p><p>Todos los desarrolladores de software compiten en automatizar los procesos de negocio de sus clientes, pero la ventaja tecnológica esencial de los desarrolladores de software mexicanos debe provenir de la investigación y desarrollo tecnológico en matemáticas aplicadas e ingeniería de sistemas, pues con ellas es posible lograr diferenciación real ante la competencia de cualquier país.</p><p><span class="subtitulo2">Referencias</span><br /> • [1] Shenhar, A.J. y Adler, P.S. La base tecnológica de la empresa, en Gaynor, G. (editor) Manual de gestión en tecnología, Tomo I. Una estrategia para la competitividad de las empresas. Mc Graw-Hill Interamericana, Bogotá, 1999.<br /> • [2] Garcia-Flores, R., Wang, X.Z. y Burgess, T.F. Tuning inventory policy parameters in a small chemical company. Journal of the Operations Research Society, 54:350-361, 2003. <br /> • [3] Stair, R.M. y Reynolds G.W. Principles of information systems, Thomson Course Technology, Canada, 2003. <br /> • [4] Rozmus, P. LSI and ATSI provide link for collateral assessment services, Business Wire, December 21st, 2001.</p><p><strong>&nbsp;</strong></p></div> <div class="text-formatted field field--name-field-autor-bio field--type-text-long field--label-above"> <div class="field__label">Bio</div> <div class="field__item"><p>Rodolfo García Flores es Ing. Químico por la Facultad de Química de la UNAM y Doctor por la Universidad de Leads (Reino Unido), con especialidad en Inteligencia Artificial aplicada a la toma de decisiones. Trabajó para una empresa química en Pudsey, Inglaterra, donde empleó técnicas de AI para la investigación de operaciones. Fue catedrático en la Facultad de Ingeniería Mecánica de la Universidad de Nuevo León. Actualmente es candidato al SNI y colaborador de Sistemas Lógicos SisLogic S.A.</p></div> </div> <section class="field field--name-comment field--type-comment field--label-above comment-wrapper"> </section> Wed, 21 Nov 2007 20:46:35 +0000 Anonymous 495 at https://sg.com.mx https://sg.com.mx/revista/05/inteligencia-artificial-base-tecnol-gica-las-empresas-desarrolladoras-software#comments