SlideShare une entreprise Scribd logo
1  sur  6
Las Fases de la Programación
Por J. F. Díaz (jfdiaz98@hotmail.com)
Lic. en Ciencias de la Computación
El proceso de la creación de software requiere el uso de una metodología sistemática de
desarrollo que permita un acercamiento gradual a la solución del problema que se intenta
resolver. Esta metodología, llamada Ciclo de Desarrollo del Software, consta de una serie de
pasos lógicos secuenciales denominados Fases, las cuales son el tema de este artículo.
Aunque es posible crear programas sin la aplicación de esta metodología, el producto
resultante carece de los beneficios que provee la utilización de este enfoque.
Las Fases de la Programación son:
1. Definición del problema
2. Análisis del problema
3. Diseño de la solución
4. Codificación
5. Prueba y Depuración (Puesta a Punto o Testing)
6. Documentación
7. Implementación (Producción)
8. Mantenimiento
Aunque el proceso de crear software es esencialmente un proceso creativo, el seguir esta serie
de pasos lógicos conduce a la obtención de programas de mayor calidad. Es muy común que
los principiantes se salten algunos pasos de esta metodología por desconocimiento o pereza, y
procedan directo a la codificación de los programas. Esta práctica no sólo es incorrecta, sino
que hace perder tiempo, dinero y esfuerzo. Aún los programadores experimentados y los
profesionales utilizan esta metodología en el desarrollo de su programas. Los resultados que se
obtienen con su aplicación son más confiables, rápidos y seguros que los obtenidos mediante
prácticas incorrectas y desordenadas.
1. Definición del Problema
Consiste en la obtención sin ambigüedades de una visión general y clara del problema. Ayuda
a identificar los elementos claves del problema y los de la futura solución, así como fijar los
límites de los mismos basados en su planteamiento textual sobre el papel. Un problema mal
planteado, incompleto o mal comprendido es un mal inicio para la programación. Las
respuestas a las siguientes preguntas son claves para la correcta definición de un problema:
• ¿Qué entradas se requieren, de qué tipo, en qué orden y qué cantidad?
• ¿Qué salidas se desean, de qué tipo, en qué orden y qué cantidad?
• ¿Qué método(s) o fórmula(s) produce(n), o puede(n) producir las salidas deseadas?
Dependiendo de qué tan precisas sean las respuestas a esas preguntas, así será la definición
del problema, sobre todo en cuanto al orden explícito de las entradas y las salidas esperadas.
Mientras no se comprenda con claridad el problema por resolver no puede pasarse a la fase
siguiente.
2. Análisis del Problema
Es la comprensión a fondo del problema y sus detalles y es un requisito para lograr una
solución eficaz. Es precesamente en esta fase donde se definen formal y correctamente la
Entrada que recibirá el programa (datos o materia prima), la Salida que producirá
(información o resultados) y el Proceso necesario para su solución (el método para convertir
los datos de entrada en información de salida). Cada uno de estos aspectos coincide
respectivamente con las preguntas planteadas en la fase de Definición del Problema. A este
enfoque se le conoce comúnmente como E-P-S (Entrada-Proceso-Salida).
3. Diseño de la solución
En esta fase se diseña la lógica de la solución a usar, o sea, cómo hará el programa la tarea
que se desea automatizar usando los datos de entrada para generar los datos de salida,
enfatizándose los diseños limpios, sencillos y claros. Pueden plantearse diferentes alternativas
de solución al problema y elegir la más adecuada, la que produzca los resultados esperados en
el menor tiempo y al menor costo. El proceso de diseño se realiza en dos pasos:
3.1 Elaboración del Algoritmo
Un algoritmo es una secuencia lógica y cronológica de pasos encaminados a resolver un
problema. Las acciones básicas que puede llevar a cabo un algoritmo son: pedir datos,
desplegar datos, evaluar condiciones y ejecutar operaciones.
Los programas se estructuran a partir de los algoritmos, los cuales se pueden escribir utilizando
la técnica convencional del pseudocódigo (mezcla de lenguaje común, términos técnicos de
computación, símbolos y palabras reservadas de algún lenguaje de programación) y los
diagramas de flujo (flujogramas) que son la representación gráfica de un algoritmo, plasmados
en papel para su estudio. En el caso de emplear diagramas de flujo pueden emplearse
herramientas de software tales como el DFD v1.0. Si se opta por el pseudocódigo, se
recomienda escribirlos a doble interlínea para efecto de facilitar modificaciones o adición de
acciones no consideradas y dotarlos de las siguientes características.
3.1.1 Características de los Algoritmos
• Un algoritmo debe tener un punto de inicio o partida.
• Debe ser preciso e indicar el orden de realización de cada paso.
• Debe estar bien definido. Si se sigue un algoritmo dos veces, se debe obtener el
mismo resultado cada vez.
• Debe ser finito (tener un número finito de pasos). Si se sigue un algoritmo, se debe
terminar en algún momento.
La definición de un algoritmo debe describir con claridad las tres partes fundamentales del
problema: Entrada, Proceso y Salida encontradas en las fases de Definición y Análisis del
problema.
Se deja sentado que todos los programas empiezan primero en papel, no directamente frente a
la computadora. Aún los programadores más experimentados plasman en papel sus ideas y
soluciones antes de programarlas. Pero es común que los novatos vayan directamente a la
computadora sin haber siquiera leído bien el problema o pensado siquiera el algoritmo.
Eventualmente podrán concluir el programa y alcanzar una solución, pero sólo después de
probar diferentes ideas, hacer miles de cambios y perder gran cantidad de tiempo y esfuerzo.
Los que se toman tiempo para analizar el problema, pensar y plasmar su solución en papel
mediante un algoritmo tendrán un tiempo de respuesta (el tiempo para obtener el programa
terminado) mucho menor, y se convierten en mejores programadores. Es un hecho.
Los problemas complejos pueden solucionarse más eficazmente utilizándo el método "Divide y
Vencerás", el que consiste en fraccionar un problema complejo en otros más simples y más
fáciles de solucionar. Esto conduce a la Modulación del programa auxiliado por el método de
diseño Top-Down o Descendente en el que se da un refinamiento de los pasos del algoritmo.
De hecho, el enfoque E-P-S mencionado anteriemente es un buen ejemplo de esto, pues al
concentrarse en resolver cada uno de los tres aspectos del enfoque de manera independiente
se lograr la solución del problema completo.
3.2 Realización de Pruebas de Escritorio
O sea, comprobaciones a mano del algoritmo planteado (en pseudocódigo o en diagrama de
flujo) con datos y resultados de prueba conocidos, papel, lápiz y calculadora (si es necesaria)
para simular su ejecución y evaluar su correcta operación. Si la lógica es correcta, los
resultados serán satisfactorios. Si no, el algoritmo deberá modificarse y volverlo a probar hasta
que esté correcto. Algunos programas no son fáciles de probar a mano por su complejidad y/o
tamaño, pero en tu ayuda está la verificación durante la programación inicial (la creación del
algoritmo), el trace and debugging (rastreo y detección de errores) automático que incorporan
los lenguajes de compiladores de los lenguajes de programación y otras técnicas. Se hace
notar que éste acápite depende de los anteriores. Si la definición y el análisis son errados, el
diseño del programa también lo será, por lo que se tendrá que rehacer, retrocediendo quizá
hasta la fase de Definición del problema.
4. Codificación
En este paso se traduce el algoritmo ya estructurado, verificado y comprobado a mano, al
lenguaje de programación que vaya a utilizarse. Sólo se convierten las acciones del algoritmo
en instrucciones de computadora usando la sintaxis de un lenguaje particular, pero requiere de
conocimientos del lenguaje y de sumo cuidado en la colocación de las instrucciones, las que
deben apegarse y seguir fielmente a la lógica del algoritmo y la semántica y sintaxis del
lenguaje.
La digitación, el acto de teclear el algoritmo codificado, se lleva a cabo para almacenar el
programa en la memoria de la computadora (virtual o física) y pueda ser aceptado por esta.
Con frecuencia los programadores realizan la codificación y la digitación al mismo tiempo a fin
de ahorrar tiempo, pero esto puede conducir a errores debido a la pérdida de concentración
que implica el uso de un editor.
La compilación, o corrección de los errores sintácticos y semánticos del código, es la
eliminación de los errores "gramaticales" según las reglas de construcción de instrucciones
particulares del propio lenguaje (la sintaxis). Puede hacerse a medida que se traduce, pero es
mejor al final para no perder la secuencia de la codificación. Al terminar debe tenerse el código
libre de los errores antes mencionados.
Para realizar la compilación puede hacerse uso de un compilador, el cual es un programa
especial que analiza todo el código fuente y detecta los errores antes mencionados
ocasionados durante la codificación o la digitación. Las fallas de lógica que puedan existir en
nuestro programa no son detectadas por este software. Los errores que sí son evidenciados
por el compilador deben corregirse modificando el programa fuente.
5. Prueba y Depuración (Puesta a Punto o Testing)
Una vez compilado el programa, este es sometido a pruebas a fin de determinar si resuelve o
no el problema planteado en forma satisfactoria. Para ello le suministramos datos de prueba,
como lo hicimos en la prueba de escritorio. El programa codificado y compilado no garantiza
que funcione correctamente. Debe depurarse (librarse de errores de lógica o de ejecución)
realizando corridas de prueba continuas con datos y respuestas conocidas como lo hicimos en
la prueba de escritorio, verificando todas las posibles alternativas del programa y sus
respuestas y haciendo el mayor número de variantes con sus combinaciones, a fin de
determinar si resuelve o no el problema planteado en forma satisfactoria.
Las pruebas que se aplican al programa son de diversa índole y generalmente dependen del
tipo de problema que se está resolviendo. Comúnmente se inicia la prueba de un programa
introduciendo datos válidos, inválidos e incongruentes y observando como reacciona en cada
ocasión.
Los resultados obtenidos en las pruebas pueden ser cualquiera de los siguientes:
a. La lógica del programa esta bien, pero hay errores sencillos, los cuales los corregimos
eliminando o modificando algunas instrucciones o incluyendo nuevas.
b. Hay errores ocasionados por fallas en la lógica, lo que nos obliga a regresar a las fases
de Diseño y Codificación para revisión y modificación del diagrama.
c. Hay errores muy graves y lo más aconsejable es que regresemos a la fase 2 para
analizar nuevamente el problema, y repetir todo el proceso.
d. No hay errores y los resultados son los esperados. En este caso guardamos el
programa permanentemente en un medio de almacenamiento.
Puede ser necesario en la mayoría de los casos retroceder a fases previas de desarrollo,
revisar el algoritmo otra vez en caso de errores de análisis y/o lógica (que son los más difíciles
de detectar, a diferencia de los de sintaxis y semántica), realizar ajustes al código y una serie
de nuevas ejecuciones de prueba para que el programa funcione correctamente. Si no existen
errores en el programa, puede entenderse la depuración como una etapa de refinamiento en la
que se ajustan detalles para optimizar el desempeño del programa.
Si se está automatizando alguna tarea manual, es común poner a funcionar por un tiempo y de
forma paralela ambas alternativas, a fin de comparar las salidas de ambas y adquirir confianza
en la solución automatizada.
6. Documentación
Es la fase más ignorada por la mayoría de los programadores noveles, por razones de tiempo,
costos o simple pereza. Pero no documentar los programas es un mal hábito en programación
y un gran error. Será muy difícil a los usuarios entender un programa si no cuentan con un
manual de operaciones (el Manual de Usuario). También para los programadores que
necesiten darle mantenimiento o hacerle modificaciones si no existe ninguna documentación
acerca de sus fases de desarrollo. Incluso será difícil de entender para el mismo autor, algún
tiempo después.
La documentación es la guía o comunicación escrita en sus variadas formas, ya sea en
enunciados, procedimientos, dibujos o diagramas y sirve para ayudar a comprender o usar un
programa o para facilitar futuras modificaciones (mantenimiento). Recoge todos los elementos
encontrados y material creado en las diferentes fases del desarrollo, además de las normas de
instalación o las recomendaciones para la ejecución del programa.
La documentación se divide en tres partes:
• Documentación Interna
• Documentación Externa
• Manual del Usuario
Documentación Interna: Son los comentarios que se añaden al código fuente para clarificarlo.
Documentación Externa: Es todo el material creado y empleado en las diferentes fases del
desarrollo del programa. Incluye:
• Descripción del Problema
• Narrativo con la descripción de la solución
• Autor(s)
• Algoritmo (diagrama de flujo y/o pseudocódigo)
• Código Fuente (programa)
• Relación de los elementos utilizados en el programa, cada uno con su respectiva
función
• Limitaciones del programa
Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de
que los usuarios pueda operarlo correctamente y obtener los resultados deseados.
7. Implementación (Producción)
El programa ya probado, revisado y mejorado se considera terminado y puede utilizarse con un
alto grado de confianza para resolver los problemas que dieron origen a su creación. Si se está
automatizando alguna tarea manual, ésta última se desecha para emplear solamente la
programa.
8. Mantenimiento
Es posible que el programa deba revisarse cada cierto tiempo para ajustes. Estos cambios
pueden ser por la dinámica del problema, por la naturaleza del código, las exigencias del
tiempo o las modernas necesidades que surgen frecuentemente, por lo que se considera que
ningún programa es estático. Los programas siempre son susceptibles de mejoras y de
mantenimiento. Por tales razones, es común que se tenga que retornar a una de las fases
iniciales de desarrollo para corregir o añadir funcionalidades, repitiendo el proceso en cada fase
subsiguiente para introducir los cambios pertinentes y lograr que el programa funcione
correctamente con los cambios realizados. Se enfatiza el hecho de que cualquier actualización
o cambio en el programa deberá reflejarse en su documentación para que ésta mantenga su
vigencia.-
Las fases de la programación
Las fases de la programación

