viernes, 28 de marzo de 2014

Proyecto Indiana - Startup - Peru

Proyecto Indiana en Start-Up Peru 2014

Si llega a ser Elegida crearé la entrada. Solo puedo decir que con esta aplicación el Turismo Crecerá al 100%

domingo, 23 de marzo de 2014

CRUD Google App Engine & Google Web Toolkit

jueves, 20 de marzo de 2014

Emprendiendo en la Nube - Arquitectura y Patrón de Diseño

Arquitectura Java para Desarrollo con GAE y GWT

Soñando con el trabajo ideal, el cual sería ganar dinero por investigar, pues es lo que me gusta y  divierte, decidí emprender con una startup Tecnológica que pretende hacer de los lugares desconocidos y preciosos en lugares conocidos y visitados. Para  desarrollar una startup que pretende tener repercusión mundial, se necesita ser ordenado desde un principio, la arquitectura de software y el marco de trabajo en el proyecto es tu primera valla a superar. No pretendo criticar el desarrollo ágil por la poca documentación que genera, pienso que deberíamos tomar sus técnicas enriquecedoras, por eso combino el desarrollo clásico con el desarrollo ágil. Ahora ustedes se preguntarán por qué hablo de desarrollo ágil y clásico, si el título dice “Arquitectura Java para Desarrollo con GAE y GWT”, pues tiene mucha relación, pues los desarrolladores estamos acostumbrados a tomar  frameworks y buenas prácticas de diseño y desarrollo para acelerar el desarrollo del Software, creo que el ser productivos es algo bueno, pero la diferencia entre un desarrollador y un “buen desarrollador” es la capacidad de generar y reutilizar conceptos ya creados y comprobados por otros “buenos desarrolladores” y poner un granito de arena para mejorar la forma en que desarrollamos. Con este artículo pretendo compartir mi experiencia y conocimiento originados a partir de mi startup.

¿Qué Tecnología usa el StartUP?

  • Plataforma como Servicio(PaaS): Google App Engine.
  • Almacén de Datos: Google DataStore.
  • Tecnología en el Backend: Java - J2EE.
  • Tecnología en FrontEnd:
    • Web: GWT.
    • App Hybrida: MGWT y GWT-PhoneGap.
  • Geolocalización: Google Maps.
  • Almacén de Imagenes: Flickr.
  • Almacén de Videos: YouTube

¿Qué Herramientas usa el StartUP?
  • Gestión del Proyecto: PMBOK.
    • 9 Gestiones + 1 Gestión del Software(Desde fase Ejecución  a Cierre)
  • Gestión Administrativa: SCRUM.
    • Ayuda a ser más productivos.
  • Metodología: RUP.
    • Sin buena documentación se me olvida para que me servía un componente en específico al pasar el tiempo.
      • Agregue Documentación.
        • Documentación de Relaciones de Base de Datos.
        • Documentación de Flujos de Interfaces.

Nociones Preliminares:


  • GAE: Acrónimo para Google App Engine la plataforma como servicio que nos permite a los emprendedores crear Software como servicio (SaaS).

  • GWT: Acrónimo para Google Web Toolkit, el kit de herramientas creado por Google y luego liberado como proyecto Open Source, que permite desarrollar en el Lenguaje de programación Java y luego compila el código a javascript de alta performance para ser leído por los navegadores más populares de la web.

  • MGWT: Librería Mobile creada por Daniel Kurka que contiene widgets para Mobile.

  • GWT-PhoneGap: Librería basada en PhoneGap, tecnología de ADOBE que permite desarrollar en HTML5 y luego pasarla por el constructor de PhoneGap y tener la App hasta en 6 Plataformas o Sistemas Operativos, su creador es Daniel Kurka.

  • Java: Hace mucho tiempo que dejó de ser un lenguaje para convertirse en una plataforma Tecnológica.

  • Modelo Vista Controlador y Modelo Vista Presentación: Son patrones de Diseño para el desarrollo del software.

  • Google DataStore: Almacén de datos NoSQL.

  • JDO: Api de persistencia de datos.

Escribí algo de documentación preliminar para poder hablar en el mismo idioma, asi que a partir de ahora explicaré mi propio marco de trabajo, ya que así como en  la teoría del caos, hechos sueltos, sin relación aparente con otros hechos,  convergen para hacer una totalidad y explicar el resultado que sería la “Arquitectura de Software” y cómo es éste determinante en el modelo de programación.

Todo proyecto de software necesita ser bien gestionado, por esa razón uso el  PMBOK que con sus 9 áreas de conocimiento y  5 fases, nos permiten desarrollar actividades de gestión en el proyecto, al PMBOK le agregue una área de conocimiento más, la cual llame “Área de Conocimiento del Software” cuyas actividades se desarrollan desde la fase de ejecución hasta el cierre del proyecto. Las  actividades que se realizan en esta área son determinadas por la metodología de desarrollo de Software RUP, con cierta modificación, bien sabemos que los analistas de software hoy en día hablan y usan mucho el término BPM(Bussines Process Management) el cual permite a los analistas entender los procesos del negocio y modelarlos con cualquier herramienta BPM, entonces en mi marco de trabajo primero genero los “Casos de Uso de Negocio” para limitar el alcance del proyecto, dependiendo si los procesos son conocidos y son de una empresa, generamos el BPM de ese caso de uso que vendría a ser un proceso englobador, un ejemplo sería el “Proceso de Facturación”, en el caso de ideas de negocio donde el proceso es creatividad del que tiene la idea innovadora no desarrollamos el modelado de BPM, en el caso de mi emprendimiento no modelo los procesos de negocio o que es lo mismo los casos de uso de negocio.

