Metodologías para la resolución de problemas a través de la computadora

Análisis del problema
En esta etapa, el programador debe saber exactamente cuál es el problema que se desea resolver (antes de pensar en cómo resolverlo) e identificar los datos involucrados y responder las preguntas de tipo “¿Qué …?”.
La etapa de análisis del problema comprende las siguientes fases:

Investigación preliminar
El analista realiza una investigación para involucrarse en el ambiente donde está ubicado el problema, de tal forma que conozca todos los aspectos relacionados con el mismo. Para ello se recomienda que el analista entreviste a los involucrados en los diferentes procesos, que revise los documentos relacionados con el problema y que conozca las política y reglamentos de la empresa.

Definición del problema
E
l problema debe estar bien definido para llegar a una solución satisfactoria. Para definir con precisión el problema se requiere que el analista lo conozca y entienda completamente (con todas las situaciones particulares que puedan presentarse).

Definición de datos de entrada
En esta fase se identifican todos los datos que servirán de entrada a un sistema computacional, el cual los procesara para convertirlos en información de salida.

Definición de datos de salida
Se define la información que arrojara el sistema. La función principal de un sistema de procesamiento de información es recibir datos de entrada, procesarlos y producir información de salida; debido a esto, esta fase es de especial importancia.

Definición de datos auxiliares
Se conocen como datos auxiliares todos aquellos que no forman parte ni de la entrada ni de la salida, sino que son datos necesarios para realizar algunos cálculos o procesos intermedios durante la conversión de datos de entrada en información de salida.

Diseño de la propuesta de solución
Después de haber analizado el problema en su totalidad, en esta etapa de diseño de la propuesta de solución, el analista decide subdividirlo (si es necesario), escoger las herramientas de diseño y el paradigma necesario para crear los algoritmos correspondientes y responder a las preguntas de tipo “¿Cómo …?”.
El diseño de la propuesta de solución se subdivide en cuatro etapas:

Diseño descendente (modelo top-down)
E
n muchas ocasiones los problemas a resolver son muy grandes y complejos y requieren dividirse en su problema más pequeño para atacarse de manera individual, sin descuidar los enlaces entre ellos.

Refinamiento de la propuesta
U
na vez dividido el problema se elabora una descripción más detallada con pasos específicos. A este proceso se le conoce como refinamiento de la propuesta (stepwise refinement). Después de dividir el problema, en esta fase debe ponerse especial atención y esmero a las especificaciones detalladas de cada uno de los pasos necesarios para resolverlo.

Representación del algoritmo mediante herramientas de diseño
Después de cumplir con las etapas previas, ahora se requiere representar la propuesta de solución utilizando alguna de las herramientas de diseño. Entre las herramientas más comunes se encuentran el pseudocódigo, diagramas de flujo, diagramas N-S, diagramas de clases, etc. En esta obra se hace especial énfasis en el pseudocódigo y los diagramas
de flujo.

Pseudocódigo
El pseudocódigo es una herramienta para representar algoritmos que consiste en el uso de un lenguaje natural (muy parecido a un idioma) con una sintaxis convencional definida para describir los pasos a seguir durante su ejecución, de tal forma que sea plenamente entendido por los analistas, aunque su representación no corresponde plenamente con un lenguaje de programación de computadoras. El objetivo del pseudocódigo es permitir que el programador se centre en los aspectos lógicos de la solución, evitando las reglas de sintaxis de los lenguajes de programación.

Diagrama de flujo
El diagrama de flujo es la representación gráfica de un algoritmo, donde cada paso o actividad se representa mediante una figura o símbolo y se define la secuencia de ejecución mediante conexiones utilizando flechas. Cada símbolo de un diagrama de flujo respeta un estándar convencional y representa una acción específica a ejecutar por el algoritmo.

Pruebas del diseño del algoritmo
Es muy importante verificar que el modelo planteado y el algoritmo representado ofrezcan los resultados esperados, para ello se requiere que
el analista pruebe el diseño antes de proceder al desarrollo e implementación del programa o sistema. Para ello, el analista debe diseñar un conjunto de datos de prueba y hacer un simulacro de ejecución del algoritmo y validar que
se obtengan los resultados esperados.

Desarrollo e implementación del programa o sistema
Esta fase comprende el desarrollo en sí de los programas o sistemas: la
codificación, la ejecución y las pruebas. Aquí el programador responde
a las preguntas de tipo "¿Con qué ...?".
Esta fase se descompone en
tres etapas :

Codificación
Esta etapa comprende la "traducción" del diseño a un sistema computacional que puede componerse de uno o varios programas. La codificación es la tarea de escribir cada programa utilizando un lenguaje de
programación de computadoras. Es importante mencionar que la codificación de un programa o sistema debe representar fielmente el algoritmo previamente diseñado y comprobado; es decir, sería muy riesgoso
desarrollar un programa de cómputo que no corresponde a un algoritmo
diseñado y probado, ya que se pueden presentar varios tipos de errores.

Ejecución
Para ejecutar un programa a partir del código fuente, primeramente
debe aprobar la fase de compilación, durante la cual se revisa que dicho
programa cumpla con todas las reglas sintácticas y semánticas establecidas en el lenguaje de programación en el que está escrito. Los lenguajes de programación utilizan un programa de computadora llamado compilador para escribir y revisar los programas. El compilador revisa cada una de las sentencias o instrucciones para validar que cumplen con las reglas definidas en dicho lenguaje; sin embargo, si el código fuente tiene errores, entonces no permite su ejecución (hasta que se corrija), indicando las líneas de código escritas de manera incorrecta.

Comprobación
En esta fase se verifica que los resultados arrojados por el sistema sean
los correctos. Para ello se utiliza el conjunto de datos utilizados durante
la fase final de la etapa de diseño: las pruebas del diseño del algoritmo
(pruebas de escritorio). Para comprobar si el programa ofrece los resultados esperados, se compila, y luego se pone en ejecución y se alimenta con los datos de entrada utilizados durante las pruebas de escritorio y se verifica que los resultados coincidan.