Contenu connexe

Tendances

Estrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemasEstrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemasmaricelaguilar
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Dulcevelazquez6
 
Modelado del sistema
Modelado del sistemaModelado del sistema
Modelado del sistemaIsrael Rey
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionalesAndreina Trejo
 
Elementos para Construir Algoritmos I Parte.pptx
Elementos para Construir Algoritmos I Parte.pptxElementos para Construir Algoritmos I Parte.pptx
Elementos para Construir Algoritmos I Parte.pptxNaidalyRincn
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosmarigelcontreras
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoRosbelia Balza
 
Ejercicio 2 diagrama de flujo
Ejercicio 2 diagrama de flujoEjercicio 2 diagrama de flujo
Ejercicio 2 diagrama de flujolisvancelis
 
Métricas de un proyecto
Métricas de un proyectoMétricas de un proyecto
Métricas de un proyectoloscomodos
 
Evolucion de la teoria general de los sistemas tgs
Evolucion de la teoria general de los sistemas tgsEvolucion de la teoria general de los sistemas tgs
Evolucion de la teoria general de los sistemas tgsLeonardo Alipazaga
 
Diagramas de casos de uso
Diagramas de casos de usoDiagramas de casos de uso
Diagramas de casos de usoRonny Parra
 
Traza de un algoritmo
Traza de un algoritmoTraza de un algoritmo
Traza de un algoritmolisbeca
 
