Tema 5: Pasos para la solución de un problema de software

 La "solución al problema" a través de la computadora consiste en un proceso que, generalmente expresado en un lenguaje natural y, en términos de dominar el problema, le permite desarrollar un programa que resuelva dicho problema.

Este proceso exige los siguientes pasos:

  •  Análisis
  •  Diseño
  • Codificación
  • Prueba 
  • Mantenimiento 
  • Prueba de Escritorio

                                                     ANÁLISIS

En esta fase se procede a analizar las necesidades que tienen los usuarios del futuro sistema software y que deben ser satisfechas mediante el funcionamiento del mismo. El cliente que realiza el encargo expone sus necesidades, requisitos que debe cumplir el software y la empresa que va a realizarlo los recoge y analiza. De acuerdo con esto, elabora una especificación precisa del sistema a desarrollar

                                           

                                                                      DISEÑO

Se investiga la fase las posibles opciones de implementación para el software construido para

determinar la estructura general de lo mismo. El diseño es una etapa compleja, y el proceso

debe ejecutarse repetidamente.

La solución inicial puede no ser la más apropiada, por lo que en ese caso necesita mejorarla. Sin

embargo, hay un catálogo de patrones de diseño muy conveniente que recopila errores de que

otras personas no caen en la misma trampa. Se investiga la fase las posibles opciones de

implementación para el software construido para determinar la estructura general de lo mismo.


CODIFICACION

Durante esta la etapa se realizan las tareas que comúnmente se conocen como programación;

que consiste, esencialmente, en llevar a código fuente, en el lenguaje de programación elegido,

todo lo diseñado en la fase anterior, haciendo uso de prototipos, así como pruebas y ensayos

para corregir errores. Esta tarea es llevada a cabo por el programador, que es seguida por las

pautas que se imponen al diseño y siempre teniendo en cuenta los requisitos funcionales y no

funcionales

                         

En la etapa de programación, el código puede aceptar varios estados, dependiendo de la forma

de trabajo y el idioma seleccionado, a saber:

• Código fuente

• Código objeto

• Código ejecutable

Se propusieron varios métodos de programación, cuyo propósito es mejorar tanto el proceso de

creación de software como de mantenimiento. Entre ellas, se pueden mencionar las siguientes:

• programación estructurada

• programación modular

• programación orientada a objetos (POO) programación declarativa

                                         PRUEBA

                         
Las pruebas de software siguen un proceso común. Las tareas o pasos incluyen la definición del entorno de prueba, el desarrollo de casos de prueba, la escritura de guiones, el análisis de los resultados de la prueba y el envío de informes de defectos.

Las pruebas pueden llevar mucho tiempo. Las pruebas manuales o bajo demanda pueden ser suficientes para compilaciones pequeñas. Sin embargo, para sistemas más grandes, las herramientas se utilizan con frecuencia para automatizar tareas. Las pruebas automatizadas ayudan a los equipos a implementar diferentes escenarios, probar diferenciadores (como mover componentes a un entorno de nube) y obtener comentarios rápidamente sobre lo que funciona y lo que no.

Un buen enfoque de prueba abarca la interfaz de programación de aplicaciones (API), la interfaz de usuario y los niveles del sistema. Además, cuantas más pruebas se automaticen y se ejecuten antes, mejor. Sin embargo, las soluciones de los proveedores ofrecen funciones que pueden optimizar las tareas clave de gestión de pruebas, como:

  • Prueba continua.
  • Gestión de la configuración.
  • Virtualización de servicios.
  • Seguimiento de defectos o errores.
  • Métricas e informes.

                                        Mantenimiento    

                                

  El mantenimiento del software consiste en cambiar el software de acuerdo con la entrega de clientes a los errores correctos, una mayor productividad o adaptación del producto a un entorno cambiado. Existen cuatro tipos de mantenimiento.

•      Mantenimiento adaptativo. Esto se centrará en la modificación del producto de acuerdo con los cambios que pueden ocurrir tanto a nivel de software como de hardware. Es el mantenimiento más común.

•      Mantenimiento correctivo. Concéntrese en la corrección de errores que pueden ocurrir cuando se entrega el producto.

•      Mantenimiento perfectivo. Perfeccionamiento de la aplicación tras el uso y descubrimiento de nuevas mejoras que pueden ser incluidas.

•      Mantenimiento preventivo. Modificación del producto para mejorar la usabilidad, sin alterar sus especificaciones.

                                  Prueba de Escritorio

    Una prueba de escritorio es un tipo de prueba algorítmica que consiste en la validación y verificación del algoritmo a través de la ejecución de las sentencias que lo componen (proceso) para determinar sus resultados (salida) a partir de un conjunto inicial determinado de elementos (entrada).

Por simplicidad y para facilitar la comprensión de la prueba se repetirá aquí la versión en diagrama de flujo, pero se puede y recomienda consultar también la versión en Pseudo código.

                    
Suponga que desea saber cuál es MCD de 15 y 4. Una prueba de escritorio para el algoritmo de MCD consistiría, en primer lugar, de la identificación de las variables involucradas, es decir:
m =
n =
r =
La sentencia Obtener(m, n) (proceso de entrada) definirá los valores de las variables m y n respectivamente que, con base en lo planteado en el algoritmo y en lo que se desea saber sería:
m = 15
n = 4
r =
mientras que r se define en función de la expresión r = m mod n, es decir:
m = 15
n = 4
r = 3
el siguiente paso es verificar la condición del while (¿es el residuo r distinto de cero?). Como dicha condición es evaluada como verdadera (tres es distinto de cero), se tendría la siguiente secuencia de valores para las variables con base en las operaciones descritas si se sigue el lado derecho del diamante, mismas que constituyen las operaciones realizadas dentro del ciclo:
m = 15, 4
n = 4, 3
r = 3, 1
para la primera iteración o ejecución del ciclo. Como el residuo es distinto de cero, la condición del ciclo es verdadera y sea realiza una segunda iteración, generando ahora los valores:

m = 15, 4, 3
n = 4, 3, 1
r = 3, 1, 0
de donde puede verse, que el MCD de 15 y 4 es 1 (almacenado en n) cuando la condición del ciclo se hace falsa, debido a que el residuo es finalmente cero.

Asegúrese de comprender el proceso descrito y genere usted mismo cada uno de los valores descritos para corroborar lo aquí expuesto. También utilice ahora los mismos valores, pero intercambiados, ¿qué sucede? ¿qué secuencia de valores se genera? ¿cuál es el MCD? ¿cuál es ahora el MCD de 15 y 10? ¿cuál es el MCD de 10 y 15?

Pruebe con otros valores hasta que comprenda el funcionamiento del algoritmo, y compruebe los resultados de sus pruebas de escritorio con los algoritmos descritos en diagrama de flujo y pseudo código respectivamente.


Autor: Cristhian Alvarado Castro