investigacion

Introducción a la resolución de problemas

Iniciaremos el tópico de Herramientas de programación con una mirada a los criterios estructurados para la resolución de problemas.

Metodología para la resolución de problemas

Para poder hablar de la metodología para la resolución de un problema primero hay que tener en claro el concepto de método, el Diccionario Larousse define el termino como «El conjunto de operaciones ordenadas con que se pretende obtener un resultado«, así podemos decir que la metodología es la ciencia que aplica la definición de método para solucionar problemas de la vida real y existen muchos tipos de metodologías como la metodología de investigación, metodología de enseñanza–aprendizaje, etc., que aplicamos constantemente en nuestro día a día.

La resolución de problemas es un proceso complejo a través del cual se intenta encontrar el camino mas optimo para afrontar un obstáculo o desafió, usualmente este proceso es no lineal o sea que puede seguir caminos variados y muy diferentes dependiendo del problema y esto nos puede llevar a no tener una solución optima y a seguir caminos difíciles para intentar resolver dicho problema, para evitar esto es necesario conocer las fases para la resolución de un problema, en la computación la metodología para la resolución de problemas exige los siguientes pasos:

Definición del problema

Una de las fases mas importantes a la hora de resolver un problema computacional es la identificación o definición del problema, de esta fase dependerá todo el desarrollo posterior para la búsqueda de la solución, en esta fase hay que tener en cuenta el dominio del problema que no es mas que los conocimientos necesarios para que la información sea procesada de manera correcta dependiendo de las reglas que el dominio tenga, por ejemplo en el desarrollo de un sistema para la contabilidad el programador no necesariamente tiene que tener conocimientos en contabilidad (Dominio del problema) sin embargo al abordar el problema el programador necesitara el conocimiento y experiencia de un experto en el dominio del problema (Contador) para poder procesar y entender de manera correcta la información según las necesidades que se quieran satisfacer; ademas para llegar a una solución satisfactoria es necesario responder las siguientes cuestiones:

  • ¿Esta el problema bien definido y entendido por la parte de desarrollo?
  • ¿Cuales son los datos mínimos necesarios para resolver el problema? (Entradas)
  • ¿Que información se debe de proporcionar por el sistema tras la resolución del problema? (Salidas)

Un problema bien definido es una gran ayuda para que el proceso en general avance de manera optima, un problema mal definido provocara desvíos y malentendidos que posteriormente podrían convertirse en obstáculos cuya solución puede llegar a ser muy compleja, por ello es fundamental tanto el análisis de las entradas o la información inicial con la cual el sistema empezara el proceso a fin de separar la información pertinente de la que no lo es y así poder elegir la configuración y herramientas mas optimas respecto a las soluciones posibles; como la definición de las salidas o la información que el sistema entregara al terminar el proceso, esto para evitar expectativas negativas y garantizar la continuidad (en caso de haber) en los procesos que se integren posteriormente.

Análisis de la solución

Una vez bien definido el problema que se atacará teniendo en cuenta las entradas y salidas que se esperan el proceso continua con el análisis de la solución, por lo general la solución al problema tiene mas de una vía de solución y es útil teniendo esto en cuenta plantearse la mayor cantidad de soluciones posibles al problema y excluir las soluciones que tengan mas costo en cuanto a recursos como el tiempo, el procesamiento, la memoria, presupuesto, etc. así las probabilidades de encontrar la vía optima aumentan considerablemente, cabe resaltar que es conveniente también no extender demasiado la búsqueda de estas alternativas, por lo general la respuesta mas simple a una pregunta es la respuesta correcta.

Una vez teniendo nuestro repertorio de soluciones deberemos elegir la solución mas optima, es necesario que cada alternativa sea bien analizada para que la toma de decisiones este bien justificada ya que de esto depende el avance final hasta la solución, La orientación hacia adelante supone una irreversibilidad si las decisiones son acertadas o una reversibilidad costosa si la decisiones no son acertadas pues de ser así sera necesario retroceder en nuestro análisis lo que afectara el desarrollo del sistema.

