Cuando nos piden que hagamos un programa debemos seguir una cierta cantidad de pasos para asegurarnos de que tendremos éxito en la tarea. La acción irreflexiva (me piden algo, me siento frente a la computadora y escribo rápidamente y sin pensarlo lo que me parece que es la solución) no constituye una actitud profesional (e ingenieril) de resolución de problemas. Toda construcción tiene que seguir una metodología, un protocolo de desarrollo, dado.
Existen muchas metodologías para construir programas, pero en este curso aplicaremos una metodología sencilla, que es adecuada para la construcción de programas pequeños, y que se puede resumir en los siguientes pasos:
1. Analizar el problema. Entender profundamente cuál es el problema que se trata de resolver, incluyendo el contexto en el cual se usará.
Una vez analizado el problema, asentar el análisis por escrito.
2. Especificar la solución. éste es el punto en el cual se describe qué debe hacer el programa, sin importar el cómo. En el caso de los problemas sencillos que abordaremos, deberemos decidir cuáles son los datos de entrada que se nos proveen, cuáles son las salidas que debemos producir, y cuál es la relación entre todos ellos.
Al especificar el problema a resolver, documentar la especificación por escrito.
3. Diseñar la solución. éste es el punto en el cuál atacamos el cómo vamos a resolver el problema, cuáles son los algoritmos y las estructuras de datos que usaremos. Analizamos posibles variantes, y las decisiones las tomamos usando como dato de la realidad el contexto en el que se aplicará la solución, y los costos asociados a cada diseño.
Luego de diseñar la solución, asentar por escrito el diseño, asegurándonos de que esté completo.
4. Implementar el diseño. Traducir a un lenguaje de programación (en nuestro caso, y por el momento, Python) el diseño que elegimos en el punto anterior.
La implementación también se debe documentar, con comentarios dentro y fuera del código, al respecto de qué hace el programa, cómo lo hace y por qué lo hace de esa forma.
5. Probar el programa. Diseñar un conjunto de pruebas para probar cada una de sus partes por separado, y también la correcta integración entre ellas. Utilizar el depurador como instrumento para descubir dónde se producen ciertos errores.
Al ejecutar las pruebas, documentar los resultados obtenidos.
6. Mantener el programa. Realizar los cambios en respuesta a nuevas demandas.
Cuando se realicen cambios, es necesario documentar el análisis, la especificación, el diseño, la implementación y las pruebas que surjan para llevar estos cambios a cabo.