9/25/2011

Como desarrollar un Blueprint de Arquitectura de Software


Desde hace años he participado como arquitecto jefe en diversos proyectos de software desde aplicaciones web sencillas a soluciones de alta demanda, escalabilidad y desempeño, siendo la arquitectura un componente necesario, prioritario y vital.

Cuando se inicia el desarrollo de un proyecto de software es necesario conceptualizar en primera instancia el desarrollo de un "Blueprint de Arquitectura", el cual es un documento que describe y establece un conjunto coherente de criterios y recomendaciones de diseño arquitectónico que deberan ser utilizadas para garantizar el desarrollo de una arquitectura desacoplada, ágil, adaptable y de tecnología neutral para la solucion. Como arquitecto de software, este es un insumo que no puede falta al iniciar un proyecto de software.

Generalmente este documento está conformado por cuatro secciones. En la primera se establecen los requisitos y  atributos de calidad que deberán ser garantizados por la arquitectura de la solución como: simplicidad, flexibilidad, tolerancia ante cambios, reusabilidad, desacoplamiento, entre otros. En la segunda sección se describen las disciplinas y estilos de arquitectura que soportarán la plataforma de software y hardware de la solución, los estándares y normas abiertas que deben ser utilizados para facilitar la interoperabilidad entre los módulos de la solución, la división por capas, topología de servicios y la propuesta general arquitectónica de la solución. En la tercera sección se describen las Soluciones de Software y Hardware Propuestas. Por último, se plantean diversas recomendaciones en referencia al cumplimiento de los atributos de calidad establecidos.

El objetivo general del blueprint de arquitectura es describir el estilo de arquitectura y los marcos tecnológicos que sustentarán la plataforma de servicios de la solución. Entre sus principales objetivos:
  • Describir los componentes que integran la arquitectura de software y hardware de la solución.
  • Establecer las premisas generales que sustentarán el desarrollo de una arquitectura ágil y eficiente para la solución.
  • Describir los criterios de calidad que deben ser garantizados para el desarrollo de una arquitectura de software y hardware ágil y eficiente para la solución.
  • Establecer las disciplinas y estilos de arquitectura que soportarán la plataforma de software y hardware de la solución.
  • Establecer los estándares y normas abiertas que deben ser utilizados para facilitar la interoperabilidad entre los módulos de la solución.
  • Describir las estrategias de interconexión e integración que proveerán la capacidad de intercambio de información entre los componentes de la solución.
  • Describir las alternativas tecnológicas propuestas para el desarrollo de la solución.
  • Establecer los criterios generales para proporcionar una infraestructura de alta disponibilidad, segura, eficiente y escalable para la solución mediante un conjunto de recomendaciones.
Anexo un mapa de las areas que debemos considerar cuando diseñamos la arquitectura de software de una solucion.

Saludos;


Hacia una Ley de Interoperabilidad

Desde hace años, he estado impulsado la necesidad y urgencia del desarrollo de una plataforma de  servicios de interoperabildiad para el Estado Venezolano. La "PIN" como la llamo es un medio, que permitirá que se establezcan las condiciones necesarias para el desarrollo y adopción de políticas, principios, estándares, normas y procedimientos para el acceso e intercambio electrónico de datos e información entre los órganos,   ciudadanos y entes de un Estado.

Desde mi punto de vista no han existido avances consistentes en Venezuela e incluso en América Latina dado que en la mayoria de países no se ha definido como una necesidad la prestación de servicios de interoperabilidad. En el campo del gobierno electrónico sigue persistiendo la idea que la creación y difusión de información mediante portales como principal acción, sin embargo los medios y políticas para el intercambio de datos e información no han sido una realidad en muchos de nuestros países.

Es mi país, existen grandes brechas en el intercambio de información, sin embargo el conocimiento es el verdadero reto. Como pueden los entes gubernamentales tomar decisiones sin un modelo de información homologado que responda a los intereses de las sociedades, y no a simples reportes de gestión?. Como podemos evaluar la mejora en una área especifica si no tenemos la capacidad de ver el bosque?. Como podemos realizar un ejercicio de tomas de decisiones ágiles y consistentes si en nuestros países todavía domina el Universo del Excel o el Calc?. Como podemos mejorar si no tenemos la capacidad de medir?. Porque no empezamos a evaluar tecnologías que permitan la medición en tiempo real?. Como podemos avanzar si no existe una política concreta para la gestión de conocimiento en TI?