Modelación de Sistemas vs Simulación de Sistemas
Modelación de Sistemas vs Simulación de SistemasModelación de Sistemas vs Simulación de Sistemas
Modelación de Sistemas vs Simulación de SistemasVeronica Salazar
 
Ejercicios de diagramas de flujo en raptor
Ejercicios de diagramas de flujo en raptorEjercicios de diagramas de flujo en raptor
Ejercicios de diagramas de flujo en raptorMaryRomero77
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesKarina Arguedas Ruelas
 
Estructuras algoritmicas representación
Estructuras algoritmicas representaciónEstructuras algoritmicas representación
Estructuras algoritmicas representaciónBenjamin Medina Ramirez
 
Tecnicas y herramientas para el desarrollo de software
Tecnicas y herramientas para el desarrollo de softwareTecnicas y herramientas para el desarrollo de software
Tecnicas y herramientas para el desarrollo de softwareReynaldo Mayz
 
Presentacion De La Carrera Ingenieria De Sistemas
Presentacion De La Carrera Ingenieria De SistemasPresentacion De La Carrera Ingenieria De Sistemas
Presentacion De La Carrera Ingenieria De SistemasJORGE SOMARRIBA
 
Algoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAlgoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAdolfoReyes24
 

Tendances (20)

Estrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemasEstrategias o métodos para el desarrollo de sistemas
Estrategias o métodos para el desarrollo de sistemas
 
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
Metodología para la solución de problemas utilizando la computadora 2°Am Prog...
 
