Imagen de: Hargreaves, M, Picasa Web Albums |
Los anti patrones representan herramientas útiles para aplicar las buenas prácticas de programación, pues estos describen "lo que no debe hacerse". En este artículo se describen las características asociadas al anti patrón, tipo de anti patrón, los problemas que este ocasiona y la solución.
El antipatron de Base de datos como comunicador de procesos
El antipatron se presenta usualmente en situaciones en las cuales cierta información necesita ser procesada a través de un flujo de procesos (Workflow), implicando una serie de aplicaciones o procesos distintos. La solución implementada (que es el antipatron) consiste en una tabla con datos y columnas de estatus, cada proceso esta diseñado para transferir los datos de un estado a otro. Por ejemplo, el proceso 1 crea un registro con el estatus "Nuevo", el proceso 2 consulta los registros en estatus "Nuevo" y actualiza el estatus a "En Proceso", el proceso 3 actualiza el estatus a "Completado".
Como resultado, existen un número de procesos e inclusive distintas aplicaciones consultando la misma base de datos, ejecutando instrucciones SELECT sobre los registros que se encuentren en cierto estatus, por ejemplo SELECT * FROM ORDENES_COMPRA WHERE ESTATUS = 'En Proceso'.
Problemas asociados con el antipatron
Soluciones
La solución es usar las herramientas apropiadas, por ejemplo, es más apropiado utilizar sistemas de mensajería para representar un flujo de trabajo, evitando las constantes consultas, mayor eficiencia en la entrega de mensajes, sin necesidad de tener que eliminar los mensajes completados.
¿Y Que opina usted?
Que opina usted del anti patrón?, ¿lo ha encontrado alguna vez?, ¿Que alternativas consideraría? ¿Que le diría a sus programadores para que no cometieran este error?.
Le invitamos a participar en el foro de discusión del blog de “La Oficina de Proyectos de Informática” (http://www.pmoinformatica.com) y a suscribirse al blog por los distintos canales, incluyendo lista de correo electrónico, al Twitter @PMOInformatica, a nuestra página de Facebook (haciendo click en el botón "Me gusta") o al feed RSS.
<< Artículo anterior: entrada de datos inadecuada
Acerca de artículos anteriores de esta serie
¿Interesado en libros sobre desarrollo de software?
Novedades Amazon
Gestión de desarrollo de software
>> Errores comunes en el desarrollo de software: Entrada de datos manejada inadecuadamente (Input Kludge)
>> Errores comunes en el desarrollo de Software: El Botón Mágico
>> Errores comunes en el desarrollo de Software: El Objeto Todopoderoso
>>10 actividades críticas a incluir en todo plan de desarrollo de un software
>> Lo urgente y lo importante: tareas que no deben delegarse
>> Lo urgente y lo importante: 9 recomendaciones para una delegación efectiva
>> Lo urgente y lo importante (2da Parte): Las 10 tareas rutinarias de un Gerente de Proyectos
>> Lo Urgente y lo importante en la Gestión de Proyectos
>> Gestión de Proyectos: 5 tareas clave para dirigir la fase de ejecución
>> 5 preguntas y respuestas sobre la identificación de riesgos
>> Como hacer el seguimiento de los riesgos en proyectos
>> Plantilla para la Gestión de Riesgos en proyectos: Actualización Octubre 2012
>> Plantilla para documentar Lecciones Aprendidas
>> Gestión de Proyectos PMI y el Desarrollo Ágil: ¿Que tienen en común?
>> Las reuniones de trabajo: más productividad, menos reuniones
>> El patrocinador (Sponsor) del proyecto: Rol que debe asumir y lo que no debe hacer
>> Como lidiar con implicados (stakeholders) problemáticos
>> Acciones preventivas para evitar retraso y retrabajo en proyectos de tecnología de información (TI)
El antipatron se presenta usualmente en situaciones en las cuales cierta información necesita ser procesada a través de un flujo de procesos (Workflow), implicando una serie de aplicaciones o procesos distintos. La solución implementada (que es el antipatron) consiste en una tabla con datos y columnas de estatus, cada proceso esta diseñado para transferir los datos de un estado a otro. Por ejemplo, el proceso 1 crea un registro con el estatus "Nuevo", el proceso 2 consulta los registros en estatus "Nuevo" y actualiza el estatus a "En Proceso", el proceso 3 actualiza el estatus a "Completado".
Como resultado, existen un número de procesos e inclusive distintas aplicaciones consultando la misma base de datos, ejecutando instrucciones SELECT sobre los registros que se encuentren en cierto estatus, por ejemplo SELECT * FROM ORDENES_COMPRA WHERE ESTATUS = 'En Proceso'.
Problemas asociados con el antipatron
- La base de datos es consultada constantemente, pudiendo ocasionar que se alcancen sus limites (ocasionando que deje de funcionar), o largos tiempos de ejecución para ejecutar todo los procesos.
- Necesitan hacerse todas las operaciones de base de datos sobre las tablas, es decir INSERT, UPDATES y SELECT. El consultar constantemente la base de datos obliga a crear indices, sin embargo, esto disminuye la velocidad de las inserciones.
- Los bloqueos (Locks) se convierten en un problema mayor.
- Se necesita depurar la tabla periódicamente de los registros que han culminado el proceso, sino, continuara creciendo hasta ocasionar problemas operativos.
- En general, el compartir bases de datos entre aplicaciones o servicios es una mala práctica que conduce a una expansión desordenada del sistema.
- Los sistemas que usan la base de datos de este modo se comportan como si estuvieran siendo sometidos a una gran carga de trabajo en todo momento.
Soluciones
La solución es usar las herramientas apropiadas, por ejemplo, es más apropiado utilizar sistemas de mensajería para representar un flujo de trabajo, evitando las constantes consultas, mayor eficiencia en la entrega de mensajes, sin necesidad de tener que eliminar los mensajes completados.
¿Y Que opina usted?
Que opina usted del anti patrón?, ¿lo ha encontrado alguna vez?, ¿Que alternativas consideraría? ¿Que le diría a sus programadores para que no cometieran este error?.
Le invitamos a participar en el foro de discusión del blog de “La Oficina de Proyectos de Informática” (http://www.pmoinformatica.com) y a suscribirse al blog por los distintos canales, incluyendo lista de correo electrónico, al Twitter @PMOInformatica, a nuestra página de Facebook (haciendo click en el botón "Me gusta") o al feed RSS.
<< Artículo anterior: entrada de datos inadecuada
Acerca de artículos anteriores de esta serie
¿Quiere saber más sobre errores comunes de programación, le invitamos a revisar otros artículos de esta serie en el blog.
>> Entrada de datos manejada inadecuadamente
>> El botón mágico
>> El Objeto Todopoderoso
>> Errores comunes en el desarrollo de Bases de datos: Tercera Parte
>> Errores comunes en el desarrollo de Bases de datos: Segunda Parte
>> Errores comunes en el desarrollo de Bases de datos
>> Errores comunes de programación: Segunda Parte
>> 5 errores comunes de programación
>> Entrada de datos manejada inadecuadamente
>> El botón mágico
>> El Objeto Todopoderoso
>> Errores comunes en el desarrollo de Bases de datos: Tercera Parte
>> Errores comunes en el desarrollo de Bases de datos: Segunda Parte
>> Errores comunes en el desarrollo de Bases de datos
>> Errores comunes de programación: Segunda Parte
>> 5 errores comunes de programación
¿Interesado en libros sobre desarrollo de software?
Transact SQL-DML Funciones y Bases de datos Autor: Rocío Navarro Lacoba >> España (amazon.es) >> Latinoamérica (amazon.com) | Código Limpio Autor: Robert C. Martin >> España (amazon.es) >> Latinoamérica (amazon.com) | Métodos ágiles y Scrum Autor: Alonso Alvarez García y otros >> España (amazon.es) >> Latinoamérica (amazon.com) | Code Complete Autor: Steven C. McConnell >> España (amazon.es) >> Latinoámerica (amazon.com) |
Novedades Amazon
- Los Productos Amazon más buscados Nov 2012
- Productos Amazon de la Semana 25 Oct 2012
- Productos Amazon de la Semana 19 Oct 2012
- Desarrollo Ágil de Software. Los Libros más buscados (en Español). Oct 2012
- Gestión de Proyectos. Los Libros más buscados (en Español). Oct 2012
Gestión de desarrollo de software
>> Errores comunes en el desarrollo de software: Entrada de datos manejada inadecuadamente (Input Kludge)
>> Errores comunes en el desarrollo de Software: El Botón Mágico
>> Errores comunes en el desarrollo de Software: El Objeto Todopoderoso
>> Errores comunes en el desarrollo de Bases de datos: Tercera Parte
>> Errores comunes en el desarrollo de Bases de datos: Segunda Parte
>> Errores comunes en el desarrollo de Bases de datos
>> 5 Herramientas para la automatización de pruebas de software
>>Errores comunes de programación: Segunda Parte
>>5 errores comunes de programación
>> Errores comunes en el desarrollo de Bases de datos: Segunda Parte
>> Errores comunes en el desarrollo de Bases de datos
>> 5 Herramientas para la automatización de pruebas de software
>>Errores comunes de programación: Segunda Parte
>>5 errores comunes de programación
>>10 actividades críticas a incluir en todo plan de desarrollo de un software
>> Los pasos para resolver incidentes en el período de estabilización de un desarrollo de software
>> Ambientes de pruebas integrales de software: Buenas prácticas
>> Ambientes de desarrollo de software: Buenas prácticas
>> Algunas prácticas de desarrollo de aplicaciones web para asegurar calidad, mantenibilidad, escalabilidad y seguridad
>> Acciones preventivas para evitar retraso y retrabajo en proyectos de tecnología de información (TI)
>> Las preguntas que debe hacer al encargarse de un proyecto de Tecnología de Información (TI) en ejecución
>> Ambientes de pruebas integrales de software: Buenas prácticas
>> Ambientes de desarrollo de software: Buenas prácticas
>> Algunas prácticas de desarrollo de aplicaciones web para asegurar calidad, mantenibilidad, escalabilidad y seguridad
>> Acciones preventivas para evitar retraso y retrabajo en proyectos de tecnología de información (TI)
>> Las preguntas que debe hacer al encargarse de un proyecto de Tecnología de Información (TI) en ejecución
Desarrollo ágil, Scrum y Test Driven Development
>> Test Driven Development (TDD): Pruebas del desarrollador
>> Test Driven Development (TDD): Como llevarlo a la práctica
>> Test Driven Development (TDD): Ventajas y desventajas
>> Los 5 valores de la programación extrema
>> 5 Preguntas y respuestas sobre el Feature Driven Development (FDD)
>> Test Driven Development (TDD): 9 retos para su implementación y cómo hacerles frente
>> Plantillas Scrum: historias de usuario y criterios de aceptación
>> El “Test Driven Development” (TDD): Desarrollo y pruebas de software bajo Scrum
>> Scrum de Scrum: Desarrollo ágil para grandes proyectos
>> 5 métricas de desempeño para proyectos de desarrollo ágil y Scrum
>> Herramientas de software para gestión de proyectos de desarrollo ágil
>> El Desarrollo ágil en un entorno de fechas y presupuestos predefinidos
>> Los Programas de Certificación del Scrum Alliance
>> Preguntas y respuestas sobre Scrum Alliance
>> Gestión de Proyectos PMI y el Desarrollo Ágil: ¿Que tienen en común?
>> Metodologías de desarrollo ágil
Gerencia de Proyectos
>> Test Driven Development (TDD): Pruebas del desarrollador
>> Test Driven Development (TDD): Como llevarlo a la práctica
>> Test Driven Development (TDD): Ventajas y desventajas
>> Los 5 valores de la programación extrema
>> 5 Preguntas y respuestas sobre el Feature Driven Development (FDD)
>> Test Driven Development (TDD): 9 retos para su implementación y cómo hacerles frente
>> Plantillas Scrum: historias de usuario y criterios de aceptación
>> El “Test Driven Development” (TDD): Desarrollo y pruebas de software bajo Scrum
>> Scrum de Scrum: Desarrollo ágil para grandes proyectos
>> 5 métricas de desempeño para proyectos de desarrollo ágil y Scrum
>> Herramientas de software para gestión de proyectos de desarrollo ágil
>> El Desarrollo ágil en un entorno de fechas y presupuestos predefinidos
>> Los Programas de Certificación del Scrum Alliance
>> Preguntas y respuestas sobre Scrum Alliance
>> Gestión de Proyectos PMI y el Desarrollo Ágil: ¿Que tienen en común?
>> Metodologías de desarrollo ágil
Gerencia de Proyectos
>> Lo urgente y lo importante: tareas que no deben delegarse
>> Lo urgente y lo importante: 9 recomendaciones para una delegación efectiva
>> Lo urgente y lo importante (2da Parte): Las 10 tareas rutinarias de un Gerente de Proyectos
>> Lo Urgente y lo importante en la Gestión de Proyectos
>> Gestión de Proyectos: 5 tareas clave para dirigir la fase de ejecución
>> 5 preguntas y respuestas sobre la identificación de riesgos
>> Como hacer el seguimiento de los riesgos en proyectos
>> Plantilla para la Gestión de Riesgos en proyectos: Actualización Octubre 2012
>> Plantilla para documentar Lecciones Aprendidas
>> Gestión de Proyectos PMI y el Desarrollo Ágil: ¿Que tienen en común?
>> Las reuniones de trabajo: más productividad, menos reuniones
>> El patrocinador (Sponsor) del proyecto: Rol que debe asumir y lo que no debe hacer
>> Como lidiar con implicados (stakeholders) problemáticos
>> Acciones preventivas para evitar retraso y retrabajo en proyectos de tecnología de información (TI)
>> Las preguntas que debe hacer al encargarse de un proyecto de Tecnología de Información (TI) en ejecución
>> Diseño y desarrollo de software en proyectos Fastrack: Como minimizar los riesgos
>> 10 actividades críticas a incluir en todo plan de desarrollo de un software
>> Diseño y desarrollo de software en proyectos Fastrack: Como minimizar los riesgos
>> 10 actividades críticas a incluir en todo plan de desarrollo de un software
No hay comentarios :
Publicar un comentario