1.2.1. Fases de la metodología de programación

Independientemente del paradigma que se elija y del lenguaje que se utilice para programar, existe un conjunto de fases que deben seguirse para realizar un programa de computadora que constituyen una metodología (Levine, 2001):

Fases de la metodología de programación

Planteamiento del problema
Es la primera fase del ciclo, consiste en seleccionar y plantear el problema que se quiere resolver para poder comenzar su análisis. Es muy importante tener bien claro y delimitar desde un inicio el problema a resolver pues de esto dependerá el éxito de las siguientes fases del proceso. En el planteamiento del problema se deben considerar los insumos (datos de entrada) que se necesitan para resolver el problema; los pasos a seguir para su solución y el producto final (datos de salida).

Análisis del problema
En esta fase se determina ¿qué hace el programa? Por lo cual debe definirse de manera clara y concisa el problema en cuestión, se debe establecer el ámbito del problema, las características, limitaciones y modelos de lo que se desea resolver. Este paso debe conducir a una especificación completa del
problema en donde se describa cuáles son los datos requeridos para resolverlo (datos de entrada) y cuál es el resultado deseado (salida).

El análisis del ejemplo es muy simple y se resume en la siguiente tabla:

¿Cuál es la salida
deseada?
El área de un rectángulo, la cual identificaremos como área
¿Qué método(s) se
pueden utilizar para llegar
a la solución?
El área de un rectángulo se puede calcular con la siguiente fórmula: Área = Base por Altura
¿Qué datos de entrada se
requieren?
Por el planteamiento del problema y dado el método anterior, los únicos datos que se requieren son: la medida de la base que se representa por b y la medida de la altura indicada por h
¿Qué datos o información
adicional es necesaria
para solucionar el
problema?
En este caso no se requiere más información.
¿Existe algún problema o
condiciones que deban
cumplirse?
Las únicas restricciones son que las medidas de la base y altura sean mayores a cero.

Diseño del algoritmo
En esta fase se define ¿cómo el programa resuelve el problema? Para ello, se describe paso a paso la solución del mismo, lo cual se conoce como algoritmo.

Cuando el problema es grande se recomienda dividirlo en problemas más pequeños y resolver por separado cada uno de ellos. A esta metodología se le conoce como diseño descendente (top-down) o modular. Existen diferentes formas de representar un algoritmo, algunas formales como una fórmula matemática, o informales, como es el caso del lenguaje natural.

Para continuar con el desarrollo del programa ejemplo, se planteará la solución como una secuencia de pasos conocida como pseudocódigo:

Calcula el área de un rectángulo

  1. Obtener la medida de la base (b) y la altura (h)
  2. Cálcular: área = b por h
  3. Imprimir el resultado (área)

Los algoritmos en la programación. Como ya se mencionó, las computadoras necesitan recibir indicaciones en un formato entendible para ellas, con el fin de que realicen las acciones deseadas. Las indicaciones u órdenes se agrupan en un programa, al conjunto de programas se le conoce como software. Para analizar la estructura de un programa, éste “se puede dividir en dos partes que son: el formato de representación interno del programa, que constituye el lenguaje máquina o código ejecutable, y el formato de presentación externa, que es un archivo o un conjunto de archivos, que puede o no estar en un formato que puede ser leído por el usuario (es decir, en un formato que respeta las reglas)” (Juganaru, 2014, p.2).

Para que la computadora realice las acciones deseadas, es necesario elegir el software más adecuado para escribir un programa que realice la acción deseada., a esta acción se le denomina programación, con ello, no se afirma que la programación es sólo la escritura de código, la programación implica “un conjunto de tareas que se deben cumplir, a fin de que el código que se escribió resulte correcto y robusto, y cumpla con el objetivo o los objetivos para los que fue creado.” (Ibídem) Para ello, es preciso realizar dos acciones
dependiendo del tipo de problema a resolver o acciones a realizar:

• “Conocer las herramientas, los formalismos y los métodos para transformar un problema en un programa escrito en un lenguaje (que posiblemente no será el lenguaje máquina), y para que dicho programa pueda ser transformado en un código ejecutable.

