Evaluación de Algoritmos

Unidad de Apoyo para el Aprendizaje

Iniciar

Introducción


La evaluación de algoritmos es un proceso de análisis de su desempeño en el tiempo de ejecución que tardan para encontrar una solución y la cantidad de recursos empleados para ello. Por lo tanto, cuando un algoritmo se transforma en su expresión computable: el programa (conjunto de instrucciones que realizan determinadas acciones y que están escritas en un lenguaje de programación), requiere de su depuración y pruebas, con el fin de asegurar que esté libre de errores y cumpla eficazmente con el objetivo para el que fue elaborado. Por eso la importancia de este tema, para identificar eficazmente todos los elementos posibles y así obtener un resultado óptimo.

Si te interesa continuar con el tema te invito a seguir estudiando.



Una persona rellenando con una paloma una casilla

(s. a.) (s. f). Evaluación de algoritmos [ilustración]. Tomada de https://pixabay.com/es/fax-var%C3%B3n-blanco-modelo-3d-aislado-1889009/



El estudio de este tema te permitirá:

Reconocer los elementos necesarios de la evaluación de algoritmos a partir de sus características, para que los programas cumplan de manera precisa su objetivo.

Evaluación de un algoritmo


La evaluación de un algoritmo (Serie de pasos bien definidos que ayudan a llegar a la solución de algún problema) tiene como propósito medir su desempeño, considerando el tiempo de ejecución y los recursos empleados (memoria de la computadora), para obtener una solución satisfactoria.

En muchas ocasiones se le da mayor peso al tiempo que tarda un algoritmo en resolver un problema.

Para medir el tiempo de ejecución, el algoritmo se puede transformar a un programa de computadora. Aquí se involucran otros factores, como el lenguaje de programación elegido, sistema operativo empleado, habilidad del programador, etcétera.

Pero también hay otra forma; se puede medir el número de operaciones que realiza un algoritmo considerando el tamaño de las entradas al mismo (N). Entre más grande es la entrada mayor será su tiempo de ejecución.

Una imagen de algoritmos con pequeñas siluetas de personas

(s. a.) (s. f.). Evaluación [ilustración]. Tomada de https://pixabay.com/

Depuración


Para que un algoritmo realmente lo sea cumplirá con las características o propiedades que se describen a continuación. Pulsa en cada concepto para desplegar la información correspondiente.Una anécdota sobre el origen de este término (del inglés debugging, “eliminación de bichos”) cuenta que en la época de la primera generación de computadoras constituidas por bulbos encontraron una polilla entre los circuitos que era la responsable de la falla del equipo. De allí nació la expresión para indicar que el equipo o los programas presentan algún problema.

La depuración, entonces, es el proceso de identificación y corrección de errores de programación. Para depurar el código fuente, el programador se vale de herramientas de software que le facilitan la localización y eliminación de errores. Los compiladores son un ejemplo de estas herramientas.

Se dice que un programa está depurado si está libre de errores. Cuando se depura un programa se hace un seguimiento de su funcionamiento y se van analizando los valores de sus distintas variables, así como los resultados obtenidos de los cálculos del programa.

Una vez depurado el programa se solucionan los posibles errores encontrados y se procede a depurar otra vez. Estas acciones se repiten hasta que el programa no contenga ningún error, tanto en tiempo de programación como en ejecución. Pulsa en cada concepto para desplegar la información correspondiente.



Errores de sintaxis

Los errores más sencillos de detectar son de sintaxis, presentes cuando alguna instrucción está mal escrita o se omitió puntuación necesaria para el programa.

Errores lógicos

UExisten también errores lógicos; en este caso, aunque el programa no contenga fallas de sintaxis, no realiza el objetivo por el que fue creado. Pueden presentarse incorrecciones en los valores de las variables, ejecuciones de programa que no terminan, imprecisiones en los cálculos, etcétera.



Estos últimos son los más difíciles de detectar, por lo que se debe realizar un seguimiento puntual del programa.

Prueba de programas


El propósito de las pruebas es asegurar que el programa produce los resultados definidos en las especificaciones funcionales. El programador a cargo utilizará los datos de prueba para comprobar que el programa genera los resultados correctos.

O sea, que se produzca la acción correcta en el caso de datos correctos o el mensaje de error, y una acción correcta en el caso de datos incorrectos.

Concluida la programación, el analista volverá a usar los datos de prueba para verificar que el programa o sistema da los resultados correctos. En esta ocasión concentrará su atención también en la interacción correcta entre los diferentes programas y el funcionamiento completo del sistema.

