viernes, 20 de diciembre de 2013
viernes, 13 de diciembre de 2013
Recomendaciones para la implementación de una solución
![]() |
La fase de implementación o de transicición puede ser más complicada de lo que aparenta en la planificación. Pero hay recomedaciones que pueden ayudar y que los gerentes deben tomar en cuenta |
Siendo así de incierta, la fase de implementación tiene una particular relevancia de la que es conveniente estar conscientes: hasta que no logre su cometido los usuarios no sentirán (y con razón desde su perspectiva) que el trabajo de desarrollo fue realizado, porque, para todo efecto práctico, una solución que no está operativa es una solución que no existe.
Ante esta complejidad podemos preguntarnos si se puede hacer algo para disminuir los riesgos de tener sorpresas durante la fase de transición. La respuesta es que si, que si bien nunca se pueden eliminar totalmente los riesgos, si se pueden minimizar si se realizan cinco cosas que un gerente debe recordar siempre al momento de planificar la implementación dentro de un proyecto.
Se trata de cinco recomendaciones básicas que podemos hacer para la fase de transición. En esta oportunidad las enumeraremos e introduciremos muy brevemente y dejaremos para siguientes ocasiones la ampliación con más detalles. Las recomendaciones son:
- Establecer explicitamente los criterios de validación
- Validar la aplicación en el servidor de desarrollo
- Comenzar la transición en forma temprana, antes de concluir la construcción.
- Hacer la transición en dos etapas: primero a un servidor de preproducción y luego al servidor de producción
- Considerar que algunos ajustes pueden ser hechos durante la etapa de producción
Establecer explicitamente los criterios de validación
Tener claro los criterios que debe cumplir la solución construida para poder considerar la tarea realizada elimina subjetividad en las decisiones y una peligrosa fuente de malos entendidos entre las personas involucradas.
Tener claro los criterios que debe cumplir la solución construida para poder considerar la tarea realizada elimina subjetividad en las decisiones y una peligrosa fuente de malos entendidos entre las personas involucradas.
Validar la aplicación en el servidor de desarrollo:
Cada cambio de ambiente operativo introduce nuevos posibles puntos de falla e involucra otras personas por lo que es importante tener los criterios de aceptación bien definidos antes de pasar de un ambiente de trabajo a otros.
Comenzar la transición en forma temprana, antes de concluir la construcción:
Hay tareas de transición que pueden hacerse cuando aún se está construyendo y resulta recomendable realizarlas así, cada vez que sea posible.
Hacer la transición en dos etapas: primero a un servidor de preproducción y luego al servidor de producción:
Cuando no hay ambientes de preproducción en las instituciones hay más riesgos. Cuando los hay, se debe usarlos sistemáticamente.
Considerar que algunos ajustes pueden ser hechos durante la etapa de producción:
No se debe jugar al todo o nada. Es importante siempre un poco de flexibilidad en el camino que conduce a una transición plena al ambiente de operaciones final.
Estas cuatro recomendaciones básicas merecen comentarios adicionales. En siguientes oportunidades ampliaremos los detalles…
viernes, 6 de diciembre de 2013
La implementación de una solución
![]() |
Llevar una aplicación desarrollada al ambiente de producción es una tarea que luce simple pero que puede ser bastante compleja |
Con toda una fauna diversa de variables de hardware y de software, de capas y de interdependencias, el hacer que una aplicación de mediana complejidad trabaje en un segundo servidor, en el ambiente de producción de la institución de destino, es un trabajo en el cual pueden surgir imponderables que en ocasiones pueden hacer que una tarea supuesta a realizarse en horas se tenga que realizar en días, incluso en semanas, y luego de vencer toda una serie de dificultades.
El origen de los problemas tiene que ver con que el ambiente de desarrollo, en el cual trabajan los constructores nunca es exactamente igual al ambiente final en el que la solución desarrollada debe operar. La implementación no es copiar archivos, generar las condiciones iniciales en las bases de datos y configuraciones de la aplicación y pulsar un icono de invocación. Muchas veces es así la teoría, pero la práctica puede ser distante de ese desiderátum.
Todos los sistemas tienen versiones y subversiones, las condiciones de uso de una plataforma operativa cambian después que se han instalado y desinstalado capas de software, los discos se llenan, las plataformas de producción pueden implicar múltiples servidores con necesidades adicionales de establecimiento de permisos en ellos, hay cortafuegos y antivirus que pueden están presentes en producción y no haber sido considerados durante el desarrollo, los estándares de la industria al final dependen de sus implementaciones y esto hace que no todos los supuestos estándares siempre se comporten consistentemente, algunos servidores pueden requerir de pasos de configuración que los implementadores no tienen registrados en sus procedimientos, el ambiente de producción tiene una historia previa que es muy diferente de la de los ambientes de producción, la ingenuidad de algunos técnicos los lleva a veces a pensar que un cambio en la subversión de un paquete es algo trivial que debe resultar irrelevante, la burocracia administrativa de la red de destino puede marcar pautas que generan retrasos, en fin, cualquier variable ignorada o de apariencia intrascendente en una planificación puede saltar al momento de implementar lo que ya está desarrollado.
Lo triste del caso es que para los usuarios finales y las contrapartes de los desarrolladores la solución no existe si no está implementada, por muy grande que haya sido el trabajo de los constructores y por muy completa y eficiente que haya sido la fase de desarrollo.
Los componentes básicos de una aplicación moderna incluyen interacciones con el sistema operativo, el sistema de archivos, el sistema de gestión de bases de datos, el servidor de Web, el o los servicios de páginas Web dinámicas, el o los sistemas de mensajería y el uso de determinados clientes Web. Todo ello son posibles puntos que podrían generar dificultades al momento de hacer la transición de una aplicación desarrollada al ambiente de producción. Debido a lo señalado el trabajo de hacer una transición desde el ambiente de desarrollo al de producción es una fase delicada, compleja y llena de posibles puntos de fallas, por lo que tendremos que hablar más sobre ella…
viernes, 29 de noviembre de 2013
La inteligencia de las personas no garantiza los resultados
![]() |
Mejor equipos geniales que personas geniales. Los mejores resultados no los producen las personas inteligentes, sino los equipos de alto desempeño. |
Aclaremos de entrada que no queremos decir que cuando hay métodos y procedimientos los resultados sean siempre buenos o que las personas no se equivocarán. Los errores y los problemas son siempre inevitables. Lo que afirmamos es que cuando se hace el trabajo bien, dentro de procedimientos maduros, métodos definidos y mejora continua de procedimientos a partir del análisis permanente de lo que puede ser mejorado, los resultados satisfactorios tienden a ser la norma y, si los métodos y procedimientos se mejoran constantemente, los buenos resultados será cada vez más repetibles, gestionados y el desarrollo será así optimizado.
A veces se cree que las personas brillantes es lo que hay que buscar en los equipos. Esta creencia es un error que tiene sus fundamentos. Es cierto que una persona genial puede hacer veinte veces más que una promedio (No hay error ni exageración en la afirmación. Una persona bien competente puede hacer el doble o el triple de una promedio. Pero una muy competente puede producir diez o veinte veces más). Pero hay dos elementos que hay que tomar en cuenta. Uno que las virtudes de un equipo son siempre mayores a las de las personas, por lo que es mejor contar con gente que sabe trabajar con otros en equipos de alto desempeño, que descansar sobre resultados impredecibles productos de las mentes geniales.
Por otro lado, la manera de prevenir los problemas ligados a los errores humanos no es trabajando con personas que no se equivocan, sino con procedimientos a pruebas de errores que hacen evidentes las fallas y disparan las actividades que generan correctivos.
Los métodos y los procedimientos realizados por equipos integrados y bien coordinados son los que conducen las buenas experiencias. A su vez, las experiencias (buenas y malas) deben usarse para refinar los métodos. Es decir, si hay algo que falló, los constructores deben preguntarse cómo pueden evitar esa falla en el futuro. De qué manera pueden mejorarse los métodos de trabajo y los procedimientos para que los problemas analizados no se presenten o, al menos, los resultados indeseados se detecten con poco esfuerzo en forma temprana.
Cuando nos damos el tiempo para hacer este tipo de reflexión, y analizamos, concluimos y producimos mejoras a los métodos y procesos como una práctica recurrente, los buenos resultados se repiten sistemáticamente.
viernes, 22 de noviembre de 2013
Los métodos para construir
La verdad es que los hechos están allí y las buenas prácticas internacionales muestran que si se desea garantizar buenos resultados, productos del trabajo satisfactorios y conforme a especificaciones y un cumplimiento razonable de los calendarios, es importante trabajar con métodos y diseñar, mejorar y seguir procesos.
Toda buena solución desarrollada con herramientas de tecnologías de la información es siempre el producto de una serie de interacciones e iteraciones. Interacciones entre todas las personas involucradas que hacen sus aportes respectivos en cada una de las fases de proyecto e iteraciones dentro del equipo de desarrollo refinando por aproximaciones sucesivas un resultado que por definición nunca está acabado, dado que siempre es perfectible y se tiene conciencia de que puede mejorarse, en su presentación, en su facilidad de uso, en su funcionalidad, en su flexibilidad, en su adaptación al usuario, etc. Todo esto dando por descontando el cumplimiento de los requisitos que fueron planteados en las fases tempranas del proyecto.
Si las cosas son así, tiene que haber un criterio para decidir cuando la construcción está lista para ser entregada y que debe pasarse a la etapa de transición con el objeto de que, finalizada ésta, la solución construida pueda entrar en producción. Este criterio es la validación final, donde los constructores, sus contrapartes y los usuarios certifican que la solución construida está lista para transferirse al ambiente de preproducción.
Pero ocurre en el camino, que mientras se construye, e incluso durante la transición, las iteraciones continúan. Es por ello que el uso de métodos y procesos es fundamental. Métodos y procesos es la única garantía de mejoras continuas en el refinamiento sucesivo que mencionamos. Si no hay métodos, en cualquier momento, en cualquier iteración, alguno de los desarrolladores hará algo mal con consecuencias negativas ya que puede que los malos resultados no sean detectados hasta muy tarde en el tiempo y en los cronogramas.
Es por ello que los métodos y los procesos hacen diferencias, especialmente cuando la organización que los usa los revisa y mejora constantemente. Muchos constructores, inadecuadamente, se confían y se dejan llevar por la apreciación de que se tiene en un instante un buen resultado. Lamentablemente estos buenos resultados son seguidos estadísticamente, en las próximas iteraciones, por los malos, ya que la concentración en los productos y no en los métodos y procesos hace que los problemas, inconsistencias y errores, inevitables en el tiempo, no sean detectados y corregidos.
Tener personas competentes ayuda a la producción de buenos resultados, pero no sustituye la necesidad de colocar el acento en los métodos y la mejora continua basada en procedimientos y procesos como lo expondremos con más detalles en una próxima oportunidad.
viernes, 15 de noviembre de 2013
Pruebas de comunidades y seguridad
![]() |
La importancia de probar la seguridad salta a la vista, pero hay algunos detalles que conocen los Arquitectos de información de experiencia que vale la pena revisar |
Las pruebas de seguridad deben permitirnos corroborar que la solución que se construyó cumple a cabalidad las especificaciones que la fase de diseño legó a la fase de desarrollo en cuanto a los perfiles de las comunidades de usuarios que usará la solución automatizada en la que trabajamos. Cuando esto es así es posible confiar en los resultados y operar con la aplicación construida en forma segura y consistente.
Cuando el proceso de desarrollo es guiado con una Arquitectura de Información definida y bien establecida, (ver Las cinco dimensiones de la Arquitectura...) y se usan herramientas apropiadas, la funcionalidad debe poder desarrollarse con independencia de las comunidades de usuarios y la seguridad. El énfasis cuando se trabaja con la funcionalidad es que todos los casos de uso definidos se comporten según lo especificado en el diseño, por eso, salvo las pruebas que involucran la funcionalidad que está dirigida al público anónimo no identificado, es válido, en las primeras etapas de la fase de construcción, hacer las pruebas funcionales sin reparar en los permisos. Esto equivale a hacer verificaciones de resultados operando el sistema con la figura de un administrador o súper usuario al que le es permitido hacer todo tipo de cambios.
Lo que se establece durante el proceso de construcción de la seguridad es precisamente qué es lo que cada comunidad de usuarios puede hacer con cada objeto de información y esto debe poder definirse y redefinirse para cada comunidad sin afectar adicionalmente las otras dimensiones del desarrollo y las otras comunidades. Simplemente se recorre cada perfil de usuario y se establece qué puede hacer y qué no puede hacer y, de nuevo, si las herramientas de desarrollo usan criterios de Arquitectura de Información, los resultados deben cumplir las especificaciones diseñadas.
Las pruebas de seguridad deben alinearse también con los casos de uso (ver Conceptualización de la solución y casos de uso). Para cada comunidad hay que probar que puede hacer lo que está definido que puede hacer en cada caso de uso que es válido para ella. También hay que probar que no puede hacer lo que está definido que no puede hacer. Son dos tipos de pruebas que son complementarias porque se no sustituyen entre sí.
Es muy importante cuando se vayan a hacer las pruebas de comunidades y seguridad llevar un registro de cada prueba y cada resultado y dejarlo grabado como línea base debido a que es imprescindible en un desarrollo confiable que estas pruebas con cada comunidad se automaticen ya que, en ningún momento, debería haber dudas acerca de la confiabilidad con que se trabaja al usar una aplicación. Resulta imprescindible por tanto poder ejecutar las pruebas de seguridad cada vez que se cambie cualquier variable involucrada en el sistema, así se trate de un elemento aparentemente intrascendente. Esto debe convertirse en un hábito.
Un error de algunos desarrolladores nóveles es suponer que como se probó para dos comunidades y todo trabajó bien se puede extrapolar el buen esultado y suponer que todo seguirá trabajando bien con las restantes que son del mismo tipo. Esto no es necesariamente cierto y lo razonable es probar con cada comunidad de usuarios y automatizar las pruebas para que el hacerlas con todas no sea limitado por el tiempo y el trabajo que tales pruebas involucran.
viernes, 8 de noviembre de 2013
Probar la estética
Sobre el papel de la imagen y la estética ya hemos hablado en otras oportunidades (Ver por ejemplo: ¿Por qué considerar la estética?, Imagen y estética: la quinta dimensión en Arquitectura de Información, El diseño de la imagen y la estética y La imagen y la Estética deben ser paralelas).
Es para todos claro que la estética trasmite y representa la imagen institucional, pero su rol va más allá de la institucionalidad ya que según como se implemente puede hacer más usable o menos usable una aplicación. Por ejemplo, un encabezado institucional grande en la pantalla puede hacer la salida muy elegante y bonita, pero quizás quita demasiado espacio útil y obliga al usuario a desplazarse abajo y arriba para ver contenidos, enlaces o botones, dificultando con ello el uso. Todo esto aunque la funcionalidad esté correcta.
Al igual que ocurre con aspectos como la navegación, es importante que las personas que construyen la estética puedan moverse y hacer cambios con independencia de quienes implementan la funcionalidad. Esto hace el desarrollo de una solución de gestión de información más eficiente y versátil. También tiene impacto en el mantenimiento y las modificaciones que se pueden hacer más adelante para acoplar, por ejemplo, una aplicación a un cambio de imagen institucional o a una campaña circunstancial. Es muy diferente en esos casos el poder tener o no la confianza de que la tarea puede realizarse y probarse sin el concurso de los constructores de la funcionalidad, pero estando seguros de que lo que se hizo no trae implicaciones indeseadas.
Hay, por supuesto, una prueba final que debe hacerse presentado la estética a quienes deben aprobar la imagen institucional. Pero mientras se construye la aplicación hay elementos ligados a la estética que deben tomarse en cuenta: la separación de contenidos y estilos, por ejemplo.
La fase de construcción exige el respeto a la disciplina en los nombres que se dan a cada cosa. Los Arquitectos de información saben que durante la fase de diseño deben definir los campos, los objetos de información, sus códigos y sus nombres. También el uso de bases de datos requiere de una normalización de los nombres de tablas y campos. Así, los encargados profesionalmente de la estética deben saber que estilos de presentación de la información (en la práctica presente especificados en lenguaje CSS) deben ser normalizados para facilitar el trabajo de desarrollo de hoy, así como el de los cambios que vendrán mañana.
Poder atender sugerencias de cambios sin tener que temer a implicaciones que impactan la funcionalidad es una capacidad de las aplicaciones con una buena Arquitectura de información que, entre otras cosas, requiere que se tenga siempre a la mano la posibilidad de validar el funcionamiento correcto de todos los servicios después de un cambio de imagen y estética y no trabajar sólo con la presunción de inocencia de estos cambios.
viernes, 1 de noviembre de 2013
Probar la navegación
![]() |
La prueba final de la navegación debe hacerse con usuarios reales, emulando procesos reales y usando datos reales (imagen tomada de http://es.kioskea.net) |
En un sistema bien desarrollado desde el punto de vista de Arquitectura de Información la navegación y la estética agrupan características que deben poder ser desarrolladas como dimensiones, es decir, en forma independiente de la funcionalidad. ¿Qué significa esto y por qué es importante?
Significa que con toda la estructura de información desarrollada y con toda la funcionalidad implementada debe ser posible realizar cambios en la navegación o la estética de un sistema sin afectar el funcionamiento correcto de la aplicación. Los cambios en la navegación y estética deben poder ser realizados por personas diferentes a las que definen la estructura de información y la funcionalidad y el funcionamiento correcto debe poder validarse realizando pruebas automáticas, como lo mencionamos en días pasados (Ver Pruebas durante la construcción de una solución). Esto es importante para asegurar la calidad y el mantenimiento futuro de la solución.
La navegación es una capacidad que nos facilita (¡o nos dificulta!) usar un sistema. Nos permite que pasemos de una actividad a la siguiente, de una pantalla de resultados a la otra que sigue como parte del proceso. La navegación se expresa a través de distintos tipos de menús y opciones que son colocados en los diferentes lugares de la pantalla. Hemos hablado de ella en otras oportunidades (ver por ejemplo: Mucho que aprender sobre navegación, Las Áreas básicas de la salida, Los cinco menús modernos, En la Derecha, el menú de opciones complementarias).
Durante el proceso de construcción podemos darnos cuenta que algunos caminos de navegación resultan más sencillos si colocamos (o, a veces, si quitamos) opciones y enlaces. El trabajo de apreciar lo que facilita o entorpece la navegación normalmente lo hace mejor un Arquitecto de Información que un programador o un constructor sin experiencia en los problemas de navegación. De allí que el manejar la navegación con independencia de la funcionalidad facilita el trabajo tanto de unos como de otros. Permite el avance paralelo de la solución y facilita la realización de los cambios que se hacen durante la fase construcción para atender las sugerencias de los distintos involucrados en el proyecto.
Al final del camino la prueba crítica que debe pasar la navegación construida debe ser el presentarle el sistema a usuarios reales y solicitarles que usen la aplicación para hacer actividades que emulen los procesos reales usando datos reales (Ver Los datos para probar). Al hacer esto se debe observar cómo trabajan, escuchar sus observaciones y atender sus preguntas. Eso permitirá entender los esquemas naturales de navegación para esos usuarios. Una vez mas, la actividad de pruebas así realizada con los usuarios debe grabarse para incorporarla a las pruebas automatizadas.
viernes, 25 de octubre de 2013
Pruebas de estructura y funcionalidad
Pruebas de la estructura de información
Cuando la gente piensa en pruebas, generalmente piensa en las pruebas de funcionalidad. Cómo saber si la aplicación desarrollada o en desarrollo cumple o no con un determinado requisito funcional. Pero, como hemos señalado (ver Pruebas durante la construcción de una solución), la funcionalidad no es todo lo que se prueba. ¿Cómo, por ejemplo, se puede probar la estructura de información? Si los objetos de información creados, los metadatos distinguidos en ellos y las relaciones o asociaciones entre estos objetos fueron construidos correctamente, de acuerdo con lo planificado, o si hay omisiones que se pasaron por alto en el camino?
La respuesta se obtiene a través de la comparación entre lo diseñado y lo creado. La estructura de información se condensa en tablas, si se dispone de una plataforma que pueda sacar estas tablas del prototipo desarrollado, se puede comparar estas tablas del prototipo con las tablas producidas durante el diseño. De esta forma se puede saber si todo la estructura ha sido creada alineada con el diseño o, en caso contrario, cuáles son las diferencias entre lo inicialmente diseñado y lo finalmente construido.
Una vez más la comparación debe realizarse con pruebas automáticas ya que los seres humanos somos más lentos y pasamos por alto muchos detalles por lo que somos demasiado propensos a error como para realizar tareas de comparación confiables. En lugar de ello las pruebas se realizan a través de la creación de una línea base que establece de alguna forma el producto deseado y una línea de comparación que señala lo obtenido. Ambas deben entonces poder ser comparadas automáticamente con una herramienta que señale con precisión las diferencias. Sobre estas diferencias entre lo diseñado y lo construido las capacidades humanas si pueden emitir juicio para determinar si son aceptables, porque representan cambios esperados o discrepancias que no impactan el resultado operacional, si son anomalías que deben orientarnos hacia acciones correctivas o diferencias que deben ser analizadas con más detenimiento para ver si se clasifican en el primer grupo o en el segundo.
Pruebas de funcionalidad
En cuanto a la funcionalidad la mejor manera de probarla es a través de los casos de uso. Si estos fueron bien diseñados, de cada caso de uso deben derivarse uno o varios casos de prueba. Cada caso de prueba establece un comportamiento funcional que crea un resultado.
La primera vez la prueba del prototipo se realiza en forma manual y se compara lo obtenido con lo que se esperaba por diseño. Independientemente de lo acertado o no del resultado, este se graba en uno o varios archivos y se establece así una línea base que sirve para mejorar o para verificar el funcionamiento. A partir de este punto de inicio, las pruebas de cada caso de uso deben ser realizadas contra la línea base generada. Si el resultado inicial no estaba bien y el nuevo resultado si lo está, la línea base debe cambiarse. Si el resultado generado previamente si estaba bien la línea base sirve como criterio de verificación de buen funcionamiento de cada nuevo resultado obtenido.
Un conjunto de pruebas confiable se construye de esta manera. Así se realizan decenas, centenares o incluso miles de pruebas automáticas y se conoce cuando y en qué proporción el sistema está mejorando, convergiendo hacia una aplicación correcta y sin errores apreciables. Si los casos de uso están bien diseñados, el prototipo probado iterativamente convergerá adecuadamente. Si los caso de uso tienen insuficiencias, los casos de prueba las tendrán y la aplicación no será confiable.
viernes, 18 de octubre de 2013
Pruebas durante la construcción de una solución
![]() |
Cuando se trabaja desarrollando servicios que operan con tecnologías de la información siempre hay que probar todo lo que se desarrolla. Además hay que hacerlo múltiples veces. La caricatura es uno de esos chistes que circulan por Internet: "Razones para dejar de probar" (tomado de http://cartoontester.blogspot.com) |
Durante la construcción deben probarse la estructura de información, la funcionalidad, la navegación, la seguridad e incluso la estética. Estas pruebas toman tiempo y consumen recursos y por eso deben ser consideradas durante la planificación del proyecto. Cuando no son incluidas en la planeación es común que luego no se realizan cabalmente porque no se dispone de recursos o tiempo suficiente para hacerlas. Esto es uno de los errores más frecuentes y perniciosos de los desarrollos que no son realizados profesionalmente.
¿Con que datos se prueba? Como hemos señalado anteriormente (ver Los datos para probar), los datos que se usan para hacer pruebas deben producirse durante la fase de diseño. No debe trabajarse con lo que se le ocurre, sin mayores criterios, a las personas que construyen la solución. Debe garantizarse que todos los casos de uso (ver Conceptualización de una solución y casos de uso) se cumplen y que todos los requisitos funcionales son satisfechos. Para ello quienes mejor conocen estas exigencias previas a la fase de desarrollo deben establecer los datos de prueba. Si así se hace, la aplicación resultará en un producto confiable.
Durante todo el desarrollo, e incluso, más allá, durante las fases de implementación y producción siempre ocurren cambios o eventualidades en las condiciones en que se trabajan que requieren volver a probar. Si las pruebas se realizan manualmente, éstas tomarán mucho tiempo y serán poco confiables. Por esta razón en el desarrollo profesional siempre se incluye los recursos y el tiempo para establecer y realizar pruebas automáticas. Un computador puede hacer centenares de pruebas en unas horas, o en unos minutos, una persona no. Un computador puede distinguir con precisión un cambio en un elemento de una salida que una persona puede pasar por alto. Por eso las pruebas manuales no son recomendables: resultan incompletas, inexactas y sus resultados son finalmente aleatorios.
Obviamente no es lo automático en si mismo lo que da calidad a las pruebas. Las pruebas deben ser bien diseñadas, implementadas y realizadas. Cuando así se hace, es cuando cumplen con su función y garantizan la calidad. De otra forma serán poco más que un saludo a la bandera.
Ante un cambio de variable, una nueva característica, un cambio en uno de los elementos de la infraestructura, la mejor decisión es volver a probar todo. Incluso ante un cambio de apariencia completamente inofensiva, el texto de un mensaje, el cambio de posición de un elemento de la pantalla, es conveniente volver a probar. Si las pruebas son algo manual este desiderátum es irrealizable. Si las pruebas están diseñadas, establecidas para su ejecución automática, siempre entonadas y listas para realizarse, se pueden hacer muchas veces, se harán sin dificultad cada vez que hay un cambio y, en muchos casos, pueden hacerse como una actividad de fondo sin impactar las actividades principales, visibles frontalmente.
viernes, 11 de octubre de 2013
Las actividades de la fase de construcción
![]() |
La fase de construcción bien realizada hace entrar en realidad diseños complejos. En la ejecución más que en la planificación está la debilidad de muchos proyectos... |
El desarrollo de la solución es la parte de su ciclo de vida donde ésa se vuelve palpable (Ver La fase de desarrollo o Construcción). No es un proceso lineal, sino un proceso iterativo a través de ciclos que permiten avanzar hacia la concreción de la solución que se desea. El equipo de trabajo que realiza el modelado de la solución no necesariamente es el mismo que el que realiza la construcción. Si este es el caso, es conveniente que haya una comunicación fluida entre ambos equipos.
Una herramienta de desarrollo de prototipos con Arquitecturas de Información definidas permite generar un prototipo a partir de especificaciones del modelo de información: estructura de información, funcionalidad, navegación, comunidades y seguridad, imagen y estética. A medida que la construcción avanza, todas estas actividades pueden realizarse en paralelo. Pero inicialmente hay un orden para el proceso de desarrollo.
Lo primero que debe configurarse y definirse es la estructura de información: Los objetos de información que intervendrán, todos sus campos (metadatos) y sus propiedades. Con este trabajo realizado pueden definirse las asociaciones que existen en los distintos objetos de información, lo cual marca mucha de las interacciones que se realizarán automáticamente en la solución (Ver Estructuras de información. Qué son y para qué se usan).
La definición de la estructura de información permite definir la funcionalidad, las restantes interacciones que debe haber entre los objetos de información (Ver Funcionalidad: La segunda dimensión). Particularmente importantes son las definiciones de las entradas de datos, ya que al habilitarlas podemos comenzar a usar el prototipo haciendo pruebas al diseño, pero esta vez como aplicación ejecutable. Es probable que las entradas y salidas estándares creadas por un generador de aplicaciones moderno a partir de la estructuras de información definidas resulten suficientes inicialmente. Si éste no es el caso, puede considerarse una pequeña variación a partir de ellas.
Con un embrión formado por una estructura de información, un esquema preliminar de entrada y salida que permite introducir y visualizar datos reales y por tanto probar con la data que suministraron los diseñadores de la solución es un paso gigante. Aquí pueden comenzar a detectarse omisiones del diseño, o la incompletitud de sus datos de prueba. El camino a seguir consiste en refinar sucesivamente lo que serán las entradas y salidas principales del sistema asegurándose que la data disponible es suficiente para activar todos los casos de la solución.
Lo interesante para un Gerente de información es entender que la combinación Estructura de información – Funcionalidad puede definir un primer esqueleto de la aplicación que se desarrollará y por tanto puede ser nuestro primer prototipo funcional. Esta aplicación embrionaria no da la idea integral de la solución que se construirá, pero tiene la virtud de que puede usarse como una versión ejecutable que permite cargar y visualizar datos reales permitiendo que los involucrados (más allá del equipo de desarrollo) puedan palpar más dinámicamente las bases estructurales y funcionales de la futura solución.
A partir del prototipo funcional el camino se abre en un trabajo que debe abarcar las cinco dimensiones de la Arquitectura de información ( Ver Las 5 dimensiones...), añadiendo el trabajo de navegación, la definición de los usuarios, la seguridad, la imagen y la estética. Cada dimensión puede trabajarse con independencia, incluso por personas diferentes y, si las herramientas y los procedimientos son adecuados, el producto de trabajo de cada participante de la construcción debe sumarse en un servidor que permitirá que el equipo involucrado en el proyecto y, en particular el líder del desarrollo, pueda hacer seguimiento del estado actual de la construcción.
viernes, 4 de octubre de 2013
La Fase de Desarrollo o Construcción
![]() |
Construcción del estadium olímpico de Londres: La construcción es la fase en la que entra en la realidad lo que se ha diseñado. ¡Siempre hay nuevas decisiones para tomar!. |
El ciclo de vida de un proyecto de gestión de información pasa, como hemos señalado, a través de cinco etapas: Identificación, Diseño, Desarrollo, Implementación y Producción (Ver El ciclo de vida de una solución de gestión de información y Desarrollo, Implementación y Producción en un proyecto con Arquitectura de Información).
La fase de desarrollo suele ser percibida como la que permite que todo lo que se ha diseñado entre en la realidad. Es importante que sea una continuación del modelado, que los constructores de la solución partan y respeten el diseño realizado en la fase precedente. Asimismo, también es recomendable una cierta flexibilidad para implementar cambios en el modelo, porque es natural que en esta fase se detecten aspectos que fueron omitidos en el diseño o que aporten nuevas ideas que nacen desde elementos técnicos del esfuerzo de construcción.
Las nuevas propuestas que surgen en el equipo de desarrollo deben ser consideradas y evaluadas. Hay que estar pendientes de su impacto en los calendarios y en los recursos requeridos (Ver Los cronogramas después del modelado) para mantener a todos los involucrados alineados en el proceso de construcción y el proyecto bajo control. Siempre hay riesgos que hay que gestionar con planes de mitigación de eventualidades (Ver Las fechas de un proyecto bien formulado son probabilísticas), pero un rigidez excesiva respecto a la planificación suele ser mas perjudicial que beneficiosa para el proyecto.
Como el producto de la fase de diseño, el modelo de información que la aplicación debe implementar, es en definitiva una abstracción, mientras que el producto de la fase de construcción es una solución que debe funcionar en el mundo real, es muy importante que la estrategia de desarrollo contemple una vía rápida para que los usuarios y el equipo de proyecto puedan visualizar un prototipo funcional. La primera versión de este prototipo puede carecer de aspectos cruciales para la implementación definitiva, pero el mérito es que concreta la solución pretendida en algo que se puede ver y casi operar y por esta razón, incluso cuando se quiera hacer un desarrollo de software a la medida, en proyectos de cierta envergadura suele ser conveniente considerar el uso de alguna herramienta que permita una construcción rápida de un prototipo funcional.
Este prototipo funcional permitirá a algunos usuarios claves, de pensamiento más concreto y sin formación tecnológica, pero con un gran conocimiento de los procesos institucionales, aumentar su participación en el proyecto. Pero además de concretizar las conversaciones de los involucrados, disponer de un prototipo también tiene la virtud de establecer un norte para los desarrolladores que van a concretar la aplicación final. Con el prototipo hay dos maneras básicas de acometer el desarrollo. Una, refinarlo progresivamente, usando la herramienta de Arquitectura de información usada para hacer realidad el primer prototipo y eventualmente programar módulos complementarios requeridos. Dos, usar el prototipo como referencia concreta y desarrollar la aplicación como software a la medida.
Como hemos mencionado en distintas oportunidades, una aplicación hecha con Arquitectura de información tiene cinco dimensiones sobre las que hay que trabajar: estructura, funcionalidad, navegación, comunidades y seguridad e imagen y estética (Ver Las 5 dimensiones de la Arquitectura de Información ). La fase de desarrollo, realizada con herramientas modernas, permite un trabajo paralelo en estas dimensiones.
En un próximo post nos detendremos un poco más en las actividades que deben realizarse en la fase de construcción de soluciones desarrolladas con criterios de Arquitectura de Información..
viernes, 27 de septiembre de 2013
Las fechas de un proyecto bien formulado son probabilísticas
![]() |
En un proyecto sofisticado siempre hay condiciones que requieren reevaluar los cronogramas, los riesgos y los planes de mitigación |
Es idílico pensar que un proyecto grande y sofisticado puede desarrollarse sin contratiempos o consideraciones de riesgos. Cuando la NASA desarrolla una misión espacial, sabe que la fecha de lanzamiento no es precisa, sino que es un hito que debe ocurrir después de otros y que debe manejarse como un período cuya precisión se plantea en términos probabilísticos. Mientras más cercano se está de un hito, es más fácil cerrar los intervalos de tiempo, pero ni siquiera al acercarse al final de una etapa las consideraciones son absolutamente predecibles. Incluso el día anterior al lanzamiento hay variables que pueden no estar determinadas. Cuando ya todo está desarrollado, probado y preparado, lo que se sabe es que la partida de la nave será al día siguiente, con alta probabilidad. Un fenómeno de condiciones meteorológicas inadecuadas o un inconveniente de salud de una de las personas críticas, por sólo colocar un par de ejemplos, podría llevar a una suspensión temporal del despegue y exigir un nuevo retraso.
Si las fechas de un proyecto son naturalmente probabilísticas, no expresa sapiencia sino inexperiencia, ingenuidad o ignorancia el pensar o intentar que con puro voluntarismo se pueden pasar por alto los riesgos asociados a la construcción de una solución y cumplir así, llueva, truene o relampaguee, un cronograma que erróneamente se ha planteado en forma determinística.
Con el tiempo, uno va acumulando experiencias sobre buenas y malas prácticas. Hemos visto gerentes ignorar los riegos de saltarse actividades necesarias pretendiendo ahorrar tiempo y recursos, con la triste consecuencia de obtener el efecto contrario, alargar los calendarios y los gastos cuando se presentan las fallas como consecuencia de omisiones y malas decisiones. Alternativamente los tiempos hay que gestionarlos. Administrar etapas y cronogramas de proyectos implica, entre otras actividades, un análisis permanente de determinación de riesgos. Las buenas prácticas de gestión de la calidad recomiendan considerar y reconsiderar los eventuales planes de mitigación, así como explorar alternativas de mejoras que surgen en el camino y que por alguna razón no fueron consideradas inicialmente.
Cuando hay análisis de gestión de conocimiento se pueden descubrir nuevos aspectos que se deben tomar en cuenta en una solución y esto puede ocurrir en cualquier fase del proceso. Ignorar estos factores no es la mejor práctica. Incluir permanentemente nuevos elementos tampoco lo es. El equilibrio está en un punto intermedio que los buenos gerentes deben medir.
Celebrar los cumpleaños de los hijos en fecha precisas es posible porque las acciones están tipificadas, las conocemos, las prevemos y las implementamos. Pero estos son procesos triviales. Un buen gerente conversa las situaciones con los desarrolladores, registra, mide, analiza y toma decisiones. No administra todos los procesos como si sólo se tratara de celebras los cumpleaños de los hijos.
viernes, 20 de septiembre de 2013
Soluciones de gestión basadas en reglas de negocios
![]() |
Desarrollar sistemas basados en reglas de negocios requiere de Arquitectos de Información de gran experiencia |
Una solución basada en reglas de negocio puede implementarse desarrollando un software a la medida institucional, pero una mejor práctica muchas veces será el uso de alguna plataforma que permita gestionar la información en forma tal que la lectura de las reglas de negocio permita cambiar los flujos de trabajo.
¿Cuáles son los componentes que intervienen?
Un repositorio de reglas de negocio que normalmente tiene la capacidad de almacenar no sólo las reglas actuales sino la historia de las reglas que tuvieron vigencia en ciertos períodos.
Un mecanismo de captura de políticas y reglas de negocio, expresadas en una manera comprensible para las personas involucradas. Este mecanismo debe permitir la inserción, modificación, consulta y eliminación de reglas.
Un mecanismo dinámico de interpretación de estas reglas, capaz de cambiar la funcionalidad y el curso de las acciones según los valores contenidos en las reglas.
La integración de estos tres componentes permite realizar cambios en los procesos de negocios, incluso cambios estructurales, importantes, en forma rápida y fácil, sin que esto implique el desarrollo de software o de bases de datos, salvo los generados en forma automática por el propio sistema.
La posibilidad de hacer cambios en los procesos sin necesidad de desarrollar software constituye una oportunidad de diferenciación institucional ya que proporciona una alta capacidad de respuesta. También permite realizar auditorías basadas en los períodos de vigencias de las reglas.
Más que desarrolladores de software, este tipo de sistemas lo que requiere es de Arquitectos de información capaces de dirigir procesos de abstracción de la lógica implícita en los procesos de negocios institucionales trabajando en forma directa con el personal involucrado. Una vez abstraída, esta lógica plasmada en reglas puede usarse para un desarrollo de software convencional, pero su empleo en un sistema basado en reglas de negocio proporciona más agilidad y eficiencia ya que simplifica el proceso de introducir nuevos productos y servicios, así como cambios en los ya existentes.
Una vez implementada la solución, el personal de las unidades de negocio puede participar, dirigir, implementar y probar directamente los cambios, ya que no se requiere de programación.
Como consecuencia, las aplicaciones basadas en reglas de negocios se implementan en forma más rápida y resultan de más fácil mantenimiento por lo que ahorran costos en forma significativa. No requieren los delicados, largos y onerosos procesos de desarrollo y prueba de software.
Etiquetas:
Fase de diseño o modelado en AI,
reglas de negocios
viernes, 13 de septiembre de 2013
Las reglas de negocio como estrategia de desarrollo
La aproximación “tradicional” en las décadas pasadas estuvo basada en el desarrollo de software a la medida, construido para las necesidades institucionales. La estrategia funcionó, pero hoy día luce como un método insuficientemente dinámico para ser exitoso. Por un lado, suele ocurrir que los cambios en el entorno van mucho más rápido que el desarrollo de software institucional. Por otro lado, cuando se generalizan el uso de herramientas, métodos y prácticas hay una necesidad de nuevas estrategias para toda organización que quiere distinguirse en su sector.
Una buena solución programada no es fácil de construir. Tiene, como hemos visto, un ciclo de desarrollo (ver El ciclo de vida de una solución de gestión de información) que pasa por varias fases. Dentro de estas fáses, el análisis y el modelado de la información es algo ineludible. Sería un sinsentido intentar e incluso pensar en el desarrollo de una solución sin un buen análisis y modelado. Sería una navegación sin brújula que no llevaría a ninguna parte y que sólo ocasionaría gastos. El problema es que después de este trabajo en el dominio del problema y de la información, típicamente hay que implementar lo que la solución implica en el manejo de los datos y, por mucho que las bases de datos son herramientas consolidadas que ayudan a diseñar, modelar y construir aplicaciones, ellas trabajan en el dominpo de los datos y de allí que los procesos de desarrollo de soluciones son típicamente sofisticados y lentos.
Un proceso de información es un cambio que ocurre en el dominio de la información y de un modo natural implica muchos, quizá decenas o centenas de procesos de gestión de datos. Una relación de información conlleva, implícitas, numerosas relaciones de datos y un proceso de negocios, una gestión documental o transacción de flujo de trabajo simple, requiere de implementar numerosas relaciones de información. De allí la lentitud que es característica del desarrollo de las soluciones, la alta tasa de fallas y la gran cantidad de proyectos de tecnologías que se quedan a medio camino y que se cierran sin presentar resultados productivos.
Por eso es de gran ayuda si se logra automatizar el proceso mismo de modelado y construcción del manejo de datos de las soluciones de gestión de información. Esta es una estrategia que viene siendo usada por generadores de aplicaciones que tienen éxito en ciertos dominios verticales.
La formulación explícita de reglas de negocio y el desarrollo de sistemas y soluciones basados en ellas luce como una estrategia claramente diferenciadora, ágil y dinámica. Se trata analizar cada problema de negocio hasta abstraer el conocimiento que subyace y expresarlo en términos de reglas de negocio (ver Formulación de Reglas de negocios). Si luego se logra crear una capacidad de implementar soluciones directamente a partir de estas reglas el camino se simplifica y la velocidad de implementación aumenta. No es un camino trivial, porque es muy intensivo en conocimiento. Pero es altamente productivo, un auténtico reto para Arquitectos de información, gerentes de negocios, de tecnologías y de información.
Etiquetas:
Fase de diseño o modelado en AI,
reglas de negocios
viernes, 6 de septiembre de 2013
Aprender a generalizar: Los valores constantes en las reglas de negocio
![]() |
Los Arquitectos de Información aprenden a generalizar los valores constantes en la formulación de reglas de negocio |
Valores constantes son números, fechas, cantidades, roles, que resultan puntualmente específicos y que, en el trabajo que nos ocupamos, suenan como valores que permanecen inalterables en el tiempo.
Precisamente lo que ocurres es que, como lo sabe la gente de mucha experiencia, estos valores constantes en muchos casos dejan de serlo. Debido a ello es conveniente que encontremos maneras en que estos valores constantes puedan ser formulados en forma de abstracción simple, por ejemplo, hablando del número máximo, número mínimo, monto crítico, monto máximo de otorgamiento, monto mínimo de transacción, fecha de caducidad de la oferta, período de vigencia, etc. Este tipo de formulación normalmente aumenta la vida del enunciado que le damos a la regla de negocio. Y sólo requiere algunas definiciones adicionales.
Por ejemplo, si decimos "el precio de un grupo de ítems es de un 20 % por encima del costo", la regla queda atada al valor 20%. Si decimos "el precio está definido como el costo multiplicado por el porcentaje de venta establecida en la temporada", estamos en presencia de una regla que puede mantener su vigencia durante varias temporadas, con varios valores de porcentajes definidos para ellas. Por supuesto, nada es gratis en la vida, el cambio requiere que nos demos el trabajo adicional de definir los porcentajes en cuestión para cada temporada. Pero esto es sólo un valor en un sitio establecido, no una formulación de una regla de negocio.
Si nos referimos a “los recaudos para el crédito menor de cinco millones”, estamos en presencia de una formulación de una regla donde la categoría clasificatoria (el crédito menor de cinco millones) queda atada, innecesariamente, a un valor constante. En cambio, si alternativamente formulamos: “los recaudos para el crédito simple son estos”, estamos usando un tipo de enunciado (el crédito simple) que seguramente será más duradero, con la obligación, eso sí, de apuntar en algún lado de algún documento, que el crédito simple es un crédito inferior a los cinco millones.
Con la práctica los Arquitectos de información aprenden de esta forma a redactar reglas de negocio simples, entendibles y con el nivel de abstracción adecuado para que sean más duraderas. Lo interesante es que estas reglas de negocio forman así un lenguaje común que permite al jefe y a los colaboradores, a los diseñadores de modelos y a los constructores, conversar y entenderse en las distintas fases del desarrollo de una solución de gestión de información.
Etiquetas:
Fase de diseño o modelado en AI,
reglas de negocios
viernes, 30 de agosto de 2013
Formulación de “Reglas de negocio”
En primer lugar hay que aclarar es el uso de la palabra negocio. La palabra negocio en español tiene varios significados. Aquí la usamos en el primero de estos significados reseñado por el diccionario de la Real Academia de la Lengua Española. “Ocupación, quehacer o trabajo”. Por tanto una regla de negocio es, simplemente, un comportamiento general que se da en la información que manejamos en aquello de lo que nos ocupamos (No debe confundirse negocio con ocupaciones lucrativas, una acepción válida de la palabra en español, pero fuera de lugar en este contexto en la Arquitectura de Información).
Identificar una regla de negocio es descubrir una propiedad o comportamiento que tiene la gestión de información que realizamos.
Una regla de negocio, puede determinar cuándo una transacción puede o no realizarse. Por ejemplo: para que un trámite sea válido en una institución, es común que deben estar presentes varios documentos de soporte que se consideran obligatorios.
Una regla de negocio puede ser un refinamiento particular de una regla de negocio previa, más general. Por ejemplo, podemos decir que un documento está vigente cuando su fecha de caducidad es posterior a la fecha actual. Combinando los dos ejemplos anteriores: para realizar un cierto tipo de trámite requerimos que el otorgante (un rol) revise que estén presentes todos los documentos de una cierta lista de documentos obligatorios para ese tipo de trámites, pero validando además, que estos documentos estén vigentes.
Notemos que las reglas de negocio no son propiedades de una única formulación. Es decir, en una situación dada, puede haber varias declaraciones válidas para una misma regla de negocio. También puede haber reglas de negocio enunciadas en forma más simple o más compleja, más general o más particular. Debido a ello, la recomendación es que Arquitectos de información y gerentes formulen sus reglas en forma relativamente simple, limpia, es decir, lo más entendible posible por las otras personas.
Como solemos muchas veces recomendar, es bueno que nuestros lectores caigan en cuenta que las reglas de negocio son formulaciones que simplemente ayudan a entender mejor lo que hacemos con la información y son por tanto parte de la solución, independientemente de herramientas y tecnologías con que implementemos a ésta. Invertir tiempo en definir reglas de negocios no nos dice cómo construir una solución, pero nos aclara a nosotros mismos el qué es lo que hacemos o queremos hacer.
viernes, 23 de agosto de 2013
Los cronogramas después del modelado
Cómo hemos visto en otras oportunidades (ver por ejemplo El ciclo de vida... y Desarrollo, Implementación y Producción...), toda nueva solución recorre un camino signado por distintas fases: definición, diseño, desarrollo, implantación y producción.
En la fase de Definición se conceptualiza inicialmente el problema de información, en la fase de Diseño se trabaja con los detalles del modelo de información que se requiere, en la fase de Desarrollo se realiza la construcción del prototipo inicial de la solución, siguiendo las pautas que marca la fase de diseño y en la de Implementación se realiza la transición de la solución desde el equipo de desarrollo hacia el equipo que se encargará de él en la fase de Producción.
Si el problema no es trivial, si no se trata de un proyecto para seguir haciendo más de lo mismo y por tanto dejando todo sin mayores cambios, lo natural es que en el proceso iterativo de la fase de diseño o modelado se obtenga una mayor comprensión del problema y la solución ya que sólo después de todas sus actividades se logra una definición completa del alcance de un proyecto no elemental. Desde que es concebido hasta que se coloca en producción cada detalle de la solución debe ser sometida a pruebas de concepto de Arquitectura de Información para asegurar la calidad en su definición y/o implementación y este tipo de ajustes son naturales y recomendables, ya que mejoran el conocimiento incluido y la eficiencia del modelo de información a implementar.
Lo anterior significa que cualquier cronograma que se hubiese hecho al inicio del proyecto, antes del diseño detallado, es un cronograma realizado en un momento en el que el tamaño de la solución no podía estar bien definido precisamente por el desconocimiento de todos los elementos que nacen del análisis detallado de la información y la especificación del modelo de gestión. Las ideas iniciales son siempre demasiado bastas como para hacer estimaciones serias. Así como es poco confiable un médico que hace sus estimaciones definitivas antes de la biopsia necesaria para caracterizar un aparente tumor, así es poco confiable el profesional de la información que estima los recursos en forma definitiva y que pretende no hacer cambios en sus ideas después de caracterizar los detalles del problema y la solución.
Siempre que se trabaja con seriedad, los detalles de un buen análisis nos sugerirán una solución más larga o más corta, resuelta mejor con un procedimiento o con otro y por eso los cronogramas de un proyecto bien realizado deben ajustarse después del diseño detallado. No es impecabilidad sino inflexibilidad y tozudez el ligar el éxito al cumplimiento de lo que se creía cuando no se tenían los detalles. Sería como el médico que se empeña en trabajar con la idea presumida inicialmente de un mal benigno después que se encontró, en el análisis, que el aparente tumor de su paciente era un linfoma.
Si el proyecto no es pequeño y trivial, si es de mediano tamaño y no se trata de un proyecto que deja todos los procesos más o menos iguales, sino de una auténtica mejora, la sapiencia de la experiencia profesional comienza a brillar en el modelado, ya el que sabe sólo afirma categóricamente después que conoce.
viernes, 16 de agosto de 2013
¿A quién le notificamos los cambios?
Lo primero en que debemos hacernos conscientes es que los sistemas de información modernos notifican en forma sofisticada. Una premisa elemental es que todos los usuarios tienen, al menos, una dirección de correo electrónico y que, a través de ella, debe ser participado de los cambios que ocurren en la información de los sistemas y que tienen que ver con ellos.
Las experiencia de compra a través de la red, por ejemplo, nos muestra que al menos los cambios básicos, que el sistema reconoce que hicimos una orden, que nuestra orden fue despachada y que lo que ordenamos se considera entregado se nos informa por defecto en un sistema bien comportado. A partir de allí podemos enterarnos de estados intermedios de nuestra orden, por ejemplo, que lo que ordenamos está en tránsito entre un punto A y un punto B. Así funciona un sistema moderno.
Notemos entonces de nuevo algunos aspectos de Arquitectura de información de los que hemos hablado: la información está constituida por objetos de información (ver Estructuras de información) y la dinámica de la información (ver Dinámicas de información) se traduce en que estos objetos cambian de estados (ver Transiciones de estado). De lo que se trata entonces es que un sistema moderno, sofisticado, debe informar acerca de las transiciones de estado a los usuarios involucrados (ver Diseño de notificaciones...). Si ahora tomamos la perspectiva del que diseña o del que construye una aplicación moderna debemos hacernos la pregunta de ¿A quiénes notificamos?
La respuesta también es sofisticada y tiene sus aristas. Cada estado definido dentro de un objeto de información de un sistema es un punto de llegada y un punto de partida. Los cambios son transiciones. Esas transiciones tienen que estar asociadas a comunidades de usuarios y lo normal (y el punto de partida por defecto) es informar en la ejecución de cada transición a todas las comunidades de usuarios asociadas a ella. Pero hay dinámicas de construcción de procesos dentro de estas dinámicas de producción (¡que sofisticación!): cuando estamos definiendo los mensajes a quienes debemos notificar es a los usuarios que participan en esta tarea, cuando creemos que los mensajes están listos debemos notificar a los validadores de los procesos, en principio, personas diferentes. Y cuando ya el proceso está definido, los mensajes deben llegar a las personas miembros de las comunidades involucradas en la transición misma (y no a los constructores y validadores de procesos).
La observación interesante es que todo esto es Arquitectura de información. Algo que no es software ni ingeniería sino diseño de procesos de información, de sistemas de información sofisticados, de esos que ahora podemos hacer y que hacemos y que socialmente marcan nuestra cotidianeidad de forma diferente. Los gerentes de información deben conocer la necesidad de este trabajo de Arquitectura de información en la fase de diseño de cualquier sistema moderno, independientemente de las herramientas de gestión de conocimiento, de información, de documentos o de software con la que vayan luego a construir sus sistemas.
viernes, 9 de agosto de 2013
Diseño de Notificaciones sobre las transiciones de estado
![]() |
Las notificaciones acerca de los cambios de estado deben ser realizadas como parte de un buen proceso de diseño de una buena solución |
Como hemos visto un estado es siempre, por definición, una propiedad de un objeto de información que es importante por alguna razón y por ello nos interesa no solamente conocer cuál es su valor, sino su historia de cambios. Probablemente quién hizo cado uno de los cambios previos y cuándo lo hizo. Estos cambios de valores sobre un metadato crítico lo llamamos transición de estado.
Cuando ocurre una transición de estado, por ejemplo, cuando un trámite es aprobado (¡o reprobado!), normalmente hay acciones que hay que realizar dentro de un sistema. Pero muy típicamente hay que avisarles a ciertos usuarios acerca del cambio sucedido, para que estén en cuenta del mismo, o para que hagan algo.
El mecanismo universal que normalmente se usa para este tipo de avisos es el correo electrónico, si bien es común en algunos casos que los usuarios reciban en forma adicional un mensaje de texto vía teléfono celular.
Lo anterior tiene implicaciones para el trabajo de deben realizar los Arquitectos de Información en la fase de diseño de un sistema. Por supuesto, deben caracterizar los objetos de información con todos sus campos o metadatos. Entre ellos, deben identificar cuáles son estados (campos en los cuales interesan no sólo sus valores sino su historia). Deben definir los valores posibles que pueden tomar estos campos (el lenguaje controlado) que se usará y las transiciones posibles, a que valores se puede ir desde cada valor previo del estado.
Además deben definir las comunidades (grupos de usuarios) que pueden cambiar estos valores y en ocasiones, que pueden asignar ciertos específicos valores, por ejemplo, aprobar, reprobar o delegar la aprobación.
Finalmente, los Arquitectos de información deben trabajar en las notificaciones: Los avisos de los cambios. Lo más típico es que cada estado tenga un conjunto de usuarios que lo escuchan y un conjunto de usuarios que pueden hacer los cambios. A ambos conjuntos hay que enviarles las notificaciones. Estas deben tener un encabezado, un conjunto de destinatarios, un cuerpo y un pie. Estos valores deben ser especificados en el diseño de manera que los constructores sepan exactamente lo que deben hacer. El diseño de las notificaciones ante las transiciones de estado es, así pues, un aspecto más que debe completarse en la ejecución un buen procedimiento de diseño de una buena solución.
Suscribirse a:
Entradas (Atom)