miércoles, 16 de diciembre de 2009

Para entender el contexto y el uso de sistemas de workflow.

Toda empresa, privada o de gobierno, de cualquier giro y cualquier tamaño tiene y está regida y organizada por un flujo de procesos (workflow) del cual en la mayoría de los casos no están conscientes. El workflow de las empresas es muy importante ya que determina la forma en que se distribuye el trabajo, quien lo tiene que hacer, donde lo tiene que hacer y como la va a hacer.
Que podemos hacer nosotros:
1. Definir el workflow de una empresa. Mediante recopilación de información mediante entrevistas y la observación directa de los empleados es importante para lograr entender el qué está haciendo. Esto se modela mediante tablas y una notación grafica que describen la forma en que está organizada la empresa. Esta notación favorece la discusión y el dialogo con el cliente para que valide tu modelo.
2. Una vez modelada la empres tal cual es se procede a analizar la forma en que se puede mejorar. El problema clásico que nos encontramos es que todo mundo hace las cosas de forma secuencial cuando muchas actividades pudieran ser realizadas en paralelo. Esto es muy importante sobre todo en empresas con flujo de documentos que generalmente por una mala distribución generan tiempos de espera innecesarios.
3. Otra ventaja de un modelo de workflow es que se pude determinar la asignación del trabajo. Con muchas ventajas asociadas. Una tarea, por ejemplo procesar una solicitud de vacaciones, podría ser delegada a otro elemento de la empresa que ha sido reconocido como capaz de tomar las riendas de dicho trabajo en caso de que el recurso originalmente asignado a la tarea este indisponible. Note que a veces los sistemas de cómputo quedan atorados ya que los permisos de acceso a expedientes están limitados a ciertos usuarios. Para ellos existen 48 patrones de asignación de tareas los cuales pueden ser definidos en tiempo de diseño del sistema o asignarse en tiempo de ejecución.
4. Manejo de agendas. La organización requiere del manejo de sistemas al interior que permitan y favorezcan la comunicación entre los diferentes actores. Cada que una empleado sea asignado con una tarea requiere de un mecanismo que le anuncie y a su supervisor otro que le permita identificar que dicha tarea ha sido asignada, denegada, delegada.
5. Identificación de cuellos de botella de la empresa. Durante la fase de diseño y mediante la recolección de datos se puede determinar donde hay necesidad o de aumentar el número de recursos o de hacer las tareas más eficientes para evitar que se detenga el progreso del trabajo. Durante el funcionamiento del sistema se pueden monitorear las procesos y ver donde están las cosas bien, regular y mal.
Todo esto es la parte del diseño obviamente un grupo de desarrolladores se encargaría de implementar un sistema que soporte estas características.
Por otro lado sobre los sistemas nosotros podemos.
1. Diseñar prototipos de las interfaces que ayuden al usuario final a coincidir con lo que esperan
2. Evaluar la usabilidad del producto final antes de ser entregado. Todo sistema por definición se espera sea útil, es decir, cumpla con el propósito para el cual fue diseñado. Sin embargo, eso no quiere decir que será usado de forma eficiente. Para ello hay que evaluar si el sistema diseñado, o incluso el que usan cumple con el mínimo de normas de usabilidad. En caso contrario, se debe mejorar el sistema, o en caso de que sea un sistema existente, entonces tienes elementos para demostrar que requieren algo nuevo.
3. Basados en el workflow de la empresa se contribuye a determinar de forma eficiente la compra de software. Para esto en ejemplo, una empresa X compra el sistema de software de contabilidad SAP. Los contadores lo conocían y era la forma como sabían llevar sus estados contables. La gerencia debía entregar reportes en formatos de hojas de cálculo de Excell. La línea de producción generaba estadísticas en hojas de papel. Problema a fin de mes la gerencia dedicaba al menos una semana a la generación del balance financiero. Si se hubiera estudiado el workflow se hubieran dado cuenta que usar SAP era un gasto múltiple para la empresa, un software que solo facilitaba la vida de los contadores pero ponía a trabajar a todos el doble, incluidos los contadores que después tenían que capturar dos veces la misma información en hojas de cálculo en Excell. Un poco de visión mostraba que era mejor capacitar a los contadores en el uso de Excell y los formatos necesarios para llevar la contabilidad.

