Software Development Life Cycle (SDLC)- simplified
¿Cómo se desarrolla el software en una empresa?
Introducción al caso del banco
- Se presenta a Mr. Banker, propietario de un banco que actualmente no utiliza software, lo que ha llevado a una disminución considerable en la cantidad de clientes debido a la falta de servicios de banca por Internet.
- Mr. Banker decide invertir en software bancario y convoca a un equipo de desarrollo de software para discutir las necesidades y expectativas del banco.
Composición del equipo de desarrollo
- El equipo está encabezado por un gerente y cuenta con un arquitecto de software que evalúa la viabilidad técnica de los requisitos solicitados por los funcionarios del banco.
- Se incluye un analista de negocios, quien tiene conocimientos sobre el dominio bancario y puede traducir las necesidades del negocio a términos técnicos comprensibles para el equipo.
- Un experto en calidad también forma parte del equipo para asegurar que el producto final cumpla con las expectativas establecidas durante el desarrollo.
Expectativas y documentación inicial
- El gerente del proyecto se encarga del presupuesto, recursos y cronograma esperado; mientras tanto, los representantes del banco esperan mejoras significativas como conveniencia para los clientes y reducción de errores en el procesamiento de datos.
- Tras varias reuniones, se crea un documento de requisitos que detalla el alcance del software y los plazos esperados; este documento es conocido como SRS (Especificación de Requisitos del Software).
Tipos de requisitos
- Los requisitos recopilados son funcionales (por ejemplo, ingresar credenciales para realizar transacciones monetarias) y no funcionales (como soportar 500 usuarios simultáneos sin degradar el rendimiento).
- La arquitectura necesaria se determina según estos requisitos; esto incluye decisiones sobre hardware específico como RAM o procesadores necesarios.
Diseño e implementación
- Los líderes de módulo ayudan al arquitecto principal a definir la arquitectura general; cada módulo representa funcionalidades específicas agrupadas lógicamente dentro del sistema.
- Se analiza la funcionalidad desde una perspectiva estructural: diferentes páginas web pueden ser necesarias para mostrar información relacionada (saldo bancario, depósitos fijos, pagos).
Documentación técnica
- Cada módulo interactúa entre sí mediante interfaces definidas en un diseño alto nivel (HLD), donde se documentan cómo se comunicarán los módulos entre ellos.
- Al finalizar esta fase, se produce un documento HLD que guía a los programadores en su trabajo sobre unidades más pequeñas dentro cada módulo.
Revisión y codificación
- Los documentos son revisados continuamente por arquitectos y líderes para asegurar su calidad; estas revisiones son registradas para seguimiento posterior.
- Una vez completada la revisión, los programadores comienzan a escribir código fuente basado en las especificaciones detalladas proporcionadas anteriormente.
Pruebas unitarias
Proceso de Desarrollo de Software y Pruebas
Fases del Ciclo de Vida del Desarrollo de Software
- La documentación es realizada por los desarrolladores antes de entregar el código al equipo de pruebas, resultando en un código probado a nivel unitario que se entrega al equipo de calidad.
- Las unidades pueden funcionar correctamente individualmente, pero pueden fallar al integrarse con otros módulos; esto se verifica durante las pruebas de integración para validar el comportamiento según el diseño.
- Se registran defectos si el software no cumple con las expectativas del diseño, utilizando herramientas como Buck Tracker para reportar errores que luego son corregidos por los autores del código.
- El proceso se repite hasta que todos los problemas son solucionados; finalmente, el software se entrega al cliente para la validación en la prueba de aceptación del usuario (UAT).
- El modelo completo del proceso tiene una estructura en forma de V, conocido como modelo V; la cantidad de defectos identificados disminuye a medida que avanzamos hacia producción.
Impacto y Costos Asociados a Defectos
- Los defectos encontrados después del lanzamiento pueden resultar muy costosos para el negocio, incluyendo la necesidad potencial de retirar productos del mercado o realizar correcciones gratuitas.
- En aplicaciones sensibles como instrumentos hospitalarios o software bancario, se realizan diversas pruebas para prevenir daños y asegurar la calidad antes y después del despliegue.
Resumen General