El proceso de programación

La programación es más que solamente escribir código. El software tiene su ciclo de vida. Nace, crece, madura y finalmente muere, solamente para ser reemplazado por un producto nuevo. El entendimiento del ciclo de vida de un programa es importante, ya que, como programador, se pasará solamente poco tiempo en escribir código. La mayoría de las veces la mayor parte del tiempo se invierte al modificar y revisar código existente. Un código debe ser documentado, se le debe dar mantenimiento, debe ser mejorado y vendido.

Los principales pasos que se deben seguir al elaborar un programa son:

  1. Requerimientos: Los programas empiezan cuando alguien tiene la idea de hacer algo y comienza a implementarlo. El documento con los requerimientos del sistema describen, en términos generales, qué es lo que se quiere hacer.
  1. Especificación del programa: La especificación es una breve descripción de qué es lo que el programa hace. En un principio, una especificación preliminar describe qué es lo que va a hacer el programa. Después, mientras el programa se va refinando, de la misma manera se va refinando la especificación del mismo.
  1. DiseÒo del código: El programador tiene que llevar a cabo un diseÒo del código a implementar. En él se deben incluir los algoritmos utilizados, las definiciones de los módulos a utilizar, archivos utilizados y estructuras de datos usadas en el programa. Es aquí en donde se desarrolla el pseudocódigo del programa. El uso de diagramas de flujo también nos permitirá obtener una abstracción sobre el problema, tanto en entradas, salidas, flujo y procesamiento de la información.
  1. Codificación: El siguiente paso es empezar a escribir el programa. Este primer paso involucra primero escribir un prototipo y después irlo puliendo para crear el programa final.
  1. Pruebas: El programador debe diseÒar un plan de pruebas para posteriormente utilizarlo para probar su programa. Cuando es posible, debe existir un equipo de pruebas, diferente del equipo de programadores.
  1. Debugging: Desafortunadamente, pocos son los programas que funcionan a la primera. Los programas deben ser corregidos y probados nuevamente.
  1. Release: El programa es empaquetado, documentado y mandado al mundo a ser usado.
  1. Mantenimiento: Los programas rara vez, o nunca son perfectos. Los errores o bugs se encontrarán y necesitarán ser corregidos. Esta etapa es la etapa de mantenimiento de la programación.
  1. Revisión y mejora: Después de que un programa ha sido usado, los usuarios querrán realizarle algún cambio al funcionamiento del programa, tal como alguna nueva funcionalidad o un cambio en algún algoritmo. En este punto se crea una nueva especificación y el proceso comienza de nuevo.

Especificación

Generalmente las especificaciones de un proyecto de programación son vagas e incompletas. El programador tiene que redefinirlas en algo que define exactamente el programa que se va a desarrollar. Por lo tanto, el primer paso es escribir una especificación preliminar que describa qué es lo que el programa va a hacer y cómo se debe utilizar. El documento no describe la estructura interna del programa o el algoritmo que se planea utilizar.

La especificación preliminar tiene dos propósitos. Primero, enseÒársela al jefe o líder de proyecto para asegurarse de que la especificación contiene todo lo que se necesita que haga el programa. Segundo, se puede enseÒar a los demás compaÒeros para ver si existen sugerencias con respecto al programa.

DiseÒo del código

Después de que la especificación preliminar ha sido aprobada, se puede empezar a diseÒar el código. En la fase de diseÒo de código, el programador planea su trabajo. En proyectos de programación muy grandes que involucran a mucha gente, el código puede ser dividido en varios módulos, asignando un módulo a cada programador. En esta etapa se deben planear las estructuras de datos, los archivos y los algoritmos a utilizar. En esta etapa podemos ayudarnos de pseudocódigo y diagramas de flujo.

Prototipo

Después de que la etapa de diseÒo del código ha sido completada, podemos empezar a escribir el programa. Sin embargo, en lugar de empezar a escribir el programa completo para después empezar a probarlo, podemos utilizar un método llamado prototipo rápido (fast prototyping). Consiste en implementar una pequeÒa porción de la especificación que haga alguna de las funciones requeridas. Una vez que dicha parte del programa funciona, podemos implementar el resto de las funciones sobre la porción estable de código construida anteriormente. El prototipo también puede servir para darnos una idea de cuál es la dirección que lleva el proyecto.

Makefile

Después de que el código fuente ha sido terminado, necesitará ser compilado y encadenado. Si bien es cierto, podemos correr el compilador de manera manual, el proceso puede ser tedioso y complicado cuando estamos desarrollando proyectos muy grandes. Para esto podemos utilizar un makefile.

Pruebas

Después de que el programa ha sido compilado sin errores, podemos pasar a la etapa de pruebas. Ahora es tiempo de escribir un plan de pruebas. Dicho documento no es más que una simple lista de los pasos que debemos seguir para estar seguros de que el programa funciona correctamente. Se debe escribir básicamente por dos razones:

  • Si un error es encontrado, queremos poder reproducirlo.
  • Si realizamos algún cambio en el programa, queremos volverlo a probar para estar seguros que el cambio no afectó nada que haya estado funcionando previamente.

Debugging

Primero debemos inspeccionar el programa para ver si podemos detectar algún error. En programas sencillos será muy fácil encontrar el error, sin embargo no lo será en proyectos que involucran código de más de 5,000 líneas. La mayoría de los sistemas tiene debuggers de C, en nuestro caso podemos utilizar gdb.

Mantenimiento

Los buenos programadores someten a sus programas a largos y rigurosos procesos de mantenimiento antes de liberar su código. Cuando el usuario del programa empieza a utilizarlo y encuentra algún error, entramos a la etapa de mantenimiento, en donde cualquier error que pudiera tener el programa es corregido y el programa se vuelve a probar para asegurarse de que el error no vuelva a aparecer, para finalmente volver a liberar el programa.