Seguido a la actividad de Modelado de Negocio sabemos que RUP es muy explícito con las actividades a realizar y en qué fases realizarlas así que no haré un recorrido por la metodología y simplemente redactaré lo siguiente, una vez definido los “Casos de Uso de Negocio” sabemos que por cada caso de negocio tendremos que generar un diagrama de “casos de uso de sistema”, ya que dicho proceso será automatizado mediante tecnología, he aquí donde radica la explicación que pronto mostraré en la figura siguiente, los casos de uso de negocio son llevados a la programación y se convertirán en Clases Java,  las cuales estarán contenidas en la “capa de procesos” y cada uno de los casos de uso de sistema de un caso de uso  de negocio en específico se convertirá en métodos de la Clase, más adelante explicaré los beneficios de la capa de procesos.


En este diagrama  les muestro la vista genérica de la Arquitectura de Software Java para el desarrollo en la Nube con Google App Engine y Google Web Toolkit, estas dos tecnologías son muy compatibles para desarrollar tu emprendimiento tecnológico, como podemos observar en el diagrama genérico, usamos un almacén de datos llamado “Google DataStore”, pero ustedes pueden usar cualquier base de datos SQL o NoSQL, luego podemos observar el uso de la API de persistencia Java JDO, la cual permite que nuestra aplicación sea independiente de cualquier gestor de base de datos, observamos el patrón de diseño MVC el cual tiene sus variaciones tanto en el “modelo” y en el “controlador”, empezaré explicando la capa de modelo la cual contiene la lógica o comportamiento de nuestra aplicación, la “Capa de Beans” es muy conocida y se podría decir que es nuestra tabla de almacén de datos, claro nunca habrá más campos en nuestra tabla de almacén de datos que en nuestro bean, pero el bean sí puede tener más datos que nuestra tabla en almacén, lo que nos lleva a pensar que dentro de un bean existen campos persistentes y no persistentes, en el caso del Google DataStore, la tabla o BigTable del DataStore no tiene ninguna entidad en un principio de tu aplicación, cuando guardas por primera vez una entidad se crea la tabla.

La siguiente capa es la capa de DAO o también llamada de Acceso a datos, contiene la conexión y las diferentes clases que nos permiten ejecutar operaciones sobre el Google DataStore, además de poder desarrollar un automatizador de operaciones.

La capa de Logic no es más que una capa de transición que permite hacer validaciones sobre los campos de las entidades a guardar, así que si usan Validation API me darán la razón.

Estas tres primeras capas las llamo Capas de Entidad ya que sus operaciones son determinadas por alguna entidad. La capa siguiente es distinta a las anteriores, ya que se enfoca en el proceso a realizar por esta razón la llame “Capa de Procesos”, la capa de proceso se enfoca en la habilidad del desarrollador para generar algoritmos eficientes para los métodos u operaciones o que es lo mismo el caso de uso de sistema que estaría dentro de un determinado caso de uso de negocio.

  • Caso de Uso de Negocio= Clase Java en Capa de Proceso
  • Casos de Usos de Sistema=Método de Clase

Beneficios de la  Capa de Procesos:
  • Orientado al proceso.
  • Minimizar recursos.
  • Abres la conexión en una transacción y guardas en n tablas.

Antes de abordar la capa de control mostraré el gráfico detallado de Arquitectura de Software

La capa de Control comúnmente llamado el "orquestador" ya que cada clase de la capa de control sabe a que operación dirigir dentro de la capa de procesos, en todo caso existen dos tipos de operaciones dentro de la capa de control que vendrián a ser la operación de proceso y operación de flujo, sin usar Google Web Toolkit el Servlet sería el encargado de hacer esta tarea, pero Google Web Toolkit nos proporciona dos formas más, las cuales tienen dentro de mi arquitectura un determinado propósito, empezaré por RequestFactory que usa solo método Post y transfiere los datos en formato JSON, dentro de la arquitectura lo uso para DML(Lenguaje de Manipulación de Datos) y consultas por el formato de peso ligero y su rapidez para transmitir información tanto en escritura como lectura, luego tenemos a RPC(LLamada a procedimiento Remoto) muy usado por los WebService, también usa metodo Post y transfiere los datos en el estándar XML, lo uso para todo que sea un servicio, ejemplo “recuperar clave”,”cambiar clave”, etc. y ustedes estarán pensando y el Servlet ya no lo necesitamos, pues claro que lo necesitamos y en la arquitectura se usa para ir de una página a otra ya sea un JSP o HTML.

En la capa de la Vista uso Google Web Toolkit para el desarrollo de las interfaces gráficas de usuario, las cuales son convertidas a javascript y luego son enlazadas a un JSP o HTML.

Creo que tengo mucho más que explicar a detalle, sobre el marco de trabajo, pero es una visión general de cómo emprender en la Nube.

“Investiga, aprende, comparte y crea tecnología con el mundo”



Creador: Jonathan Torres.
Alias: JOFRANTOBA


Google+ Badge

Entradas populares