<img height="1" width="1" src="https://www.facebook.com/tr?id=1101141206686180&amp;ev=PageView &amp;noscript=1">

Buena programación de firmware: Cuantitativo frente a cualitativo

Escribe software para otros como te gustaría que escribieran para ti.

Quizá el sello distintivo de un buen programador sea producir código de alta calidad. Ningún ingeniero se propondría crear una programación mal escrita. El fin último del diseño de un sistema es satisfacer los objetivos de diseño establecidos para el proyecto en cuestión, objetivos como la precisión, la estabilidad o las relaciones de E/S. Sin embargo, si no se sigue un buen procedimiento durante la fase de desarrollo y evaluación, el código producido puede ser difícil de probar y aún más difícil de cambiar. Esto plantea, por tanto, una pregunta importante. ¿Qué es un buen código? Después de todo, ¿cómo podemos escribir un buen código si ni siquiera sabemos qué es un buen código? Hay dos criterios de rendimiento que podemos utilizar: los cuantitativos y los cualitativos.

 

Criterios cuantitativos de rendimiento

Los criterios cuantitativos implican eficiencia dinámica, eficiencia estática y precisión. Generalmente se considera el más simple de los dos criterios a utilizar, ya que produce un valor numérico que podemos utilizar para juzgar la eficiencia de nuestro código.

 

1. Eficacia dinámica

La eficiencia dinámica es básicamente la medida de la velocidad de ejecución de un programa. Normalmente, se mide en segundos o en ciclos de CPU. La eficiencia dinámica puede definirse utilizando el tiempo total de ejecución necesario para terminar el programa o puede utilizarse para medir tareas específicas y secciones de código. A menudo, el equilibrio entre la claridad y la velocidad de ejecución es un punto clave en la eficiencia dinámica. Existen muchos trucos de programación para mejorar la velocidad de ejecución, pero hacerlo a menudo ofusca el código. Esto significa que un error común en la programación de firmware es sacrificar excesivamente la claridad en aras de la velocidad de ejecución. El resultado es un código que se ejecuta rápido pero que es difícil de cambiar o actualizar.

 

2. Eficiencia estática

La eficiencia estática son los requisitos de memoria del programa. Esto significa que la eficiencia estática son los requisitos de hardware del programa, específicamente para sistemas embebidos, los requisitos de ROM y RAM. Los sistemas embebidos suelen tener cantidades limitadas de memoria disponible para programar código y programar datos. Esto significa que las necesidades totales de memoria para un programa desarrollado deben caber dentro del espacio de memoria disponible. La eficiencia estática suele estar reñida con la eficiencia dinámica. Dependiendo de cómo se diseñen ciertos algoritmos, puede ser necesaria más memoria para mejorar la velocidad de ejecución. Esto significa que centrarse excesivamente en intentar mejorar la eficiencia dinámica, ahorrando memoria, podría hacer que la ejecución del programa tardara más.

 

Criterios cualitativos de rendimiento

 

Los criterios cualitativos son más difíciles de definir, ya que son medidas de eficiencia a las que no se puede asignar un valor numérico. Esto significa que la eficiencia cualitativa puede ser difícil de definir. Por lo tanto, la mejor forma de considerar este criterio de rendimiento es plantearse las 3 preguntas siguientes:

  • ¿Puede demostrar que su software funciona?
  • ¿Es fácil de entender?
  • ¿Es fácil cambiar el software?

Debido a la naturaleza de estas preguntas, desgraciadamente no existen métodos procedimentales reales para evaluar la eficacia cualitativa ni formas de garantizar un buen rendimiento cualitativo. La única buena sugerencia real sobre cómo mejorar el rendimiento cualitativo es utilizar prácticas de codificación eficaces y desarrollar buenos hábitos de programación. Existe una amplia gama de consejos y trucos sobre buenos hábitos de programación y otras tantas buenas prácticas de codificación. Algunos ejemplos podrían ser el uso de código autodocumentado, la abstracción, la modularidad y el software en capas. La clave está en encontrar las técnicas y hábitos que mejor se adapten a ti.

Un buen punto de referencia para evaluar si eres un buen programador con una alta eficiencia cualitativa es ver si tu código se puede entender a largo plazo y si otros pueden entenderlo y hacer cambios en él. Una buena forma de ponerte a prueba con estos puntos de referencia es realizar el siguiente ejercicio. Encuentra una pieza importante de software que hayas escrito hace más de 12 meses. A continuación, comprueba si todavía puedes entender lo que has escrito lo suficiente como para hacer pequeños cambios en su comportamiento. Una segunda prueba consiste en intercambiar código con un compañero que haya escrito recientemente. Si tú y tu compañero podéis entender el código intercambiado lo suficiente como para hacer pequeños cambios. Superar estos dos ejercicios de evaluación es un buen indicio de un alto rendimiento cualitativo.