Modelado del sistema
Modelado del sistemaModelado del sistema
Modelado del sistema
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionales
 
Elementos para Construir Algoritmos I Parte.pptx
Elementos para Construir Algoritmos I Parte.pptxElementos para Construir Algoritmos I Parte.pptx
Elementos para Construir Algoritmos I Parte.pptx
 
Estructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestosEstructuras iterativas y ejemplos propuestos
Estructuras iterativas y ejemplos propuestos
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
Ejercicio 2 diagrama de flujo
Ejercicio 2 diagrama de flujoEjercicio 2 diagrama de flujo
Ejercicio 2 diagrama de flujo
 
Métricas de un proyecto
Métricas de un proyectoMétricas de un proyecto
Métricas de un proyecto
 
Evolucion de la teoria general de los sistemas tgs
Evolucion de la teoria general de los sistemas tgsEvolucion de la teoria general de los sistemas tgs
Evolucion de la teoria general de los sistemas tgs
 
Diagramas de casos de uso
Diagramas de casos de usoDiagramas de casos de uso
Diagramas de casos de uso
 
Traza de un algoritmo
Traza de un algoritmoTraza de un algoritmo
Traza de un algoritmo
 
Modelación de Sistemas vs Simulación de Sistemas
Modelación de Sistemas vs Simulación de SistemasModelación de Sistemas vs Simulación de Sistemas
Modelación de Sistemas vs Simulación de Sistemas
 
Introduccion a Windows Form
Introduccion a Windows FormIntroduccion a Windows Form
Introduccion a Windows Form
 
Ejercicios de diagramas de flujo en raptor
Ejercicios de diagramas de flujo en raptorEjercicios de diagramas de flujo en raptor
Ejercicios de diagramas de flujo en raptor
 
Lenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y ComponentesLenguaje Borland C - Estructura y Componentes
Lenguaje Borland C - Estructura y Componentes
 
Estructuras algoritmicas representación
Estructuras algoritmicas representaciónEstructuras algoritmicas representación
Estructuras algoritmicas representación
 
Tecnicas y herramientas para el desarrollo de software
Tecnicas y herramientas para el desarrollo de softwareTecnicas y herramientas para el desarrollo de software
Tecnicas y herramientas para el desarrollo de software
 
Presentacion De La Carrera Ingenieria De Sistemas
Presentacion De La Carrera Ingenieria De SistemasPresentacion De La Carrera Ingenieria De Sistemas
Presentacion De La Carrera Ingenieria De Sistemas
 
Algoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigoAlgoritmos, dfd, pseudocodigo
Algoritmos, dfd, pseudocodigo
 

En vedette

Rompecabezas en cuadros
Rompecabezas en cuadrosRompecabezas en cuadros
Rompecabezas en cuadrosmbcuriosidades
 
Cibercrimen en la sociedad
Cibercrimen en la sociedadCibercrimen en la sociedad
Cibercrimen en la sociedadxinthia18
 
Oficina de relaciones internacionales uax
Oficina de relaciones internacionales uaxOficina de relaciones internacionales uax
Oficina de relaciones internacionales uaxMarianassa
 
Excel jorge parra
Excel jorge parraExcel jorge parra
Excel jorge parraParra1992
 
Habilidades fisicas b
Habilidades fisicas bHabilidades fisicas b
Habilidades fisicas bBLOGANA
 
Social Media: The Advanced Class - Texas Bar Leaders Conference
Social Media: The Advanced Class - Texas Bar Leaders ConferenceSocial Media: The Advanced Class - Texas Bar Leaders Conference
Social Media: The Advanced Class - Texas Bar Leaders ConferenceLisa Salazar
 

En vedette (7)

Rompecabezas en cuadros
Rompecabezas en cuadrosRompecabezas en cuadros
Rompecabezas en cuadros
 
Cibercrimen en la sociedad
Cibercrimen en la sociedadCibercrimen en la sociedad
Cibercrimen en la sociedad
 
Oficina de relaciones internacionales uax
Oficina de relaciones internacionales uaxOficina de relaciones internacionales uax
Oficina de relaciones internacionales uax
 
Excel jorge parra
Excel jorge parraExcel jorge parra
Excel jorge parra
 
Muyfuerte2
Muyfuerte2Muyfuerte2
Muyfuerte2
 
Habilidades fisicas b
Habilidades fisicas bHabilidades fisicas b
Habilidades fisicas b
 
Social Media: The Advanced Class - Texas Bar Leaders Conference
Social Media: The Advanced Class - Texas Bar Leaders ConferenceSocial Media: The Advanced Class - Texas Bar Leaders Conference
Social Media: The Advanced Class - Texas Bar Leaders Conference
 

Similaire à Las fases de la programación

Fases de programacion
Fases de programacionFases de programacion
Fases de programacionbrayan_2012
 
ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR
ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR
ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR DarkStarPlay
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónjusto morales
 
Lenguajes de programación parte i.3
Lenguajes de programación parte i.3Lenguajes de programación parte i.3
Lenguajes de programación parte i.3Marquina, Santiago
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujocasdilacol
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadoraFaridCastillo2
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadoraJulioVizcarra5
 
Etapas para Desarrollar un Programa
Etapas para Desarrollar un Programa Etapas para Desarrollar un Programa
Etapas para Desarrollar un Programa gladysurea2
 
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMASMETODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMASadark
 
Investigar y describa la resolución de problemas empleando computadoras
Investigar y describa la resolución de problemas empleando computadorasInvestigar y describa la resolución de problemas empleando computadoras
Investigar y describa la resolución de problemas empleando computadoraschristian arroyo marchan
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujocognos_uie
 
Elaboracion de un_programa
Elaboracion de un_programaElaboracion de un_programa
Elaboracion de un_programagustavocastillor
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programazeta2015
 
Aplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaosAplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaosalexisj2303
 
Metodología para la solución de problemas por medio de computadora
Metodología para la solución de problemas por medio de computadoraMetodología para la solución de problemas por medio de computadora
Metodología para la solución de problemas por medio de computadoraAngel Perez
 

Similaire à Las fases de la programación (20)

Fases de programacion
Fases de programacionFases de programacion
Fases de programacion
 
Clase de programacion
Clase  de  programacionClase  de  programacion
Clase de programacion
 
ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR
ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR
ALGORITMO Y METODOLOGÍA PARA LA RESOLUCIÓN PROBLEMAS BASADOS EN EL COMPUTADOR
 
Conceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programaciónConceptos básicos y metodología de la programación
Conceptos básicos y metodología de la programación
 
Lenguajes de programación parte i.3
Lenguajes de programación parte i.3Lenguajes de programación parte i.3
Lenguajes de programación parte i.3
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Resolver problemas con_una_computadora
Resolver problemas con_una_computadoraResolver problemas con_una_computadora
Resolver problemas con_una_computadora
 
Etapas para Desarrollar un Programa
Etapas para Desarrollar un Programa Etapas para Desarrollar un Programa
Etapas para Desarrollar un Programa
 
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMASMETODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
 
Investigar y describa la resolución de problemas empleando computadoras
Investigar y describa la resolución de problemas empleando computadorasInvestigar y describa la resolución de problemas empleando computadoras
Investigar y describa la resolución de problemas empleando computadoras
 
Algoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujoAlgoritmos diagrama-de-flujo
Algoritmos diagrama-de-flujo
 
