Las Claves de la Calidad en el Desarrollo de Software

Slået op d. - Sidst ændret d.

Cuantas veces no hemos escuchado en el contexto de desarrollo de software, las expresiones “hacer el sistema amigable”, “la bolita no esta en mi cancha”, “no se puede probar porque…” o la siempre conocida “El programador interpretó otra cosa en el documento”. Es interesante que pasen este tipo de situaciones en una actividad como el desarrollo de software que es una disciplina que debería ser casi una ciencia exacta. En mi opinión esta situación se debe a una sola cosa: “La falta de definición de criterios de calidad”. Y es que estos criterios muchas veces son solicitados al cliente como si debieran ser parte de los requerimientos de un proyecto, lo cual se me hace tan absurdo como si un doctor te preguntara qué medicina recetarte. La realidad es que el experto de Sistemas (programación, desarrollo, etc.) es quien debiera proponer y poner sobre la mesa estos criterios a manera de “Estándar de Calidad”; ¿porque no ocurre? En mi opinión, falta de enfoque. No nos damos cuenta de que el desarrollo de software es una cuestión de ingeniería, similar a el construir una maquina o incluso un puente. Así que dedico esta oportunidad a exponer de una manera muy simple, una serie de "Claves de Calidad en el Desarrollo de Software" que he recopilado a lo largo de los años, esperando pueda servir de guía tanto a usuarios, requisitores y administradores de proyectos, así como a programadores y líderes técnicos de proyecto.

 Clave 1: Usabilidad

La Usabilidad es específicamente “la facilidad de uso con la que una persona manejará una herramienta”, y no se trata de hacer una pantalla amigable o de escoger muy bien las combinaciones de colores (aunque esto ultimo ayuda bastante); se trata más bien (en este contexto) de cumplir con los siguientes factores:

Visibilidad del estatus del sistema

Al usuario le tiene que quedar perfectamente claro si un dato ya se guardó, es incorrecto, tiene algún pendiente o que es lo que el sistema requiere del usuario. Aquí el acomodo visual de los componentes es vital.

Consistencia y estándares

Todas las pantallas de un sistema deben lucir iguales. Los botones y otros controles deben de tener las mismas posiciones siempre que sea posible, esto facilita muchísimo la navegación por parte del usuario. Un ejemplo de esto es el manejo de tabindex y los atajos de teclado.

Libertad y control del usuario

Algunas cosas que se deben incluir (en la medida de lo posible) en los sistemas para lograr este factor son: Incluir mecanismo de Undo (deshacer o revertir) así como ventanas de confirmación cuando el usuario va a realizar una acción de naturaleza irreversible.

Prevención de errores

Las validaciones de datos requeridos, así como el tipo, longitud máxima y mínima de los mismos y otras validaciones manejadas adecuadamente previenen que el usuario se de cuenta de un error en una pantalla subsecuente (lo cual es una de las cosas más molestas para los usuarios).

Diseño estético y minimalista

Un sistema debería contar con el diseño visual mínimo necesario para armonizar con la imagen corporativa del cliente. Un sistema no debería tener un diseño vistoso como una página web orientada al publico en general.

Ayuda y Documentación

Aquellas cosas que puedan no ser claras para el usuario en el instante deberían poder ser respondidas haciendo clic en algún botón con el signo “?”, que sin salir del modulo en que el usuario trabaja, le de información sobre un campo o sección.

Clave 2: Seguridad

La seguridad es uno de los aspectos más importantes en el desarrollo de cualquier sistema y es importante saber que no tiene nada más relación con los accesos a usuarios a diferentes secciones; Sino más bien con la capacidad de un sistema de prever manejos incorrectos de la información esto se hace a través de seguridad de la capa de red (con protocolos como HTTPS) y seguridad en la capa de datos con manejo de encripción de datos.

 Clave 3: Escalabilidad y Modularidad

Se trata de la capacidad de un sistema de ser adaptado a nuevas necesidades conforme estas se presentan, es decir el agregar nuevos módulos o funcionalidades de manera rápida. La clave para lograr esto es mediante la definición de módulos específicos que compongan el sistema y el hecho de que cada uno de estos módulos tenga una estructura homogénea. También es básica la definición de funciones con el enfoque de ser reutilizadas.

Clave 4: La Flexibilidad del software

Es lo que permite a los sistemas adaptarse a nuevas necesidades sin requerir de un programador o desarrollador, es decir mediante pura configuración que pueda ser realizada por un usuario administrador. La clave para el manejo de la flexibilidad desde punto de vista de la programación es el hecho de no manejar ninguna constante en el famoso “HardCode”, sino manejar tablas de configuración que puedan ser administradas por los usuarios. Un excelente ejemplo de flexibilidad es el manejo de “Campos Configurables”, un esquema en que se manejan campos de información internamente como registros, es decir, el administrador puede “dar de alta” un nuevo “Campo” que deba ser capturado en una sección específica del sistema. Otro ejemplo en que Flexibilidad y Seguridad se ven relacionados es el manejo de un esquema dinámico de menús, en el que los administradores puedan crear nuevos perfiles de usuarios y definir cuales son las secciones a las que tendrán acceso los mismos. Así como crear nuevas secciones apuntando, por ejemplo, a una URL.

Clave 5: Auditabilidad

Es la capacidad de darle seguimiento a la información que es manipulada en un sistema; esto es importante cuando es necesario saber qué hizo un usuario en cada una de sucesiones o cual fue el flujo de procesamiento de información por los usuarios para un registro específico. Se trata de una requisito indispensable para estudiar y medir la usabilidad del software.

Clave 6: Robustez y Confiabilidad

Son las características de un software que prevé los errores que pueden llegar a ocurrir y los maneja adecuadamente. La clave aquí es el manejo adecuado de excepciones en la programación, y la manera de garantizar esto es mediante “Pruebas Destructivas”, aquellas que están enfocadas en tratar de ocasionar errores en el sistema.

Clave 7: Performance o Alto Rendimiento

Es la característica de un software que fluye de manera ágil y rápida, y soporta la cantidad necesaria de usuarios simultáneos. Una de las claves para manejar esto en sistemas web empresariales es el manejar procedimientos almacenados de base de datos para los bloques de lógica de negocio que deban ser automatizados, esto en lugar de manejar procesos que van y vienen varias veces por datos hacia la BD; de la mano a esto hay que considerar la optimización de procesos SQL. También el manejo de tecnología AJAX es vital para cumplir este objetivo en aplicaciones web. Banner colaboración Desarrollo Estos son solo algunos criterios con los que podemos englobar el tema de calidad en el desarrollo de software, y hay muchos otros que resultan importantísimos como lo pudiera ser un diseño de base de datos adecuado ó la reutilización extrema de código, pero eso será tema de un blog distinto.          

Næste artikel

Cómo presupuesto un artículo sin morir en el intento