• Saber transformar el problema inicial en un algoritmo y luego en un
programa” (Ibídem)

Para los casos de problemas muy generales, existen métodos conocidos que solo se adaptan a un problema en particular, el método es por lo general un algoritmo o una técnica de programación.

La palabra algoritmo proviene del nombre de un matemático persa conocido como Mohammad Al-KhoWârizmi, nacido alrededor del 780 d. c. en KhoWârizm, de ahí su seudónimo. Se considera como el padre de la algoritmia porque definió las reglas paso a paso para sumar, restar, multiplicar y dividir
números decimales. La traducción al latín de Al-Khwārizmī es algoritmi, que da origen a la palabra algoritmo (Joyanes & Zohanero, 2005). Según la RAE (2016) un algoritmo es un “Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema”, y también es “Método y notación
en las distintas formas del cálculo”.

Formalmente, en programación, un algoritmo se define como una secuencia finita de instrucciones precisas y eficaces para resolver un problema, que trabaja con uno o más datos (entrada) y devuelve un resultado (salida) (Viso & Peláez, 2007).

Para llegar a la solución de un problema se requiere creatividad, ya que el programador sólo cuenta con la especificación del problema y su experiencia en resolverlos de una forma estructurada de inicio a fin.

Existen dos maneras de representar un algoritmo: una gráfica, conocida como diagramas de flujo; y otra, similar a un lenguaje humano, la cual se denomina pseudocódigo.

Los diagramas de flujo son una representación totalmente gráfica de un algoritmo que utiliza símbolos para representar las instrucciones y flechas para unirlas e indicar el orden en el que deben ejecutarse llamadas líneas de flujo, lo anterior hace más fácil seguir la secuencia de la ejecución de las instrucciones. Dichos símbolos fueron normalizados por el Instituto Norteamericano de Normalización ANSI (American National Standards Institute, por sus siglas en inglés).

Algunos de los símbolos más utilizados se muestran en el siguiente cuadro:

A continuación, se muestra el diagrama de flujo del problema que hemos tomado como ejemplo en esta Unidad y que consiste en calcular el área de un rectángulo:

El pseudocódigo es un lenguaje de especificación formal de algoritmos. La solución de un problema se representa de manera narrativa utilizando palabras claves, generalmente verbos, escritos en un lenguaje natural, que en nuestro caso será español. Es una de las representaciones de algoritmos más utilizadas por su parecido con el lenguaje natural y porque su codificación en un lenguaje de programación estructurado y modular como C es directa. En el ejemplo anterior se muestra el pseudocódigo escrito en solución al problema de calcular el área de un rectángulo.

Un algoritmo también se puede expresar mediante una fórmula matemática, en el caso del ejemplo que hemos tratado, esta fórmula es:

área = base por altura

Se puede utilizar cualquiera de las dos representaciones para diseñar un algoritmo, pues en cualquiera de las dos se puede expresar un algoritmo estructurado, de tal manera que la más conveniente depende del estilo de cada programador.

La forma de evaluar el correcto funcionamiento del pseudocódigo es a través de una prueba de escritorio. La prueba de escritorio consiste en que el programador siga los pasos descritos en el pseudocódigo simulando el comportamiento de la computadora. Para ello requiere definir un conjunto de datos de prueba que le permita evaluar todos los posibles resultados que se obtendrán una vez que se lleve a cabo todos los pasos descritos en el pseudocódigo. Para fines de comprobación y de familiarización del funcionamiento de un pseudocódigo se recomienda utilizar un número finito de datos y escribir las variables en una hoja de papel, para el caso de un problema simple, para el desarrollo de sistemas más complejos existen herramientas más acordes para realizar esta comprobación.

A continuación, se expone un ejemplo de prueba de escritorio considerando los datos del problema anterior.

Datos de entradaOperación o instrucción a realizarResultado
Base, alturaÁrea=base*alturaÁrea
5, 105*1050

En este ejemplo no se muestran variables porque se trata de un pseudocódigo; en el caso de verificar el funcionamiento del código de un programa, será necesario desglosar cada una de las variables que intervienen en el proceso.