Mas datos se pueden encontrar en el sitio de FlowiXML
Incluso se puden contratar los servicios especializados a traves de la UCL. En breve ya disponible esta consultoria en Puebla, Mexico.

jueves, 10 de diciembre de 2009

Beneficios del paradigma basado en modelos

Un metodo para desarrollo de software promovido por el object management group (www.omg.org) es conocido como ingenieria manajeda por modelos (MDA por sus siglas en ingles) promueve que el uso de modelos para describir los diferentes componentes de una aplicación pueden reducir de manera significativa los retos actuales del desarrollo de sistemas interactivos. Retos que tienen que ver con la diversidad de dispositivos de computo(celular, tablet pc), lenguajes de programación (declarativo, imperativo), modalidades de interacción (vocal, grafica, física, táctil) y el contexto de uso. Este ultimo muy complejo y que en una visión simplificada pero suficientemente compleja debería considerar variaciones en los tipos de usuario (experto, novato, categoría de edad, habil), ambiente donde ejecuta su aplicación (trabajo, casa) y la plataforma donde trabaja que involucra la combinación de dispositivos de entrada y salida de hardware y software requeridos para la interacción.
Si logramos poner todas estas variables en modelos suficientemente abstractos y logramos definir la forma de transformar el modelo en solución dependiendo del objetivo que se tenga entonces podemos el espacio de soluciones que un equipo de desarrollo requeriría para resolver el problema de la multiplicidad de posibles soluciones que requiere.
Para centrarte en esta área yo te recomiendo leer estos artículos de Jean Vanderdonckt, que yo encuentro geniales:

A MDA-Compliant Environment for Developing User Interfaces of Information Systems
Model-Driven Engineering of User Interfaces: Promises, Successes, Failures, and Challenges
Multimodality for Plastic User Interfaces: Models, Methods, and Principles, in “Multimodal user interfaces: from signals to interaction

Y sobre tutoriales y cursos bájate los slides de slideshare que él mismo ha subido

http://www.slideshare.net/jeanvdd/modeldriven-engineering-of-user-interfaces
http://www.slideshare.net/search/slideshow?q=jean+vanderdonckt&submit=post

miércoles, 28 de octubre de 2009

Las 8 reglas de oro del diseño de Interfaces

En su popular y premiado libro sobre el diseño de Interfaces de Usuario, Ben Shneiderman define 8 principios a seguir para cualquier sistema interactivo.

1. Buscar la consistencia. La consistencia en tu aplicación se refiera al uso consistente de iconos, títulos, colores, etc. a lo largo y ancho de tu interfaz. Consistencia tiene que ver en el cómo interactuar, no me cambies la jugada si ya estamos con animaciones flash mantengamos este tipo de interacción.

2. Proveer usabilidad, reconoce los distintos usuarios y diseña la plasticidad de tu interfaz (adaptable al contexto de uso, al dispositivo, la plataforma, al usuario). Hacerlo de forma agradable usando técnicas de degradación o mutación. Considera el nivel de experiencia de tu usuario pues los hay desde expertos hasta discapacitados.

3. Ofrece feedback informativo. Para cada acción del usuario siempre debe existir una retroalimentación a lo que hace. Toda acción nuestra en la vida real conlleva un efecto, mantén esta metáfora en mente al desarrollar un sistema interactivo. Por mínimo e insignificante que sea el feedback es importante para que el usuario entienda que lo que hace tuvo un impacto.

4. Diseña la transición del principio al fin de una secuencia de acciones. Que la aplicación nos lleve a algo y no nos deje en medio de la nada. Una sistema de compras por internet es el mejor ejemplo, pasamos de seleccionar un objeto a comprarlo siempre con la confirmación de haber concluido el paso anterior.

5. Prevé los errores. Piensa en los casos inesperados no asumas que todo saldrá bien. Deshabilita elementos de la interfaz que puedan guiar a errores graves siempre y cuando dichos controles no sean necesarios. Si hay errores prevén mensajes que ayuden a entender la razón del error y la forma de salir de él y regresar el sistema a un estado estable.

6. Crear acciones que se pueden revertir. El clásico caso de me equivoque y quiero regresar a un estado previo tan usado en un editor de textos, debe estar presente ya que es algo que el usuario desea tener siempre a la mano y apreciara siempre.

7. Permite al usuario tomar el control de la aplicación. a muchos nos gusta ser quienes dirigimos las cosas y nos ser simples respuestas a lo que el sistema quiere.

8. Reduce la carga de trabajo en la memoria de corto plazo. Teorías sobre la capacidad de almacenamiento cognitivo que tenemos los humanos muestra que en la memoria de corto plazo solo podemos guardar entre 7 +- " objetos de interacción. Así que mantén la interfaz simple.

martes, 27 de octubre de 2009

IBM nos invita a dejar de hablar y comenzar a hacer

En el primer comercial pese a las condiciones de riesgo en el edificio, al parecer algo inicio el sistema contra incendios, ellos continúan su junta. Sin embargo, aun queda un detalle por trabajar, que hacer ante lo inesperado, una vez concluida la planeación de la solución a los problemas en situaciones normales hay que planear la solución ante lo inesperado.

Un segundo comercial nos muestra que para tener nuevas ideas hay que tomarse un tiempo para meditar. Pensando en la forma en que se hacen las cosas hoy en dia, su estructura, su proceso y después ver como se puede innovar. Esto lo llaman Ideating. El eslogan es dejan de hablar y comienza a hacer.
FlowiXML es una herramienta que te permite analizar cómo se hacen las cosas y de ahí buscar hacerlas mejor.

viernes, 23 de octubre de 2009

Muchas opciones para desarrollar RIAs

Las aplicaciones enriquecidas para internet se han convertido en el futuro del internet. Debido a la combinación de tecnologías que han logrado eliminar la brecha que existía entre una aplicación de escritorio y una web. Existen muchos sitios describiendo dichas aplicaciones pero lo interesante son las herramientas que hay disponibles hoy en día que facilitan su desarrollo.

Una lista incompleta pero con suficientes referencias para iniciarse en el tema es:

Silverlight de Microsoft que en combinacion con su lenguaje XAML sirve para generar RIAs. Hay al menos un par de ambientes de desarrollo que son: Eclipse4SL, Component One, visual studio NET no esta demas listarlo.

Degrafa un trabajo del MIT para crear RIAs con mas de un millon de descargas vale la pena mirar.
• Sun no se ha quedado atras y ha logrado la evolucion de Java y sus tecnologias. JavaFX y su soporte para RIAs forma parte del ambiente de desarrollo NetBeans IDE 6.7.1.
Open laszlo es otro proyecto de software libre que no deja de cobrar adeptos, al dia de hoy mas de medio millon de descargas lo hace de interes.
ZK es un ambiente de desarrollo que es muy similar a un editor de formas como el de visual studio con la ventaja de ser gratuito. Facil de usar, interesante, no?
Flash Catalyst, uno de los precursores en terminos de RIAs ha sido el lenguaje Flash y no podia dejar de existir un entorno de desarrollo que se adecua a las necesidades del mercado actual. Esta herramienta es muy buena pero no gratuita.

El W3C tambien ha lanzado una iniciativa en busca de promover el uso de RIAS usando una recomendacion W3C. El grupo que ha trabajado el tema ha lanzado su reporte final.

jueves, 22 de octubre de 2009

Una herramienta para predecir el tiempo de ejecucion de una tarea

He aqui una herramienta que ayuda a predecir el tiempo de ejecucion de una tarea por un usuario en un dispositivo. CogTool es un software libre desarrollado por el instituto de IHC de la universidad de Carnegie Mellon.

miércoles, 14 de octubre de 2009

La teoria de la diversion

Volkswagen ha lanzado una iniciativa llamada teoria de la diversion. El proposito es lograr un cambio positivo en la gente a traves de cambios en el quehacer cotidiano que pase de ser monotono a divertido.


El concurso esta abierto asi que cualquiera que quiera innovar con alguna idea y cambiare aqui el ejemplo de la teoria




Cuando uno piensa en el desarrollo de sistemas tambien podriamos pensar en divertir al usuario pero siempre hay que tener cuidado. Los efectos visuales, sonoros, etc. se convierten en una molestia. Normalmente, un usuario medio experto tiende a desactivar dichos efectos "divertidos" en pos de la funcionalidad. Encontrar el punto medio que nos lleve a una aplicacion funcional y la vez entretenida es el reto como equipo de desarrollo.

Una interfaz innovadora

Muchos dicen que la innovacion es el paso que te lleva al futuro. Este es un buen ejemplo de creatividad.

10/GUI from C. Miller on Vimeo.