1.1.4 Otras Técnicas de Diseño

Programación convencional

El objetivo principal de esta técnica de programación era fundamentalmente que el programador fuera capaz de desarrollar el programa sin preocuparse de su mantenimiento. Esto daba lugar a programas sin ninguna estructura que se componían de instrucciones seguidas y donde era muy difícil localizar las partes funcionales del programa para cualquiera que no fuera el programador que la desarrollo.

Algunos de los problemas más destacables de este tipo de programación son los siguientes.

  • Dificultad para depurar, localizar y corregir  errores.
  • Dificultad en la modificación, ampliación o desarrollo de nuevos módulos en el programa, hasta el punto de que a veces, es mejor volver a desarrollar el programa para modificarlo.
  • Dificultad en la transportabilidad del programa.
  • No suelen estar documentados, lo que dificulta la comprensión del programa.
  • Problemas de redundancia en el código, ya que una misma secuencia de instrucciones se puede repetir en varias partes del programa.

Como se puede ver, la programación convencional no es la más aconsejable para el desarrollo de software, por lo que se hace necesario usar otras técnicas que faciliten la labor del programador y que den como resultado un programa

 PROGRAMACIÓN ESTRUCTURADA

Esta utiliza las técnicas tradicionales del campo de programación y que data de las décadas de 1960 y 1970, especialmente desde la creación del lenguaje pascal por Niklaus Wirth.

Esta técnica apareció a principios de los setenta a de la mano de E. W. Dijkstra. Tiene las características de la programación modular y, además, establece que un programa debe cumplir los siguientes principios:

  • Estructuras básicas de control:
    • Secuencial: ejecuta las acciones sucesivamente  sin bifurcaciones.
    • Alternativa: Únicamente ejecuta alternativas dependiendo de una condición o predicado. Pueden ser de alternativas simples o múltiples.
    • Repetitiva: Ejecuta las acciones un número determinado de veces.
    • Iterativa: Ejecuta las acciones dependiendo de un valor predefinido o condición.
    • Recursos Abstractos: Proceso en el que se ejecutan diferentes pasos hasta encontrar la solución del problema,  aunque para ello se deban descomponer las acciones en otras sub-acciones más elementales.
    • Metodología descendente: también conocida como ¨arriba–abajo¨ Consiste en el establecimiento de niveles de mayor a menor complejidad que lleven a la solución del problema.

Cada etapa se relaciona con la posterior y con la anterior por medio de entradas y salidas de información. La programación estructurada se basa en la representación en forma de árbol y la descomposición funcional.       

Los pequeños programas utilizan uno métodos conocidos como paradigmas y se demuestran eficientes, El programador solo tiene que crear una lista de instrucciones en un lenguaje de programación, compilar en la computadora y esta, a su vez, ejecuta estas instrucciones. Cuando los programas se vuelven grandes, cosa que lógicamente sucede a medida que aumenta la complejidad del problema a resolver, la lista de instrucciones aumenta considerablemente, de modo tal que el programador tiene muchas dificultades para controlar ese gran número de instrucciones. Los programadores pueden controlar, de modo normal, unos centenares de líneas de instrucciones. Para resolver este problema los programas se descompusieron en unidades más pequeñas que adoptaron el nombre de funciones (métodos, procedimientos, subprogramas o subrutinas según la terminología de lenguajes de programación). De este modo en un programa orientado a procedimientos se divide en funciones, de forma que cada función tiene un propósito bien definido y resuelve una tarea concreta, y se diseña una interfaz claramente definida (el prototipo o cabecera de la función) para su comunicación con otras funciones.

 Con el paso de loa años, la idea de dividir el programa en funciones fue evolucionando y se llegó al agrupamiento de las funciones en otras unidades más grandes llamadas módulos (normalmente, en el caso de C, denominadas archivos o ficheros); sin embargo, el principio seguía siendo el mismo agrupar componentes que ejecutan listas de instrucciones (sentencias)

Posteriormente se implantaron las estructuras básicas de control por Bohm y Jacopini  como son la secuencia, la decisión (denominada selección y la de bucles o lazos (denominada repetición o iteración). Las estructuras básicas de control especifican el orden en que se ejecutan las distintas instrucciones de un algoritmo o programa, Una construcción (estructura, instrucción o sentencia en la jerga de lenguajes de programación) es un bloque de instrucciones de  un lenguaje y una de las operaciones fundamentales del lenguaje.

  • La estructura secuencial ejecuta las sentencias en el orden en que están escritas o se señala expresamente.
  • La estructura de selección se implementa en uno de los tres formatos siguientes:
    • Sentencia if (si) : selección única.
    • Sentencia if-else (si-entonces): selección doble.
    • Sentencia switch (según_sea): selección múltiple.
  • La estructura de repetición se implementa en 3 formato diferentes:
    • Sentencia while (mientras)
    • Sentencia do-while (hacer-mientras)
    • Sentencia for (desde/para)
    • La programación estructurada promueve el uso de las tres sentencias de control:
      • Secuencias de selección  (sentencias if, if-else, switch)
      • Secuencias de repetición (while, dowhile, for)

Existen muchos métodos de Programación Estructurada que se diferencian, básicamente, en la representación del proceso y en la construcción de enlaces entre estructuras.

Los métodos más conocidos son

  • Michael Jackson
  • Bertini
  • Lassy. De la Universidad de Nancy.
  • Warnier.
  • Gordfolh.