Verificará lo siguiente:

 Esquema sobre los aspectos que verifica la prueba de programas

Documentación del programa


La documentación de programas es una extensión de la documentación del sistema. El programador convierte las especificaciones de programas en lenguaje de computadora y debe trabajar conjuntamente con las especificaciones de programas, y comprobar que el programa cumple con ellas.

Cualquier modificación que surja como resultado de la programación deberá ser expuesta y aceptada antes de aplicar el cambio.

Por consiguiente, para que la documentación tenga una mejor comprensión se deben incluir los siguientes datos para su elaboración.



 Tabla con los elementos necesarios para la elaboración de la documentación del programa

Mantenimiento de programas


Los usuarios de los programas solicitarán los cambios necesarios al área de sistemas, con el fin de que estos continúen operando correctamente. Para ello, se le debe dar mantenimiento periódicamente a los programas.

El mantenimiento presenta las modalidades descritas a continuación. Pulsa en cada concepto para visualizar la información correspondiente.

Preventivo

Cuando los programas no presentan errores, pero hay necesidad de regenerar los índices de los registros, realizar respaldos, verificar la integridad de los programas, actualizar porcentajes y tablas de datos, etcétera.

Correctivo

Los programas presentan algún error en algún reporte, por lo que es necesario revisar la codificación para depurarlos y compilarlos. Se deben realizar las pruebas al sistema, imprimiendo los reportes que generan y verificar si los cálculos que estos ofrecen son correctos.

Adaptativo

Los programas no tienen errores, pero se requiere alguna actualización por una nueva versión del programa, una nueva plataforma de sistema operativo o un nuevo equipo de cómputo con ciertas características; es decir, hay que adaptar los programas a la nueva tecnología, tanto de software como de hardware.

En cualquier caso, el usuario debe realizar la solicitud formal por escrito, puntualizando el tipo de mantenimiento que requiere, y remitirla al área de sistema para su revisión y valoración, en tanto el personal del área de sistemas hará una orden de trabajo para proceder a realizar el servicio pedido.

En este tema se estudió la evaluación de algoritmos como un proceso de análisis de desempeño del tiempo de ejecución para encontrar una solución y la cantidad de recursos empleados para ello; asimismo, la importancia de la depuración y prueba de programas, con el fin de asegurar que estén libres de errores y cumplan eficazmente con el objetivo para el que fueron elaborados.

De igual manera se subrayó la relevancia de la documentación de los programas, para que tanto analistas como programadores conozcan su dinámica y el fin para los que fueron creados y tengan un archivo con sus especificaciones; además, se expuso el mantenimiento, específicamente preventivo, correctivo y adaptativo, fundamentales para el buen funcionamiento y operación de un algoritmo.

Actividad. Los programas

Al resolver problemas complejos es necesario transformar los algoritmos a programas para realizar determinadas acciones que cumplan de manera precisa su objetivo. Es por ello que esta actividad te ayudará a reforzar los conceptos básicos del tema.

Autoevaluación. Evaluando programas

La importancia de la valoración de los algoritmos tiene como finalidad medir su desempeño, que al convertirse en programa obtiene una solución satisfactoria para resolver algún problema. En la siguiente autoevaluación podrás identificar tu nivel de comprensión del tema.

Fuentes de información

Básicas

Documentos electrónicos SUAyED. (2016). Análisis, diseño e implantación de algoritmos. Apunte electrónico [Versión electrónica]. México: UNAM. Consultado el 21 de agosto de 2017 de http://fcasua.contad.unam.mx/apuntes/interiores/docs/20181/informatica/1/LI_1164_06097_A_Analisis_Diseno_Implantacion_Algoritmos_Plan2016.pdf

SUAyED. (2016). Análisis, diseño e implantación de algoritmos. Cuaderno de actividades [Versión electrónica]. México: UNAM. Consultado el 21 de agosto de 2017 de http://fcasua.contad.unam.mx/apuntes/interiores/docs/20181/informatica/1/LI_1164_06047_C_Analisis_Diseno_Implantacion_Algoritmos_Plan2016.pdf

Complementarias

Bibliografía Cairó, O. (2006). Fundamentos de programación: piensa en C. México: Pearson Educación. García, J. B. y Laza, R. (2008). Metodología y tecnología de la programación. Madrid: Pearson Prentice Hall. Gelder, B. (2003). Algoritmos computacionales (3.ª ed.). México: Thompson.

Cómo citar

Texto correspondiente a esta sección.