En esta etapa se recomienda y una vez elegida la solución mas conveniente documentar dicha solución de manera teórica teniendo en cuenta los factores en la definición del problema (entradas, salidas, etc), ademas de identificar quienes intervendrán en el sistema, cuales serán los roles, que acciones se podrán realizar en él, como sera la interfaz para el usuario y cuales son los posibles errores que el usuario puede cometer al interactuar con el sistema, este análisis nos permite ahorrar tiempo en el desarrollo y encontrar soluciones mas optimas a los posibles errores que puedan encontrarse.

Desarrollo de la solución

En este paso se definen a partir de los puntos expuestos en el análisis de la solución las operaciones necesarias para solucionar el problema, la arquitectura del sistema y los pasos a seguir para la implementación y programación del mismo. La selección de los procesos también debe ser determinada en función de lo mas optimo, es decir, las operaciones deben llegar a la solución por el camino mas corto para garantizar la mayor eficiencia en el funcionamiento y el aprovechamiento de los recursos.

El objetivo principal de esta etapa es pues elaborar un plan de acción que contemple la arquitectura del sistema, sus mecanismos de lectura y escritura, las pruebas sobre cada uno de los procesos que se efectuarán en el sistema y la implementación del mismo, en caso de un sistema informático hay varias herramientas de programación para poder lograr esto tales como el algoritmo, diagramas de flujo, pseudo-codigos, etc. que nos ayudarán a visualizar como el sistema ira traduciendo mediante programación las entradas en salidas,

Teniendo el plan de acción se procede a la implementación del sistema sobre el entorno propuesto en los puntos anteriores, este entorno comprenderá los dispositivos donde se ejecutará, el lenguaje de programación que se usará, el tipo de base de datos de necesitarse, sistema operativo, librerías con o sin costo, cantidad de dispositivos, que tipo de arquitectura y que tipo de comunicación tendrá el sistema, aquí es donde las herramientas de programación usadas para el modelado del sistema se traducen a código funcional.

Evaluación de la solución

Una vez tenemos el prototipo final del sistema procedemos a hacer pruebas funcionales para determinar que el sistema cumple con el requerimiento principal, en los procesos industriales esta etapa suele llamarse control de calidad, se suele medir el rendimiento del sistema, su capacidad de recuperación ante bugs, la capacidad de comunicación, etc. se deben pulir pues los procesos ya realizados para tratar de llevarlos a un grado mayor de optimización pues el algoritmo mas eficiente es el que llega al objetivo con la mayor economía de recursos financieros e informáticos posibles.

Aquí también se aborda el tema del mantenimiento del sistema, donde se procede a realizar la revisión y corrección del código que pudiera estar causando problemas, el mantenimiento suele ser de varios tipos, ya sea el correctivo donde se realizan unicamente correcciones, el operacional donde se establecen acciones periódicas para que el sistema trabaje correctamente, y el aumento de características donde el cliente puede llegar a optar por soluciones mas complejas una vez que del sistema se obtienen los resultados esperados.

Cabe resaltar que en este apartado se aborda la documentación del sistema, esta comprende el análisis en forma escrita y detallada de los requerimientos, entradas, salidas, programación y recursos que se usaron para la implementación del sistema, esta documentación es importante ya que describe que se necesita para duplicar el sistema, como hace sus operaciones y que ambiente requiere, para poder tener referencias en un futuro del mismo, esto en caso de que se necesiten colaboradores u otra persona quede a cargo del sistema y se pueda retomar en menos tiempo que si se tuviera que entender desde cero.

Esta etapa suele no ser la etapa final de la resolución del problema ya que en muchas ocasiones los requerimientos del sistema pueden llegar a cambiar una vez dada la solución final, en cuyo caso se deberán realizar análisis complementarios y diseños alternativos contemplando los cambios para dar paso otra vez a la evaluación de la solución. Existen metodologías especializadas en software para contemplar estos escenarios, estos los abordaremos en otra entrega

Terminando con esta introducción en el siguiente post hablaremos del algoritmo y de las herramientas de programación usadas para detallarlo

Fuentes

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *