Ciclo de vida de un algoritmo
Tags: spanish, español, principiante, fundamentos
Published: 2020-04-11 20:47:41

---
title: Ciclo de vida de un algoritmo
published: true
description: 
tags: #spanish #español #principiante #fundamentos
cover_image: https://dev-to-uploads.s3.amazonaws.com/i/9fvo5f0b52x89780m1al.jpg
---

El **ciclo de vida de un algoritmo** o **ciclo de vida del desarrollo de sistemas** o **proceso de desarrollo del software**, todos estos términos son sinóminos y cuando se menciona uno u otro, se está refiriendo a la misma actividad, este escrito utiliza el término de *proceso de desarrollo del software*.

El *proceso de desarrollo del software* es el proceso de dividir el trabajo de desarrollo en distintas fases para mejorar el diseño, la gestión del producto y la gestión del proyecto.

Este proceso define los pasos que deben seguirse durante el desarrollo de un programa, desde que se propone hasta que finaliza su construcción y posterior mantenimiento.

Las fases son la siguientes:
- **Análisis**: En esta fase se determinan los requisitos que tiene que cumplir el programa. Se analiza minuciosamente el problema que se desea resolver y se define todo aquello que afectará el funcionamiento del programa y las especificaciones de entrada y salida.
Esta fase también sirve para ayudar al programador a comprender el problema, que en lo posible debe estar bien definido si se desea llegar a una solución satisfactoria.
- **Diseño**: Se define una secuencia lógica de pasos que resuelven el problema acorde al análisis realizado. Se especifican los esquemas de diseño del programa, utilizando diagramas de diseño y pseudocódigo para plasmar una posible solución o mostrar el alcance del problema.
- **Codificación**:  En esta fase se transcribe el diseño a código escrito en algún lenguaje de programación, es decir, es la implementación del diseño.
- **Pruebas o Testing**: El programa se ejecuta con el fin de evaluar el correcto funcionamiento del mismo, eliminar los errores y verificar que se cumplan todos los requerimientos establecidos.
- **Mantenimiento**: Tiene lugar una vez que el programa ha sido distribuido, en esta fase se asegura que el sistema siga funcionando aunque cambien los requisitos. El programa se modifica y se actualiza acorde a las nuevas necesidades del problema.
- **Documentación**: Es importante plasmar las decisiones tomadas y la justificación de estas a lo largo del desarrollo del software, con el fin que ayude a comprender mejor el código escrito y pueda facilitar su mantenimiento y expansión. Por lo tanto se debería considerar escribir la documentación del código acompañado del manual de usuario.

![Fases del Proceso de Desarrollo de Software](https://dev-to-uploads.s3.amazonaws.com/i/upx5vw6pndfjkfwftvym.jpg)

A pesar de que estas fases están bien definidas, no todas son incluídas en el proceso de creación del software o bien muchas veces son combinadas entre sí, esto depende de la **metodología de desarrollo** seleccionada al momento de iniciar el proyecto.

Existen varias metodologías de desarrollo que podemos clasificarlos en dos categorías grandes, las tradicionales nacidas en los años 60, basadas en procesos estructurados y secuenciales, y las ágiles basadas en procesos flexibles, dinámicos e iterativos, cuyos principios están plasmados en el [Manifiesto Ágil](https://agilemanifesto.org/iso/es/manifesto.html).

![Tradicional vs Ágil](https://dev-to-uploads.s3.amazonaws.com/i/b4l13aebfvyyovu0o7bq.jpg)

En general, las empresas que desarrollan software o bien los mismos desarrolladores ya optan por una u otra metodología con la que se sienten cómodos. Es importante recordar que no existe una metodología que se adecue a todas las necesidades de todos los proyectos, es por eso que existen muchos enfoques para resolver el proceso de desarrollo de software.