Una plataforma de interoperabilidad puede convertirse en un medio para conocer de forma consistente el estado en tiempo real de las acciones de gobierno de un Estado, construyendo un canal que nos permita evaluar si vamos a buen puerto, sin estamos cumpliendo con las metas que requiere la sociedad, si somos efectivos y eficientes en nuestra gerencia.

Sobre sus componente generales
Una plataforma de interoperabilidad esta conformado por diversos componentes que la integran, entre los mas importantes:
  1. Una plataforma integrada de consulta de datos, que contribuya con la reutilización de datos, información y funcionalidades en un estado.
  2. Una plataforma integrada de mediación de servicios de interoperabilidad la cual contribuirá con la mediación y la orquestación de servicios.
  3. Un mapa nacional de servicios de información interoperable, que proveerá un único punto de acceso a los diferentes servicios de información interoperables provistos por los órganos y entes del Estado, fomentando paulatinamente su conocimiento, reutilización, integración e interoperabilidad.
  4. Una plataforma integrada de automatización de procesos interinstitucionales, que podrá administrar el ciclo de vida de procesos transversales de interés estratégico para el Estado.
El Futuro que desearía para mi hija, para mi país, para mi continente
Actualmente estoy trabajando en una propuesta técnica que aborda inclusive elementos de gestión de cambio porque estoy convencido que la calidad de vida de una sociedad esta profundamente ligada al uso efectivo, eficiente e inteligente de las tecnologías de informacion. Reflexionando en este sentido, yo desearía para mi país:
  1. Que cada institución desarrolle y adopte los estilos de arquitectura y disciplinas requeridas para asegurar la interoperabildiad de sus sistemas de informacion.
  2. Que cada institución pueda compartir conocimiento sobre su perspectiva.
  3. Que el estado establezca políticas consistentes y de altura para garantizar la aplicacion de normas.
  4. Que el ciudadano común tenga acceso a portales únicos e integrados como: denuncias.pais tramites.pais, datos.pais.
  5. Que el estado pueda medir en tiempo real la gestión de sus instituciones y el cumplimiento cualitativo y cuantitativo de sus políticas.
  6. Que el estado cuente con un modelo de informacion agnóstico que responda a las necesidades de sus ciudadanos.
  7. Que el estado cuente con plataforma de interoperabilidad por sectores: Plataforma Nacional de Interoperabilidad para Alimentacion, Plataforma Nacional de Interoperabilidad para Vivienda, Plataforma Nacional de Interoperabilidad para Seguridad, Plataforma Nacional de Interoperabilidad para Tramites.
  8. Que el estado pueda medir, mejorar y optimizar procesos transversales de interés estratégico.   
En Venezuela hemos comenzado a dar pasos
Hace meses tuve la oportunidad de desarrollar desde el punto de vista técnico y arquitectónico un borrador de propuesta de ley de Interoperablidad para el Estado Venezolano, el cual esta siendo impulsado por el Ministerio del Poder Popular para Ciencia, Tecnología e Industrias Intermedias. Una propuesta que contiene elementos innovadores que podrían a futuro convertirse en una referencia a nivel latinoamericano.

La propuesta de ley permitirá a grades rasgos:
  1. Garantizar el desarrollo de un estándar común de interoperabilidad en el Estado.
  2. Establecer las condiciones necesarias para el desarrollo y adopción de políticas, principios, estándares, normas y procedimientos para el acceso e intercambio electrónico de datos e información entre los órganos y entes del Estado.
  3. Promover el desarrollo de servicios de información interoperables adaptados a las necesidades de los ciudadanos y los procesos del Estado.
Como ciudadano de esta tierra, felicito todas las iniciativas que se están dando desde el Centro Nacional de Tecnologías de Información (CNTI) y el CNIT (Centro Nacional de Innovación Tecnológica) instituciones que están dando los primeros pasos hacia el fin ultimo: "Una plataforma Nacional de Interoperabilidad dirigida a mejorar la calidad de vida de sus ciudadanos mediante el uso efectivo, eficiente e inteligente de las TI". Desde aquí muchas energías positivas!!!

Saludos;

9/22/2011

SOA, ESB y BPM en el Ecuador (Integrando Mule ESB e Intalio BPM)



Hace poco tuve la oportunidad de viajar a Ecuador e impulsar la adopción de las disciplinas y estilos de arquitectura SOA, ESB y BPM en un entorno organizacional mediante transferencias tecnológicas con el apoyo de soluciones en software Open Source como Mule ESB, Intalio BPM y capacitaciones sobre Gobernabilidad SOA y BPMN2. Me resulto muy grata la estadía. Agradesco a Hugo Chamba y a Brighitt por su hospitalidad y colaboración, Lianet, Juanka y todo el equipo que labora en una organización que esta dando pasos fuertes en la adopción y puesta en practica de estas disciplinas en el Ecuador.

En dichos talleres pudimos compartir en áreas como:
  1. Interoperabilidad, estilos y disciplinas de arquitectura SOA (Service Oriented Architecture), ESB (Enterprise Services Bus), BRE (Business Rule Engine), CEP (Complex Event Processing) y BPM (Business Process Management).
  2. Introducción al desarrollo de “Blueprints de Arquitectura de Software”.
  3. Modelado de procesos mediante la notación gráfica BPMN 2.0, técnicas, patrones y mejores prácticas.
  4. Utilización de Eclipse IDE para el desarrollo de proyectos orientados en servicios (SOA).
  5. Despliegue de un Bus de Servicio Empresarial mediante MULE ESB; desarrollo de servicios web para protocolos SOAP / REST e integración con Spring Framework.
  6. Despliegue de un Sistema de Gestión de procesos de negocio (BPMS) mediante Intalio BPMS.
  7. Modelado de procesos para el proyecto de la Fuerza Aérea Ecuatoriana (FAE) – Reclutamiento y Selección de Aspirantes a Oficiales y Aerotécnicos.
  8. La importancia de los Marcos de Gobernabilidad y Arquitectura SOA en un entorno de planificación estratégica.
  9. Formación Especializada en Intalio BPMS para la gestión de correlaciones, looping sub-process y timers. 
Pronto pondré a a disposición de la comunidad el material que utilice para realizar las transferencias tecnológicas.

Gracias Hugo por la hospitalidad. Espero que sigamos impulsando la adopción y aplicación de las tecnologías de informacion en nuestros países, enriqueciéndonos con ambas experiencias. Muchos Éxitos!!!

9/02/2011

Organizaciones que aprenden - Aprendizaje Organizacional

En los últimos años los avances tecnológicos han sido increíblemente exponenciales, cambiando la vida de las sociedades y sus organizaciones de una forma que nunca pudo ser imaginada, por ejemplo empresas pequeñas pueden irrumpir en diversas áreas y cambiar incluso las sociedades. Este escenario ha generado mayor competencia, mayor complementariedad, mayor globalización, mayor intensidad. Las organizaciones que puedan adaptarse y aprender en este medio tendrán definitivamente mayor éxito.

En este post quise escribir sobre un tema poco abordado “El Aprendizaje Organizacional”. Son pocas las organizaciones que cuentan con políticas claras y consistentes para el aprendizaje organizacional. Es muy común que la organización centren sus esfuerzos en los beneficios de sus productos y servicios, y poco en las estratégicas necesarias para asegurar su adaptación en un medio tan cambiante, exigente y dinámico.

Nuestras sociedades requieren nuevas organizaciones, organizaciones con mayor conocimiento, con mayor capacidad de cambio, flexibilidad y velocidad para responder al cumplimiento de sus objetivos estratégicos, sobre todo en las organizaciones públicas donde generalmente existen grandes retrasos en estas capacidades.

Porque deben existir políticas de aprendizaje organizacional?
  1. Las organizaciones que aprenden más rápido son capaces de adaptarse y con ello conseguir una ventaja estratégica y mejor desempeño.
  2. Las organizaciones que aprenden son capaces de aprovechar el conocimiento colectivo de su talento humano. Esta capacidad, combinada con la mejora continua de sus procesos, su tecnología, y la gestión del conocimiento, permitirá crear y desarrollar “Superorganizaciones”.
  3. Las organizaciones que aprenden mejoran continuamente su desempeño.
  4. Las organizaciones que aprenden están más conscientes de sus debilidades y fortalezas. 
  5. Las organizaciones que aprenden desarrollan un esfuerzo constante y amplio para que la informacion y el conocimiento fluya, crezca y genere valor.
  6. Las organizaciones que aprenden definen el conocimiento como la informacion en acción.
Algunas Recomendaciones
  1. Desarrolle un programa de aprendizaje organizacional continuo, que permita que el personal pueda registrar brechas y oportunidades de mejora en su entorno laboral.
  2. Promueva mediante políticas que su talento humano pueda capacitarse a través del  aprendizaje autodirigido.
  3. Utilice la tecnología para aumentar la velocidad de aprendizaje y la gestión del conocimiento.
  4. Desarrolle un Programa Organizacional de medición, mejora y optimización de procesos continuo.
"El aprendizaje en el interior de la organizaciones debe ser igual o superior a los cambios que 
ocurren fuera de la organización o la organización muere”.