Cada nueva idea de un programa debe pasar por una serie de etapas de desarrollo. A nivel general son siempre 6: Análisis, Diseño, Desarrollo, Pruebas, Producción y Mantenimiento. Cada empresa o incluso cada desarrollador pueden tener una serie de sub-etapas y así mismo modificar las etapas generales para acomodarse a su estilo. Algunos desarrollos son denominados así porque necesita de algunos objetos nuevos, pero pueden ser mejoras o correcciones sobre otros proyectos.
Análisis
Es la primera de las etapas de desarrollo, corresponde a escuchar las peticiones para el sistema. Se planifica la forma de llevar las ideas a un software, acá no debe ser un impedimento el lenguaje de programación ni la infraestructura. Desde el consultor de sistemas se proponen mejoras que a veces el usuario ignora para mejorar el programa. Yo suelo utilizar prototipos para que el usuario tenga una vista previa y realice modificaciones antes de cualquier otra fase. Al final de esta fase se verifica si existe un ambiente de sistemas previamente instalado o si es un desarrollo totalmente nuevo. No olvidar incluir presupuesto de servidores, licencias, bases de datos entre lo más destacado.
Diseño
En esta fase es cuando se realiza toda la infraestructura que va a sostener el proyecto. Normalmente hablamos de objetos de base de datos, especialmente las tablas y las relaciones entre ellas. Se preparan todas las funcionalidades necesarias para suplir los requerimientos detectados en el análisis. Yo presento un segundo prototipo ya que el primero solo incluye funcionalidades, este muestra algo de diseño.
El usuario siempre quiere incluir más cosas y se debe dejar en claro que esto influye en el tiempo y el costo del proyecto. Tras aprobar el prototipo se presenta la propuesta y se llega a un acuerdo. El problema principal está en calcular el tiempo para las etapas de de desarrollo, para esto es mejor dar un tiempo previsto pero que se pague sobre las funcionalidades. Si el proyecto es muy complejo es mejor realizarlo por etapas para evitar desbordar el tiempo y el costo de todo el programa.
Desarrollo
Es el momento del código es independiente del lenguaje de programación, de las metodologías, del estilo del programador, etc. Se pueden presentar mejoras u objeciones sobre el rendimiento del programa. Dentro de las etapas de desarrollo es la más delicada porque cada modificación puede cambiar toda la planificación. Esta fase tiene en si sub-fases a implementar: análisis y diseño, la codificación, pruebas ingenieriles y ajustes. El avance del software se suele presentar aquí sobre el número de funcionalidades totales sobre las completadas.
Análisis y Diseño
A diferencia de las etapas de la idea el programador debe identificar procesos y funciones que se puedan reutilizar. Esto con la intención de llevarlas a una librería para el software. Así mismo dependiendo del lenguaje de programación puede calcular de forma previa el tiempo de desarrollo sobre los requerimientos.
Codificación
La creación de librerías se termina haciendo de forma dinámica, y se modifica varias veces a medida que se necesita. Esto es así por lo menos en mi caso, pero puede ser que la persona que hizo el diseño, tenga mucha experiencia lo cual evitaría esta particularidad. Luego de eso se realizan los formularios, pantallas, reportes entre otras solicitudes. Estas últimas incluyen comunicación con otros programas así como interfaces entre otros.
Pruebas ingenieriles
Estas son las pruebas de cada funcionalidad en cada pantalla o reporte. Se debe probar la creación, modificación, consulta y eliminación en cada caso. Algunos ingenieros suelen automatizar este proceso, pero yo prefiero hacerlo por lo menos híbrido. Ya que en el camino se van presentando ajustes y pruebas sobre los mismos. Es preferible anotar todos los ajustes para adaptarlos después sino esta fase se podría alargar demasiado. Estas pruebas son diferentes a las pruebas principales ya que estas son realizadas por los programadores y las otras por usuarios que normalmente no saben de programación.
Ajustes
Algunos incluyen esta fase con la anterior ya que apenas finaliza hay que realizar de nuevo las pruebas. Puede haber varios ciclos que retrasan los proyectos, pero es inevitable en algunos casos. Por otra parte si los programadores son muy novatos se presentan demasiados bugs (fallas del sistema). Entonces los equipos de desarrollo deberían tener una combinación entre novatos y experimentados para la totalidad de las etapas de desarrollo.
Pruebas
Estas son pruebas realizadas por usuarios finales, los cuales debe estar disponibles. Es recomendable tener varios usuarios ya que uno solo no encontraría todas las posibles fallas. Se puede presentar una lista de pruebas a realizar para evitar que se salten módulos o pantallas. De acá se genera una gran lista de bugs detectados que pasan a ajustarse en una serie de ciclos. Es muy importante dejar en claro que no se van a desarrollar nuevas funcionalidades.
Producción y mantenimiento
Los desarrollos se hacen en ambientes locales, es decir en las máquinas de los desarrolladores. En el análisis se debe dejar en claro que se necesita para que todo funcione correctamente. Muchas veces olvidamos la documentación del programa, este es el momento de realizarla. ¿Porque no antes? Bueno habría que modificar la documentación al tiempo con las pruebas. Ya deben estar disponibles los dominios, redes, servidores o hosting, etc. A partir de acá empieza a correr términos de garantías, como el soporte y estabilidad. Al finalizar el periodo de garantía es posible realizar una extensión sobre la misma. Pero es aún mejor ofrecer el servicio de soporte externo sobre la aplicación o un nuevo proyecto. Esta es la última de las etapas de desarrollo de un software para una sola versión.