Al momento de crear un software, no se trata de llegar y crear un programa como si nada, existen ciertas normas a seguir respecto de la calidad de software que aseguren el cumplimiento de estándares mínimos de satisfacción para los usuarios, tales como que sea modificable, confiable, fácil de usar y eficaz.
En base a esto, existen modelos de desarrollo de software, los cuales se siguen dependiendo de la necesidad del usuario y el trabajo que efectúe el desarrollador, cada uno con sus ventajas y desventajas.
Desarrollo en cascada
Es el enfoque que ordena las etapas del ciclo de vida del software, donde el inicio de cada una debe esperar la finalización del anterior, aunque esto genera detenciones en el desarrollo y por ende, implica usar más tiempo. Sus fases, en orden, son:
- Requerimientos: se analizan las necesidades de los usuarios del software para ver los objetivos a cumplir, especificándose todo lo que hace el sistema, aunque sin necesidad de detalles internos.
- Diseño de sistema: descomposición y organización del sistema en elementos que se elaboren por separado, aprovechando el desarrollo en equipo. Se obtiene una descripción de la estructura global, lo que hace cada una de sus partes y la combinación entre estas.
- Diseño de programa: se crean los algoritmos para cumplir los requerimientos del usuario y análisis que permitan saber las herramientas a utilizar más adelante.
- Codificación: Se programan los algoritmos y códigos, mediante prototipos, ensayos y errores.
- Pruebas: se ensamblan los elementos programados para comprobar el buen funcionamiento.
- Implantación: producción del software, implantándose los niveles de software y hardware, realizándose los cambios necesarios.
- Mantenimiento: una vez en uso, se va chequeando si funciona acorde a lo pensado y en base a ello, se realizan actualizaciones y mantenciones periódicas.
Desarrollo en espiral
Este desarrollo de software es evolutivo, donde cada iteración representa un conjunto de actividades y estas no están fijadas a priori, sino que se eligen en función del análisis de riesgo. Este tipo de desarrollo de software es el mejor para crear grandes sistemas, aunque requiere que el análisis de riesgo sea hecho por profesionales competentes, de lo contrario el proceso entero puede arruinarse.
Tiene variantes, entre las cuales está el modelo espiral de cuatro regiones (Boehm), el de seis regiones o el modelo espiral WINWIN. Pese a sus diferencias, las actividades esenciales del modelo espiral son:
- Comunicación con el cliente: establecer comunicación entre desarrollador y cliente.
- Planificación: tareas necesarias para definir recursos, tiempo e informaciones.
- Análisis de riesgos: tareas para evaluar riesgos técnicos.
- Ingeniería: lo necesario para construir una o más representaciones de la aplicación.
- Construcción y adaptación: construir, probar, instalar y proporcionar asistencia al usuario.
- Evaluación del cliente: reacciones del cliente respecto del software.