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:
-
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.
-
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.
-
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.
-
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.
-
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.
-
Debugging: Desafortunadamente, pocos son los programas que funcionan a la primera. Los
programas deben ser corregidos y probados nuevamente.
-
Release: El programa es empaquetado, documentado y mandado al mundo a ser usado.
-
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.
-
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.