Implementación (codificación)

El algoritmo no puede ser ejecutado por una computadora, por ello debe traducirse a un lenguaje de programación (como por ejemplo el lenguaje C) para obtener un programa fuente que se traduzca a lenguaje de máquina que pueda ser ejecutado por la computadora.

En el siguiente cuadro se muestra la codificación del algoritmo en lenguaje C, por el momento no profundizaremos en la estructura y los componentes de este lenguaje, simplemente se expone este código a manera de ejemplo de lo que se produce en la fase de implementación o codificación.

#include<stdio.h> 
#include<stdlib.h> 
main() 
{ 
      int b,h, area; 
printf("Ingresa la base y altura:"); 
scanf("%d %d", &b,&h); 
      area = b * h; 
      printf("Area = %d", area); 
} 

Ejemplo de Programa en lenguaje C que calcula área de un rectángulo.

Validación y pruebas
Esta fase se lleva a cabo una vez que se ha codificado el algoritmo previamente diseñado con el fin de verificar que su ejecución sea correcta. Existen diferentes formas de probar que la solución es correcta, algunas de ellas son formales y otras informales: las primeras se utilizan para garantizar que el programa o algoritmo siempre calcule el resultado deseado para cualquier conjunto de datos de entrada; en cambio, en las segundas sólo se prueba que funciona correctamente para algunos datos de entrada, tratando de encontrar posibles errores, en este caso no se puede garantizar que el programa o algoritmo
calcule la salida correcta para cualquier conjunto de datos. En cualquiera de los dos casos, si se encuentra alguna falla se debe corregir y volver a realizar pruebas.

Dado que el problema que estamos analizando como ejemplo es muy sencillo, si se ejecuta manualmente el programa o algoritmo relacionado para un caso específico de rectángulo se observará que el resultado es correcto. En la siguiente figura se ilustra la ejecución del programa:

Documentación
Cualquier proyecto de software por la complejidad que tiene requiere que tanto las ideas principales como el desarrollo de principio a fin sea documentado con el fin de que se pueda entender la lógica del programa y de ser necesario se pueda modificar o darle mantenimiento posteriormente, sin tantas complicaciones. Es común que si se desea modificar un programa y no se tiene información acerca de cómo fue construido originalmente, sea más fácil volverlo a hacer desde el principio que intentar entender la lógica aplicada en un inicio. Uno de los mejores ejemplos de la importancia de la documentación es el software libre, en el cual colaboran diversos desarrolladores para su elaboración, teniendo el código fuente disponible para modificarlo a su conveniencia. Estos desarrolladores se encuentran en diferentes puntos geográficos del globo terráqueo e incluso varios hablan diferentes idiomas, así es que la documentación les permite entender lo que está haciendo cada uno y bajo qué método está trabajando.

Como parte de la documentación también deben incluirse manuales de usuario y las normas de mantenimiento para que se haga un buen uso del software y éste se mantenga al día.

Mantenimiento
Esta fase tiene sentido una vez que fue terminada y liberada una primera versión del programa, misma que ya está siendo utilizada. En esta fase se actualiza y modifica dicho programa para corregir errores no detectados o para cambiar y/o agregar una nueva función. Siguiendo con nuestro ejemplo, se podría extender el programa ejemplo que calcula el área de un rectángulo para obtener también su perímetro:

#include<stdio.h> 
#include<stdlib.h> 
main() 
{ 
      int b,h, area, perimetro; 
printf("Ingresa la base y altura:"); 
      scanf("%d %d", &b,&h);
perimetro = 2*b + 2*h; 
area = b * h; 
printf("Perimetro = %d", perimetro); 
      printf("Area = %d", area); 
}

Ejemplo de mejora al programa original incluyendo el cálculo del perímetro de un rectángulo

En el programa se resaltan las instrucciones que se añadieron para calcular el perímetro.

La metodología de programación sirve para desarrollar software desde el inicio con su diseño hasta el final con su implementación, de ahí la importancia de entender las diferentes fases y las actividades involucradas en cada una de ellas, con el fin de dar una solución óptima al problema en cuestión.

Share to...