Actividad 7
Actividad 7Actividad 7
Actividad 7
 
Elaboracion de un_programa
Elaboracion de un_programaElaboracion de un_programa
Elaboracion de un_programa
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Etapas del desarrolo de un programa
Etapas del desarrolo de un programaEtapas del desarrolo de un programa
Etapas del desarrolo de un programa
 
Exposicion unidad-iii
Exposicion unidad-iiiExposicion unidad-iii
Exposicion unidad-iii
 
01 texto - módulo n° 1 • algoritmos
01 texto - módulo n° 1 • algoritmos01 texto - módulo n° 1 • algoritmos
01 texto - módulo n° 1 • algoritmos
 
Aplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaosAplicaciones de estándares de calidad en la construcción de algoritmaos
Aplicaciones de estándares de calidad en la construcción de algoritmaos
 
Metodología para la solución de problemas por medio de computadora
Metodología para la solución de problemas por medio de computadoraMetodología para la solución de problemas por medio de computadora
Metodología para la solución de problemas por medio de computadora
 

Las fases de la programación

  • 1. Las Fases de la Programación Por J. F. Díaz (jfdiaz98@hotmail.com) Lic. en Ciencias de la Computación El proceso de la creación de software requiere el uso de una metodología sistemática de desarrollo que permita un acercamiento gradual a la solución del problema que se intenta resolver. Esta metodología, llamada Ciclo de Desarrollo del Software, consta de una serie de pasos lógicos secuenciales denominados Fases, las cuales son el tema de este artículo. Aunque es posible crear programas sin la aplicación de esta metodología, el producto resultante carece de los beneficios que provee la utilización de este enfoque. Las Fases de la Programación son: 1. Definición del problema 2. Análisis del problema 3. Diseño de la solución 4. Codificación 5. Prueba y Depuración (Puesta a Punto o Testing) 6. Documentación 7. Implementación (Producción) 8. Mantenimiento Aunque el proceso de crear software es esencialmente un proceso creativo, el seguir esta serie de pasos lógicos conduce a la obtención de programas de mayor calidad. Es muy común que los principiantes se salten algunos pasos de esta metodología por desconocimiento o pereza, y procedan directo a la codificación de los programas. Esta práctica no sólo es incorrecta, sino que hace perder tiempo, dinero y esfuerzo. Aún los programadores experimentados y los profesionales utilizan esta metodología en el desarrollo de su programas. Los resultados que se obtienen con su aplicación son más confiables, rápidos y seguros que los obtenidos mediante prácticas incorrectas y desordenadas. 1. Definición del Problema Consiste en la obtención sin ambigüedades de una visión general y clara del problema. Ayuda a identificar los elementos claves del problema y los de la futura solución, así como fijar los límites de los mismos basados en su planteamiento textual sobre el papel. Un problema mal planteado, incompleto o mal comprendido es un mal inicio para la programación. Las respuestas a las siguientes preguntas son claves para la correcta definición de un problema: • ¿Qué entradas se requieren, de qué tipo, en qué orden y qué cantidad? • ¿Qué salidas se desean, de qué tipo, en qué orden y qué cantidad? • ¿Qué método(s) o fórmula(s) produce(n), o puede(n) producir las salidas deseadas? Dependiendo de qué tan precisas sean las respuestas a esas preguntas, así será la definición del problema, sobre todo en cuanto al orden explícito de las entradas y las salidas esperadas. Mientras no se comprenda con claridad el problema por resolver no puede pasarse a la fase siguiente. 2. Análisis del Problema Es la comprensión a fondo del problema y sus detalles y es un requisito para lograr una solución eficaz. Es precesamente en esta fase donde se definen formal y correctamente la Entrada que recibirá el programa (datos o materia prima), la Salida que producirá (información o resultados) y el Proceso necesario para su solución (el método para convertir los datos de entrada en información de salida). Cada uno de estos aspectos coincide respectivamente con las preguntas planteadas en la fase de Definición del Problema. A este enfoque se le conoce comúnmente como E-P-S (Entrada-Proceso-Salida). 3. Diseño de la solución En esta fase se diseña la lógica de la solución a usar, o sea, cómo hará el programa la tarea que se desea automatizar usando los datos de entrada para generar los datos de salida,
  • 2. enfatizándose los diseños limpios, sencillos y claros. Pueden plantearse diferentes alternativas de solución al problema y elegir la más adecuada, la que produzca los resultados esperados en el menor tiempo y al menor costo. El proceso de diseño se realiza en dos pasos: 3.1 Elaboración del Algoritmo Un algoritmo es una secuencia lógica y cronológica de pasos encaminados a resolver un problema. Las acciones básicas que puede llevar a cabo un algoritmo son: pedir datos, desplegar datos, evaluar condiciones y ejecutar operaciones. Los programas se estructuran a partir de los algoritmos, los cuales se pueden escribir utilizando la técnica convencional del pseudocódigo (mezcla de lenguaje común, términos técnicos de computación, símbolos y palabras reservadas de algún lenguaje de programación) y los diagramas de flujo (flujogramas) que son la representación gráfica de un algoritmo, plasmados en papel para su estudio. En el caso de emplear diagramas de flujo pueden emplearse herramientas de software tales como el DFD v1.0. Si se opta por el pseudocódigo, se recomienda escribirlos a doble interlínea para efecto de facilitar modificaciones o adición de acciones no consideradas y dotarlos de las siguientes características. 3.1.1 Características de los Algoritmos • Un algoritmo debe tener un punto de inicio o partida. • Debe ser preciso e indicar el orden de realización de cada paso. • Debe estar bien definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. • Debe ser finito (tener un número finito de pasos). Si se sigue un algoritmo, se debe terminar en algún momento. La definición de un algoritmo debe describir con claridad las tres partes fundamentales del problema: Entrada, Proceso y Salida encontradas en las fases de Definición y Análisis del problema. Se deja sentado que todos los programas empiezan primero en papel, no directamente frente a la computadora. Aún los programadores más experimentados plasman en papel sus ideas y soluciones antes de programarlas. Pero es común que los novatos vayan directamente a la computadora sin haber siquiera leído bien el problema o pensado siquiera el algoritmo. Eventualmente podrán concluir el programa y alcanzar una solución, pero sólo después de probar diferentes ideas, hacer miles de cambios y perder gran cantidad de tiempo y esfuerzo. Los que se toman tiempo para analizar el problema, pensar y plasmar su solución en papel mediante un algoritmo tendrán un tiempo de respuesta (el tiempo para obtener el programa terminado) mucho menor, y se convierten en mejores programadores. Es un hecho. Los problemas complejos pueden solucionarse más eficazmente utilizándo el método "Divide y Vencerás", el que consiste en fraccionar un problema complejo en otros más simples y más fáciles de solucionar. Esto conduce a la Modulación del programa auxiliado por el método de diseño Top-Down o Descendente en el que se da un refinamiento de los pasos del algoritmo. De hecho, el enfoque E-P-S mencionado anteriemente es un buen ejemplo de esto, pues al concentrarse en resolver cada uno de los tres aspectos del enfoque de manera independiente se lograr la solución del problema completo. 3.2 Realización de Pruebas de Escritorio O sea, comprobaciones a mano del algoritmo planteado (en pseudocódigo o en diagrama de flujo) con datos y resultados de prueba conocidos, papel, lápiz y calculadora (si es necesaria) para simular su ejecución y evaluar su correcta operación. Si la lógica es correcta, los resultados serán satisfactorios. Si no, el algoritmo deberá modificarse y volverlo a probar hasta que esté correcto. Algunos programas no son fáciles de probar a mano por su complejidad y/o tamaño, pero en tu ayuda está la verificación durante la programación inicial (la creación del algoritmo), el trace and debugging (rastreo y detección de errores) automático que incorporan los lenguajes de compiladores de los lenguajes de programación y otras técnicas. Se hace notar que éste acápite depende de los anteriores. Si la definición y el análisis son errados, el diseño del programa también lo será, por lo que se tendrá que rehacer, retrocediendo quizá hasta la fase de Definición del problema.
  • 3. 4. Codificación En este paso se traduce el algoritmo ya estructurado, verificado y comprobado a mano, al lenguaje de programación que vaya a utilizarse. Sólo se convierten las acciones del algoritmo en instrucciones de computadora usando la sintaxis de un lenguaje particular, pero requiere de conocimientos del lenguaje y de sumo cuidado en la colocación de las instrucciones, las que deben apegarse y seguir fielmente a la lógica del algoritmo y la semántica y sintaxis del lenguaje. La digitación, el acto de teclear el algoritmo codificado, se lleva a cabo para almacenar el programa en la memoria de la computadora (virtual o física) y pueda ser aceptado por esta. Con frecuencia los programadores realizan la codificación y la digitación al mismo tiempo a fin de ahorrar tiempo, pero esto puede conducir a errores debido a la pérdida de concentración que implica el uso de un editor. La compilación, o corrección de los errores sintácticos y semánticos del código, es la eliminación de los errores "gramaticales" según las reglas de construcción de instrucciones particulares del propio lenguaje (la sintaxis). Puede hacerse a medida que se traduce, pero es mejor al final para no perder la secuencia de la codificación. Al terminar debe tenerse el código libre de los errores antes mencionados. Para realizar la compilación puede hacerse uso de un compilador, el cual es un programa especial que analiza todo el código fuente y detecta los errores antes mencionados ocasionados durante la codificación o la digitación. Las fallas de lógica que puedan existir en nuestro programa no son detectadas por este software. Los errores que sí son evidenciados por el compilador deben corregirse modificando el programa fuente. 5. Prueba y Depuración (Puesta a Punto o Testing) Una vez compilado el programa, este es sometido a pruebas a fin de determinar si resuelve o no el problema planteado en forma satisfactoria. Para ello le suministramos datos de prueba, como lo hicimos en la prueba de escritorio. El programa codificado y compilado no garantiza que funcione correctamente. Debe depurarse (librarse de errores de lógica o de ejecución) realizando corridas de prueba continuas con datos y respuestas conocidas como lo hicimos en la prueba de escritorio, verificando todas las posibles alternativas del programa y sus respuestas y haciendo el mayor número de variantes con sus combinaciones, a fin de determinar si resuelve o no el problema planteado en forma satisfactoria. Las pruebas que se aplican al programa son de diversa índole y generalmente dependen del tipo de problema que se está resolviendo. Comúnmente se inicia la prueba de un programa introduciendo datos válidos, inválidos e incongruentes y observando como reacciona en cada ocasión. Los resultados obtenidos en las pruebas pueden ser cualquiera de los siguientes: a. La lógica del programa esta bien, pero hay errores sencillos, los cuales los corregimos eliminando o modificando algunas instrucciones o incluyendo nuevas. b. Hay errores ocasionados por fallas en la lógica, lo que nos obliga a regresar a las fases de Diseño y Codificación para revisión y modificación del diagrama. c. Hay errores muy graves y lo más aconsejable es que regresemos a la fase 2 para analizar nuevamente el problema, y repetir todo el proceso. d. No hay errores y los resultados son los esperados. En este caso guardamos el programa permanentemente en un medio de almacenamiento. Puede ser necesario en la mayoría de los casos retroceder a fases previas de desarrollo, revisar el algoritmo otra vez en caso de errores de análisis y/o lógica (que son los más difíciles de detectar, a diferencia de los de sintaxis y semántica), realizar ajustes al código y una serie de nuevas ejecuciones de prueba para que el programa funcione correctamente. Si no existen errores en el programa, puede entenderse la depuración como una etapa de refinamiento en la que se ajustan detalles para optimizar el desempeño del programa.
  • 4. Si se está automatizando alguna tarea manual, es común poner a funcionar por un tiempo y de forma paralela ambas alternativas, a fin de comparar las salidas de ambas y adquirir confianza en la solución automatizada. 6. Documentación Es la fase más ignorada por la mayoría de los programadores noveles, por razones de tiempo, costos o simple pereza. Pero no documentar los programas es un mal hábito en programación y un gran error. Será muy difícil a los usuarios entender un programa si no cuentan con un manual de operaciones (el Manual de Usuario). También para los programadores que necesiten darle mantenimiento o hacerle modificaciones si no existe ninguna documentación acerca de sus fases de desarrollo. Incluso será difícil de entender para el mismo autor, algún tiempo después. La documentación es la guía o comunicación escrita en sus variadas formas, ya sea en enunciados, procedimientos, dibujos o diagramas y sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (mantenimiento). Recoge todos los elementos encontrados y material creado en las diferentes fases del desarrollo, además de las normas de instalación o las recomendaciones para la ejecución del programa. La documentación se divide en tres partes: • Documentación Interna • Documentación Externa • Manual del Usuario Documentación Interna: Son los comentarios que se añaden al código fuente para clarificarlo. Documentación Externa: Es todo el material creado y empleado en las diferentes fases del desarrollo del programa. Incluye: • Descripción del Problema • Narrativo con la descripción de la solución • Autor(s) • Algoritmo (diagrama de flujo y/o pseudocódigo) • Código Fuente (programa) • Relación de los elementos utilizados en el programa, cada uno con su respectiva función • Limitaciones del programa Manual del Usuario: Describe paso a paso la manera como funciona el programa, con el fin de que los usuarios pueda operarlo correctamente y obtener los resultados deseados. 7. Implementación (Producción) El programa ya probado, revisado y mejorado se considera terminado y puede utilizarse con un alto grado de confianza para resolver los problemas que dieron origen a su creación. Si se está automatizando alguna tarea manual, ésta última se desecha para emplear solamente la programa. 8. Mantenimiento Es posible que el programa deba revisarse cada cierto tiempo para ajustes. Estos cambios pueden ser por la dinámica del problema, por la naturaleza del código, las exigencias del tiempo o las modernas necesidades que surgen frecuentemente, por lo que se considera que ningún programa es estático. Los programas siempre son susceptibles de mejoras y de mantenimiento. Por tales razones, es común que se tenga que retornar a una de las fases iniciales de desarrollo para corregir o añadir funcionalidades, repitiendo el proceso en cada fase subsiguiente para introducir los cambios pertinentes y lograr que el programa funcione correctamente con los cambios realizados. Se enfatiza el hecho de que cualquier actualización o cambio en el programa deberá reflejarse en su documentación para que ésta mantenga su vigencia.-