jueves, 13 de diciembre de 2012

Errores comunes en el desarrollo de software: Entrada de datos manejada inadecuadamente (Input Kludge)

Imagen de: Picasa Web Albums
Como continuación de la serie acerca de errores comunes en programación, desarrollo de software y base de datos, presentamos el anti patrón de "Entrada de datos manejada inadecuadamente (Input Kludge), el cual consiste en diseñar funciones que no manejen la entrada de datos adecuadamente, omitiendo validaciones previas, que aseguren que los datos recibidos son adecuados en cuanto a su tipo y rango de posibles valores según la lógica de negocio establecida.

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 anti patrón del Input Kludge

Si bien es cierto que para un desarrollador, es difícil en una prueba unitaria identificar todos los posibles valores inválidos, para el usuario final es más sencillo, por lo que puede recurrirse al usuario final para determinar la validaciones previas a las que debe ser sujeto un dato de entrada antes de su procesamiento.

Problemas asociados con el anti patrón

  • La rutina de procesamiento podría dar errores inesperados, a recibir datos no validos en su formato (por ejemplo números en lugar de caracteres) o posible rango de valores.
  • El desbordamiento de búfer, es un ejemplo de un agujero de seguridad, provocado por problemas ocasionados por mal manejo de los datos de entrada.

Situaciones en las que podrían justificarse

No manejar los datos de entrada es una mala práctica de programación. En todos los casos debería aplicarse, de no ser así, el software podría tener errores graves en su diseño.

Soluciones

Se centra en utilizar algoritmos de validación que determinen la validez de los datos previo a su procesamiento, evitando así el tratamiento de datos no válidos.

Los casos a validar por estos algoritmos pueden obtenerse con la ayuda del usuario final, por lo que un punto obligatorio a tratar durante el diseño de una funcionalidad son los posibles rangos de valores aceptables para un campo, los valores considerandos inaceptables y la respuesta a dar al usuario en estos casos.

Adicionalmente, existen herramientas de análisis léxico y sintáctico que pueden ayudar en la identificación de entradas inesperadas, asegurando que sean manejadas.

¿Y que opina usted?

¿Que opina usted del anti patrón?, ¿lo ha encontrado alguna vez?, ¿Como rediseñaría el código como alternativa?, ¿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://oficinaproyectosinformatica.blogspot.com) y a suscribirse al blog por los distintos canales, incluyendo lista de correo electrónico, al Twitter @PMOInformatica o al feed RSS del Blog.

<< Artículo anterior: el botón mágico


Acerca de artículos anteriores de esta serie


¿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


Referencia:

Wikipedia. Antipatron de diseño
http://es.wikipedia.org/wiki/Antipatr%C3%B3n_de_dise%C3%B1o

Wikipedia. Entrada chapuza
http://es.wikipedia.org/wiki/Entrada_chapuza

Otros artículos en “La Oficina de Proyectos de Informática”

Gestión de desarrollo de software

>> 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


Desarrollo ágil, Scrum y Test Driven Development

>> 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 (2da Parte): 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)


No hay comentarios :

Publicar un comentario

Pmoinformatica.com," La Oficina de Proyectos de Informática ", es un participante en el Programa de Servicios de Amazon Associates LLC, un programa de publicidad de afiliación diseñado para proporcionar un medio para que sitios web puedan ganar honorarios por la publicidad y enlaces a amazon.com y amazon.es.